异步FIFO的设计与实现.docx

上传人:b****3 文档编号:4147719 上传时间:2022-11-28 格式:DOCX 页数:39 大小:341.27KB
下载 相关 举报
异步FIFO的设计与实现.docx_第1页
第1页 / 共39页
异步FIFO的设计与实现.docx_第2页
第2页 / 共39页
异步FIFO的设计与实现.docx_第3页
第3页 / 共39页
异步FIFO的设计与实现.docx_第4页
第4页 / 共39页
异步FIFO的设计与实现.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

异步FIFO的设计与实现.docx

《异步FIFO的设计与实现.docx》由会员分享,可在线阅读,更多相关《异步FIFO的设计与实现.docx(39页珍藏版)》请在冰豆网上搜索。

异步FIFO的设计与实现.docx

异步FIFO的设计与实现

摘要

随着数字系统规模的不断增大,单时钟域设计会极大地限制数字系统性能,现代数字系统为了提升性能,常采用多时钟域的设计。

跨时钟域的信号在传输时会遇到亚稳态现象,如何保持系统稳定地传输数据是多时钟域系统设计者重点关注的问题,在跨时钟域传递数据的系统中,常采用异步FIFO(FirstInFirstOut,先进先出队列)口来缓冲传输的数据,以克服亚稳态产生的错误,保证数据的正确传输。

常规的异步FIFO设计采用先同步读写指针后比较产生空/满标志和用先比较读写指针产生空/满标志,再同步到相应时钟域的方法,但由于常规异步FIFO模块中的RAM存储器读写寻址指针常采用格雷码计数器以与“空满”控制逻辑的存在,工作频率低,面积大,将使通过这两个模块的信号通路延时对整个模块的工作频率造成制约。

本文提出了一种新型异步FIFO的设计方法,该方法省略“了满”信号产生模块和多余的存储器位深来简化常规的FIFO模块,而只保留“空”信号产生模块,避免使用大量的同步寄存器,减少了面积空间。

FPGA验证的结果表明,改进后的异步FIFO性能有了显著的提高。

关键词:

现场可编程门阵列(FPGA)亚稳态空/满标志产高速FIFO

 

ABSTRACT

Withtheincreasingofdigitalsystemsize,asingleclockdomaindesignwillgreatlylimitthedigitalsystemperformance.Toenhancetheperformanceofmoderndigitalsystems,multipleclockdomaindesignisconventionallyadopted.Whilebeingtransmitted,Cross-clockdomainsignalswillcomeacrossthephenomenonofmetastability,henceitwillbeamajorconcernforthemulti-clockdomainsystemdesignerstoprobehowtomaintainthesystemstabilityandtohavedatatransmissionconductedsmoothly.Astothebussystemdatatransmissioninthesystemwherethetwodatainterfaceclocksdon’tmatch,oneofsuperandeffectivesolutionsistouseasynchronousFIFObuffermemory.HowTosolvethekeyanddifficultissuethatmetastabilityandhowtogenerateemptyandfullflagcorrectlyinasynchronousFIFOdesign.TraditionalFIFOdesignoftensynchronizeswrite/readaddressfirst,thencomparesthemtogenerateempty/fullsignalsorempty/fullflagfirstcomparethereadandwritepointer,andthensynchronizedtotheclockdomain,Thisdesigntakesontoomuchareaandcanonlyworkatalowfrequency,thiswillallowthesignalingpathwaysofthesetwomodulesdelaycausedbyconstraintsoftheoperatingfrequencyoftheentiremodule.AnewmethodofasynchronousFIFOisproposedtoovercometheseproblems,omitthe"full"signalgeneratormoduleandredundantmemorybitdepthtosimplifytheconventionalFIFOmodule,leavingonlythe"empty"signalgenerationmodule,avoidtheuseofalargenumberofsynchronizationregisters,reducingtheareaofspace.FPGAverificationresultsshowthattheasynchronousFIFOimprovedperformancehasbeensignificantlyimproved.

Keywords:

FieldProgrammableGateArray(FPGA);Metastable;Mmpty/FullFlagproduction;High-speedFIFO

 

第一章绪论

1.1研究背景和意义

作为21世纪最重要的科学领域之一,超级计算机是体现科技竞争力和综合国力的重要标志。

各大国均把它作为国家科技创新的重要基础设施,投入了巨资进行研制和开发。

随着科学技术的进步,我国的超级计算机取得了高速的发展,2010年11月14日,国际TOP500组织在网站上公布了最新全球超级计算机前500强排行榜,中国首台千万亿次超级计算机系统“天河一号”高居榜首。

高性能微处理器是超级计算机的核心,高性能微处理器目前都采用多核的结构,多核处理器是指在一个芯片内集成多个处理核心而构成的处理器,所谓“核心”,通常指包含指令部件、算术、逻辑部件、寄存器堆和一级或者二级缓存的处理单元。

现代数字系统的设计多采用全局异步,局部同步的设计方式,核心部件采用高频设计为了提升性能,为了尽快地上市常常采用SoC的设计,集成成熟的IP,在同一芯片有多个时钟域。

在数字系统设计中,数据在不同模块或系统间传输,而现代数字系统内部采用多时钟域设计,导致数据进行跨时钟域传输。

由于各系统数据总线上的传输速度不同而造成系统接口界面处出现数据输入和输出速度不同,就会发生数据传输速率不匹配的问题,这会让传输的数据产生错误或者丢失,降低数据传输的可靠性,同时也会因为对数据的复写、丢弃而降低数据传输速率,因此需要在各系统接口界面处设计专用的电路来实现数据的高速高效传输。

为了提高电路整体性能,设计者对数据传输率、数据吞吐量以与系统各部分接口之间不同数据传输速率以与带宽的匹配有越来越高的要求,所以研究数据如何在异步时钟域稳定和快速地传输,具有非常重要的现实意义。

1.2研究现状

随着数字系统规模的不断扩大,跨时钟域信号的同步器设计以与相应的验证技术,越来越被关注。

目前的VLSI设计进入到SoC时代,一个SoC系统中一般含有多个时钟域,如何在这些不同时钟域之间进行稳定、可靠地传输成为设计人员所面临的一个挑战性的问题。

国内外研究人员提出了异步握手、异步包装以与异步FIFO等多种解决方案。

实践证明,采用异步FIFO进行跨时钟域传输是非常有效、可靠的方法,在实际芯片设计中得到了广泛的应用。

CliffordE.Cummings在文献[1]中提出了一种基于Gray码的异步FIFO接口技术。

同步多个异步输入信号出现亚稳态的概率远远大于同步一个异步信号的概率,解决这一问题的有效方法是采用格雷码。

格雷码是一种在相邻计数数值之间只有一位发生变化的编码方式,读写指针采用格雷码的编码方式,就可以尽可能地消除触发器产生亚稳态问题。

WilliamJDally和JohnWPoulton在文献[2]中提出一个表示关于任意两次故障出现的间隔时间期望的平均无故障时间MTBF,一个系统亚稳态的MTBF是与系统频率、器件速度之间的指数函数。

同步器去采样输入的异步数据,当在第一级的时序器件出现亚稳态的问题时,其输出会出现一种不稳定的中间值,并且这个时间受多种因素影响。

当第二个时序器件的采样窗口到来的时候,在第二级输入端口上的电平仍然处在可以使第二级出现亚稳态的电平范围内的概率会变得很小,由计算公式表明,对于大多数的应用问题,两级锁存器同步失效的概率很小足以消除可能出现的亚稳态情况。

VijayA.Nebhrajani在文献[3]中提出关于异步FIFO的五种结构,分别从单时钟结构,双时钟三种结构和脉冲模式的FIFO的结构进行了阐述。

着重介绍了怎样设计异步FIFO,主要讨论了异步FIFO空满标志的产生方法。

美国研究人员TiberiuChelcea,StevenM.Nowick,XinWang,TapaniAhonen,JariNumi在文献[4,5]中用写/读令牌环代替写/读指针,简化了“满”/“空”状态的检测,节省了编码转换逻辑以与同步器的延迟和面积开销,但是为了防止写/读溢出与死锁,又引入了额外的控制逻辑,并且仍然存在可用空间的浪费。

日本研究人员Jeong-GunLee,Suk-JinKim,KiseonKim在文献[6]结合握手协议和行波流水技术实现了一种异步FIFO,降低了延迟和功耗,但其纯异步电路实现方式增大了设计的复杂度和应用的难度。

受国外研究热潮的影响,近些年来,国内一些院校和科研单位也开始对异步FIFO展开研究,主要研究有:

中国科学院微电子研究所的博士生导师袁国顺和张英武博士等人,共同设计实现了一款低功耗的异步FIFO,引入了门控时钟技术降低了控制电路和译码电路80%的功耗[7],并采用位线分割技术降低了存储单元38%的功耗。

利用格雷码作异步FIFO指针的控制电路,能有效地消除多时钟域中的亚稳态。

国防科技大学计算机学院博士生导师陈书明、刘祥远博士,针对现有FIFO设计方法的不足,提出一种新的异步FIFO结构[8]——WG-FIFO,采用加权Gray码进行指针编码,采用实时状态检测器控制写/读操作。

模拟结果表明,在FIFO深度为4~16的情况下,该结构与已有的FIFO结构相比在性能、面积开销以与写读操作效率等方面都获得了明显的改善。

特别地,当FIFO的深度为8、宽度为32时,相比B-FIFO,WG-FIFO的最高时钟频率提高31.6%,单元面积减少17.1%,且写/读效率最大能提高47%。

东南大学周磊硕提出了一种新型结构异步FIFO电路的实现方案[9],运用整体移位实现数据正确写入和输出,使用缓冲寄存器组存放移位产生的多余数据,适用于频率不成整数倍的异步时钟域之间的数据传输。

利用串联的D触发器作为同步器,避免产生亚稳态,实现异步信号的同步,采用自顶向下、基于0.18m标准单元库的半定制ASIC流程对其进行设计。

该方案与常见的异步FIFO实现方案进行比较,面积大约减少一半,工作速度提高约三分之一。

指针编码不同程度地存在下列问题:

(1)写/读指针编码转换、计算的延时大,限制了写/读操作频率。

(2)跨时钟域传递写/读指针需要大量的同步器,面积开销大。

(3)由于同步器的延迟,导致FIFO的状态检测保守,浪费可用空间。

综上所述,国内外关于异步FIFO的设计与验证的研究,虽然取得了一定的成果,但是研究仍处于发展阶段,跨时钟域设计将面临着更多的困难与挑战。

1.3本文的主要工作

本文较为全面地讨论了跨时钟域设计的挑战,并论述了异步FIFO的设计和验证过程,最后分别对常见的异步FIFO和改进的异步FIFO进行了FPGA验证综合,并对综合后的结果进行了比较。

其主要工作包括:

1、针对FIFO设计的局限性,先简单地介绍了亚稳态的工作原理,并详细地分析了常规FIFO口对模块工作频率制约的主要原因,然后结合FPGA优秀的逻辑控制功能,与低功耗、高可靠性、可重构性、开发周期短和开费用低廉等特性,提出了一种在FPGA内实现高速异步FIFO的方法。

2、提出了基于DE2-70平台的异步FIFO的检验方法,利用原理图描述异步FIFO,对设计的异步FIFO进行模块化综合验证,达到了预期的效果。

1.4论文结构

本文共分六章,各章的组织如下:

第一章,绪论,包括论文选题的背景与意义、研究现状与主要工作等;

第二章,介绍跨时钟域设计的挑战和实现方法,介绍了亚稳态的现象、产生的原因与危害和同步器与握手机制的实现方法;

第三章,介绍本设计的开发环境;

第四章,对常规异步FIFO做了分析,提出高速异步FIFO的设计和实现方法;

第五章,总结得出结论;

第六章,参考文献;

致谢

附录

第二章跨时钟域设计的挑战与实现方法

在一般的ASIC设计中,比较常见的是同步时序设计,即单时钟的设计,但是在实际应用中,纯粹的单时钟设计并不能满足ASIC设计的多方面需求,特别是所设计模块需要与外围设备通讯时,跨时钟域的数据传输是不可避免的。

如果对这种情况估计不足或者缺乏足够的了解将会使设计面临重大的隐患,甚至会造成不可估量的损失。

本章主要介绍跨时钟域数据传输时容易出现的问题与同步器设计的实现方法。

2.1跨时钟域设计的挑战

2.1.1亚稳态问题

随着数字系统规模的不断增大,一个系统通常与若干个子系统进行通信,如计算机会有并口、串口、USB接口等各种不同种类的接口,可以连接不同的外部设备。

由于外部设备与主机的时钟不一致,跨时钟域异步信号的可靠传输变得十分重要。

在通信系统中,各个节点间时钟不一致,节点间跨时钟域的低误码率传输极其重要.跨时钟信号传输是指某时钟域内的信号传递到另外一个或多个时钟域,该信号对于另一个时钟域来说,一般是异步的,即不能保证采样时该信号是稳定的,或者说无法保证采样点前后的建立和保持时间。

这种不稳定性常常会造成不可预测的错误或干扰,致使硬件系统无法正常工作。

在信号传输中,每种触发器都有时序要求,对于使用上升沿触发的触发器来说,建立时间(SetupTime)是在时钟上升沿到来之前,触发器数据保持稳定的最小时间,而保持时间(HoldTime)是在时钟上升沿到来之后,触发器数据还应该保持的最小时间[29],在时钟上升沿前后的这个窗口内数据应该保持不变,否则会使触发器工作在一个不确定的状态,即亚稳态。

当触发器处于亚稳态且处于亚稳态的时间超过了一个时钟周期时,这种不确定的状态将会影响到下一级的触发器,最终导致连锁反应,从而使整个系统功能失常,如图2.1所示。

当一个信号跨越某个时钟域时,对新时钟域的电路来说,它是一个异步信号。

由于异步信号之间的时序是毫无关系的,因此必然存在建立时间/保持时间(SetupTime/HoldTime)冲突.

简单来说,亚稳态就是指当触发器的建立时间和保持时间要求没有得到满足时,触发器就会进入一个介于逻辑1和逻辑0之间的第三种状态,换句话说,是指触发器无法在某个规定时间段内达到一个可确认的状态。

当一个触发器进入亚稳态时,既无法预测该单元的输出电平,也无法预测何时输出才能稳定在某个正确的电平上,在这个稳定期间,触发器输出一些中间级电平或者可能处于振荡状态,并且这种无效的输出电平可以沿信号通道上的各个触发器级联式传播下去。

“?

?

”“1”

“?

?

”“0”

datadatbdat”

“?

?

”“?

?

clkaclkb

clka

adat

clkb

bdat

图2.1异步时钟和亚稳态现象

2.1.2亚稳态产生的原因

如果触发器的建立时间或保持时间(setuptime/holdtime)不满足时,在同步系统中,亚稳态现象就可能会出现,此时触发器的输出端Q,在有效时钟沿之后,很长的一段时间里处于不确定的状态,在这段时间里Q端振荡、毛刺、固定的某一电压值,而不是等于数据输入端D的值,这段之间成为决断时间(resolutiontime)。

经过决断时间(resolutiontime)之后,Q端将稳定到1或0上,但是究竟是0还是1,这是随机出现的,与输入没有因果联系。

2.1.3亚稳态的危害

由于输出在稳定下来之前可能是振荡、毛刺或固定的某一电压值,因此亚稳态除了导致逻辑误判之外,输出0到1之间的中间电压值还会使下一级产生亚稳态现象。

在电路设计中,逻辑误判有可能通过特殊设计减轻其危害,但亚稳态现象的传播扩大了故障面,难以处理。

只要系统中有异步元器件,亚稳态现象就会出现的,因此设计的电路首先要尽可能减少亚稳态引发错误的概率,其次要使系统对产生的错误不受其影响。

常用用同步器来减少亚稳态发生的概率。

2.2跨时钟域的实现方法

SoC(Systemonchip,SoC)技术的广泛应用,芯片的高性能和低功耗的需求,芯片的多个部件通常工作在不同频率的异步时钟域中。

跨时钟域(ClockDomainCrossing,CDC)的数据传输电路被称为跨时钟域设计,其功能的正确性是SoC系统芯片各跨时钟域部件间正确传输数据的基础。

在跨时钟域路径上传递信号不正确的设计可能产生三种情况,一种是产生亚稳态(Metability),该路径终点寄存器的建立或保持时间违例(Setup/HoldTimingViolation),从而引起寄存器的输入端进入亚稳态状态;另一种是数据保持时间(HoldTime)不足,产生数据丢失,例如来自一个快时钟域的信号不能够被慢时钟域的时钟采样到;最后一种是数据聚合(Re-convergence),一组被同步的控制信号再次汇聚时丢失或重复采样。

对于第一种情况,如果是单根控制信号,最简单的解决方法是采用两级同步器;对于第二、三种可采用异步FIFO,带使能的同步器,握手协议等方法。

跨时钟域信号同步器的设计,通常用同步器或增加握手信号可以实现。

2.2.1同步器

跨时钟域信号同步器的设计,通常的实现方法有以下几种:

1、两级同步器:

解决跨时钟域设计问题的基本方法是同步器,同步器是将几个用本地时钟驱动的时序器件串联起来,去采样输入的异步数据,当在第一级的时序器件出现亚稳态的问题时,其输出会出现一种不稳定的中间值,并且这个时间受多种因素影响,或者说这个输出在高电平到低电平之间满足一定形式的概率分布。

当第二个时序器件的采样窗口到来的时候,在第二级输入端口上的电平仍然处在可以使第二级出现亚稳态的电平范围内的概率会变得很小,如果再加上第三级,在第三级上的这个概率几乎可以忽略不计。

从数学上讲,每个时序器件的亚稳态的出现都有一定的概率,如果多个期间串联,总概率是各自概率的积,因此增加期间,会消除“亚稳态”,但是这里的消除是指降低不稳定的时间,使得输出电平的稳定时间接近时钟周期。

至于能否采样到正确的逻辑,则基本取决于第一个时序器件的输出。

跨时钟域的核心问题是亚稳态现象,最简单的同步器设计加在该路径终点寄存器,同步器设计为两个背靠背的两级触发器,适用于慢时钟到快时钟域的单根控制信号的同步。

虽然同步器可以消除亚稳态现象,但其输出体现输入变化的明确时钟周期仍然不可预测,这种不确定性是跨时钟域设计中功能错误的本质原因,值得注意的是电平信号同步转换,有效电平必须保持或大于2个目的时钟周期,否则可能会丢掉,如图2.4所示

siginD

clkinQDQDQsinout

clkout

图2.4二级同步信号转换逻辑

sigin

DR1R2R3

ClkinQDQDQ

 

RI

Steptimeholdtime

clkout

Cycle1

R2cycle2cycle3

R3

图2.5跨时钟域信号的亚稳态现象

如图2.5所示,两级寄存器组成的同步器,其输出信号R3虽然不存在亚稳态现象,但R3体现R1变化的时钟周期可能在Cycle2也可能在Cycle3,这种不确定性是跨时钟域设计中功能错误的本质原因,采用二级同步器的方式,R1信号的有效时间是Cycle1,正确使用R3信号时间是Cycle4,电平信号同步转换,有效电平必须保持或大于持2个目的时钟周期,否则可能会丢掉,适合于慢时钟域到快时钟域的单根控制信号的同步。

2、采用格雷码的同步转换器适合于单根有效信号的转换,如图2.7所示

二进制计数器的位宽与源时钟、目的时钟的频差有关系,位宽≥log2(clkin/clkout),适合高速时钟域进入低速时钟域应用的场合:

如数据传输的有效信号和适合于跨时钟域的递增指针的传输。

siginbinarybinary

Countercounter

clkinclkout

full

compareDQDQDQcomparesigout

clkinclkout

图2.7采用格雷码的二级同步信号转换逻辑

3、采用格雷码编码的数据总线同步器:

数据有效信号采用格雷编码转换逻辑,产生目的时钟域的数据使能信号,这种类型主要用于寄存器通路中,同步后的读写使能信号作为同步使能信号,对地址和数据进行同步,如图2.9所示

Sourceclockdomain

ack

Destinationclockdomain

Graycodesynchronizer

src_vld

D

Graycodesynchronizer

dst_vld

DQ

src_add

DQ

mbits

endst_add

D

 

src_clk

 

src_data

DQ

 

nbits

st_clk

 

en

Ddst_data

Q

图2.9采用使能信号的同步器的逻辑

4、不带应答的数据总线同步器:

跨时钟域数据总线的传输,数据使能信号通过脉冲同步器完成,特别适用于目的时钟大于源时钟域频率3倍以上的,低速时钟域进入高速时钟域应用的场合,源时钟域发送数据时,前一个数据一定被目的时钟域接收。

数据总线输入同步器和输出同步器都是栈进栈出,利于定义约束文件,如图2.10所示。

data

src_dataDQ

dst_data

dst_validDQ

src_validDQQ

clkinDQDQD

clkout

图2.10不带应答的数据总线同步器

5、适用于低速时钟域进入高速时钟域应用的场合的脉冲同步器,如图2.11所示。

sigout

siginD

clkin

QDQDQ

Clkout

图2.11脉冲同步器信号逻辑

典型的同步器有电平同步器、边沿检测同步器、脉冲同步器等,虽然它们都可以消除亚稳态现象,但是其输出体现输入变化的确切时钟周期仍然不可预测的。

2.2.2握手机制

跨时钟域数据总线的传输,数据的使能信号通过握手信号完成。

握手信号是指由源电路声明,发送到目的电路的请求信号。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1