异步FIFO的设计与FPGA实现

合集下载

基于FPGA的异步FIFO设计

基于FPGA的异步FIFO设计
器地址 操作 的情况 。在读 写地址 相等或 相差 一个 或 多个地 址的 时候 ,满标 志应该 有效 .表 示此 时 FF 已满 ,外部 电路 应 对 FF IO IO停 发 数据 。在满 信 号有 效 时未 写数 据 ,应 根据 设 计 的要 求 ,或 保持 、或 抛弃 重发 。 同理 ,空标 志 的产 生也是 如此 。即 : 空 标志< ( 地址一 = I 写 读地 址l= < 预定 值 )A D ( N 写地址 超前读 地址) 满 标志< ( = I 址一 地址 < 预 定值 )A D ( 写地 读 = N 读地址 超前写 地址 ) 最 直接 的做法 是 ,采用读 写 地址 相 比较来 产生 空/ 满标 志 。如 图 2所 示 。当读 写 地址
目前 兀F O的 内部 结构是 由双 口 R M 加驱 动 双 口 R M 地 址 的计 数器 构成 ,异 步 F. A A I
F O是 由读 写信 号 使计 数 器翻 转 。我们 在 程序 设 计 时也采 用 这 一实 现 方式 ,调 用 F G 内 PA
部集成 的双 端 口 R M 存储 器 ,再加 一些 逻辑 电路来 实 现具 体的操 作 。 O
因此 ,对 FF IO空或 满 的判 断是 跨 时钟 域 的 。根 据异 步 的指针 信 号对 F F 的满状 态 或空 IO
状态 进行 正确 的判 断是实 现异 步 F F 的重 点 和核心 。如何 正 确设计 此 部分 的逻 辑 .直接 IO 影 响到 FF IO的性 能。
空/ 满标 志产 生 的原 则是 无论 在进 行 什么操 作 。都 不应 出 现读 写地址 同时对 一个 存储
FF IO ̄难 点 即空/ 满标 志组成 部分 。最后 给 出 了总的逻 辑仿 真 波形 图验 证本 次设

基于FPGA的高速异步FIFO存储器的设计与实现

基于FPGA的高速异步FIFO存储器的设计与实现

信息科技中国科技信息2009年第2期CHINASCIENCEANDTECHNOLOGYINFORMATIONJan.2009基于F1》GA的离述舞步FIFO存储器的设计与实现罗先哲1张仁吉吉2付大鹏21、贵州大学科技学院2、贵州大学电子科学与信息技术学院550025摘要本文在介绍异步FlF0基本原理及结构的基础上,采用VerilogHDL硬件描述语言对异步FIFO存储器进行了RTL级设计。

在设计中采用格雷码对读写地址进行编码,有效的避免了亚稳态的产生;并使用ALTEP,,A公司的集成开发环境quartusIl7.0对设计进行了编译仿真,最后在该公司的Cyclone系列器件EPlC3T100(36上通过了验证。

袭键词H。

蠕异步FIF0;FPGA;格雷码;亚稳态;VerilogHDL曲‰tr∞t-j:镬Thi9paperpresentedtheb;毗prfncip慨arldstrdctbl'eoftheasynchronousFIFOmemory,andgiventilegTLdesignwhichbasedtheVerilogHDLlanguage.InShisdesign,itissucceedineliminatingmetastabilitybyusingGraycodetocodingaddresscode.ThedesigncompiledandsimulatedbyALTERA’ssoftwareQuartusII7.0.Athst,itremindbythedeviceEP1CST100C6ofALTERA’SCyclonefamily.a删0胁脚u地showst『)at,t『Iedesign船succeed.黼word,,.‘罐A9ynchFIF0;FPGA;Greycode;metastabllity;VerilogHDL1引言随着集成电路工艺的不断发展,在同一个芯片上集成整个系统已成为可能,IC设计已进入SoC时代。

基于FPGA的异步FIFO设计与实现

基于FPGA的异步FIFO设计与实现

基于FPGA的异步FIFO设计与实现王伟国;张振东【摘要】随着现代数字电路系统密度和规模的不断扩大,一个系统中通常会包含多个时钟,因此不同时钟之间的数据传输成为亟待解决的问题.而一种可靠易行的解决方案就是异步FIFO.异步FIFO需要非常严格的多时钟技术,难以作出正确的设计合成和分析.本文提出了一种利用格雷码作为读写地址计数器的异步FIFO的设计方法,有效的避免了数据在不同时钟时间传输时遇到的亚稳态问题.并给出了综合仿真结果.%With the expanding of the density and scale of modern digital circuitry,a system will contain multiple clock.Therefore,the transfer of data between different clock becomes a serious problem needs to be solved.A reliable and feasible solution is asynchronous FIFO.Asynchronous FIFO require very strict clock technology,it is difficult to make the correct design of synthesis and analysis.This paper presents a design method of asynchronous FIFO which based on read/write counter in terms of gray code.This method effectively avoid the metastable state in the data transmission between different clock and given a comprehensive simulation results.【期刊名称】《聊城大学学报(自然科学版)》【年(卷),期】2012(025)003【总页数】6页(P79-84)【关键词】多时钟;异步fifo;verilog;HDL;格雷码【作者】王伟国;张振东【作者单位】中国科学院长春光学精密机械与物理研究所,吉林长春130033;中国科学院长春光学精密机械与物理研究所,吉林长春130033/中国科学院研究生院,北京100039【正文语种】中文【中图分类】TN4330 引言随着现代数字电路系统的实时数据处理能力的不断提高,逻辑电路的复杂程度和内核处理器的运算速度也快速增长,在使得一些复杂算法得以实现的同时也加剧了快速CPU与慢速外设之间的冲突.异步FIFO大量数据缓存的能力成功的解决了这一问题,但专用的高速异步FIFO芯片价格昂贵,且容量受限,随着现场可编程逻辑器件容量和速度的不断提高,利用现场可编程逻辑器件设计异步FIFO成为可行的方法.本文首先讨论了异步FIFO设计中经常出现的亚稳态问题和二进制计数器多位同时改变的问题,并给出解决办法,然后讨论了两种格雷码计数器的形式并作出比较,最后给出一种以格雷码为读写地址计数器的异步FIFO的设计方法和在设计异步FIFO时必须要注意的细节.1 多时钟电路中的亚稳态问题在一个时序电路中,合理的建立时间和保持时间是触发器正常工作的前提条件.对于下降沿触发的触发器而言,下降沿触发之前输入数据持续的最短时间是建立时间(setup time),下降沿触发之后输入数据持续的最短时间是保持时间(hold time).当电路时序不能满足setup time/hold time的要求时,系统时序就会出现混乱.在异步时序电路中,不同时钟之间是不存在任何关系的,必然会产生建立时间和保持时间冲突.解决系统时序问题常用双锁存器法如下图1所示,即在不同时钟之间传输数据时连续锁存两次.但是这种方法只是保证了电平的稳定,而在实际的系统中还需要FIFO作为不同时钟之间传输多位数据的接口.图1 避免亚稳态出现的双锁存器法2 异步FIFO指针对于同步FIFO来说,使用一个计数器计算读出和写入到FIFO缓存器中的数据量,计数器在只有写没读是递增,只读没写是递减,既读又写和没读也没写时保持不变.当计数器到达设定值时FIFO满信号置位,为零时空信号置位.在异步FIFO中,由于这种计算数据个数增减的计数器会被两个不同的时钟控制,因此这种计数器不能使用.所以,为了决定FIFO“空”和“满”状态,读指针和写指针必须相互比较.设计FIFO最主要的困难是生成FIFO指针和找到一个决定FIFO“空”和“满”状态的可靠方法.在FIFO设计中,读指针和写指针总是指向下一个要读和写的地址空间.当读或写操作完成后指针自动递增,当FIFO是空时读指针和写指针相等,当FIFO满时读指针和写指针也是相等.一种解决的方法是增加一个多余的MSB位来区分两种状态,当写指针递增超过地址范围时,写指针会递增MSB位,其他位清零,读指针同样也是.当读指针和写指针的MSB位不同时,意味着写指针比读指针多走了一圈,当MSB位相同时意味着走的圈数相等(如图2所示)图2 增加多余MSB后区分FIFO空和FIFO满的方法示意图当FIFO存储缓冲区需要(n-1)位地址时,地址指针用n位,当指针相等(包括MSB位)时空标志置位,当指针低(n-1)位相等且MSB位不等时满标志置位.2.1 二进制FIFO指针的情况二进制地址计数量会有多个位同时变化,因此在把二进制量在不同时钟域之间同步时会出现问题.一个解决的方法是取样并把周期计数量寄存在一个保持寄存器中,并发出一个ready信号,新时钟域收到信号并发出确认信号,这样变化的计数量就安全的传送到新时钟域.用这种方法不会产生上溢和下溢,因为当读指针递增到与写指针相等时,空信号置位,取样的写指针不反映当前写指针的值,而是小于当前值,故永远不能产生下溢,满信号也是如此.最常用的解决方法是用格雷码计数器,格雷码在每个时钟只有一位变换可以极大的减少在同步计数时错误的发生.3 格雷码计数器设计格雷码计数器的方法有很多,这里介绍二种简单直接的方法.下面详细介绍两种方法.3.1 格雷码计数器中的问题为了更好的理解把n-bit计数器转换成(n-1)-bit计数器时出现的问题,先考虑一下一个双重4-bit和3-bit格雷码计数器的例子如图3.图3 4-bit格雷码计数器示例及转换成3-bit格雷码时出现的问题在4-bit计数器中除了MSB位其余位关于中间对称,我们把2nd MSB位反相后,上半部分与下半部分的LSBs便相等.但是经过反相操作后整体便不是格雷码了,例如15(1100)到0(0000)的转变过程有两个bits变化,在下面的第一种格雷码计数器中会有解决方法.3.2 第一种格雷码计数器图4是第一种计数器的框图并是双重格雷码计数器中两个bits同时跳变的解决方法.其中假设输出寄存器的值是格雷码(ptr),此格雷码被输出到格雷码到二进制的转换器中,然后通过一个有条件递增的加法器并输出下一个格雷码值(gnext),连接到输出寄存器的输入端,如框图上半部分所示.(n-1)-bit格雷码简单地通过n-bit格雷码的2个MSBs的异或操作产生,(n-2)个LSBs不变.图4 第一种格雷码计数器示意图及其如何避免了两位同时跳变问题3.3 第二种格雷码计数器此种风格的格雷计数器(如图5所示)用了两组寄存器避免了把格雷码转换成二进制数的步骤.而且第二组寄存器也可以直接用来寻址FIFO存储器.n-bit格雷码指针仍然需要同步到不同的时钟域中.二进制指针可以更容易的通过计算产生“几乎满”和“几乎空”信号.因此在本论文的设计中用此种风格的格雷码计数器.图5 第二种格雷码计数器工作示意图4 总体设计及“空”和“满”信号的产生总体设计如图6所示,本设计方案共有四个模块,双口RAM模块,读控制模块,写控制模块,格雷码同步模块.写控制模块主要是当写使能信号有效且写满信号无效时产生写地址并实行地址递增功能,读控制模块实现相似功能,双口RAM模块用来使缓冲数据其读写动作可同时进行.4.1 “空”和“满”信号的产生“空”信号的产生比较简单,只需同步到读时钟域的写地址格雷码与n-bit的读指针的格雷码完全相等即可代码如下图6 异步FIFO总体设计框图及其信号说明但是,“满”信号的产生就没那么容易,简单地用n-bit格雷码作比较判断“满”信号是不可靠的.因为格雷码除了MSB位外是对称的如图3所示.在图3中假如写指针和读指针都指向地址7,此时写指针递增一次后,写指针指向地址8,读指针和写指针相比较,除了MSB位不同外其余各位均相等,满信号此时有效,但这是不符合实际情况的,错误的.这也是为什么在图4中应用双重n-bit格雷码计数器的一个原因.正确判断满信号的条件是:读写指针的n-bit格雷码的前两个MSBs都不相等,其余的写指针和同步读针相等.代码如下4.2 不同时钟速度因为异步FIFO被两个不同的时钟控制,很明显两个时钟运行在不同的速度下.当把较快的时钟同步到较慢的时钟时,会有一些计数值被跳过.当被同步的格雷码递增两次只被取样一次时也不会出现亚稳态问题,因为亚稳态出现在同步时钟上升沿附近有多位同时跳变时,而在两个同步时钟沿之间有格雷码跳变两次,第一次跳变距离同步时钟条边沿较远,只有第二次跳变在同步时钟沿附近,故不会产生亚稳态.当较快的格雷码计数器在较慢时钟沿之间递增多于一次,不会出现已经溢出却没有检测到的现象,因为同步到写时钟域的读指针滞后于当前的读指针,而写指针只会小于或等于同步读指针,故不会出现溢出.5 设计仿真及总结本设计采用Xilinx公司Spartan3A系列的XC3S1400A,封装时PG484,速度是-4,仿真器是ISE Simulator(VHDL/Verilog),硬件描述语言是Verilog,开发工具是ISE.最后对电路进行时序分析,结果为该FIFO运行速度可达到90.63MHz.wclk、rclk时钟周期分别为:75MHz、80MHz.先向FIFO中写入18个数据,当第16个数据被读入后wfull立即被置位如下图7.图7 写满仿真结果同时向FIFO中写入和读出数据,由于wptr要经过两个读周期才能同步到读时钟域,故在waddr递增后的第二个rclk的上升沿rempty才清零如下图8所示.本文对异步FIFO的结构和重要时序问题给予了详细的阐述,并得到了可靠的仿真结果.在高速数据采集系统中,采用高性能FPGA作为数据预处理和高速异步FIFO 作为数据采集缓存的应用都十分广泛.把FIFO集成在FPGA中简化了电路设计的复杂程度,增加了电路的集成化程度和可靠性,是未来高速数据采集系统的重要发展方向.图8 同时写入读出时的仿真结果参考文献【相关文献】[1] Clifford E.Cummings,Synthesis and Scrip ting Techniques for De signing Multi-Asynchronous Clock Designs[A].SNUG-2001,2001(3):2-8.[2]吴自信,张嗣忠.异步FIFO结构及FPGA设计[J].单片机及嵌入式系统应用,2000,22(3):1.[3]赵雅兴.FPGA原理、设计与应用[M].天津:天津大学出版社,1999.[4]夏宇闻.数字系统设计-Verilog实现[M].北京:高等教育出版社,2006.[5]王金明.Verilog HDL程序设计教程[M].北京:人民邮电出版社,2004.。

异步FIFO结构及FPGA设计

异步FIFO结构及FPGA设计

异步FIFO 结构及FPGA设计摘要:首先介绍异步FIFO地概念、应用及其结构,然后分析实现异步FIFO地难点问题及其解决办法;在传统设计地基础上提岀一种新颖地电路结构并对其进行综合仿真和FPGA实现.关键词:异步电路FIFO亚稳态格雷码1异步FIFO介绍在现代地集成电路芯片中,随着设计规模地不断扩大,一个系统中往往含有数个时钟.多时钟域带来地一个问题就是,如何设计异步时钟之间地接口电路.异步FIFO ( First In First Out )是解决这个问题一种简便、快捷地解决方案.使用异步FIFO可以在两个不同时钟系统之间快速而方便地传输实时数据.在网络接口、图像处理等方面,异步FIFO得到了广泛地应用.异步FIFO是一种先进先岀地电路,使用在需要产时数据接口地部分,用来存储、缓冲在两个异步时钟之间地数据传输.在异步电路中,由于时钟之间周期和相位完全独立,因而数据地丢失概率不为零.如何设计一个高可靠性、高速地异步FIFO电路便成为一个难点.本文介绍解决这一问题地一种方法.團1异步DF0结构框图图1是异步FIFO地结构框图.由图1可以看岀:整个系统分为两个完全独立地时钟域一一读时钟域和写时间域;FIFO地存储介质为一块双端口RAM,可以同时进行读写操作.在写时钟域部分,由写地址产生逻辑产生写控制信号和写地址;读时钟部分由读地址产生逻辑产生读控制信号和读地址•在空/满标志产生部分,由读写地址相互比较产生空/满标志.2异步FIFO地设计难点设计异步FIFO有两个难点:一是如何同步异步信号,使触发器不产生亚稳态;二是如何正确地设计空、满以及几乎满等信号地控制电路.下面阐述解决问题地具体方法.2.1亚稳态问题地解决在数字集成电路中,触发器要满足setup/hold 地时间要求.当一个信号被寄存器锁存时,如果信号和时钟之间不满足这个要求,Q端地值是不确定地,并且在未知地时刻会固定到高电平或低电平.这个过程称为亚稳态(Metastability ).图2所示为异步时钟和亚稳态,图中clka和clkb为异步时钟.图2异步时钟和亚稳态亚稳态必定会发生在异步FIFO中.图中在异步FIFO中,电路外部地输入和内部地时钟之间是毫无时间关系地,因此setup/hold 冲突是必然地;同在电路内部地两个没有关系地时钟域之间地信号传递,也必须会导致setup/hold 冲突.虽然亚稳态是不可避免地,但是,下面地设计改进可以将其发生地概率降低到一个可以接受地程度①对写地址/读地址采用格雷码.由实践可知,同步多个异步输入信号岀现亚稳态地概率远远大于同步一个异步信号地概率.对多个触发器地输岀所组成地写地址/读地址可以采用格雷码.由于格雷码每次只变化一位,采用格雷码可以有效地减少亚稳态地产生.②采用触发器来同步异步输入信号,如图3中地两极触发器可以将出现亚稳态地几率降低到一个很小地程度.但是,正如图3所示,这种方法同时带来了对输入信号地一级延时,需要在设计时钟地时候加以注意.图3两级时钟同步消除亚稳态2.2空/满标志地产生空/满标志地产生FIFO 地核心部分.如何正确设计此部分地逻辑,直接影响到FIFO 地性能.空/满标志产生地原则是:写满不溢岀,读空不多读.即无论在什么进修,都不应岀现读写地址同时对一个存储 器地址操作地情况.在读写地址相等或相差一个或多个地址地时候,满标志应该有效,表示此时FIFO 已满,外部电路应对FIFO 发数据.在满信号有效时写数据,应根据设计地要求,或保持、或抛弃重发.同理,空标志地 产生也是如此,即:空标志<=(|写地址-读地址|<=预定值)AND (写地址超前读地址)满标志<=(|写地址-读地址|<=预定值)AND (读地址超前写地址)最直接地做法是,采用读写地址相比较来产生空满标志 .如图4所示,当读写地址地差值等于一个预设值地时候,空/满信号被置位.这种实现方法逻辑简单,但它是减法器形成地一个比较大地组合逻辑,因而限制了FIFO 地速度.所以,一般只采用相等不相等地比较逻辑,避免使用减法器.i 遼地址打地址1=^做先设応的ffi ■■-… —一 图5是另外一种常用地设计,比较器只对读写地址比较是否相等 .在读写地址相等地时候有两种情况:满或 者空.所以,附加了一个并行地区间判断逻辑来指示是空还是满 .这个区间判断逻辑将整个地址空间分为几个 部分,以指示读写地址地相对位置.这种做法提高了整个电路地速度,但是也有其缺点.主要是直接采用读写 地址等于不等于地比较逻辑来进行空 /满标志地判断,可以带来误判.bdatlbdai2比较器Lclkclk3新颖地FIFO空/满标志控制逻辑3.1对读写地址地分析由以上对FIFO地分析可以看出,由地址直接相减和将地址相互比较产生空/满标志都不可取.如何简单地进行直接比较,又不提高逻辑地复杂程度呢?对地址加延时可以做到这一点.设读地址为Rd_bin_addr,用读地址Rd_addr 产生读地址地格雷码Rd_next_gray_addr, 将Rd_next_gray_addr 延一拍得到Rd_gray_addr, 再将Rd_gray_addr 延一拍得到Rd_last_gray_addr. 在绝对时间上,Rd_next_gray_addr 、Rd_gray_addr 、Rd_last_gray_addr 这些地址先后关系,从大到小排列,并且相差一个地址,如图6所示.图&经过延时后格雷码之间的关系写地址地格雷码地产生也与此类似,即:Wt_next_gray_addr 、Wt_gray_addr 、Wt_last_gray_addr.利用这6个格雷码进行比较,同时加上读写使能,就能方便而灵活地产生空/满标志.以空标志Empty地产生为例,当读写格雷码地址相等或者FIFO内还剩下一个深度地字,并且正在不空地情况下执行读操作,这时Emptr标志应该置为有效(高电平有效)即EMPTY<=(Rd_gray_addr=Wt_gray_addr)and(Read_enable=1) 或EMPTY<=(Rd_next_gray_addr=Wt_gray_addr)and(Read_enable=1)同理可类推满标志地产生逻辑.3.2基于延时格雷码地FIFO标志产生逻辑满倍号二进制到埠时钟图7 —种新颖的异步FIFO写地址产生及满标恚产生逻績图7是使用上述思想设计地地址产生和标志产生地逻辑.首先,在地址产生部分,将产生地格雷码地址加一级延时,利用其前一级地址与当前地读地址作比较.其次,在空/满标志有效地时候,采用了内部保护机制,不使读/写地址进一步增加而岀现读写地址共同对一个存储单元操作地现象3.3仿真信号波形利用图7电路设计地思想构造了一个256X 8地FIFO,用MODELSIM 进行仿真.图8为系统中主要信号对读空情况地仿真波形.图6经过延时后格雷码之间地关系图8中,WDATA 为写数据,RDATA为读数据,WCLK为写时钟,RCLK为读时钟,REMPTY为空信号,AEMPTY地几乎空信号,RPTR为读地址WPTR为写地址,RGNEXT 为下一位读地址格雷码,RBIN 读地址二进制,RBNEXT 为下一位读地址地二进制码.由图8可以看出,由于读时钟高于写时钟,读地址逐渐赶上写地址,其中由AEMPTY信号指示读地址和写地址地接近程度.当这个信号足够长而被触发器捕捉到时,真正地空信号REMPTY有效.4电路优点地分析由图7可见,该电路最大地瓶颈为二进制到格雷码和比较器地延时之和.由于这两个组合逻辑地延时都很小因此该电路地速度很高.经测试,在Xilinx地FPGA中,时钟频率可达140MHz.另外,由于将异步地满信号加了一级锁存,从而输岀了可靠而稳定地标志.图8读空情况地仿真波形图5总结在实际工作中,分别用图4、图5与图7中所示地逻辑实现了一个256X 8地FIFO.综合工具为SYNPLIFY7.0,由Foundation Series 3.3i 布局布线后烧入Xilinx 公司地WirtexEV100ECS144.三者地性能指标比较见表1.表1三种不同设计地比较。

基于FPGA的异步FIFO设计毕业论文

基于FPGA的异步FIFO设计毕业论文

基于FPGA的异步FIFO设计毕业论文目录第一章绪论 (1)1.1 FPGA简介 (1)1.2 异步FIFO简介 (1)1.3 国外研究现状及存在的问题 (1)1.3.1 研究现状 (1)1.3.2 存在问题 (2)1.4 本课题主要研究容 (3)第二章异步FIFO设计要求及基本原理 (4)2.1 设计要求 (4)2.2 异步FIFO基本原理 (5)2.3 异步FIFO设计难点 (5)2.4 系统设计方案 (6)2.5 异步FIFO验证方案 (7)2.5.1 验证复位功能 (7)2.5.2 验证写操作功能 (7)2.5.3 验证读操作功能 (7)2.5.4 验证异步FIFO电路整体功能 (7)第三章模块设计与实现 (8)3.1 格雷码计数器模块 (8)3.2 同步模块 (8)3.3 格雷码∕自然码转换模块 (9)3.4 空满标志产生模块 (10)3.5 双端口RAM (13)第四章时序仿真与实现 (15)4.1 模块整合 (15)4.2 时序仿真及功能测试 (17)4.2.1 复位功能软件仿真与测试 (17)4.2.2 写操作功能时序仿真与测试 (17)4.2.3 读操作功能时序仿真与测试 (18)4.2.4 异步FIFO电路整体功能软件仿真与测试 (18)4.2.5 时序仿真结果总结 (19)第五章硬件仿真与实现 (20)5.1 外部电路焊接 (20)5.2 引脚分配 (21)5.3 调试电路设计 (24)5.3.1 调试电路介绍 (24)5.3.2 异步时钟产生模块 (25)5.3.3 伪随机数据队列产生模块 (25)5.3.5 调试电路引脚分配 (26)5.3.6 调试电路硬件仿真 (27)5.4 异步FIFO电路硬件仿真 (28)5.4.1 复位功能硬件仿真与测试 (29)5.4.2 写操作功能硬件仿真与测试 (30)5.4.3 读操作功能硬件仿真与测试 (30)5.4.4 异步FIFO硬件电路整体功能软硬件仿真与测试 (31)5.4.5 硬件仿真结果总结 (32)结论 (33)致谢 (34)参考文献 (35)附录 (36)第一章绪论1.1 FPGA简介FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在CPLD、PAL、GAL等可编程器件的基础上进一步发展的产物[10]。

基于FPGA的异步FIFO的设计

基于FPGA的异步FIFO的设计

基于FPGA的异步FIFO的设计1.任务基于FPGA设计实现异步FIFO。

2.目的掌握自顶向下的全正向设计方法,掌握使用verilogHDL硬件描述语言进行硬件电路设计的方法,熟练使用Quartus II和Modelsim工具。

3.使用环境(软件/硬件环境,设备等)设计验证过程将使用以下的环境和工具进行:1)、windows环境下使用ModelSim仿真工具进行逻辑仿真和时序仿真;2)、windows环境下使用QuartusII工具进行设计综合。

4.设计方案1)功能描述:本设计用16*8 RAM实现一个异步FIFO,具体功能定义如下:1. 异步复位。

2. FIFO不为满时,当写使能有效时,在写时钟的上升沿向FIFO中写入数据。

3. FIFO不为空时,当读使能有效时,在读时钟的上升沿从FIFO中读出数据。

4. 当FIFO写满的时候,产生满信号;当FIFO读空的时候,产生空信号。

5. FIFO一旦空或者满时候,复位FIFO;2)系统设计框图:3)系统端口信号列表:4)模块划分:1.RAM :存储器模块,用于存放及输出数据;2.Waddr_Reg : 保存访问RAM的写地址;3.Raddr_Reg : 保存访问RAM的写地址;4.Wbin_addr : 计算RAM下一个写地址;5.Rbin_addr : 计算RAM下一个读地址;6.Gwaddr_reg : 将写地址的二进制编码转换成格雷码,并保存;7.Graddr_reg : 将读地址的二进制编码转换成格雷码,并保存;8.Syn_Rfield : 将写地址同步到读时钟域,并产生空标志;9.Syn_Wfield : 将读地址同步到写时钟域,并产生满标志;10.Reset_Unit : 复位信号产生单元5)子模块设计:1) RAM 模块设计:1、功能描述本设计中的FIFO采用采用16*8双口RAM,以循环读写的方式实现。

●根据读地址rd_addr[3:0],在读使能(rd_en)为高电平的时候,将RAM中rd_addr[3:0]地址中的对应单元的数据在读时钟rdclk上升沿到来的时候,读出到dout[7:0]中。

异步FIFO结构及FPGA设计 ---跨时钟域设计

异步FIFO结构及FPGA设计 ---跨时钟域设计

异步FIFO结构及FPGA设计 ---跨时钟域设计1、异步FIFO介绍在现代的集成电路芯片中,随着设计规模的不断扩大,一个系统中往往含有数个时钟。

多时钟域带来的一个问题就是,如何设计异步时钟之间的接口电路。

异步 FIFO(First In First Out)是解决这个问题一种简便、快捷的解决方案。

使用异步FIFO可以在两个不同时钟系统之间快速而方便地传输实时数据。

在网络接口、图像处理等方面, 异步FIFO得到了广泛的应用。

异步FIFO是一种先进先出的电路,使用在需要产时数据接口的部分,用来存储、缓冲在两个异步时钟之间的数据传输。

在异步电路中,由于时钟之间周期和相位完全独立,因而数据的丢失概率不为零。

如何设计一个高可靠性、高速的异步FIFO电路便成为一个难点。

本文介绍解决这一问题的一种方法。

由图1可以看出:整个系统分为两个完全独立的时钟域——读时钟域和写时间域;FIFO的存储介质为一块双端口RAM,可以同时进行读写操作。

在写时钟域部分,由写地址产生逻辑产生写控制信号和写地址;读时钟部分由读地址产生逻辑产生读控制信号和读地址。

在空/满标志产生部分,由读写地址相互比较产生空/满标志。

2、异步FIFO的设计难点设计异步FIFO有两个难点:一是如何同步异步信号,使触发器不产生亚稳态;二是如何正确地设计空、满以及几乎满等信号的控制电路。

下面阐述解决问题的具体方法。

2.1 亚稳态问题的解决在数字集成电路中,触发器要满足setup/hold的时间要求。

当一个信号被寄存器锁存时,如果信号和时钟之间不满足这个要求,Q端的值是不确定的,并且在未知的时刻会固定到高电平或低电平。

这个过程称为亚稳态(Metastability)。

图2所示为异步时钟和亚稳态,图中clka和clkb为异步时钟。

亚稳态必定会发生在异步FIFO中。

图中在异步FIFO中,电路外部的输入和内部的时钟之间是毫无时间关系的,因此setup/hold冲突是必然的;同在电路内部的两个没有关系的时钟域之间的信号传递,也必须会导致setup/hold冲突。

基于FPGA的异步FIFO设计方法详解

基于FPGA的异步FIFO设计方法详解

基于FPGA的异步FIFO设计方法详解在现代电路设计中,一个系统往往包含了多个时钟,如何在异步时钟间传递数据成为一个很重要的问题,而使用异步FIFO可以有效地解决这个问题。

异步FIFO是一种在电子系统中得到广泛应用的器件,文中介绍了一种基于FPGA的异步FIFO设计方法。

使用这种方法可以设计出高速、高可靠的异步FIFO。

在现场可编程逻辑芯片的设计过程中不同模块之间的数据接口尤其是不同时钟系统的各个模块之间的数据接口是系统设计的一个关键用异步FIFO模块来实现接口,接口双方都在自己时钟的同步下进行工作它们之间不需要互相握手只需要跟接口FIFO模块进行交互即可即向接口FIFO模块中写入数据或从FIFO模块中读出数据。

用这样一个缓冲FIFO模块实现FPGA内部不同时钟系统之间的数据接口使设计变得非常简单和容易所用的FIFO 接口是XILINX公司提供的IP核。

经过充分测试和优化,系统运行稳定占用的FPGA内部资源也非常少。

1 FIFO 类型FIFO先进先出队列是一种在电子系统得到广泛应用的器件通常用于数据的缓存和用于容纳异步信号的频率或相位的差异FIFO的实现通常是利用双口RAM 和读写地址产生模块来实现的图1显示出了FIFO 的内部结构。

根据读写操作的同步/异步标志方案的同步/异步第一个写操作以及复位功能的不同FIFO 存储器可分为4 大类:(1)异步FIFO。

通常只有两个控制信号读使能(RE )与写使能(WE)信号标志信号有全空标志(EF)全满标志(FF)可选半满标志(HF)几乎全满标志(AF)几乎全空标志(AE)这些标志并不与任何时钟或事件同步但是反映读写指针的即时对照。

(2)选通式FIFO。

与异步FIFO存储器相似选通FIFO通常使用读写选通UNCK和LDCK 信号以及输出使能OE信号这类FIFO 通常提供半满标志(HF)可选几乎满标志(AF)几乎空标志(AE)全空标志(EF)和全满标志(FF)这些标志虽然反映读写指针但不与任何时钟或事件同步。

基于FPGA的异步FIFO设计

基于FPGA的异步FIFO设计

万方数据 为) 贺占庄, 研究员, 硕士生导师, 研究方向为计算机控制技术。 * +;
第 G期
张维旭等: 基于 : ; < 的异步 . / 设计
・* F E・
个没有关系的时钟域之间传递信号, 也会出现 ! / " # $ & ’ ( ) % 冲突。虽然亚稳状态是不可避免的, 但是, 可以通过下面
[ ] * 。 的方法将其降低到一个能够接受的范围之内
会产生向上溢出 (’ . / 如果 进 行 一 个 写 入 动 作, 5 " 1 2 , 一个有用的数据会被新写入的数据覆盖。为了避 3 ( ’ 4) 免这种错误的产生, 应该对 . / 设置满和空两个信号。 对满信号置位表示 不能再执行写 . / 已经处于满状态, 入动作; 对满信号复位表示 还可以执行写入 . / 非满, 动作; 对空信号置位表示 这时没有有 . / 处于空状态, 效数据可以读出; 对空信号复位说明 这时可 . / 非空, 以进行读操作。 当读指针和写指针相等时, . / 可能处于满状态或 空状态。可以用不同的方法判断 . / 究竟处于什么样 的状态, 也就是说究竟是写指针从后面追上了读指针还是 读指针从后面追上了写指针。文中采用设置一个额外状 态位的方法来区分两种状态。读写指针由它的地址位和 状态位组成。地址位随着相应的操作递增, 指针由最后位 置返回初始位置时状态位取反。当读写指针的状态位和 地址位全部吻合的时候, 读写指针经历了相同次数的循环 如果读写指针的地址位相 移动, 这时 . / 处于空状态; 同而状态 位 相 反, 说 明 写 指 针 多 经 过 了 一 次 循 环, 这时 . / 处于满状态。使用下面的公式来判断空满状态: (读指针88写指针) " 6 # 8 % 7 (读地址88写地址 99 读指针状态位! 88 3 $ ( ( 8 写指针状态位)

充分发挥自身优势 FPGA实现异步FIFO设计

充分发挥自身优势 FPGA实现异步FIFO设计

bs ae
_
ck 读 数据 < d d t> 过 24 l是 r a 通 a /
译 码 器 的 采 样 时 钟 信 号 ,其 仿 真 时 序 如 图 2。
维普资讯
T ECHN0L OGY E f ORl X) L NG
逻辑控制单元
逻 辑 控 制 单 元 主 要 负 责 对 输 入 的 读 写 时 钟 信 号<r d—Cl k/ wr ek 、异 步 清 零 信 号 和 读 写 使 l> 能< d e / — n 进 行 控 制 ,并 输 r— nwre > 出 读 写 地 址 信 号 <rd—addr / wr a d> 空 满 标 志 信 号< mp y _d r和 e t/ f l>。在 由该 单 元 传 递 给 数 据 处 ul
F GA 芯片 来实 现 ,并 占用 内部 的 P BOKA L C R M资 源 , 2 0 0 陨 XC V10 内音 有4 K i A , 8 bR M 根据设计 要求和需要 l
辑 控 制 单 元 和 数 据 处 理 单 元 ,如
图 1 示。 所
ቤተ መጻሕፍቲ ባይዱ
设定F O的参数 : - I F 总线宽度 的要求,
r d

F K 深度为 52 I) t 1,因此只 占用了 1% 3
的 B O K AM资源 。下面 主要讲一 LCR 下 F 模块 中 P GA的硬件实 现。 Ⅱ P
c 信号是驱动逻辑控制单元读 l k
指4<d pr和数据处理单元读数 1 r_ t  ̄ >
据 <r d—da a t >的 时 钟 信 号 l 而
理 单 元 的 读 写 地 址 时 ,并 非 采 用 间 0州

故 会发 生 逻 辑 错误 。

异步FIFO结构及FPGA设计

异步FIFO结构及FPGA设计

万方数据
杯L 续Y辞 I W O 参VE
技术纵横
弟军 黝 嫩粼
电路内部的两个没有关系的时钟域之间的信号传 递,也必然会导致stphl 冲突・ e /od u
虽然亚稳态是不可避免的 ,但是 , 下面的设计
改进可以将其发生的概率降低到一个可以接受的
程度 。
( 对写地址 / 1 读地址采用格雷码 。由实践可 知,同步 多个异步输人信号出现亚稳态的概率远远 大于同步一个异步信号的概率 。对多个触发器的输 出所组成的写地址 / 读地址可以采用格雷码 。由 于 格雷码每次只变化一位 ,采用格雷码可以有效地减 少亚稳态的产生 。 l 2 . 一采用触发器来同步异步输人信号 如图3中 的两级触发器可以将出现亚稳态的几率降到 一个很 小的程度 。但是,正如图 3所示 这种方法同时带 来了对输人信号的一级延时,需要在设计时钟的时
波形 。
W_ s g yad・ 用 个 雷 进 较,同 ta_r _dr 利 这6 格 码 行比 lt a
时加上读写使能,就能方便而灵活地产生空 / 满标
, 、。 山
d亡
图8 A A为写数据,R A A为读数据, 中,WD T DT
WC K为写时钟,R L L C K为读时钟、R MP Y为空 E T
图 1 异步 「F 结构框图 I O
21 亚稳态问 . 题的 解决
在数字集成电路中,触发器要满足 stph l eu /od 的时间要求。当一个信号被寄存器锁存时 如果信 号和时钟之间不满足这个要求,Q端的值是不确定 的,并且在未知的时刻会固定到高电平或低电平 。 这个过程称为亚稳态 ( ts bly o图2 Meat it ) 所示为 a i 异步时钟和亚稳态 ,图中ck 和 ck la lb为异步时钟 。

基于FPGA的帧级异步FIFO设计

基于FPGA的帧级异步FIFO设计

2020年第 2 期 声学与电子工程 总第 138 期32基于FPGA的帧级异步FIFO设计水颖(第七一五研究所,杭州,310023)摘要为了解决 FIFO对整帧数据的缓存问题,文章设计完成了一种基于 FPGA 的帧级异步 FIFO,该异步FIFO是基于Verilog HDL高级可编程语言实现的,它可以很方便的用于互联网数据帧的中间缓存,保证互联网数据帧在大吞吐量情况下不易发生丢失。

采用 modelsim 10.6仿真验证该设计,并应用于实际项目中进行大规模测试,结果表明该方案工作性能可靠稳定。

关键词帧级;异步FIFO;存储目前,在传输业界中,网关、加扰机、编码机及调制解调设备等多采用千兆级以太网作为交互接口,要完成交互过程中大容量数据简单方便的缓存,通常采用板载FIFO、SRAM、SDRAM或DDR 颗粒芯片的方案。

在一些对存储资源要求不高但对存储速度要求高的应用中,大多使用FPGA内部的存储器资源。

FIFO 是一种在电子系统得到广泛应用的模块,通常用于数据的缓存和容纳异步信号的频率或相位的差异。

FIFO 的实现通常是利用双口RAM 和读写地址产生模块来实现的。

本文根据互联网帧的实际处理,提出了一种帧级FIFO的设计,从而完成整帧数据处理的异步FIFO[1],设计的 FIFO处理模块是针对每一帧而不是每一个数据。

根据FPGA提供BRAM块,搭建FIFO 的读写以及数据使能,最关键的设计是控制读写地址、产生空满信号以及校验。

此方式产生帧级的异步FIFO,既可以减少使用内部FIFO带来资源高的问题,又可以隔离异步时序减少亚稳态的产生。

1功能描述及组成传统的异步时序FIFO,当写入一个FIFO位宽的数据,FIFO的空信号(empty)置0,则可以进行读取数据。

本文设计的基于帧级异步时序FIFO,当一个正常数据包正在写入时,FIFO的空信号并不会置0;只有当正常数据包全部写入异步FIFO中,空信号才能置0,数据才能够被读取。

FPGA异步fifo设计完整报告

FPGA异步fifo设计完整报告

FPGA异步fifo设计完整报告1、名目一、技术规范31、设计完成的功能:32、系统整体框图:33、I/O管脚的描述:34、验证和测试工具选择:45、说明关键模块:46、拟选用的FPGA类型:4二、FIFO总体设计方案5系统功能描述:5电路结构图:5系统的总体输入输出设定6系统时序分析:6关键模块设计分析:7三、FIF0验证方案8FIFO功能:81、概述:82、预确认:83、模块运行确认:94、系统运行确认:9四、仿真激励代码10五、电路设计FIFO源代码11六、FPGA设计FIF0综合布局布线报告:16综合引脚安排:16电路布局布线:16七、时序仿真报告17时序仿真波形:17八、FIFO下载代码和引脚分布17系统输入输出引 2、脚分布:21九、心得体会21技术规范1、设计完成的功能:本试验完成的是8位异步FIFO的设计,其中写时钟100MHz,读时钟为5MHz,其中RAM的深度为256。

当写时钟脉冲上升沿到来时,推断写信号是有效,则写一个八位数据到RAM中;当读时钟脉冲上升沿到来时,推断读信号是有效,则从RAM中把一个八位数据读出来。

当RAM中数据写满时产生一个满标志,不能再往RAM再写数据;当RAM 中数据读空时产生一个满标志,不能再从RAM读出数据。

2、系统整体框图:3、I/O管脚的描述:管脚名称方向H/L电平位宽功能描述rst_ninput3.3V/01全局复位信号rd_eninput3.3V/01读使能低有3、效wr_eninput3.3V/01写使能低有效rd_emptyoutput3.3V/01读空标志高有效wr_fuIIoutput3.3V/01写满标志高有效rd_dataoutput3.3V/08数据输出wr_datainput3.3V/08数据写入cIk_1OOMinput3.3V/01写数据时钟cIk_5Minput3.3V/01读数据时钟4、验证和测试工具选择:ModelsimSE6.If进行前仿真和后仿。

用FPGA芯片实现高速异步FIFO的一种方法

用FPGA芯片实现高速异步FIFO的一种方法

用FPGA芯片实现高速异步FIFO的一种方法 现代集成电路芯片中,随着设计规模的不断扩大。

一个系统中往往含有数个时钟。

多时钟带来的一个问题就是,如何设计异步时钟之间的接口电路。

异步FIFO(First In First Out)是解决这个问题的一种简便、快捷的解决方案。

使用异步FIFO可以在两个不同时钟系统之间快速而方便地传输实时数据。

在网络接口、1 异步FIFO的工作原理及逻辑框本文根据实际工作的需要。

给出了一种利用片内RAM构造FIFO器件的设计,重点强调了设计有效。

可靠的握手信号FULL和EMPTY的方法。

并在LATTICE公司的FPGA芯片LFXP2-5E上实现。

LFXP2-5E属于LATIICE公司XP2系列的一款,他采用优化的FlexiFLASH结构。

内部包含有基于查找表的逻辑、分布式和嵌入式存储器,锁相环(PLL)。

工程预制的源同步I/0以及增强的SysDSP块。

有166Kbits的EBRSRAM。

利用其内部的EBRSRAM可以实现一定容量的异步FIFO.而无需单独购买FIF0器件。

由2 异步FIFO的VHDL实现读时钟 2.1 FIFO设计的难点 如何同步异步信号,使触发器不产生亚稳态是设计异步FIFO的难点。

国内外解决此问题的较成熟办法是对写地址膜地址采用格雷码,本文也直接采用格雷码。

异步FIFO设计的另一个难点是如何判断FIFO的空/满状态。

为了保证数据正确的写入或读出。

必须保证异步FIFO在满的状态下。

不能进行写操作:在空的状态下不能进行读操作。

通常情况下将存储器组织成一个环形链表。

满/空标志产生的原则是:写满不溢出。

读空不多读。

即无论在什么情况。

都不应出现读写地址同时对一个存储器地址操作的情况。

在读写地址相等或相。

异步FIFO的FPGA实现

异步FIFO的FPGA实现

异步F IFO 的FPGA 实现王 淼,宋 晗(辽宁省葫芦岛市92941部队93分队,葫芦岛125001) 摘 要:本文提出了一种用FPGA 芯片实现异步F IFO 的方案,重点强调了异步F IFO 握手信号FU LL 、E M PT Y 的设计,并用V HDL 语言给以实现。

关键词:异步F IFO ;FPGA ;V HDL ;FU LL ;E M PT Y中图分类号:TN 602 文献标识码:B 文章编号:1002-2279(2004)03-0007-03A s ynchronous F IFO I m p lem e nta tion Us ing FPGAW AN G M iao ,SON G H an(D era rt m en t 93of A r m y T roop 92941,H u luD ao city in L iaon ing p rov ince ,H u luD ao 125001,Ch ina ) Abstract :T he p ap er describes a m ethod abou t asynch ronou s F IFO i m p lem en tati on u singFPGA .T he generati on of the shak ing signals FU LL and E M PT Y is em p hasized and then realized in V HDL .Key words :;A synch ronou s F IFO ;FPGA ;V HDL ;FU LL ;E M PT Y1 引 言在电子设计中,由于现场可编程门阵列(FPGA )的高逻辑密度和高可靠性以及用户可编程性,受到了广大硬件工程师的青睐。

用FPGA 来实现某些专用电路,可使整个设计更加紧凑、更小巧、灵活、稳定、可靠。

本文提出了一种用X ilinx 公司的FPGA 芯片实现异步F IFO 的设计方案,重点强调了设计有效、可靠的握手信号E M PT Y 与FU LL 的方法,并给出了其V HDL 语言实现。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关键词 :FF F G IO P A 亚稳 态 格雷码
1引言 随着集成 电路芯片规模的不断扩大 ,一个设计中往往包含多个时钟 ,因此需要一种
简单有效的异步时钟接口电路来实现相互之间的数据传输。 目前比较常用的有两种方式:

种是通过建立不同时钟之间的握手协议; 二是通过异步 FF 后者在速度与可靠性上 I O。
维普资讯
电信技术 研 究
20 0 7年第 l 0期
异步 FF 的设计与 F G IO P A实现
温 暖
摘要:通过分析异步 FF 的结构和关键技术,以减少电路 中亚稳态出现概率和产 IO 生稳定的空满标志信号为主要 目的,旨 在提 出了一种高速稳定的实现异步 F O 的 I F 设计方法。结合 F G P A对设计进行了验证,结果表 明该设计可以有效地提 高工作频 率和 资源利用 率 。
Re d a
W re i t
E t mpy
F l ul
图 4 比较 器加 区间判断逻辑
这种方法提高了速度 , 但是由于需要直接对读/ 写地址进行比较所以仍然存在误判的 可能。这就需要利用 41 .所提到的两种方法来降低亚稳态发生的概率。
所示 。
4异步 FF I O设计的关键问题 41亚稳 态问题 . 所谓的亚稳态就是指空满标志逻辑在产生空/ 满标志信号的时候需要对读/ 写操作逻
辑单元产生的读/ 写指针进行比较, 但由于地址线通常为多位, 这就造成 了在写时钟的作
4 2
维普资讯
E py m t F l ul
图 1异步 FF IO结构
u t
图 2增加一 级触发 消除亚稳 态
42空, . 满标志 信号产 生
空/ 满标志信号 的作用是为了避免上/ 下溢出的发生,造成无效数据被读 出或者有效 数据被覆盖 ,是整个 FF 性能优劣的关键 ,无论在什 么时刻都不能出现对同一存储地 IO 址同时进行读/ 写操作 的情况 。 对于空或满标志可以由读、写指针的相对位置来获得。 在
R e d a
W rt i e
r 较


Em py t
Ful l
图 3减 法器产生 空/ 满标志信 号 另外一种常 用的 方式就是使 用 比较器加 区间判 断逻辑 来实现 ,如 :利 用读/ 写地址 的
高两位将地址空间分成四个部分,表示读/ 写地址在 FF IO中的相对位置 ,通过对高两位 组合进行译码来得到其相对位置 , 从而对方向作出判断。如图 4 所示 。
降低 亚稳态 出现 的概 率和 正确产 生空/ 标 志等控制 信号 。 { 荫
3异步 F F IO的功能与结构 异步 FF IO在写时钟 w l 上升沿 ,对写使能 wE 采样 ,如果 wE 为高电平 ,那 k n n 么把输入数据 D t i a— a n存储到 FF 中, IO 在读时钟 R c l k的上升沿,对读使能信号 R n E 采样,如果 R n为高电平 ,则按先进先出的顺序读出数据 D t ot E a — u。在 FF a IO写满或读
更具优势 。
2 IO的分类与设计准则 F F FF (it nF s O t IO Fr it u 是一种常用的数据缓存器件,可应用于高速数据采集、通信 s I r ) 中的高速缓存等各种领域 , 从时序上可分为同步 F O和异步 FF , I F IO 从读入/ 读出数据宽 度上又可分为对称 FF I O和非对称 FF 。无论哪一种类型的 FF IO I O其设计的准则都是相 同的,即写满而不溢出,读空又不多读,对于异步 FF 设计的两个关键问题就是尽量 I O
科 技 论 文
= = I = ≈ = = = = % = = = = 2 = = = = = = = = = = = = = ∞ = =
= = : = = :
用下 各条地 址线跳 变不 一致 产生毛刺 需要 一段 时间才能稳 定 ,而 如果这段 时 间用读。通常解决亚稳态问题有两类方法 :
空/ 满标志的生成方式通常有两种,最简单 的方法是直接比较读/ 写地址的差值 ,如 果等于预设值则置位空/ 满标志。 但是由于使用的减法器所以会形成一个比较大的组合逻
4 3
维普资讯
电信技 术研 究
20 第 l 0 7年 0期
辑 ,影 响了 FF 的速 度 ,如 图 3所示 。 IO

是对 读/ 址使 用格 雷码进 行编码 。由于 格雷码一 次只变 化一位 ,因此可 以有效 写地
的降低亚稳态 出现的概率。
二是采用触发器对输入信号进行 同步。在对地址数据进行采样前多加一级触发器, 经过一个时钟周期 的延时数据基本趋于稳定,这个 时候再进行采样就可以大大的降低误 判和错误逻辑发生的概率 。如图 2所示。
空 的情况下 ,分别对 满标 志 F L或空标 志 E T 信号置位 ,以表示 FF 的两种 特 uL MP Y IO
殊状态,为了配合外围电路的时序,空/ 满标志有时需要提前一个或多个时钟周期产生。 异步 FF 读写操作 由两个独立 的时钟控制,因此在结构上分为读时钟域和写时钟域 , I O 数据存储部分通常为双端 口 R M,读操作逻辑单元和写操作逻辑单元分别产生读写指 A 针和相应控制 信号 ,空/ 满标 志产生逻辑 则用于产 生写满或读 空信号 ,其大致结 构如 图 1
向 FF IO写的过程中, 写指针呈递增变化 ,当写指针递增到和读指针相f时, FF 司 则 I O被 写满。同理 ,在从 FF 读数据时,读指针呈递增变化 ,当读指针递增到和写指针相同 IO 时, I F O被读空。当读指针和写指针相等时, IO可能处于满状态也可能处于空状态, F FF 因此空/ 满标志信号的产生需要两个条件: 一是对方向的判定; 二是对读写指针是否相等 的判断 。
相关文档
最新文档