基于FPGA/CPLD和USB技术的无损图像采集卡
LD把当前的奇数场图像存储在SRAM(ODD)中,把当前的偶数场图像存储在SRAM(EVEN)中;当一帧数据全部存储完后,发出中断(Interrupt)信号通知USB芯片;同时用State线作为状态线,当State线为低电平时,表明USB可以从SRAM读数据,当State线为高电平时,表明FPGA/CPLD正在向SRAM写数据;RamOdd用来选择从SRAM(ODD)中读取奇数场的数字视频信号;RamEven用于选择从SRAM(EVEN)中读取偶数场的数字视频信号;FPGA/CLPD输出的数据线连接至USB和SRAM芯片,再通过USB传送到PC机;FrdClk线是USB快速读写方式输出的读选通信号,作为SRAM的时钟,每来一个时钟脉冲,地址值就加1,然后将对应地址单元中存储的数据通过USB传输到PC机上。
图2 FPGA/CPLD内部时序控制
下面阐述FPGA/CPLD如何对数据传输进行控制,这部分是个难点(如图2所示)。这里只讨论如何对奇数场的数字视频信号进行控制,对偶数场的控制类似于对奇数场的控制,本文不再多述。当LingPai为高电平时,表示FPGA/CPLD向SRAM存储奇数场图像数据,此时时钟为LLC2。当场同步信号VREF、行同步信号HREF、奇偶场标志信号RTS0为高电平时,改变相应SRAM的地址信号,并且把数字视频信号输出以内部的缓冲器VI,当LingPai为低电平时,表示USB正在从SRAM读取奇数场图像数据,此时时钟为FrdClk。FPGA/CPLD内部用AddressChange记录LingPai的变化,当发现有LingPai变化时,表示读取数据变成了存储数据或者存储数字变成了读取数据,此时需要把SRAM的地址值变成0。成Verilog中灵活运用了非阻塞型过程赋值(参见下面的源程序),解决了这个技术难点。此外,需要把从SAA711A输出的数字视频信号先放在缓冲器VI[7:0]中,在LingPaiAll为高电平时,通过VO[7:0]输出到SRAM,保证存储数据的可靠同步性。这部分Verilog源程序如下:
本文链接地址:http://www.oyaya.net/fanwen/view/161151.html
下面具体描述FPGA/CPLD
内部时序控制(如图2所示)。首先需要产生FPGA/CPLD内部同步时钟信号InClk,当FPGA/CPLD向SRAM存储数字视频信号时,用SAA7111A的LLC2作为内部同步时钟信号;当FPGA/CPLD传输数字视频信号时,用USB的读选通信号FrdClk作为内部同步时钟信号。当有VS上升沿时,如果RTS0为低电平,则表明是奇数场即将到来,产生LingPai高电平信号,对LingPai取反作用作SRAM(ODD)的写信号WE1;如果RTS0为高电平,则表明偶数场即将到来,产生LingPaiEven高电平信号,对LingPaiEven取反后用作SRAM(Even)的写信号WE2,WE1和WE2经过与门后产生图2中的两个SRAM的写选通信号WE。此外,由LingRai和LingPaiEven产生LingPaiAll信号,作为选择内部同步时钟的控制信号。由USB芯片产生的Ramodd(OE1)和RamEven(OE2)信号,分别用作SRAM(ODD)和SRAM(EVEN)的读信号,OE1和OE2经过与门后产生图2中的两个SRAM读选通信号OE。当LingPaiAll为高电平期间,表示FPGA/CPLD正在向SRAM存储数据,此时用WE1作为SRAM(ODD)的片选信号CE1,用WE2作为SRAM(EVEN)的片选信号CE2;当LingPai为低电平期间,表示USB正在从SRAM读取数据,此时用OE1作为SRAM(ODD)的片选信号CE1,用OE2作为SRAM(EVEN)的片选信号CE2。
图2 FPGA/CPLD内部时序控制
下面阐述FPGA/CPLD如何对数据传输进行控制,这部分是个难点(如图2所示)。这里只讨论如何对奇数场的数字视频信号进行控制,对偶数场的控制类似于对奇数场的控制,本文不再多述。当LingPai为高电平时,表示FPGA/CPLD向SRAM存储奇数场图像数据,此时时钟为LLC2。当场同步信号VREF、行同步信号HREF、奇偶场标志信号RTS0为高电平时,改变相应SRAM的地址信号,并且把数字视频信号输出以内部的缓冲器VI,当LingPai为低电平时,表示USB正在从SRAM读取奇数场图像数据,此时时钟为FrdClk。FPGA/CPLD内部用AddressChange记录LingPai的变化,当发现有LingPai变化时,表示读取数据变成了存储数据或者存储数字变成了读取数据,此时需要把SRAM的地址值变成0。成Verilog中灵活运用了非阻塞型过程赋值(参见下面的源程序),解决了这个技术难点。此外,需要把从SAA711A输出的数字视频信号先放在缓冲器VI[7:0]中,在LingPaiAll为高电平时,通过VO[7:0]输出到SRAM,保证存储数据的可靠同步性。这部分Verilog源程序如下:
always @(posedge InCLK)
begin
AddressChange<=LingPai;
if(VREF && HREF && RTS0 && LingPai)
begin VI<=VPO;A<=A +1;end
if(!LingPai && !OE1) begin A <=A +1;
end
if(LingPai!=AddressChange) begin A <=0; end
end
2.3 USB的开发和数据传输
Cypress公司推出的带有USB接口的EZ-USB系列处理器,实现了外围设备通过USB接口与PC机进行数据通信。它通过内部RAM编程和数据存储,使得芯片具
《基于FPGA/CPLD和USB技术的无损图像采集卡(第2页)》