EDN China > 技术文章 > 可编程器件 > FPGA > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

基于FPGA/CPLD和USB技术的无损图像采集卡

来源:嵌入式控制研究室/姚聪 汪敏 潘志浩?? 2006年08月16日 ?? 收藏0
CLPD输出的数据线连接至USB和SRAM芯片,再通过USB传送到PC机;FrdClk线是USB快速读写方式输出的读选通信号,作为SRAM的时钟,每来一个时钟脉冲,地址值就加1,然后将对应地址单元中存储的数据通过USB传输到PC机上。


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。成V

erilog中灵活运用了非阻塞型过程赋值(参见下

面的源程序),解决了这个技术难点。此外,需要把从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编程和数据存储,使得芯片具有软特性。USB主机通过USB总线下载8051程序代码和设备特征到RAM中,然后EZ-USB芯片作为一个由代码定义的外围设备重新连接到主机上(重枚举)。

  USB规范1.1版本定义了USB的四种数据传输模式:控制传输、同步传输、中断传输和块传输,以适应不同应用场合的需求。其中块传输方式提供数据校验,适用于无误传输大指数据的场合。本课题选用USB的块传输方式,同时采用了EZ-USB的快速传输模式,理论速率为12Mbps,实际最高速率能达到8Mbps。

  当PC机检测到USB图像采集卡已经插上后,PC机可自动地将图像采集卡的驱动程序装入操作系统,同时PC机通过USB总线下载8051程序代码和设备特片到USB的RAM中。

  USB的开发包括USB的固件程序、Windows设备驱动程序和Windows主机应用程序的编制,限于篇幅,这里只简单介绍一下USB固件程序(Firmware)的编制。USB固件程序的具体流程如图3所示,在源程序的TD_Poll()中加入了对比度、亮度及饱和度的调节,以做到在硬件上对图像处理中的上述重要参数的调节,在外部中断1中完成一帧数据的快速传输。

USB固件程序的具体流程

  由于采用了外部中断1,为了避免与USB中断的冲突,需要在工程中自己编写一个汇编文件,内容如下:

  cseg at 43h

  ljmp 1800h

  end

  此外,在编写的Keil C源程序中需要加两句话,以解决USB中断和外部中断的地址重叠问题。

  #pragma intvector (0x17FD)

  #pragma interval(4)

  为了增加USB传输数字视频信号的速度,采用USB的快速读写模式,在Keil C源程序中内嵌对USB进行寄存器设置的汇编代码。配置了USB的时钟控制寄存器,采用全速访问数据存储器,MOVX指令在两个机器周期内实行,时钟频率为24MHz,因此USB产生的读选通宽度为83.3ns。配置端口A,使能PORTACFG(16进制地址为7F93H)寄存器中的快速读FRD。配置快速传输控制寄存器FASTXFR(16进制地址为7FE2 H),采用快速块传输,使能快速读写信号。为了将端点2缓冲匹配置成FIFO,增加读写速

?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

FPGA? CPLD? USB? 图像?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈