2 软件设计
本系统的软件设计主要分两大部分:对硬件的初始化(SAA7113、Z1510)和PC机与系统的实时通信。系统上电后,由电源输出端的RC电路触发CPLD里的D触发器,对DSP进行复位,然后由DSP对其它器件进行复位和初始化。
2.1 硬件初始化
对SAA7113的初始化可通过将DSP的McBSP用作通用I/O脚模拟I2C总线来实现,DSP作为主器件,SAA7113作为从器件,用McBSP的CLKR模拟SCL,FSR模拟SDA。首先设置DSP的GPFMUX寄存器的相应位为0,使CLKR和FSR用作通用I/O脚;然后设置GPFDIR和GPFDAT寄存器的相应位以改变CLKR和FSR的输入输出方向和高低电平,GPFDIR.bit=0时为输入,相反为输出;GPFDAT.bit=0,同时引脚为输出时为低电平,相反为高电平。通过CLKR和FSR管脚的高低电平的变化和输入输出状态的切换可以实现I2C协议。
Z1510的驱动分为复位、代码下载、内部寄存器配置以及数据获取四个阶段。复位后,Z1510内部的配置和状态寄存器复位到默认状态,所有输出信号处于高阻状态,SDRAM视频缓存内容清零。具体包括硬复位和软复位两种,硬复位需要拉低Z1510的RESET_N的电平,软复位可以通过写0x55到SOFt_reset寄存器(地址0x08)来实现。
系统进行硬复位需要注意的是,上电到时钟稳定后,RESET_N至少要被拉低250微秒,然后主机才设置Int_enable [6]寄存器,使能RDY中断。TMS320F2812等Z1510产生一个RDY中断后写0x20到中断清除寄存器0x0F,清除RDY中断,然后写0x6E到视频编码核时钟寄存器0x0A,设定其内部DSP压缩核工作频率为94.5MHz。
系统在开始工作之前,还要进行一个软复位过程。TMS320F2812先向Z1510的Soft_reset寄存器(地址0x08)写0x55,等待至少1微秒后,设置Int_enable [6]寄存器,使能RDY中断,等Z1510产生一个RDY中断后,清中断,完成软复位,开始代码加载。
在Z1510内部寄存器有一段程序空间,这段空间以块为单位,每块的大小是256字节。其中,DSP核程序空间为0x280~0x2BF(64 banks),视频编码核的二进制代码的装载空间为0x000~0x004和0x00C等六个块。装载步骤如下:
(1)向Z1510内部寄存器0x2E写入0x01,表示外部的SDRAM是1M×16bit;
(2)向0x0C寄存器写0x03,使能FIFO Ready和End of Data中断;
(3)向0x11寄存器写0x18,设定工作模式为内部内存写模式;
(4)向0x10写0x20,设定Z1510的FIFO满为256字节;
(5)向0x08寄存器写0x04,发送开始命令;等待Ready中断,然后清除Ready中断;
(6)向Data _in寄存器0x01写256个字节数据;等待End of Data中断,然后清除中断;
(7)查程序空间的代码是否装载完毕,如没有,回到(5)继续装载。
通过设定Z1510内部工作寄存器的特定状态可以使其工作在特定的模式,在本系统中设定Z1510工作在LAVE模式,在此模式下,Z1510从音频和视频A/D转换器获取数据并压缩为MPEG-1码流。Z1510正常工作后,输出MPEG-1码流。其输出码流要经过输出端口FIFO缓冲,每当FIFO写入超过半门限时,产生中断FRDY(FIFO Ready)通知DSP,DSP通过读寄存器DATA_out(0x00)取走数据,其半门限可由ThreshHold寄存器设定,最大256字节。FIFO满后,DSP连续读寄存器256次可以取走数据。Z1510的驱动流程见图2。
2.2 接口程序设计
在设计开发一个USB外设的时候,主要需要编写三部分程序:①固件程序;②USB驱动程序;③客户应用程序。固件编程主要完成PDIUSBD12的驱动,使DSP系统与外部系统进行数据交换。
PDIUSBD12有三个端点,即端点0、端点1和端点2,在设计中使用端点1和端点2进行上位计算机与DSP之间的命令和数据传输。端点1和端点2设置成模式0,其中端点1进行命令的传输和应答,端点2用于数据的传输。端点1接收上位计算机发送过来的8字节的读写指令,指令正确回应后,使用端点2通过FIFO返回或接收数据。
在Win32系统中,每一个设备对象都抽象为文件。在应用程序设计中,只需通过几条简单的文件操作API函数,就可以实现与某个设备通信。主要使用的API函数有DeviceIOControl()、ReadFile()、WriteFile()。其中,DeviceIOControl()用于PC机(主机)向图像压缩系统发送请求;ReadFile()和WriteFile()分别用于从图像压缩系统中读出数据和写入数据。在设计过程中必须注意的问题是:由于USB接口是主-从方式的接口,它的一切传输都必须通过主机向外设发送请求后才能进行,所以在使用ReadFile()、WriteFile()读写数据之前,必须先通过DeviceIOControl()向图像压缩系统发送请求,系统接收请求后才能读写数据,开始进行音视频压缩。
该音视频压缩系统具有较好的功能扩展性,正如前面所介绍的,由于Z1510具有多种工作模式,在系统初始化时可根据所需工作模式加载不同的代码,对相应的寄存器进行不同的初始化,通过改变工作模式,可完成单独的视频压缩、音频压缩、静态非压缩或压缩图像获取(PC CAMERA)等多种功能。如再在系统中设计大容量FLASH,还可升级为独立的音视频压缩记录系统。
参考文献
1 SAA7113 DataSsheet. Philips, 1999
2 Z1510DataSheet. Emblaze Semiconductor, 2001
3 TMS320F2812 Data Manual. Texas Instruments, 2003
4 褚振勇,翁木云.FPGA设计及应用.西安:西安电子科技大学出版社, 2003
本文关键字:暂无联系方式嵌入式系统-技术,单片机-工控设备 - 嵌入式系统-技术