1 总体方案设计
1.1 方案的选择
目前,解码模拟视频信号主要的方法有:采用A/D采样模拟视频信号和采用专用的模拟视频信号解码器。对于前一种方案需要的外部芯片较少,只需A/D转换芯片即可;但是需要占用大量的CPU时间,在采集图像的过程中CPU基本没有额外的时间处理图像。这个问题通常会导致图像处理系统处理图像的时间严重不足。后一种方案采用专门的模拟视频信号解码器,需要一些额外的接口芯片,但是可以节约大量的CPU时间,图像采集过程可以全部在后台完成,基本上不需要CPU的干预。这个优点对于图像处理系统,特别是算法比较复杂的处理系统(例如视频监控系统)有着非常大的吸引力,所以本方案决定采用后者。
本方案中一个难点是:由模拟视频信号解码得出的数字视频信号数据量非常大,而且由于是实时视频信号,所以数据输出速率也非常高;但是相反,DSP外部存储器接口的读出速率却比较慢。为了解决这个问题,本方案采取了两种缓冲方式.首先是使用高速FIFO,对数据进行暂存以缓解速度上的差异,但是这样的缓冲还不足以平衡两者之间的速度差异。
于是在本方案中提出了“隔行采样”的思想。通常,隔行采样会使得分辨率下降,例如每四行采样一行数据,会使得图像垂直方向上的行数下降到原来的1/4。这不是设计所希望的,所以为了保证图像的分辨率,设计中在隔行采样的同时,将一整幅图像的行数据交错分多次采样,然后再重新组合成一幅完整的图像。这样既起到了缓冲速度差异的作用,又保证了图像的分辨率。
最后本方案确定的思路是,采用FIFO来暂存一行图像数据,视频解码器直接向FIF0中写入图像数据。当FIFO中写入了有效图像数据后,由CPLD向DSP发出中断请求;同时,DSP接到中断请求后,启动DMA方式将一行图像数据从FIFO中读入到其外部RAM中存放。CPLD主要完成“隔行采样”的实现、控制解码器向FIFO中写入数据以及DSF从FIFO中读出数据。
另外,本方案目前主要是针对PAL制式模拟信号的。PAL制模拟信号传输的图像幅面大小为720×576像素。下面的设计主要针对该格式的视频信号展开。如果需要对NSTC等其他制式视频信号解码,只需要在软件上作一些修改即可。
1.2 系统框图
在本方案中,模拟视频信号解码器采用的是Philips公司的SAA7111A。对于PAL制式模拟视频信号,l行图像数据有720个像素;同时由于YUV分量采用了4:2:2抽样,所以需要1440字节的存储空间存储1行数据。由于本方案中需要用到FIFO对1行数据暂存,所以FIFO的存储深度必须大于1440字节,最后选定高速FIFO采用IDT公司的IDT72V23l,其具有2K×9位的存储深度。同时还使用了Laittice公司的CPLD——LC4128V,作为中间逻辑接口控制“隔行采样”的完成、解码器对FIFO的写操作以及DSP对FIFO的读操作,系统框图如图l所示。
2 硬件方案设计
2.1 芯片介绍
本方案选用SAA7111A作为前端视频解码器。SAA71llA视频解码器是双通道模拟预处理电路、自动钳位和增益控制电路、时钟产生电路、数字多标准解码器、亮度/对比度/饱和度控制电路、彩色空间矩阵的组合,是一款功能完善的视频处理器。SAA711lA只需要单一的3.3V电源供电,与C6x11的I/O电压一致。SAA7111A接收CVBS(复合视频)或S-video模拟视频输入,可以将PAL、SECAM、NTSC模式的彩色视频信号解码为CCIR-60l/656兼容的彩色数字分量值,器件功能通过I2C接口控制。
SAA7111A的主要性能特点如下:
◆4路模拟输入一一4路CVBS或2路Y/C或1路Y/C和2路CVBS;
◆主通道静态增益可编程,自动增益控制选择的CVBS或Y/C通道;
◆2个8位视频CMOS模数转换器;
◆片上时钟产生器,只需要24.576 MHz单一时钟输入;
◆自动探测50 Hz和60 Hz场频,自动在PAL和NTSC标准间切换;
◆可以处理PALBGHI、PALN、PAL M、NTSC M、NTSC N、NTSC 4.43、NTSC-Japan和SECAM信号。从以上特点可以看出,SAA7111A功能强大,性能全面,可以满足各种视频转换处理的需要,完全符合本系统的要求。SAA7111A已经在各种视频处理系统中得到广泛的应用,技术性能已得到充分的证明。采用SAA7111A具有很高的性价比。
2.2 DSP与FOFO接口技术
TMS320C6xll的外部存储器接口(EMIF)提供了功能十分强大的外部接口,可以实现与诸多种类的存储器的无缝接口,如SBSRAM、SDRAM、SRAM、ROM等等。但是其对FIFO的接口并不能做到真正的无缝接口,需要增加一些外部逻辑来调整它们之间的时序。
本方案中采用的FIFO一一IDT72V23,是标准的同步FIFO,具有两个独立的读写时钟——RCLK、WCLK;同时还具有读写控制信号WENl、WEN2、REN1和REN2。
对于本设计而言,要求DSP从FIFO中将数据读出,故关键考虑DSP对IDT72V23l的读时序。图2是IDT72V31数据读出的时序。
图2中,tENS为REN1(REN2)的最短建立时间(SETUP),tDS为数据的最短建立时间(SETUP)。由图2可以看出IDT72V231与一般SRAM读时序的一个很大区别是:当RCLK上升沿到来以后,需要有一个比较长的延时tA才会有有效数据出现在总线上。此前一段时间内总线上的数据是不稳定的,并且该延时最长可达到12ns。
但是对于TMS320C6x11而言,数据的读入是在ARE信号的上升沿完成的,故这里设计的主要问題是FIFO的RCLK时钟怎样提供。本设计中采用的解决办法如下:
RCLK=!(ARE)
REN1&REN2=CEx+AOE+Address
也就是说,RCLK是由DSP的ARE信号取反得到的,而REN1和REN2信号是由DSP的AOE信号经过地址译码后提供。这样设计的TMS320C6xll与FIFO接口为了配合FIFO读出时序的要求,还必须要求DSP的读时序(主要是Setup/Strobe/Hold三个时序段)满足以下要求:
Setup≥(tENS+tSKEW)/tcyc
Strobe≥(tA+tDS)/tcyc
Strobe≥(tCLKH(min)/tcyc
Hold+Setup≥(tCLKL(min)/tcyc
Setup+Strobe+Setup≥(trc(min)/tcyc
从时序图上的数据可以看出,tENS≥5ns,tA≤12 ns,tDS≥5 ns;同时,由于IDT72V23l的要求,RCLK高电平时间(tCLKH(min)大于等于8ns、RCLK低电平时间(tCLKL(min)大于等于8 ns以及读写周期(trc(min)必须大于等于20ns。加上一定的冗余,最后计算可以得到:
Setup≥20ns
Strobe≥30 ns
Hold≥l0ns
在本设计的TMS320C6211的系统板上,EMIF的外部时钟频率是100 MHz,所以tcyc=10ns。这样可以得出DSP中CExCTL寄存器中Setup值设置为2,Strobe值设置为3,Hold值设置为1。
实际系统实现证明。通过这样的硬件接口设计后,TMS320C621l可以很稳定地从FIF0中读出数据。
2.3 隔行采样技术
由于DSP接口与FIFO的接口速度只能达到15MB/s的速度,同时当DSP把图像数据从FIFO中读出来以后还需要将数据存入其外部存储器中,这样DSP与FIFO的接口速度是完全不可能跟上解码器SAA7111A的有效数据输出速度(最低19.8 MB/s)的,所以DSP无法实时地从视频流中抓出一幅完整的图像。 因此,在DSP与SAA711lA的接口之间采用高速FIFO进行缓冲的同时,还采取了“隔行采样”的方法来缓冲速度上的差异。通过计算得出DSP每隔4行有效视频信号采1行视频数据是合理的。(把DSP将获取的数据存人其外部存储器中所需要的时间考虑在内。)
“隔行采样”的结果会导致所获取的图像垂直分辨率下降(对于PAL制式视频信号由原来的576行/幅下降到144行/幅)。为了保证图像的分辨率,本设计中将每幅图像分成连续的4次采样.在连续的4次采样中,分别抓取图像中不同的144行数据,也就是说,现在DSP抓取1幅完整幅面(720×576)大小的图像需要分4次获取,然后对数据重排组合得到完整的图像。PAL制信号是按照50Hz的场频对图像进行输出的,即每秒种可以传输25幅图像,现在由于“隔行采样”的原因,DSP每秒钟可以从PAL制信号中解码出6.25幅完整幅面大小的图像。这个速度完全可以满足很多实时系统的要求,如视频监控系统。
“隔行采样”功能的具体实现是由CPLD配合SAA7111A输出的同步信号(行同步、场同步信号)来完成的。由于IDT72V231(FIFO)的写入控制是通过WEN信号完成的,因此CPLD可以通过控制WEN信号来实现图像的隔四行一采样。具体WEN信号的产生逻辑如图3所示。
由图3可以清晰地看出,通过这种采样方式以后,每次输出的图像行是隔4行输出l行,而连续4次获取的图像则是一整幅图像576行图像数据中互不相同的144行数据,这四部分图像按照一定规律组合便可以得到一幅幅面为720×576像素的完整数宇图像。
另外由图3可以看出,SAA7111A每向FIFO中写入一行图像数据(需要53.3μs),DSP则有相当于4行图像数据输出的时间(约256μs)来读出这一行图像数据。因此“隔行采样”有效地缓冲了数据输出和数据读入速度上的差距。
3 软件方案设计
解码器DSP方软件的设计主要分成两个部分:①将图像数据从FIFO中读出来存人到DSP的外部RAM中去;②对读出的数据进行重排,组合成完整的图像。下面分成两部分来说明。
3.1 QDMA方式数据的读入
由于DSP将数据从外部读人到RAM中通常是图像处理系统的一个图像获取过程,所以如果使CPU一直处于读入数据的操作中,显然是不合理的。
为了保证尽可能少地占用CPU时间,即在第n幅图像读入到RAM中的同时,DSP仍然可以有足够的时间来处理第n-1幅图像(对其做需要的处理,例如去噪、压缩、识别等等)。本设计中采取了下面这种读出方式:视频解码器通过一个中断信号通知DSP目前已有数据写入到FIFO中,然后DSP在中断中采用DMA方式,将数据从FIFO中成块地搬移到RAM中去。
这种操作的好处是显而易见的:当DSP正在处理某一帧图像时,如果有数据需要读入,那么DSP将进入中断,然后仅仅只需要开启DMA读出操作便可退出中断服务于程序,继续没有处理完的工作;而DMA控制器则在后台将一块区域连续的图像数据读入到RAM中。这样图像的获取可以实规在后台完成,图像的处理和图像的获取很好地并行进行,大大提高了CPU的利用率。
具体在本方案中,由于使用的FIFO的深度是2 K×9位,所以采取的是DMA每次搬移一行图像数据(也就是720×2=1440字节)到RAM中去。同时,TMS320C6x11提供了十分强大的EDMA功能。为了加快DSP在中断中开启DMA读出操作的速度,本设计采用了其QDMA的功能.这样申请一次QDMA仅仅需要几条指令即可。具体申请QDMA的操作代码如下:
QSRC=SourceAddress,
//设置FIFO在系统中的地址
QCNT=0x000005A0;
//设置一次需要读出的数据量
//(1440)
QDST=(int)DesAddress; //设置数据读出的目的地址
QIDX=0x00000001; //设置QDMA传送的间距
DesAddress=DesAddress+0x5A0;
//更新数据读出目的地址
QSOPT=0x30300000; //启动QDMA通道传输
3.2 图像数据的重排
由于本方案中采用了隔四行一采样的方法来平衡速度上的差异,所以最后载人RAM中的数据需要重排。这个重排可以在读入FIFO中的数据时就进行,也可以在所有数据全部读人到RAM中后再进行重排;但是重排的方案和流程是一样的。
如果是采用全部数据都读完后再重排,由于隔四行采样的原因,图像数据是分四个连续的数据块存放的,并且每个数据块中是按照奇偶场分布的。那么,以第一个数据块为例,它的奇场部分存储的实际上是图像的第1,9,17,…,561,569行数据;而其偶场部分存储的实际上是图像的第2,10,18,…,562,570行数据。另外,三个数据块里面存储的图像数据在整幅图像中的行数分布依此类推。具体分布和重排过程如图4所示。
通过图4所示方式的重排处理以后,全部图像数据分成了两大块:奇场区和偶场区。这时可以根据需要来处理这两个区域。本设计中采用的是将奇偶场合并,同时将YUV分量分开到三个独立的存储区域中去,程序流程如图5所示。
4 总结及展望
本文提出了一种基于TMS320C6xll接口的图像获取方案。它利用目前大多数成熟的图像获取设备都配备了通用的模拟视频输出接口这一特点,提出了一个从模拟编码的视频信号中抓出静止的数字图像的方案。由于其数字部分接口非常通用(8位),使得可以很容易地在通用图像处理系统中加入实时图像获取接口。通过具体实现证明此方案可行、稳定、高效;可以实现每秒钟6.25幅720×576幅面的彩色图像的获取,具有通用性好、性能稳定、占用CPU时间少等特点。防碰撞模块对SELECT命令的响应是正确的。
结 语
A型卡RFID技术已经广泛应用于智能卡、票物、安检、物流和防伪等领域。本文根据RFID防碰撞协议规定,在数字硬件上实现了A型卡的防碰撞模块,用VHDL语言进行了仿真和综合后,通过了Xilinx公司的XC4010XLFPGA验证,电路规模5000门左右,达到预定指标要求。最后,采用O.35μm的工艺与电子防伪标签的其他模块一起进行了MPW流片,实际应用测试证明,该模块运行正确、稳定。