在FPGA中基于信元的FIFO设计方法

发布者:ananan一二三四五最新更新时间:2006-11-17 来源: 电子工程专辑关键字:数字  缓冲  隔离  时钟 手机看文章 扫描二维码
随时随地手机看文章
设计工程师通常在FPGA上实现FIFO(先进先出寄存器)的时候,都会使用由芯片提供商所提供的FIFO。但是,由于其通用性使得其针对性变差,某些情况下会变得不方便或者将增加硬件成本。此时,需要进行自行FIFO设计。本文提供了一种基于信元的FIFO设计方法以供设计者在适当的时候选用。这种方法也适合于不定长包的处理。

FIFO在数字通讯芯片领域中有两个主要的作用,缓冲数据和隔离时钟。对于FIFO的设计,最关键的问题是如何实现RAM的读写双方的信息交换。一般情况下,设计者都直接调用厂商为自己的FPGA专门打造的FIFO核。基本单元是FIFO所使用的RAM的一次读写操作的最小单元,如一个字节,一个字或者是一个双字。所谓操作粒度,即FIFO的读写双方的信息交换是基于这些基本单元。

ATM应用中的FIFO设计


以ATM的设计为例,在ATM的相关设计中,设计者则更多希望一个FIFO对外给出的信息是“现在FIFO中还剩下几个信元”。要实现这一功能通常有两种方法:
  1. 调用厂商提供的以操作粒度为基本单元的通用FIFO,然后在这个FIFO的外面再加上一个“套子”。这个套子里面设计一些计数器,根据计数内容对外提供相应的信息。
  2. 设计操作粒度为信元的定制FIFO。这样对外直接提供设计者最希望得到的信息,即FIFO中还有多少个信元。

设定FIFO最多可以存放4个信元。基本单元为字节,因此RAM的数据宽度为8位,一个信元的长度为53字节。

把RAM分成4个信元区域,读写地址的高二位指明信元区域,低六位指明信元区域内的字节地址,这样组合成8位读写地址。读写双方的信息交换是互相通知对方还有多少个信元在FIFO中。读写双方都拥有自己的记分牌(Scoreboard),这个记分牌可以由一个四位的寄存器来实现,每一位对应一个信元区域。当一个信元区域中有一个完整的信元的时候,记分牌的相应的寄存器被设置为‘1’,否则为‘0’。读出方读出一个信元,修改自己记分牌的动作叫做清位。写入方写入一个完整信元,修改自己记分牌的动作叫置位。

从逻辑上说,只需要读出方把自己的记分牌的信息(清位信息)传送给写入方,同时写入方把自己的记分牌的信息(置位信息)传送给读出方就可以了,即只要构成两条逻辑通道就可以满足需求。但是,在硬件上的实现却要比这种只从逻辑上的思考要复杂。由于读写双方有可能处在不同的时钟域,所以当读写双方交换信息的时候就需要处理信号采样的亚稳态情况。我们使用下面的方法来处理信号亚稳态。

消除信号亚稳态


在读、写入方之间建立下面的四条单向数据通道:传送写入方到读出方的置位信息(Wr2RdSet);写入方到读出方的清位信息(Wr2RdRst);读出方到写入方的清位信息(Rd2WrRst);读出方到写入方的置位信息(Rd2WrSet)。由于读出方只发生清位信息,而写入方只发生置位信息,所以信息本身只有两个。四条通道可以被划分为两个信息组:一个组(Rd2WrRst和Wr2RdRst)传递清位信息,叫清位信息组;一个组(Wr2RdSet?和Rd2WrSet)传递置位信息,叫置位信息组。读出方使用清位信息组,写入方使用置位信息组。这样做的目的是为了建立起一个稳定的握手机制。在读出方设置一个专门的发送电路,当此发送电路通过Rd2WrRst发出了清位信息后,等待写入方通过Wr2RdRst通道送回关于这个信息被接收的确认。当收到这个信息的确认后,读出方发送电路复位。同样的,写入方也有一个发送电路,操作过程同读出方一致,无非是使用置位信息组。这两个发送电路都各由四个寄存器组成,一位对应一个信元区域。

为了解决Rd2WrRst进入写入方时引起的信号亚稳态,需要在写入方设置一个专门消除亚稳态的电路模块。根据Rd2WrRst和Rd2WrSet特点不一样,这个模块有多种设计方法,但是其宗旨都是使用连续两次采样的方式。

这里介绍一种比较简单的方法。在设计的时候,把Rd2WrRst和Rd2WrSet的信号都设计为电平方式,即当读出方要发送一个信元区域的清位信息的时候,就把Rd2WrRst信号通道里对应的信元区域位设置为‘1’。这个‘1’电平一直保持到写入方的确认到达。当这个‘1’电平被写入方采样的时候,由于‘1’同步于读出方的时钟,所以很有可能会产生写入方第一次采样为一个不确切值,即通常意义上的亚稳态状态。但是,由于读出方一直保持‘1’电平,所以写时钟在第二次采样的时候就会得到一个稳定的采样样本,从而消除了Rd2WrRst的亚稳态。对于解决Wr2RdSet进入读出方的时候引起的信号亚稳态的方法和读出方一样。

对于Rd2WrSet通道里面的信息,其实是读出方给写入方的置位确认。这个信号的源头是写入方发出的Wr2RdSet,读出方对Wr2RdSet不做任何处理,只是单纯地把它里面的信息拷贝到Rd2WrSet通道并回送写入方,当Rd2WrSet进入写入方的时候,进入消除亚稳态电路,最后复位写入方的发送电路。对于Wr2RdRst通道里面的信息操作也和Rd2WrSet的信息一样。整个电路的结构如图所示。



对于信元字节的计数,和通常的方式一样,发生在FIFO的外部,外部的电路需要为FIFO提供基于信元字节计数到信元尾的信息。这个信息用来使得FIFO?的读写地址指针从一个信元区域跳到下一个信元区域。FIFO向外部电路提供FIFO有多少个信元的信息。这个信息加上外部电路自己产生的计数信息,可以知道FIFO是否将满,FIFO是否将空等一系列信息。

通过上面的描述,可以看到外部电路能够非常自由地控制FIFO的读写地址的变化,这是通用FIFO所不具备的功能。由于FIFO给出的是信元的信息,设计者在做有关UTOPIA协议的电路的时候,可以很方便地使用这个信息。同时,如果设计需要UTOPIA的查错功能,这样的情况更需要外部电路能控制?FIFO的地址变化。从而使得写地址指针回跳以覆盖原先写入的数据。显然,这一功能也是通用FIFO很难实现的。

本文小结:


对于这样的FIFO应用还可以延伸到对于非定长包的处理,比如说以太包。由于以太包的特点,要在FPGA中完全存储一个以太包需要的硬件资源很大,所以,有时候对于以太包的处理都会先把其分为固定长的数据块,并把每一数据块伴以相应的标识以识别他们是属于哪一个以太包。这样一来,就变成了对固定长数据块的处理。因此,上面所述的FIFO的设计方法又可以用来缓存以太包。

综上所述,笔者所提供的FIFO的设计方法能实现很多通用FIFO所无法完成的工作,而且适用范围很广。欲获得关于定制FIFO的HDL例程,请从www.oxbad.com/FPGA/dl/fifo.tar.gz网站上下载。

关键字:数字  缓冲  隔离  时钟 引用地址:在FPGA中基于信元的FIFO设计方法

上一篇:基于DSP与AD9852的任意信号发生器
下一篇:DSP与数据转换器协同工作考虑的10大因素

推荐阅读最新更新时间:2024-05-02 20:26

STM32F4定时器时钟频率和时钟
从时钟树中我们可以得知 (1)高级定时器timer1, timer8以及通用定时器timer9, timer10, timer11的时钟来源是APB2总线 (2)通用定时器timer2~timer5,通用定时器timer12~timer14以及基本定时器timer6,timer7的时钟来源是APB1总线 从STM32F4的内部时钟树可知, (1)当APB1和APB2分频数为1的时候,TIM1、TIM8~TIM11的时钟为APB2的时钟,TIM2~TIM7、TIM12~TIM14的时钟为APB1的时钟; (2)而如果APB1和APB2分频数不为1,那么TIM1、TIM8~TIM11的时钟为APB2的时钟的两倍,TIM2~TIM7、
[单片机]
STM32F4定时器<font color='red'>时钟</font>频率和<font color='red'>时钟</font>源
联合电子UWB数字钥匙顺利批产
近期,联合电子UWB数字钥匙在柳州厂顺利批产。UWB数字钥匙系统由联合电子自主研发,运用低功耗蓝牙(Bluetooth Low Energy)通讯结合超宽带(Ultra Wide Band)定位技术,实现了“手机即汽车钥匙”的功能,已推向市场,进入迅速爬坡阶段! 该模块具有如下特点: 支持最新蓝牙5.0协议,并向下兼容4.2、4.0协议,可与带有蓝牙功能的智能手机通讯; 支持UWB超宽带定位技术,通过ToF(Time of Flight)计算距离信息,实现手机的车内外高精度定位; 支持行业标准CCC3.0协议(Car Connectivity Consortium),稳定支持手机等智能设备连接通讯
[汽车电子]
联合电子UWB<font color='red'>数字</font>钥匙顺利批产
不同阶数的FIR数字滤波器的DSP实现
  FIR滤波器的结构主要是非递归结构,没有输出到输入的反馈。并且FIR滤波器很容易获得 严格的线性相位特性,避免被处理信号产生相位失真。而线性相位体现在时域中仅仅是h( n)在时间上的延迟,这个特点在图像信号处理、数据传输等波形传递系统中是非常重要的。此外,他不会发生阻塞现象,能避免强信号淹没弱信号,因此特别适合信号强弱相差悬殊的情况。其主要的不足之处是,其较好的性能是以较高的阶数为代价换来的。因此,在保证相同性能的前提下,努力降低其阶数是FIR数字滤波器设计的重要因素之一。   下面介绍应用Matlab和DSP芯片来实现FIR滤波器的通用模式。 1 FIR滤波器的设计方法   通常采用窗函数法设计FIR滤波器方法简单,
[嵌入式]
STM32 HSI RCC时钟配置
因为不用精确的定时,因此想不用外部晶振,直接使用内部的8MHz RC振荡器作为主振,倍频后系统时钟为36MHz 现将源代码贴在此处。 /********************************************************************** * 名 称:void RCC_HSEConfiguration(void) * 功 能:使用HSI作为主时钟,然后经过倍频PLL=36MHz * 入口参数:无 * 出口参数: ----------------------------------------------------------------------- * 说 明:
[单片机]
数字化超声探伤仪原理及UT检测技术
1 引 言 UT检测技术作为工业上5大常规无损检测技术之一,一直被人们广泛地使用。在UT中长期使用的是A型脉冲反射式 超声波探伤仪 ,其电路方框图如图1所示。 此种仪器显示器显示的是电脉冲信号,探伤人员要从这些信号中区分出缺陷波和其他各种类型的波,其难度相当大,错判、漏判现象时常发生,严重地阻碍了UT技术在更深层次上的应用。但随着电子技术的发展,其成果在UT业中的被广泛应用,一种数字化超声探伤仪应运而生,他使UT技术产生了革命性的变革,不仅能对超声波信号进行实时纪录,甚至可以给出缺陷波的性质。 2 数字化超声探伤仪的工作原理 与A型脉冲式探伤仪不同,数字化探伤仪在电路上有重大改变,其电路方框图如图2所示。
[测试测量]
<font color='red'>数字</font>化超声探伤仪原理及UT检测技术
电子元器件:迎接产业大发展的盛宴
电子信息板块行情近日分外惹眼,但是目前电子信息板块的行情仅仅是刚刚开始。从国际市场来看,全球经济增长依然乐观,为电子信息产业的稳定发展提供了有力的保障。 电子信息板块今日的突然发力即使在两市个股普涨得行情下仍显得分外惹眼,电子信息分类指数涨幅居两市之冠,大有前夜牛郎今又回之势。然而从基本面的深层原因分析,本栏认为从国内市场看,两大因素将提升国内电子元器件行业的景气度。首先,国内重大项目投资将带动产业新的增长。这些项目包括进入关键期的奥运建设、即将启动的3G建设以及正在逐步推广的数字电视转播。其次,中小企业和农村的信息化发展也将为产业提供新的增长动力。在国内、国外的双重因素的积极影响下,电子信息产业的加速发展显然在情理之中。 投
[焦点新闻]
两种无线数字调制解调器的设计对比
  CMX469A和MSM7512B分别为CML公司和OKI公司生产的单片调制解调器芯片,本文分别采用这两种芯片,设计实现了应用于无线安防监控等领域的数字调制解调器,并对两种方案做了对比分析。 图1 CMX469A与单片机接口连接关系 图2 MSM7512B与单片机接口连接关系 基于CMX469A的数字MODEM的设计与实现 硬件设计   CMX469A和单片机的外部接口电路比较简单,可通过单片机AT89C2051方便设置CMX469A的各功能引脚。CMX469A与单片机AT89C2051的接口关系如图1所示。 在工作过程中,首先通过单片机的P1口设置CMX469A的传输速率,引脚设置及其所对应的传输速率如表1所示。设定
[网络通信]
STM32时钟要先倍频N倍再分频的原因是什么?
有些朋友不理解为什么STM32时钟要先倍频N倍,再分频?你会担心这个值太大吗? 1写在前面 STM32时钟的功能,可以说是越来越强大了。 从各个系列的时钟树可以看得出来,最早F1系列的时钟功能相对比较简单,到这后面H7、G0的时钟越来越丰富。 今天讲述一下其中的PLL环节。 2关于PLL 什么是PLL? PLL:Phase Locked Loop锁相环。 PLL用于振荡器中的反馈技术,通常需要外部的输入信号与内部的振荡信号同步。 一般的晶振由于工艺与成本原因,做不到很高的频率,而在需要高频应用时,由相应的器件VCO,实现转成高频,但并不稳定,故利用锁相环路就可以实现稳定且高频的时钟信号。 每一块STM32处理器至少都有一个PLL,
[单片机]
STM32<font color='red'>时钟</font>要先倍频N倍再分频的原因是什么?
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved