FPGA异步FIFO设计中的问题与解决办法-国际工业自动化网-控制,工控,网络,仪器仪表,产品,采购选型,推荐,问答,资料,下载
 IIA首页    新闻      案例      工业经理人
      产品         技术      专题      工程师社区
      学院         下载      视频      在线研讨会
现场层       传感器    现场仪表   工业安全
现场总线  工业以太网   工业无线  工业连接
机器视觉    测试测量   执行机构   电子元件
机器控制/过程控制     PLC    DCS
 控制系统  控制软件   HMI   运动控制
 嵌入式系统   工业机器人
优化/集成/管理
MES    PLM    工业数据中心
能效管理    设备管理与维护
可持续发展技术专题 2011汉诺威工业博览会回顾
 

案例

Application Case

   首页  >  传感器  >  案例  >  正文

FPGA异步FIFO设计中的问题与解决办法


http://www.iianews.com FPGA 2009年12月25日

  随着数字电子系统设计规模的扩大,一些实际应用系统中往往含有多个时钟,数据不可避免地要在不同的时钟域之间传递。如何在异步时钟之间传输数据,是数据传输中一个至关重要的问题,而采用FIFO正是解决这一问题的有效方法。异步FIFO是一种在电子系统中得到广泛应用的器件,多数情况下它都是以一个独立芯片的方式在系统中应用。本文介绍一种充分利用FPGA内部的RAM资源,在FPGA内部实现异步FIFO模块的设计方法。这种异步FIFO比外部FIFO 芯片更能提高系统的稳定性。

1 FIFO的基本结构和工作原理

  FIFO(First In First Out)是一种采用环形存储结构的先进先出存储器。其使用一个双端口存储器存放数据,数据发送方在一端写入数据,接收方在另一端读出数据,能够协调好两个时钟域的工作,满足高时钟频率的要求。FIFO在FPGA设计中主要用来缓冲数据和隔离时钟或相位差异。访问FIFO时不需要地址线,只需要数据线和读写控制信号线,且数据地址由内部读写指针自动加1完成,因此利用FIFO实现数据的缓存具有接口简单、读写方便的优点。

  根据FIFO的工作时钟,可将FIFO分为同步FIFO和异步FIFO。同步FIFO是指读时钟和写时钟为同一个时钟,在时钟沿来临时同时进行读写操作;异步FIFO是指读写时钟不是同一个时钟,而是相互独立的。实际上,工作在同一时钟的FIFO很少用到,多数都是读写时钟独立的异步FIFO。本文设计的异步FIFO位宽为8,深度(即FIFO可以存储8位数据的个数)为1 024。异步FIFO的结构如图1所示。

  双端口RAM存储器具有独立的读写端口。如果用一个单端口RAM存储器实现异步FIFO,还应该包含一个仲裁器来保证同一时刻只能有一种操作(读或写操作)。本文选择的双端口RAM并不一定是真正的双端口,只要有独立的读写端口即可。读写控制逻辑由加法计数器构成,实现读写地址的自动加1功能。空/满标志位的产生逻辑给系统提供空(empty)和满(full)信号。

2 异步FIFO设计中的问题与解决办法

2.1 亚稳态问题


  在含有触发器的电路中往往会出现亚稳态问题。亚稳态会使异步FIFO的读写地址发生错误,产生误读或者误写。为此异步FIFO设计中亚稳态问题也是一个比较重要的问题。亚稳态不可能完全消除,只能使其出现的概率降到最低。主要有2种方法来降低亚稳态出现的概率:

  ①采用触发器冗余方式。即采用多个触发器级联的方式,使本来出现概率为P的亚稳态,其出现概率降低到P2,但这种方式会导致延时增加。

  ②使用格雷码。格雷码的相临码元之间只有一位发生变化,这就大大地降低了亚稳态出现的概率。本文采用格雷码方式。

2.2 空/满标志位的判断

  为保证数据的正确写入和读出,不发生写满和读空操作,怎样判断空/满标志位的产生就成为异步FIFO设计的核心问题。异步FIFO是环形存储的,当读写地址指针相等时,意味着空标志位或者满标志位的产生。但是却不能确定是写满还是读空状态。为解决这一问题,本文将转换为格雷码后的读写地址指针分别经过检测和计数器。每当读写指针遍历一圈(当读写地址指针指向双端口RAM的最后一个地址)时,写计数i加1,读计数j加1。这样写满状态和读空状态的判断就需要同时满足两个条件。下面分别给出写满和读空状态的判断。

  ①写满状态的判别:当读地址指针等于写地址指针,并且i>j时,产生满标志。

  ②读空状态的判别:当写地址指针等于读地址指针,并且i=j时,产生空标志。

  由于空/满标志位产生的结构图对称,故本文只给出满标志位产生的结构图,如图2所示。其中,主数i为写地址指针遍历的圈数,计数j为读地址指针遍历的圈数。
 [1]  [2] 

 
相关链接
基于Actel FPGA的PWM IP的应用 [ 2009-12-28]
基于DSP Builder的16阶FIR滤波器实现 [ 2009-12-28]
基于CPLD/FPGA的多功能分频器的设计与实现 [ 2009-12-28]
基于可编程逻辑器件的数字电路设计 [ 2009-12-27]
天水电传所三项成果通过省级鉴定 [ 2009-12-27]
基于FPGA嵌入式的多比特自相关器设计 [ 2009-12-26]
基于ARM的3DES加密算法实现 [ 2009-12-26]
基于AD7543和FPGA的数/模转换电路设计 [ 2009-12-26]
基于多速率DA的根升余弦滤波器的FPGA实现 [ 2009-12-26]
基于FPGA的FIFO设计和应用 [ 2009-12-26]
基于FPGA的等位移多点采样硬币识别研究 [ 2009-12-24]
  相关群组   
  相关话题   
  选择最适合的电机控制方案:MCU、DSP还是FPGA?
  虚拟FPGA逻辑验证分析仪的设计
  FPGA配合预失真技术的解调误码测试仪
  基于DSP+FPGA+ASIC的实时红外图像处理系统
  相关问答   
  相关产品

NI CompactRIO嵌入式测控平台

PCI-8253/8265基于DSP的3/6轴模拟运动控制卡

NI CompactRIO

基于SPEED7技术的SODIMM PLC
  推荐企业
Endress+Hauser 恩德斯豪斯  
  关于 " FPGA异步FIFO设计中的问题与解决办法 " ,填写反馈

验证码:    看不清

用户名:          密 码:         
还不是 IIAnews 注册会员? 立即免费注册 节省更多时间!
  直通车 :   ( 无须注册,轻松沟通 )
*姓名:     *单位名称:
*电话:     *电子邮件:
 
    
 

行业导航

电力    冶金    石化    医疗    建材
交通    电子    机械    节能    汽车    OEM
2012工业通讯技术应用峰会
产品点通
交换机  串口服务器  控制器  工控机  平板电脑  人机界面
传感器  视觉系统  伺服电机  PAC   I/O模块   MES  触摸屏
PLC  继电器  变送器  步进电机
主编直播间
在线提问  主编观点
•  2011年自动化市场回顾
•  MES提供从控制到管理的协同制造
•  定制创新服务模式—SFAE助力中山市松德包装机械股份有限公司...
•  风电变桨控制系统调查
•  投票你觉得性价比最好的人机界面
最新话题
在线研讨会
 • 1st Web-Seminar for PCS 7 Specialists: Customer Be
 • 2011研拓自动化全方位运动控制产品与系統解決方案
 • 2011科尔摩根 (Kollmorgen) KBM无框架直驱电机产品介绍
 • 美国福禄克(FLUKE)电能质量与设备使用的关系
 • 科尔摩根运动控制产品及其印刷行业应用方案
最新视频
西门子全集成自动化视频8- 国际化的设备
全面进军国际市场需要面对众多挑战。您必须将软件、文档、说明手册翻译成多
•   西门子全集成自动化视频7- 轻松集成
•   施耐德电气案例展播——建筑楼宇
•   施耐德电气案例展播——数据中心
•   菲尼克斯电气标识系统产品视频
•   西门子全集成自动化视频6- 生产透明度
编辑推荐
•  霍尼韦尔将2012年的年度用户大会(HUG)大学生挑战赛活动扩展至亚太地区
•  倍加福邀您共襄沈阳制博会盛事
•  SICK 传感器公司中文名称变更通告
•  堡盟南京办事处正式成立
•  艾默生通过并购扩展其安全业务
市场调研

搜企
首页 | 国际金属加工网 | 造车网 | 会员 | 主题信息 | 自动化问答 | 网站地图 | 免责声明 | 关于我们 | 主编信箱
北京市朝阳区东四环中路58号远洋国际中心C座2402室 电话: 010-65307950 传真: 010-65307859
Copyright ©1997-2012 IIA News.com & SooQ. All rights reserved.