⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 21ic 基于fpga-cpld和usb技术的无损图像采集卡.htm

📁 网上收集的关于嵌入式开发的文档。拿来共享!
💻 HTM
📖 第 1 页 / 共 2 页
字号:
            PAL制式、YUV 422 
            16bits数字视频信号输出、设置默认的图像对比度、亮度及饱和度。SAA7111A芯片产生的数字视频信号、控制信号和状态信号送入控制芯片FPGA/CPLD中,即把场同步信号VREF、行同步信号HREF、奇偶场标志信号RTS0、片选信号CE、垂直同步信号VS、象素时钟信号LLC2以及数字视频信号VPO[15:8]等管脚连接到FPGA/CPLD芯片LC4128V,以便LC4128V获知各种采集信息。同时,SRAM芯片的读写信号、片选信号、高低字节信号、数据线IO[7:0]和地睛线A[17:0]连接到LC4128V,整个采集过程由FPGA/CPLD芯片LC4128V控制。</P>
            <P 
            style="TEXT-INDENT: 30px">在PC机端,通过USB发出图像采集命令后,FPGA/CPLD进行图像采集,由于CCD摄像头输出模拟信号,需要经过视频A/D转化睛,把模拟视频信号转化成数字视频信号,输入进FPGA/CPLD芯片,FPGA/CPLD根据状态信号RTS0把奇偶场图像信号分别存储在SRAM(ODD)和SRAM(EVEN)中。</P>
            <P style="TEXT-INDENT: 30px">2.2 图像信号的处理和控制</P>
            <P 
            style="TEXT-INDENT: 30px">这部分是无损图像采集卡的核心,需要对外围的器件进行集中控制和处理。FPGA/CPLD对图像信号的采集、控制、存储数据到SRAM以及从SRAM读取数据都在这里实现。选用了Lattice公司的新一代产品ispMACH4000V-LC4128V,采用Verilog 
            HDL作为硬件描述语言,但是所编写的Verilog源程序都适用于FPGA器件,又适用于CPLD器件。</P>
            <P 
            style="TEXT-INDENT: 30px">FPGA/CPLD与USB接口部分由七个部分构成(如图1所示):Start线是拍摄线,它可以向FPGA/CPLD发出图像采集命令,FPGA/CPLD把当前的奇数场图像存储在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机上。</P>
            <P 
            style="TEXT-INDENT: 30px">下面具体描述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。<BR><BR><B><A 
            href="http://www.21ic.com/info/images/aet/200310/16b.gif">图2 
            FPGA/CPLD内部时序控制</A></B><BR><BR></SPAN><FONT 
            size=3>&nbsp;&nbsp;&nbsp; </FONT><SPAN 
            class=main1>下面阐述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源程序如下:</P>
            <P style="TEXT-INDENT: 30px">always @(posedge InCLK)</P>
            <P style="TEXT-INDENT: 30px">begin</P>
            <P style="TEXT-INDENT: 30px">AddressChange&lt;=LingPai;</P>
            <P style="TEXT-INDENT: 30px">if(VREF &amp;&amp; HREF &amp;&amp; RTS0 
            &amp;&amp; LingPai)</P>
            <P style="TEXT-INDENT: 30px">begin VI&lt;=VPO;A&lt;=A +1;end</P>
            <P style="TEXT-INDENT: 30px">if(!LingPai &amp;&amp; !OE1) begin A 
            &lt;=A +1;</P>
            <P style="TEXT-INDENT: 30px">end</P>
            <P style="TEXT-INDENT: 30px">if(LingPai!=AddressChange) begin A 
            &lt;=0; end</P>
            <P style="TEXT-INDENT: 30px">end</P>
            <P style="TEXT-INDENT: 30px">2.3 USB的开发和数据传输</P>
            <P 
            style="TEXT-INDENT: 30px">Cypress公司推出的带有USB接口的EZ-USB系列处理器,实现了外围设备通过USB接口与PC机进行数据通信。它通过内部RAM编程和数据存储,使得芯片具有软特性。USB主机通过USB总线下载8051程序代码和设备特征到RAM中,然后EZ-USB芯片作为一个由代码定义的外围设备重新连接到主机上(重枚举)。</P>
            <P 
            style="TEXT-INDENT: 30px">USB规范1.1版本定义了USB的四种数据传输模式:控制传输、同步传输、中断传输和块传输,以适应不同应用场合的需求。其中块传输方式提供数据校验,适用于无误传输大指数据的场合。本课题选用USB的块传输方式,同时采用了EZ-USB的快速传输模式,理论速率为12Mbps,实际最高速率能达到8Mbps。</P>
            <P 
            style="TEXT-INDENT: 30px">当PC机检测到USB图像采集卡已经插上后,PC机可自动地将图像采集卡的驱动程序装入操作系统,同时PC机通过USB总线下载8051程序代码和设备特片到USB的RAM中。<IMG 
            height=665 hspace=1 
            src="21IC 基于FPGA-CPLD和USB技术的无损图像采集卡.files/16c.gif" width=364 
            align=right vspace=1 border=0></P>
            <P 
            style="TEXT-INDENT: 30px">USB的开发包括USB的固件程序、Windows设备驱动程序和Windows主机应用程序的编制,限于篇幅,这里只简单介绍一下USB固件程序(Firmware)的编制。USB固件程序的具体流程如图3所示,在源程序的TD_Poll()中加入了对比度、亮度及饱和度的调节,以做到在硬件上对图像处理中的上述重要参数的调节,在外部中断1中完成一帧数据的快速传输。</P>
            <P 
            style="TEXT-INDENT: 30px">由于采用了外部中断1,为了避免与USB中断的冲突,需要在工程中自己编写一个汇编文件,内容如下:</P>
            <P style="TEXT-INDENT: 30px">cseg at 43h</P>
            <P style="TEXT-INDENT: 30px">ljmp 1800h</P>
            <P style="TEXT-INDENT: 30px">end</P>
            <P style="TEXT-INDENT: 30px">此外,在编写的Keil 
            C源程序中需要加两句话,以解决USB中断和外部中断的地址重叠问题。</P>
            <P style="TEXT-INDENT: 30px">#pragma intvector (0x17FD)</P>
            <P style="TEXT-INDENT: 30px">#pragma interval(4)</P>
            <P style="TEXT-INDENT: 30px">为了增加USB传输数字视频信号的速度,采用USB的快速读写模式,在Keil 
            C源程序中内嵌对USB进行寄存器设置的汇编代码。配置了USB的时钟控制寄存器,采用全速访问数据存储器,MOVX指令在两个机器周期内实行,时钟频率为24MHz,因此USB产生的读选通宽度为83.3ns。配置端口A,使能PORTACFG(16进制地址为7F93H)寄存器中的快速读FRD。配置快速传输控制寄存器FASTXFR(16进制地址为7FE2 
            H),采用快速块传输,使能快速读写信号。为了将端点2缓冲匹配置成FIFO,增加读写速度,8051将端点2缓冲区(IN2)的首地址7E00H装入自动指针AUTOPTRH(16进制地址为7FE3H)和AUTOPTRL(16进制地址为7FE4H),并且dptr指向AUTODATA(16进制地址为7FE5H),也就是指向了FIFO寄存器,这样8051可以完全像FIFO一样访问端点2缓冲区。</P>
            <P style="TEXT-INDENT: 30px">2.4 PC机端的图像还原</P>
            <P style="TEXT-INDENT: 30px">在PC机端,用Visual C++ 
            6.0编写客户应用程序,应用程序通过USB接收原始的奇数场和偶数场图像数据,待接收完奇数场和偶数场图像数据后,应用程序把它们组成完整的一帧图像,并且把该帧图像数据存储到硬盘上,然后把这帧图像转化成BMP格式的图像,以BMP格式再次在硬盘上存储图像数据,同时以BMP的形式显示图像。</P>
            <P style="TEXT-INDENT: 0px"><B>3 应用前景</B></P>
            <P 
            style="TEXT-INDENT: 30px">该无损图像采集卡虽然是针对特殊的图像处理应用而研发的,但它的作用很广,能应用于嵌入式系统中的图像传输、集成电路和精密机械领域中的器件定位等。此外,如果用USB2.0代替USB1.1,则能实时传输图像数据到PC机或嵌入式系统,用软件进行图像数据的压缩处理,这块外置式图像采集卡可以作为一个很好的实时监控设备,以降低硬件成本。</P></SPAN>
            <P></P></DIV></TD></TR>
        <TR>
          <TD align=middle height=15>
            <TABLE cellSpacing=0 cellPadding=0 align=center border=0>
              <TBODY>
              <TR>
                <TD>
                  <DIV></DIV></TD></TR></TBODY></TABLE></TD></TR>
        <TR>
          <TD align=right height=2>
            <TABLE cellSpacing=0 cellPadding=0 width="80%" border=0>
              <TBODY>
              <TR>
                <TD width=75>【<A href="javascript:doPrint();">打印本稿</A>】</TD>
                <TD width=8></TD>
                <TD width=75>
                  <P>【<A 
                  href="http://www.21ic.com/new_info/news/review.asp?title=基于FPGA/CPLD和USB技术的无损图像采集卡target=" 
                  _blank?>发表评论</A>】</P></TD>
                <TD width=10></TD>
                <TD width=79>【<A 
                  href="http://www.21ic.com/new_info/news/sendmail.asp?num=基于FPGA/CPLD和USB技术的无损图像采集卡">推荐</A>】</TD></TR></TBODY></TABLE></TD></TR>
        <TR>
          <TD align=right height=2></TD></TR>
        <TR>
          <TD align=right height=2><A href="javascript:window.close();"><IMG 
            height=20 src="21IC 基于FPGA-CPLD和USB技术的无损图像采集卡.files/close_c.gif" 
            width=77 border=0 name=Image161></A><FONT 
          color=#ffffff>----</FONT></TD></TR></TBODY></TABLE><BR><BR>
      <TABLE cellSpacing=0 cellPadding=0 width=520 align=center border=0>
        <TBODY>
        <TR>
          <TD vAlign=bottom align=middle width=114 bgColor=#999a76 
            height=1><IMG height=1 
            src="21IC 基于FPGA-CPLD和USB技术的无损图像采集卡.files/blank.gif" width=1></TD>
          <TD width=466 height=1></TD></TR>
        <TR>
          <TD align=middle width=114 bgColor=#ece8db height=19>相关新闻</TD>
          <TD width=466 height=19></TD></TR>
        <TR bgColor=#999a76>
          <TD colSpan=2 height=1><IMG height=1 
            src="21IC 基于FPGA-CPLD和USB技术的无损图像采集卡.files/blank.gif" width=1></TD></TR>
        <TR>
          <TD colSpan=2 height=1></TD></TR></TBODY></TABLE>
      <TABLE borderColor=#000000 cellSpacing=0 cellPadding=0 width=520 
      align=center border=0>
        <TBODY>
        <TR>
          <TD vAlign=top>
            <TABLE class=RelatedTable width="100%" border=0>
              <TBODY>
              <TR class=RelatedTr>
                <TD class=RelatedTd>
                  <SCRIPT language=javascript 
                  src="21IC 基于FPGA-CPLD和USB技术的无损图像采集卡.files/about.htm"></SCRIPT>
                </TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><BR></TD>
    <TD vAlign=top align=middle width=150 bgColor=#ece8db height=2>
      <TABLE cellSpacing=0 cellPadding=1 width="100%" border=0>
        <TBODY>
        <TR>
          <TD bgColor=#000000>
            <TABLE cellSpacing=0 cellPadding=2 width=150 bgColor=#ece8db 
            border=0>
              <TBODY>
              <TR>
                <TD><!--#include file="../../adinc/a_ad_14.asp"--></TD></TR>
              <TR>
                <TD 
  height=5></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=766 align=center border=0>
  <TBODY>
  <TR>
    <TD vAlign=top colSpan=6></TD></TR>
  <TR>
    <TD vAlign=top colSpan=6 height=10></TD></TR>
  <TR>
    <TD vAlign=top bgColor=#999999 colSpan=6 height=2></TD></TR>
  <TR>
    <TD class=stxt vAlign=center align=middle colSpan=6 
height=6></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=766 align=center border=0>
  <TBODY>
  <TR>
    <TD class=s width=973 height=12></TD></TR>
  <TR>
    <TD class=s width=973 height=20>
      <DIV align=center><FONT face="Arial, Helvetica, sans-serif"><!--#include file="../../../../inc/copy.inc"--></FONT></DIV></TD></TR></TBODY></TABLE><BR></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -