Camera Link接口的异步FIFO设计与实现

2011-07-17 10:54:19来源: 互联网

FIFO(First In First Out)是一种常用于数据缓存的电路器件,可应用于高速数据采集、多处理器接口和视频信号的时序控制等领域。在Camera Link接口中,需要将28 bit的TTL/CMOS信号同时送给Camera Link接口芯片,其中28 bit信号包括24 bit数据信号和4 bit控制信号(帧有效FVAL信号和行有效LVAL信号等)。而进入FPGA中的只有数据信号,所以,异步FIFO要有在控制图像数据时序的同时,生成FVAL和LVAL同步控制信号的功能。在这种情况下,目前常用的FIFO器件很难满足系统的要求。文中采用Verilog HDL语言设计了一种异步FIFO,它不仅提供数据缓冲,而且能够匹配Camera Link接口标准。
1 异步FIFO设计
    异步FIFO由FIFO主控模块(包含存储单元)、读地址及空标志产生模块、写地址及满标志产生模块、异步比较模块4部分组成,结构图如图1所示。整个FIFO分为2个独立的时钟域,即读时钟域和写时钟域,FIFO的存储介质为一块双口RAM,可以同时进行读写操作。在写时钟域部分,由写地址及满标志模块产生写地址和写满标志信号,写时钟信号和写使能信号由系统数据生成模块给出,写入的数据由主控模块存储在双端口RAM中;在读时钟域部分,由读地址及空标志模块产生读地址和读空标志信号,读时钟信号由系统时钟通过分频器得到,读使能使用视频同步信号中的行同步LVAL信号,读出数据由主控制模块从双端口RAM中读出并连同视频同步信号一起发送到Camera Link接口。由异步比较模块对读、写地址进行比较,并产生将满(nfull_n)、将空(nempty_n)信号。


2 设计的难点
    对于通用的FIFO,不能直接应用到Camera Link接口中,也不能通过简单修改现成的FIFO模块而得到,这是因为异步FIFO的设计存在以下难点:
    (1)亚稳态问题:在信号传输中,每种触发器都有时序要求,并在工作过程中存在数据的建立时间和保持时间。对于使用上升沿触发的触发器来说,建立时间(Setup Time)是在时钟上升沿到来之前,触发器数据保持稳定的最小时间;而保持时间(Hold Time)是在时钟上升沿到来之后,触发器数据还应该保持的最小时间。在时钟上升沿前后的这个窗口内数据应该保持不变,否则会使触发器工作在一个不确定的状态,即亚稳态。如图2所示。当触发器处于亚稳态,且处于亚稳态的时间超过了一个时钟周期时,这种不确定的状态将会影响到下一级的触发器,最终导致连锁反应,从而使整个系统功能失常。

    (2)FIFO空、满标志产生逻辑:一个好的FIFO设计的基本要求是:写满不溢出;读空又不多读。传统的异步FIFO把读写地址信号同步后再进行比较以产生空满标志,由于读写地址的每一位都需要两级同步电路,大量使用寄存器必然要占用很大的面积。这种方法不适合设计大容量的FIFO。当读、写指针相等也就是指向同一个内存位置时,FIFO可能处于满或空两种状态,必须区分FIFO是处于空状态还是满状态。
    (3)Camera Link接口的匹配:由于异步FIFO在控制数据时序的同时,还要产生视频同步控制信号,并按照控制信号的时序将数据读出。设计中,只用到Camera Link接口中的帧有效信号FVAL和行有效信号LVAL,当FVAL和LVAL信号为高时,才能将数据读出,为低时,数据不能读出。所以双重的时序控制很难稳定,Camera Link接口的匹配也很难达到要求。
3 问题的解决
    (1)高速的格雷码指针:对于亚稳态问题,采用高速的格雷码指针来解决。设计中读、写地址采用格雷码,用两组寄存器作为格雷码指针。一组二进制计数器,而另一组用来存放二进制码到格雷码转换(Binary-to-Gray)的值。图3是高速格雷码计数器的示意图。加法器的附加条件分别是读(或写)使能和空(或满)标志。当读(或写)使能有效(高电平)且FIFO存储器处在非空(或非满)状态时就对二进制序列加一,否则二进制序列加零(保持不变);然后通过Binary-to-Gray电路将二进制bnext转换为格雷码gnext,这个转换电路是由n个二输入异或门组成,在下一个时钟沿gnext被存到格雷码指针中。

    (2)空满状态产生逻辑:对于空、满标志,设计中采用的解决方法是将地址空间划分为4个连续区间,将取自每个指针最高位和次高位的4位地址状态进行译码,以判定当2个指针相等时FIFO存储器是处于满状态还是空状态。如图4和5所示,如果写指针落后于读指针一个区间,说明FIFO存储器将可能为满状态;如果读指针落后于写指针一个信号区,说明FIFO存储器将可能为空状态。利用一个状态锁存器,当写指针在读指针后一个地址空间时将锁存器置位;当读指针在写指针后一个地址空间时将锁存器清零。在读指针与写指针相等时,如果锁存器值为1,FIFO存储器是满状态;如果锁存器值为0,FIFO存储器是空状态。由图4和5可以写出状态锁存器的置位和复位的逻辑关系:
   

    (2)空满状态产生逻辑:对于空、满标志,设计中采用的解决方法是将地址空间划分为4个连续区间,将取自每个指针最高位和次高位的4位地址状态进行译码,以判定当2个指针相等时FIFO存储器是处于满状态还是空状态。如图4和5所示,如果写指针落后于读指针一个区间,说明FIFO存储器将可能为满状态;如果读指针落后于写指针一个信号区,说明FIFO存储器将可能为空状态。利用一个状态锁存器,当写指针在读指针后一个地址空间时将锁存器置位;当读指针在写指针后一个地址空间时将锁存器清零。在读指针与写指针相等时,如果锁存器值为1,FIFO存储器是满状态;如果锁存器值为0,FIFO存储器是空状态。由图4和5可以写出状态锁存器的置位和复位的逻辑关系:
   

    对于空、满标志的置位和复位,设计中采用异步比较的方法实现。如图6所示,aempty_n和afull_n是由异步信号比较产生的。aempty_n有效(低电平)是由读指针增加引起的,所以它是发生在读时钟的上升沿;aempty_n信号释放(无效)是由写指针增加引起的,所以它发生在写时钟的上升沿。类似地,afull_n信号变为有效(低电平)是由写指针增加引起的,所以它发生在写时钟的上升沿;释放(无效)是由读指针增加引起的,所以它发生在读时钟的上升沿。空状态标志是用于阻止下一个读时钟周期继续读取数据,aempty_n的有效沿(下降沿)与读时钟同步,但是它的上升沿却与写时钟同步,所以aempty_n的上升沿要经过同步器才能传递到读时钟域中。afull_n信号与此类似。

    (3)Camera Link接口匹配逻辑:Camera Link接口有基本架构(Base Configuration)、中阶架构(Medium Configuration)及完整架构(Full Configuration)3种。设计中采用基本架构,配置A口和B口作为图像数据的输入,其中A口、B口都为8 bit;控制信号使用帧有效信号FVAL和行有效信号LVAL。当FVAL和LVAL信号都为高电平时,数据在图像时钟信号的控制下依次发送。
    由于对FIFO的读要严格按照控制信号的时序,依次将写入到双端口RAM中的像素数据读出,也就是当帧有效信号FVAL为高电平,行有效信号LVAL由低电平跳变到高电平时,读出的是该行的第一个像素数据;并依次按照行频和帧频将像素数据发送到Camera Link接口中。所以要解决以下几个问题:
    首先是读时钟信号与写时钟信号的匹配问题。设计中采用分频器将系统时钟分频,并与写时钟相近,作为读时钟,这样可以避免频繁产生空、满信号。
    其次,读操作控制信号的确定。通常的设计中,读出数据和读地址加一都在读使能信号的控制下完成。但设计中增加FVAL和LVAL信号后,数据的读出和读地址的增加都是在LVAL和FVAL信号为高时完成,因此就不能用通常设计中的读使能信号作为读操作的控制信号,设计中用LVAL做为读操作的控制信号,从图1中也可以看出。这样,当LVAL为高电平时,就可以实现每次地址加一,读出一个数据。当LVAL为低电平时,地址不增加,数据也不被读出。
    最后,FVAL和LVAL信号的产生。设计中通过计数来实现,那么触发计数的信号如何选取呢?通过上面分析知道,读地址的增加和数据的读出都是在LVAL信号的控制下完成的,而LVAL信号也要与读出的数据一一对应,也就是说LVAL计数每次加一就会有一个数据读出,所以采用通常设计中的读使能信号作为LVAL和FVAL计数的触发信号,便可以实现Camera Link接口的控制信号对图像数据的控制。
4 验证结果
      将程序下载到FPGA中,使用开发工具Quartus II6.0中自带的逻辑分析仪SignalTap对FIFO中的信号进行采样监测,采样结果如图7、图8所示。结果表明信号时序准确,数据和地址无毛刺现象。从图7可以看出,当LVAL信号为低时,读地址不增加并停止读,满足时序要求。图8中rdata为读出数据,值为0~9,lval_count为LVAL信号的计数寄存器,计数值为0~369,其中高电平为0~319。从图中看出:读出数据值和lval_count的尾数值一一对应,也就是说LVAL与读出数据一一对应。结果表明其可以为Camera Link接口提供稳定的数据及控制信号。

    本文设计了一种异步FIFO,并成功应用在Camera Link接口中。分析和解决了异步FIFO设计中存在的2个关键问题:用高速的格雷码指针作为读写地址编码,有效降低了亚稳态出现的概率;通过划分地址空间和增加标志位解决了空、满信号问题。同时还解决了与Camera Link接口的时序匹配问题。设计中增加了电路的面积,但避免了复杂的组合逻辑,提高了系统的工作频率。
参考文献
[1] 夏宇闻.Verilog数字系统设计教程[M].北京航空航天大学出版社,2003.
[2] 魏芳,刘志军,马克杰.基于Verilog HDL的异步FIFO设计与实现[J].电子技术应用,2006(7):97-99.
[3] 陈骥,王鑫,曹久大.高速CCD激光移位传感器[J].光学精密工程,2008(4):611-616.
[4] 刘洪波,龙娟.异步FIFO状态判断的研究与设计[J].微电子学与计算机,2007,24(3).
[5] 黄平,何虎刚,徐定杰.导航接收机的非对称异步FIFO设计[J].弹箭与制导学报,2008,28(1).
[6] 万秋华,孙莹,王树浩,等.双读数系统的航天级绝对式光电编码器设计[J].光学精密工程,2009(6):52-57.

关键字:接口  异步  设计  实现

编辑:eeleader 引用地址:http://www.eeworld.com.cn/gykz/2011/0717/article_7186.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
接口
异步
设计
实现

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved