您好,欢迎来到宝玛科技网。
搜索
您的当前位置:首页高效异步FIFO的设计实现

高效异步FIFO的设计实现

来源:宝玛科技网
学校代号:10532学号:S1007W404密级:不保密湖南大学工程硕士学位论文C=1-63效异步FIFO的设计实现堂僮史道厶丝刍!旌堡丝昱9更娃名壁壁塑!曼熟副熬援龚量垩直丝工猩垣墙羞皇焦!塑理墨邀鱼王型堂堂院硒窒直臼;童用塞盛电路壁电王丕统童些刍整!篡盛电路王猩迨塞提童旦塑12Q!三生垒月2鱼目诠窒筌整旦期;2Q!三生鱼旦!旦签鲎耋虽金主廑;萱云塾握ihesis01University)20B.E.(HunanHuajunShibyFIFOAsynchronousEfficofImplementationandDesigntAMay,2013YuepingGONGEngineerSeniorMinYANProfessorAssociateSupervisorUniversityHunanSchoolGraduateCircuitIntegratedEngineeringMasterdegreeforRequirementstheofsatisfactionpartialinsubmittedent湖南大学学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体己经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名:衔钓日期:沙J阵么月}日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权湖南大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。本学位论文属于l、保密口,在年解密后适用本授权书。2、不保密讯(请在以上相应方框内打“√”)作者签名:啼毫牟钩导师签名:敬日期:沙眵年名月f日日期:沙『多年6月f日致手高效异步FIFO的设计实现摘要异步FIFO(FirstInFirstOut)是一种先进先出的存储器件,可以实现在不同时钟域之间进行数据的传递。异步FIFO的应用场景十分广泛,不仅能满足现代国防、航天航空等领域应用的需要,还可用于数据采集和图象处理等其它方面。相比于同步集成电路设计,异步集成电路具有低功耗、高性能和便于模块化设计等优点,目前在集成电路的设计中已经被各大公司所采用。特别是异步时钟域数据之间的传输是一个重要的问题,采用异步FIFO是解决这一问题的重要手段。空/满信号的产生以及亚稳态的问题是异步FIFO设计中的两个难点。首先:空/满信号的产生,是通过比较读写地址指针来产生的,当读写地址指针相同时,FIFO无法确定处于空状态还是满状态;其次:亚稳态问题,由于读写地址处于不同的时钟域之中,比较之前需要对地址进行同步,由于地址指针是多位的,在同步过程中不可避免的会产生亚稳态的问题。针对存在的两个问题,本设计通过采用地址附加位和格雷码指针代替二进制码地址的方式进行了有效的解决,即在读写地址前增加一位附加位来判断是空状态还是满状态。在空满状态的界定时增加了保留空间(Reserve)这一参数,从而增强了FIFO的稳定性。采用格雷码指针代替二进制码地址,并且采用可配置的同步电路解决这一问题。还通过对FIFO时钟进行合理的利用,在读写控制模块不工作时,相应的时钟停止,直到开始工作时,时钟重新启动,从而满足了高效率的要求。本设计模块采用VerilogHDL代码进行编写,使用SynopsysVCS进行功能通读仿真,并用Xilinx的FPGA进行功能验证,由于本FIFO设计模块是话音处理器分合路模块的一部分,将与其他模块整合在一起,综合及布局布线采用中芯国际(SMIC)0.181xmCMOS工艺库,最终根据项目要求实现了流片。通过实际测试结果表明:该话音处理器的计算误差低于4%;在工作电压为1.8V的情况下,其平均功耗约为1.18mW/MHz,本设计在稳定性、功耗、速度上都达到了预期的要求。关键词:FIFO;ASIC;亚稳态;空/满状态;格雷码IIAbstract1ne.asynchr。noUSFIFO(FirstIn№tOut)isafirst.in,first.。utthemem。ry,cantransfer。fdatabetweenachiev.edifferentclockd。mains.TheasynchronousFIFO:ce.ne1sVeryextensive,n。t。nlyt。meetthedifferentneedsofthem。demnationalapplications,canalsobeusedin。therareassuchasanddataimageprocessing.tosynchronousC.omp.a.redintegratedcircuitdesign,asynchronousintegrated10wpowerconsumption,thepotentialofhigh.perf-0rmanceandeaseofdesign,‘he‘n‘egratedcircuitdesignhasbeenusedduringthem面。rc。mpanyasynchr。n。uscl。ckd。maindatatransmissi。ninasynchr。n。u:I三FIFOisanimportantmeanst。solvethisproblem..Emp!y/full虹gn“generationandthemetastabilityaret…w。di简cultiesintheasynchr。n。usFIFO·Firstofall:Empty/FullsignalsaregeneratedbvaddreSspointertoproduce,whenthereadandwrit:p。Interisatthesametime,theFIFOcann。tbesureintheemptystate。rme协吼ableproblem,duetoread/writeaddressunderdifferentc10ckneed“obesynchronizingbeforecomparing,duetotheaddresspointeriSthesynchronizationprocesswillinevitablyproducemetastableproblem.attwo.A1mlngproblems,thedesignbyusingmegm”甜“118钯adpointertoaddressadditionaIbitsofthebinarycodeaddresswaytocarryontheeffectiveinfrontoftheread’writeaddresstoadd。neadditionalstateisfull·Increasedemptyretentionwhenemptydefiniti。n。ffullstatespace(Reserve)二i:enhanced‘hestability。ftheFIFO.Usinggrayc。deaddressofpointerblnarycode,andusesaconfigurablesynchronouscircuittosolvetbisreas。nableuseofFIFOclock,thec1。ckstopped,ifFIFoworkinread/Writecontr。lmodule,theclockrestartedw。rkuntilitbegantoastomeettherequirementsofthehighefficiency.1heFI.F。odesignmodulewritteninVerilogHDLc。de,andsyn。psysvcsslmulati。nforfuIlcti。nalVerificationusingxilinxFPGA,duet。theFIFOdesignmoduleisapartofthevoiceprocessordivisi。nroadm。dule,S。weDuitV01ceprocessorothermodulesoftheroadtogether,theSMIC0.18“mcMOslibrarysynthesisandlay。utaccordingtoprojectneedsandsuccessfulIII北托鼍觚扎钉08paceacqulsltlon:。丫‘?e‘w:eenm。du芝rclr??s-1‘h∞81:18址磐∞e,asyn吐ronouScomparmg也¨明n们writeaddres.sdeslgn.。fe。.second“heover,1ndomajlls,ns叫u.ti.on,namely。r锄『iaram:‘er,‘hus1nstead】;r。blem·A1so‘hrough‘odoes.n’twork,sofunctionalwith。f.thetechnology高效异步FIFO的设计实现implementationofthechiptapeout.Thecalculationerrortestresultsshowthat:thevoiceprocessorlessthan4%;theaveragepowerconsumptionisabout1.18mW/MHzon1.8Voperatingvoltage,Thisdesignisexpectedtoreachtherequirementinthestability,powerandspeed.KeyWords:FIFO;ASIC;Metastability;Empty/Fullstability;Graycode;IV工程硕士学位论文目录学位论文原创性声明和学位论文版权使用授权书…………………………………I摘要………………………………………………………………………………IIAbstract………………………………………………………………………………………………………III第1章绪论……………………………………………………………………...1.1.1选题背景及意义………………………………………………………..1.1.2国内外异步电路设计的发展概况……………………………………….2.1.3异步电路的优势与问题………………………………………………...4.1.4集成电路概述…………………………………………………………..5.1.4.1集成电路技术的发展……………………………………………….5.1.4.2专用集成电路设计流程及规范…………………………………….7.1.5论文的内容与结构及创新点………………………………………….10.1.5.1论文的主要研究内容与结构……………………………………..10.1.5.2设计的创新点………………………………·…………………….11.第2章异步FIF0存储器……………………………………………………….12.2.1异步FIFO存储器简介……………………………………………….12.2.2异步FIFO存储器结构……………………………………………….12.2.2.1双端口RAM……………………………………………………….13.2.2.2读写地址………………………………………………………….15.2.2.3空/满信号的判断………………………………………………….16.2.3格雷码指针实现的存储器…………………………………………….18.2.3.1格雷码的编码方式………………………………………………一.18.2.3.2格雷码与二进制码之间的转换…………………………………..-19.2.3.3格雷码计数器……………………………………………………·.22.2.4格雷码的转换………………………………………………………….23.2.5本章小结……………………………………………………………….24.第3章异步信号下的亚稳态问题及解决方法………………………………··.25.3.1多时钟域下的亚稳态问题…………………………………………….25.3.2同步分析……………………………………………………………….28.3.3异步时钟域设计中多位数据的同步…………………………………·.32.3.4本章小结……………………………………………………………….36.第4章本设计的主要思想及高效率策略……………………………………··.37.4.1FIFO的设计结构………………………………………………………………··.37.4.1.1保留空间和满状态检测…………………………………………·.38.V高效异步FIFO的设计实现4.1.2信号同步装置……………………………………………………·-38.4.2低功耗策略之时钟的暂停和重启……………………………………·-39.4.3寄存器传输级高效策略………………………………………………·.42.4.3.1门控时钟…………………………………………………………一42.4.3.2操作数隔离……………………………………………………….45.4.4本章小结……………………………………………………………….46.第5章设计实现与验证分析…………………………………………………·.47.5.1功能验证……………………………………………………………….47.5.2逻辑综合……………………………………………………………….49.5.3形式验证及静态时序…………………………………………………·.52.5.3物理设计……………………………………………………………….54.5.4芯片测试……………………………………………………………….56.5.5本章小结……………………………………………………………….58.结论……………………………………………………………………………………………………·.59.参考文献………………………………………………………………………一.61.致谢…………………………………………………………………………….64.附录A芯片测试板的PCB图………………………………………………一.65.VI工程硕士学位论文第1章绪论1.1选题背景及意义随着信息技术的高速发展,特别在20世纪90年代,美国在南斯拉夫战争和两次海湾战争中成功的运用了电子战、信息战以后,电子信息技术开始受到越来越多的国家的关注。近年来随着我事技术的革新,电子信息战在现代军事战争中占据主导地位,特别是随着近年来我国航空航天事业方面高速的发展,我国越来越重视电子信息技术的发展。在电子信息技术中,是由存储器对数据进行存储的,存储器的存储速度可能会直接影响到作战的快速反应能力,可见如何提升存储器的性能是一个非常关键的技术。民用的存储器要求满足高速、高效、大容量的特点,通常情况下供使用的存储器要求会苛刻些,使用环境更加恶劣,性能的要求也更高。数据传输速率和采样速率的不匹配是一个很关键的问题,通常情况下数据的传输速率是跟不上数据的采样速率,这会导致整体的响应变慢。如果系统的处理速度较慢、采样的速率比较快,这时我们可以使用缓存来解决这个问题。随着集成电路技术开始进入深亚微米,单个集成器件尺寸的不断缩小,单个芯片上的集成容量不断扩大以后,如果集成电路的设计还是全部采用同步电路将面临着更严峻的挑战。当今集成电路已经发展到了超大规模阶段,而且SoC设计开始成为主流。现在的设计所需要面临的主要问题已经是如何解决集成电路中线路延迟越来越突出的问题,以及如何减少功耗,提高性能。面对这种情形,异步IC低功耗及易用性的模块化设计的优势已逐步显现。异步电路,顾名思义就是在一个电路中存在着不同步的时钟,这样就可以实现在一个SoC芯片上可以出现多个时钟域,这就带来另一个问题,在这些时钟域之间的通信问题就变得尤为突出。FIFO(FirstInFirstOut)存储器依靠合理的价格、使用的方便性和灵活性以及对速度进行匹配这些特点而成为解决这类问题的理想方法。异步FIFO是一种先进先出的电路,它一般可作为速率匹配数据缓冲器,能在快速处理器和较慢的外设之间实现速率匹配,且它在远程通信、数字信号处理、大容量存储系统、图像处理以及打印系统这些领域非常有用,随着FIFO芯片在容量、速度方面的扩展,该芯片的应用前景将会越来越广阔。目前我国涉及国家安危的很多武器上所用存储器几乎还是完全依靠进口。虽然在国内一些研究单位和厂商也开发了一些FIFO电路,但是目前还没有形成系列化生产,远远不能够满足我国的军事需求。我国航空航天武器装备过分依赖进高效异步FIFO的设计与实现口的情况会对国防建设形成巨大的隐患。本项目研制的芯片是话音处理器分合路的模块的一部分,它将在航天航空事业有着广阔的应用前景。通过本项目对FIFO的研制基础之上,可以在进行深入的研究,最终达到我国的军需的存储器自给自足的情况。我们不能仅仅看到现在市场上有着很多的国外产存储器,要预防国外突然对我国采取禁运或者技术封锁的手段发生,尤其是在战时,这种情况往往是致命的。所以尽快地研制出高性能的FIFO存储器,使得在建设和航天航空中得到广泛的使用,这对于加强国防建设,发展航天航空技术有着非常重大意义。1.2国内外异步电路设计的发展概况异步电路研究始于20世纪50年代,人们从分析时序电路的输入约束条件开始,就是当时开关理论研究领域中的一部分。首先对异步电路进行建模和系统性分析的,可以追溯到两位人物:Huffman和Muller,他们分别提出了基本模式电路模型和速度电路(speedindependentcircuit)模型【lJ。这两种模型的差别不是很大,采用的设计方法也一直延续到现在。Huffman在文献[2】中首先指出,为了使时序电路能分辨出输入的变化,要求电路的输入信号之间必须有一个最小的时间间隔,基于这种分析的电路称为Huffman电路。同期,Muller在文献【3J中提出了完成信号的概念,即异步电路中只有完成信号有效后,输入信号才允许发生变化并使控制有效,基于完成信号概念的电路称为Muller电路或Muller流水线【4J。基于Huffman和Muller的理论,Unger给出了有关异步时序电路的更为详细的设计方法,并提出了当电路的输入变化比较多的设计特点,为异步电路能够在实际应用中广泛使用产生了深远的影响【5J。20世纪60到70年代中期,由于Macro.Module项目的完成,从而有力展现了异步电路在实际应用中便于模块化设计的特点,并奠定了如何进行模块化设计的基础。同时,ChuckStitz提出了基于Petri网异步系统设计的方法。由于这项具有重要意义的创始性工作,最终导致了世界上第一台异步Dataflow计算机到出现,这台计算机包含了异步硬件的商用系统--Evans&SutherlandLDS.1(首台专用图形计算机系统)16J。从20世纪70年代后期到80年代,工艺技术不断的发展导致了数字集成电路的设计规模从LSI到VSLI的发展。随着电路规模的扩大,时钟的概念被引用到集成电路中以替代复杂的异步控制机制,并产生了同步电路设计方法。由于同步电路模型简单、设计方法统一,电路设计自动化开始出现,CAD工具日趋成熟,从而逐步开始在电路设计中使用的越来越多。从此,电路设计这不再需要利用半导体行业提供的逻辑单元进行设计的流程,这段时期,由于同步电路自身的优点,相对而言,在相当一段时间同步电路设计作为主流设计思想,异步电路则在很长工程硕士学位论文一段时间内被认为无法应用于大规模集成电路设计中,其研究比较缓慢,只是在一些特殊的领域被使用‘7】【8】。直到20世纪90年代中后期,工艺技术的持续发展使得同步电路的局限性不断被放大,特别是功耗的问题,这使得异步电路重新得到了人们的重视。而在同时期,异步电路的设计方法也取得了很大的进步,出现了Local.ClockedMachine、3D.MachineMicro.Pipeline、Tagram等设计模型,并且也拥有了一些设计自动化的工具。最重要的是在同时期,异步电路的研究成果取得了突破性进展,甚至出现了一些成熟的商业用品,如Manchester大学的研究小组设计出的异步集成电路ARMULET系列处理器,这些处理器将异步电路低功耗性能方面的优势很好的展现出来了【9】[10】【ll】。进入20世纪后期,异步电路的关注度逐渐提高。由英国曼彻斯特大学为主成立了全球性的异步研究组织(AsynchronousResearhGroup,ARG),ARG联合了欧美众多研究机构、大学和公司等科研力量并分享成果,其研究的领域大致包括了异步电路设计相关的各个方面,并形成了理论与实践相结合的发展模式。自1995年起,IEEE每年组织国际异步电路和系统研讨会(IEEESymposiumonInternationalAsynchronousCircuitandSystem,ASYNC.),对相关的研究成果进行交流和汇报。进入21世纪以后,随着SOC(片上系统)概念的深入,对于速度和稳定性的要求大大提高,在存在异步信号的情况下,对于接口模块的要求越来越高,这时FIFO具有的功耗体,稳定性强和易于模块化等优点就显得尤为突出,各个研发机构都对其采取了足够的重视【12】。随着异步集成电路设计方法研究的进展,国内外设计者均取得一定的研究成果,设计出了很多实际可用的异步电路。目前,人们在异步电路设计的研究主要分为以下几个方面【l3J:(1)异步处理器(asynchronousmicroprocessor)。异步处理器是异步电路设计的一个重要分支,在过去的半个世纪人们对它进行了大量的研究。采用异步电路的处理器,由于流水线的时钟负载、电路负载和功耗负载等都得以降低从而实现性能的优化。(2)全局异步局部同步设计方法(globalasynchronouslocalsynchronous,GALS)。核心思想是:将复杂系统划分成若干个工作区域,在各局部区域内采用同步工作方式而在全局上采用异步互连方式,从而降低芯片的时钟负载并优化了芯片各个部分,这种方法主要应用于超大规模集成电路设计,如片上系统(SoC)等。曼彻斯特大学在这方面的研究成果显著,定义了一套32位片上异步总线协议MARBEL[14】,且将其成功地应用在一款基于Amulet.III处理器的异步片上系统DARCO中,并做了产业化的尝试。高效异步FIFO的设计与实现(3)异步电路设计自动化。主要研究异步电路的设计流程和设计工具,包括描述方法、综合工具等。如加泰罗尼亚理工大学设计的Petrify工具,是一个基于状态迁移图(STG)的SI电路综合工具;曼彻斯特大学设计的Balsa工具,是一套支持Balsa异步描述语言的工具。此外,还有Philips公司的Tangram系统,都已经参与到产业化设计中【l5|。(4)特殊异步电路设计。主要针对特定应用下的特殊异步电路设计,如高性能同步.异步接口电路、异步总线裁决电路以及异步通信电路等一些产业化中的实际问题。1.3异步电路的优势与问题与同步电路不同,异步电路通过使用大量本地握手信号来完成整个电路的时序控制工作,每个电路模块在握手信号的有效跳变沿后开始工作,在工作完成后产生相应的完成信号。此特点使得异步电路具有以下几个优势。(1)功耗低。在同步电路中导致电路功耗高的原因是时钟工作频率必须工作在最大负荷,采用门控时钟技术也只能很有限地改善功耗浪费的现象,异步电路则不同,它仅在需要进行数据处理时才消耗能量,而且异步电路由于细粒门控时钟门和零待机功耗【16】,可以在零功耗无数据状态与最大吞吐状态之间迅速切换,不需要任何辅助电路。(2)运行速度快。异步电路的性能由电路的平均延迟来决定,不像同步电路工作时需要考虑最坏的情况延迟。特别是在小线宽集成电路的工艺中,由于不可避免的工艺误差,电路延迟分布相对较大,这时候异步电路会比同步电路有更好的性能【1。71。(3)电池兼容性好。相比与异步时钟电路,同步时钟电路会产生很强的电磁干扰,因为同步时钟电路是电路同时开关,而CMOS电路会在此时产生很大的瞬时电流。而且,由于同步时钟的周期是固定的,那么这些电磁干扰能量会集中在一个很窄的频谱范围内。异步电路在局部工作时,时间倾向于随机分布,每个单元要在接受到其他模块的输入信号才会开始进行工作。这样一来,电路就不会在某一特定时刻产生很大的瞬时电流,仅仅会在不同时刻产生一些小电流的峰值,辐射的功率相对也较小;而且,电路的工作频率不固定,使得辐射功率不可能会集中在特定窄的频谱之中,而是在一个大范围内均匀地分布【18】[19】。(4)模块化易于集成。异步电路的接口信号显示包含了各个模块含有的时间特性,所以对于实现模块化互连比较容易。在同步电路的实现中,由于模块信号接口的时间特性是针对该模块的内部时钟的,这就导致难以解决对不同时钟模块之间进行互联,并且很难使用自动工具对模块之间进行时序验证。而异步电路具有的握手接口特性能够完美地对模块之间互连和最终的时序验证问题进行解决。工程硕士学位论文模块之间信号不需要满足信号内部时钟的较为严格的时序要求,只需满足针对的异步通讯协议【2…。(5)可避免时钟偏移问题。在整个电路中,由于单芯片系统的增大,互连线延迟所占的比重开始增大,这样一来,导致了同步电路中时钟偏移很难控制,设计难度也不断加大。异步电路因为每一个模块有对应的时钟来控制,从而代替了整体时钟,这就避免了时钟设计的问题【2¨。虽然,异步电路在以上几个方面优于同步电路,但异步电路的问题也同样明显。第一,相对于同步电路,异步电路中信号的每一次翻转都代表一次操作。任何不需要的信号翻转,例如噪声,都可能会引起电路功能的失效,因而异步电路设计需要花费大量力气来消除电路输出的竞争冒险和毛刺。第二,为了获得高鲁棒性的电路,异步电路需要额外的门单元。任意异步模块之间的数据交换,都需要额外的控制电路来完成异步握手协议。第三,对于一个复杂的数字系统设计,完全靠手工完成几乎是不可能的事情,然而现阶段异步电路设计缺少成熟的EDA设计工具,对同步电路设计广泛适用的EDA工具,例如自动布局、自动布线、逻辑综合都不适用于异步电路设计。第四,异步电路由于其数据驱动的特点,使其性能分析与优化异步困难。同步电路关键路径(两个寄存器之间最大延时的组合逻辑路径)延时决定电路性能的评估方法同样不适用于异步电路【221。1.4集成电路概述1.4.1集成电路技术的发展集成电路的发展经历了一个漫长的过程。1906年,第一个电子管诞生;1912年前后,电子管的制作日趋成熟引发了无线电技术的发展;1918年前后,逐步发现了半导体材料;1920年,发现半导体材料所具有的光敏特性;1932年前后,运用量子学说建立了能带理论研究半导体现象;1956年,硅台面晶体管问世;1960年12月,世界上第一块硅集成电路制造成功;1966年,美国贝尔实验室使用比较完善的硅外延平面工艺制造成第一块公认的大规模集成电路。之后英特尔公司成功开发出了以4004和8008为代表的微处理器芯片,这标志着集成电路的设计进入了一个新的阶段【23】【241。如今半导造工艺越来越低、集成电路应用范围越来越广。设计工具飞速发展,完成了手工设计阶段到如今的电子自动化设计的过程。各种集成电路设计公司相继成立,各国随之开始对集成电路重视,逐步加大了对本国IC产业的支持和投入。自从1988年16MDRAM问世依赖,1cm2大小的硅片上可集成约3500万个晶体管,这标志着集成电路设计已经进入了超大规模集成电路阶段的更高阶段。1997年,300MHz奔腾II问世,它采用了0.251am工艺,奔腾系列芯片的推出发高效异步FIFO的设计与实现展速度让人惊叹。2009年,Intel全新推出酷睿I系列,创纪录地采用了领先的32纳米工艺,让人叹为观止,并且下一代22纳米工艺正在研发之中【25|。可以看到各集成电路厂商的不断竞争的结构使得集成电路制作工艺不断成熟,这能使集成电路发挥它更大的功能,从而能更好地为社会服务。集成电路从产生到成熟大致经历了如下几个过程:电子管级设计一一晶体管级设计一一集成电路设计一一超大规模集成电路设计。集成电路的集成密度在过去20年里记过了一场翻天覆地的变化。在20世纪60年代,GordonMoore(当时在Fairchild公司工作,而后成为Inter公司的奠基人)预见了能够在一个单片上集成的晶体管数目将随着时间按指数增长。这一预见被称为摩尔定律(Moore’SLaw),它超凡的想象力已经被时间证明,芯片集成的复杂程度大约每1~2年翻一倍,从1970年器起存储器的密度的增加已经超过一千倍。自从第一块集成电路诞生依赖,集成电路的集成度不断提高,从最初的几万门到几十万门,到如今的几百万门甚至几千万门的规模,目前集成电路已经进入了Soc(片上系统)的阶段[26】【271。对于集成电路的设计尺寸,随着工艺的进步,已经越来越小,目前已经有了30nm工艺的产品面世,这实际上已经标着着IC进入了超深亚微米时代。随着集成电路设计的规模越来越大,工艺的越来越精细,电路需要实现的功能越来越复杂,这一切都使得其在设计和生产过程中需要考虑许多新的问题,譬如电路延迟、功耗、串扰、噪声、电迁移、时钟偏移过大等问题,这要求设计工具更新以满足不同的需求,提高产品的质量和性价比。目前,以集成电路为核心的电子信息产业超过了以汽车、石油、钢铁为代表的传统工业成为第一大产业,成为改造和拉动传统产业迈向数字时代的强大引擎和雄厚基石。2009年全球集成电路的销售额为8250亿美元,而以集成电路为核心的电子信息产业的世界贸易总额约占世界GNP的3%,现代经济发展的数据表明,每1~2元的集成电路产值,带动了10元左右电子工业产值的形成,进而带动了100元GDP的增长。目前,发达国家国民经济总产值增长部分的65%与集成电路相关;美国国防预算中的电子含量已占据了半壁江山(2011年为43.6%)。预计未来10年内,世界集成电路销售额将以年平均15%的速度增长,2020年将达到12000~20000亿美元。作为当今世界经济竞争的焦点,拥有自主版权的集成电路已日益成为经济发展的命脉、社会进步的基础、国际竞争的筹码和的保障。集成电路的集成度和产品性能每18个月增加一倍。据专家预测,今后20年左右,集成电路技术及其产品仍将遵循这一规律发展。集成电路最重要的生产过程包括:开发EDA(电子设计自动化)工具,利用EDA进行集成电路设计,根据设计结果在硅圆片上加工芯片(主要流程为薄膜制造、曝光和刻蚀),对加工完毕的芯片进行测试,为芯片进行封装,最后经应用开发将其装备到整机系统上与最终工程硕士学位论文消费者见面。20世纪80年代中期我国集成电路的加工水平为5微米,其后,经历了3、1、0.8、0.5、0.35、微米的发展,目前我国实际应用的达到了0.13微米的水平,而当前国际实际用于生产的水平为0.03微米(30纳米),我国与之相差约为2.3代。进入21世纪以后随着人们对于电子产品功能性和体验性的要求提高,对于处理器性能的要求更加严格。最明显的例子就是智能手机的处理器芯片和触摸屏芯片,更新换代的频率十分迅速,这时专用集成电路的优点就可以体现出来,它针对某一应用,相比于通用集成电路,专用集成电路具有更高的性能,所以专用集成电路在各个领域得到了越来越广泛的应用。专用集成电路是主要针对某一电路系统的要求而专门设计制造的芯片,针对性很强,有专门的算法和逻辑电路结构,具有特定电路功能,其主要有以下三个特点:a.具有较好的性价比;b.专用芯片能使系统面积更小,功耗降低;c.提高了电子系统的可靠性和保密性。1.4.2专用集成电路设计流程及规范随着器件特质尺寸越来电子设计的规模越来越大。复杂度越来越高,集成电路的制造工艺已经达到了65nm甚至更小尺寸,这使得IC设计者能够将越来越复杂的功能集成到单硅片上,芯片设计的复杂读增加之后,芯片设计的失败率就会提高,尤其是一旦流片失败将付出很大的成本,所以一套系统化的IC设计流程能够使得设计没有严重缺陷,并且能提高流片的成功率。下面将逐一介绍一个标准的ASIC设计流程【28】:(1)设计规划和功能定义设计流程首先从写出的设计规范开始。设计规范就是对自己要设计的芯片做功能、定时、面积、功耗、可测试性、故障覆盖率的那个做一个详细的说明。并需要对设计的芯片的结构进行划分,划分的过程就是将一个复杂的设计逐步划分成较小而且较为简单的功能单元。这一过程可以避免大型设计中因为文件太大难以直接综合。这一步很重要,因为这时对电路的整体的宏观上的把握,对整个设计起指导作用。(2)行为级编码行为级编码指通过硬件描述语言来表述电路的文件,以电子格式存入计算机中。在现代的IC设计中,通常采用Verilog或者VHDL语言来进行描述。采用这样的描述方式在于:一是采用硬件描述电路很容易进行编写、修改和替换,这种便利使得这对于探究多种设计结构更加便利。二是由于采用HDL的设计比电路原理图更容易调试。封装复杂功能特性的行为描述隐藏了很多底层门级细节,所以在隔离功能中出现问题时,需要处理的信息更少。此外,如果行为描述在功能高效异步FIFO的设计与实现上是正确的,它就会成为后续门级电路实现的可靠标准。(3)仿真与功能验证当程序编写好以后就必须对它进行仿真来验证功能的正确性,功能的验证工程分三步进行:(a)测试方案的拟定。即确定什么是要进行测试的功能特性,采取怎样的测试方式进行测试。(b)测试平台的设计。测试平台是一个Verilog模块,要把待测试单元(UUT)连同仿真过程中的模型输入到所用的图形发生器之中。(c)测试执行和模型验证。测试平台可根据测试方案进行试验,而且还需要对设计的原始指标对应的响应进行验证。这一步主要是为了暴露设计中的错误,为后续的综合工作扫除障碍。测试的软件有Mentor公司的modelsim,cadence公司的verilog-XL,Synopsys公司的VCS等,此外FPGA厂商开发的软件也有这一功能,如Altera的qusrtus和Xilinx的ISE等。(4)逻辑综合和优化在设计中,当所有的基础错误都已经被消除的时候,并且发出结束信号之后,表面前面的功能仿真已经通过,之后就可以对所编程序进行综合。通常来讲,综合工具是一个优化的过程,它需要根据设计师提供的约束(即时序和面积等信息)来指,来产生一个满足逻辑功能、时序要求的最小面积设计。这一步会产生标准单元网表或者数据库。综合会产生一个门级网表,网表是采用门电路来描述设计的电路文件。综合之后还能得到一个延时文件,可以通过这个文件和门级网表进行逻辑仿真。常用的综合软件有Synopsys公司的DesignCompiler,简称DC,此外Cadence公司和FPGA厂家也有自己相对应的综合工具。(4)形式验证对设计使用综合工具综合之后还需要进行形式验证,形式验证是检查综合生成的门级网表实现的功能和综合之前的RTL级程序实现的功能是否一致,因为综合生成的门级描述的相应不一定和行为模型的响应一致,一旦出现这种情况,往往需要通过艰苦的工作消除其中的差异。形式验证一般可以采用软件Formality完成。(5)静态时序分析由于综合工具不能精确的估计布图过程中连接金属线导致的电容性延迟效应。必须根据金属材料的特性以及制造掩膜的几何形状等几个方面来提取延时信息,来确定关键信号通道上的速度是否满足要求。静态时序分析简称STA(statictimeanalysis),就是为了检查时序是否满足要求,检查的重点是建立时间(setuptime)和保持时间(holdtime),静态时序分析一般采用软件Primetime(PT)完成。(6)布局布线工程硕士学位论文ASIC设计中的布局布线(Placementandrouting)通俗的讲就是如何在一块芯片上把我们的设计单元用信号线连接起来。如果采用的设计工艺是基于单元的,那么要把各个单元整合好最终在硅晶片上形成一个完整的掩膜。在这一步中我们可能还会插入时钟树来保证时钟信号的稳定分布。我们可以在布局布线工具中导入上面步骤中综合得到的网表以及时序文件,完成对电路的物理设计。布局布线包含的步骤有芯片规划、摆放标准单元,时钟树综合、布线等。对于自动布局布线后产生的版图以及时序文件等并不是最终的结果,由于布图存在的寄生电容问题,还需要重复前面的功能仿真、形式验证等步骤。(7)版图物理验证对设计的物理布图进行校验或者检查是为了验证设计是否满足金属线宽度及相互间交叠和分离的。电气规则方面需要校验设计是否满足扇出约束,以及电串扰和电源栅压降是否危及到信号的完整性等。检查噪声电平是为了确定电瞬变过程是否存在问题。功率耗散也要在这一步中进行模拟和分析,以确认芯片的热量不会对电路造成损坏。通常简单的验证有设计规则的检查(DRC:DesignRuleCheck)和逻辑版图对照(LVS:LayoutVersusSchematic)的检查。目前常用的验证工具是MentorGraphic公司的Calibre。具体的ASIC设计流程如图1.1所示【291。图1.1ASIC设计流程高效异步FIFO的设计与实现1.5论文的内容与结构及创新点1.5.1论文的主要研究内容与结构本论文课题来源于中国电子科技集团第五十八所航空话音处理器分合路软件设计项目,设计的芯片主要应用于航天飞船,使其具备天地话音通信的功能。话音处理器具备低码速率和高码速率两种编解码模式,本项目设计的核心就是完成高码速率(AAC)话音编解码的分和路。由于本模块要配合硬件完成高码速率话音编解码的功能,那么在数据如何储存和读取就是一个需要重点考虑的问题。在一个系统中通常会有多个时钟进行工作,在一个系统含有多个时钟,带来的一个问题是如何安全的使数据通过两个的时钟域,异步FIFO是解决这一问题的普遍有效方法。设计一个稳定性高、能源利用率高的异步FIFO对这种对环境要求比较苛刻的情况具有很强的实用性。本论文主要研究以下几方面的内容:(1)对异步存储器的整体结构进行研究,对各个模块进行细致深入的分析。(2)对异步时钟信号之间存在的亚稳态问题进行分析,并且对找出降低亚稳态概率的方法。(3)对格雷码进行研究,包括二进制码和格雷码之间的转换关系。(4)对FIFO的空满状态的判断进行分析,加入保留地址空间能够在FIFO在和输入输出模块之间存在延迟时,有效的保证FIFO运行的稳定性。(5)对数字专用集成电路的低功耗实现方法进行研究,包括门控时钟,操作数隔离等方法。对于上述内容,本文一共采用六章进行阐述,各章具体内容如下:第1章为绪论部分,主要介绍了异步电路的设计背景以及研究意义,异步时钟电路设计的发展概况以及相比同步设计电路的优点,专用集成电路设计的现状及具体的设计流程。第2章介绍了异步FIFO存储器的结构。对异步FIFO存储器的概念和内部的基本单元进行了简单的介绍,进而分析设计实现异步FIFO存在的一些难点问题及如何进行解决的思路。简单介绍了使用格雷码进行地址编码的异步FIFO的实现过程。首先阐述了格雷码及采用其设计的优点,并且介绍了格雷码和二进制码转换的计算方法。第3章介绍了异步信号下的亚稳态问题及解决方法。开始时介绍了亚稳态产生的原因,以及对亚稳态产生进行进一步分析,最后介绍了采用同步装置的设计思想。第4章介绍了本FIFO设计的主要结构和设计思想,包括空满状态信号的检测,时钟的的暂停重启设计,低功耗技术门控时钟和操作数隔离等。工程硕士学位论文第5章对整体设计的功能仿真和逻辑综合等情况做了简单的介绍。包含设计的精度、速度、功耗等。1.5.2设计的创新点本FIFO设计的创新点具体表现在以下三方面。(1)对同步器的同步单元进行可配置逻辑,降低了亚稳态产生的概率,并且达到了根据读写时钟频率的不同对同步器进行相应的配置的效果。(2)对读写时钟进行有效控制,通过组合逻辑实现读写时钟的停止和重启,大大的提高了时钟的利用率,降低了功耗。(3)通过对存储器加入保留单元从而能够在FIFO和读写模块之间存在较长延时的时候,保证电路不发生溢出,提高FIFO的稳定性。通过门控时钟的加入和操作数隔离进一步降低功耗,提高效率。高效异步FIFO的设计与实现第2章异步FIFO存储器2.1异步FIFO存储器简介当前,大部分的数字电路都是同步的,就是采用同一时钟来控制来对所有时钟控制器件(如触发器、RAM等)进行控制。同步电路作为主导设计方法,其成熟的EDA工具几乎覆盖了整个大规模数字集成电路设计流程,从高层次语言描述到一个完整的芯片版图只需要极少的人工干预【3…。但是事实证明在实践工程中,完全同步化的设计实现是非常困难的。这是随着集成电路技术的不断发展,芯片对功耗和速度的要求越来越高,同步电路越来越难以越来越难以满足实际应用的需要。特别是随着片上系统(systemonachip,SOC)的出现,全局同步时钟的实现已经越来越困难;同时,由于时钟导致的功耗问题也令设计者束手无策。.在现代的集成电路的设计中,诸如整体统中就往往含有多个时钟,但是多时钟域带来另一个问题,那就是不可避免地要完成数据在不同的时钟域之间传递(如高速率模块与低速率模块之间的数据交换等)。然而在多时钟域系统的设计中不同时钟域之间数据的传输仍然必须要重新同步。这时如何保持系统的稳定性,顺利完成数据的传输就成为了一个非常重要的难题,这也成为异步电路设计中一个最为棘手的问题。通常的做法是采用对每一位增加握手信号解决,但这样会不可避免的使得系统变得复杂并且还会影响整体传输速度。解决这个问题一个简便的方法是采用异步FIFO(First快捷的传递数据。InFirstOut)电路,这种电路可以在两个不同时钟域之间由于异步FIFO读写电路的时钟是不同步的,并且在读写时钟之间没有任何联系。这种电路一般被使用在异步时钟域数据接口部分,起到缓存数据以及传递数据的作用。因为在异步两个时钟域之间时钟无论是频率还是相位都没有任何联系,所以异步电路存在数据丢失的可能性,因此设计异步FIFO的重点是要保证FIFO的可靠性,以及在此基础上如何提高它的性能如速度,功耗方面的因素等。2.2异步FIFO存储器结构传统的异步FIFO结构如图2.1所示,从图上可以看到整个系统是有读写两个时钟域组成。FIFO存储器的主要结构为一块双端口存储器(DualPortRAM),读地址产生逻辑单元,写地址逻辑单元和空满状态比较逻辑。在写时钟域部分,在读时钟部分由读地址逻辑单元产生读控制信号和读地址,由写地址逻辑单元产生写地址和写控制信号。然后读写地址相互比较产生满,空状态标志。工程硕士学位论文异步FIFO存储器是用来从一个时钟域向另一时钟域进行数据安全的传输,数据由写时钟控制来写入FIFO的存储单元之中,再在读时钟的控制下从FIFO的存储单元中读出数据。FIFO的外部信号包括:异步写时钟(clk—rd)、N钟(clk_rd)、读时钟信号同步的读有效(rd—en)、数据读出(r_data)信号,写时钟信号同步的写有效信号(、Ⅳ_en)和数据写,,K(w_data)信号。钟图2.1异步通用FIFO示意图为能够实现读写的正确性和防止FIFO的溢出,还需要给出与时钟同步的空满状态标志以确定何时对读写操作暂停。判别读时钟和读有效信号是否生效,如果生效的话读地址产生模块中读地址指针会相应地递增,同样的写地址产生模块和读地址产生模块类似,通过写时钟和写有效信号产生写地址指针的递增。在读时钟信号clkrd的上升沿时,当rden有效时,将双端口RAM中的数据输入到读数据总线上。在写时钟信号clkwr的上升沿时,当wren有效时,将需要写入的数据输入到双端口RAM写地址指针对应的位置之中【31】。设计一个异步FIFO存储器的难点在于FIFO读写时钟分别属于不同的时钟域,如何同步异步信号从而使触发器不会产生亚稳态以及如何正确的设计空满信号的控制电路,以防止FIFO存储器在空状态下读出一个无效的数据,在满状态下写入一个无效的数据。2.2.1双端口RAM随机存储器(RAM)是用来在触发器类型的电路中存储信息的,它的基本存储单元是有锁存器(或者触发器)构成的,因此RAM数据时序控制电路。随机存高效异步FIFO的设计与实现储器的优点是速度比较快,并且图比寄存器占用更小的面积,它在计算机工作期间能够提供快速存储与读取大量数据的功能。“随机”一词表明它可以对任意存储设备以任意的顺序读写数据。基本的静态RAM单元结构如图2.2(a)所示,可以看到RAM由两个交叉耦合的反相器和两个存取晶体管组成,由于共包含六个晶体管,所以称之为六管单元。可以看到存取晶体管将各自的栅极连接到字线,将源极和漏极连接到位线。存储器中字线是用来选择存储单元的,而位线是用来执行单元上的读操作或者写操作。在存储器内部,电路的一边存储的传送过来的值而在另一边存储该值的相反值。由于这一存储单元的读或者写控制信号都是由同一根字线B进行传递的,而数据都是由Q或者Q写入或读出,因此这样的单元是不能同时进行读操作和写操作的。B以卜_T-V-T-1-—争图2.2六管存储单元的基本结构Bout西6Uf尉—■工r—弋广—_]_J—图2.3双端口存储单元由于异步FIFO存储器的读时钟和写时钟是异步的,所以要求存储器能够满足同时读写的要求,显然六管单元不能满足这一要求.为了能够使得FIFO存储器能够同时进行读,写操作,FIFO的存储单元一般使用双端口存储单元,如图2.3所示,它由一个八管单元组成的,用两根字线分别来控制读/写控制信号,即工程硕士学位论文R。。nt∞1和W。。nt,。1,这时数据通过Bout和B。埘进行输出,通过Bin和B加进行写入。与六管单元不同的是,八管单元多了两根位线和一根字线,并且还增加啊了两个门控管。为了代替地址线的使用,FIFO存储器使用两个地址指针分别存放读地址和写地址,并且与之一一对应的分别有读地址址译码器和写地址译码器,保证了存储器的写操作与读操作就可以同时进行,这就实现了读和写操作可以同时进行的目的。这一结构的存储器可以在异步环境中使用。2.2.2读写地址FIFO存储器是一种先进先出的存储电路,主要用于需要产生数据接口的部分,用于在两个时钟域之间进行数据的缓存以及容纳异步信号频率的差异。在写时钟域信号的控制下数据被写入FIFO存储器中的存储单元中,再在读时钟域信号的控制下数据从FIFO存储单元中被。FIFO存储器中的数据被写入与被读出存储单元的顺序是一致的,即数据被先写入的被先被读出来。因为数据是先进先出的,所以数据在被写入存储单元和读出存储单元是有序的。在写入一组数据之后,写入地址会自动加1,那么下一组数据就会被写入刚刚写入数据上面存储空间中。读操作亦是如此,在读出一组数据之后,读出地址会自动减1,下一组被读出的数据就会是上次被读出的数据下面的存储空间之中。所以就不需要使用地址线在FIFO存储器的存储单元中寻找指定的存储空间来进行数据地读、写,无论是同步FIFO的还是异步的FIFO存储器都不使用地址线来寻址。同步FIFO存储器的使用一个时钟信号对读写操作进行控制,这时可以使用一个计数器来对读和写的操作次数进行计数。当一个数据被写入FIFO时,计数器自动加1,当一个数据被读出FIFO时,计数器自动减1。当FIFO只进行写操作而不进行读操作时,此时计数器值会递增,当FIFO只进行读操作而不进行写操作时,计数器值会递减,当FIFO没有读写操作或同时进行读写操作时,计数器保持原有状态。当计数器的值为零时,说明产生写操作和读操作的次数一样多,此时的FIFO显示的状态为空,那么此时存在两种情况,FIFO中没有数据写入或者写入的数据都被读出;当计数器的值达到某一初始设定的最大值时,FIFO存储器的显示的状态为满状态,这时FIFO中不能再被写入数据。但是异步FIFO存储器却不能使用一个计数器来进行计数,因为异步FIFO的读控制信号和写控制信号来自两个不同的时钟域,这两个时钟域的时钟是不同步的,如果由这两个时钟信号来同时控制一个计数器,就有可能会产生亚稳态。从而无法判断FIFO的真实状态。需要通过要将读指针地址和写指针地址进行比较来确定异步FIFO存储器何时为满状态何时为空状态。因此需要用两个计数器来存放异步FIFO存储器的读、写地址,我们称之为高效异步FIFO的设计与实现读、写地址指针。在触发器复位时,读、写指针都指向RAM的起始位置,只要一个数据写入存储单元中,写指针就会自动增加1,FIFO存储器的空状态标志位就会复位(假设空状态标志为1时有效,此时FIFO存储器的状态为空),这时读指针地址仍为零,指向的是RAM存储单元的第一个单元。当数据从FIFO存储器中被读出来时,读指针地址会增加一.每进行一次写,读操作,相应的地址指针就会递增一,从而指向下一个存储单元的位置。读指针和写指针是指向下一跳地址,就是下一个操作单元的起始地址,当地址指针跳转到了RAM存储器的最后一个存储单元时,会重新跳转到RAM的起始单元。只要FIFO存储器不是空状态或者满状态,那么这一过程将会随着读写操作信号循环下去。2.2.3空/满信号的判断FIFO存储器的关键设计是如何正确地产生空/满状态标志。如何使得这一模块设计能够做到合理性,将会对FIFO的性能产生重大的影响。如果FIFO存储器此时处于空状态,而下一个读动作仍然被允许,那么将会产生向下溢出(underflow),从而读出一个无效的数据。同样的如果FIFO存储器此时处于满状态,如果下一个写动作仍被允许,这样FIFO存储器中一个有用的数据被新写人的数据覆盖,从而会导致向上溢出(overflow)。这两种情况都属于误操作,因此需要设置空和满两个状态信号标志,对满状态信号复位表示FIFO存储器还没有被写满,数据还可以被继续写入,对满信号置位表示FIFO存储器处于存满状态;对空信号复位表示FIFO存储器非空,还存在有效数据可以被读出,对空信号置位表示FIFO存储器处于空状态。因此,空、满状态的作用就是防止FIFO满的时候数据再被写入,FIFO空的时候无效数据被读出。当写地址指针比读地址指针多循环了一次之后,此时两个指针相等,FIFO存储器处于满状态;当读写指针循环的次数一样多时且两个指针相等时FIFO存储器处于空状态。由此可见,不能仅仅通过读、写地址指针的位置比较来判断FIFO的状态。当读、写地址指针相等也就是同时指向同一个存储空间的时候,FIF0存储器既可能处在空状态也可能处在满状态,所以这时必须采取别的措施来判断FIFO存储器的空满状态,简单来说是读写地址指针循环次数一样还是写地址指针多循环一次。异步FIFO存储器设计过程中最困难的地方是如何产生空满状态标志,具体比较棘手的是两个问题:如何正确地设计空、满和几乎满空满等状体信号的控制电路以及如何来进行异步信号的同步。读、写地址指针相等时表示FIFO处于空状态或者满状态,通常采用指针附加位比较法和地址空间比较法两种方法来进行比较。一、指针附加位比较法工程硕士学位论文指针附加位比较法就是给地址指针增加一位附加位,当读指针读完存储器的存储单元之后,将会向附加位(地址指针的最高位)进一,除开附加位以为的所有位都清零。写指针的情况也是一样的。如果两个地址指针的最高位不相同而其余位相同的话,这就说表示写地址比读地址多产生了一个循环,说明FIFO存储器此时为满状态。如果读写地址所有位数包括最高位都相同的话,这就说明读写地址指针循环的次数是一样多的,说明FIFO存储器此时状态为空。采样这种方法的话读写地址指针有n位地址空间,其中的低n.1位用来存放FIFO的读写地址。可以进行寻址存储单元为2n’1,用最高位则用来判别到底是空状态还是满状态。二、地址空间比较法地址空间比较法是将地址空间分成四个象限,四地址空间区域必须是连续的。较简单的一种分类方法是通过地址指针的最高的两位进行区分,这会产生四种状态,各个状态对应一个相应的地址区间。然后再对这四个地址状态进行译码,从而来判定当FIFO存储器两个地址指针相等时到底FIFO处于空状态还是满状态。这时可以增加一个锁存器,当写地址指针在读地址指针的后一位空间时,我们将锁存器置位;当读地址指针在写地址指针的后一位空间时,此时将锁存器清零。此时当读地址指针与写地址指针相等时,如果锁存器此时为1,FIFO存储器为满状态,若锁存器值为0,FIFO存储器为空状态。当写地址指针比读地址指针多循环一次,并且两个地址指针相等时,此时FIFO存储器处于满状态。所以当FIFO的地址指针相同时,期间共包含了三个步骤:(1)写地址指针比读地址指针落后一个空间;(2)写地址指针到达读地址指针所在的位置;(3)写地址指针与读地址指针相等,FIFO存储器此时状态为满。其中,当读地址指针在存储单元的起始位置时。(2)和(3)两个步骤将会同时发生。所以我们就通过这个过程来进行判断读、写地址指针相等时,此时FIFO到底是满状态还是空状态了。当写地址指针处于读地址指针的后一个空间时,这就表示FIFO即将进入满状态。当发生这一状态时,可以通过译码电路将锁存器置位。当写地址指针跳转到读地址指针所指向的空间时,这时锁存器的值保持不变,这时读写地址指针的大小是相同的,这时可以结合锁存器的值判读FIFO是满状态。空状态的情形与满状态相类似。当读地址指针处于写地址指针的后一个空间时,这就表示FIFO即将进入满状态。当发生这一状态时,可以通过译码电路将锁存器清零。表示FIFO存储器即将进入空状态。考虑这样一种情况,当锁存器被置位以后,这时读操作比写操作来的快,这样的话读地址指针可能会将写地址指针甩开几个地址空间,但是这时锁存器仍然是置位的,这种情况下不会出现误操作的。可以分两种情况进行讨论:(1)当写地址指针再次到达读地址指针的后一位地址空间,这时还必须对锁存器进行置位,高效异步FIFO的设计与实现但是这时锁存器本身已经被置位了,所以这种情况不会出现什么问题;(2)读地址指针继续增加,当比写地址指针多经历一个循环到达写地址指针的后一个空间时,这时锁存器将被清零,表示FIFO将会进入空状态。进行空、满状态设计的第二个困难时是如何对异步信号进行同步,从而避免产生亚稳态。因为异步FIFO存储器读写时钟信号不同步,空满状态标志的产生要通过读写地址指针进行比较得到,那么必然存在信号从一个时钟域传递到下一个时钟域的情况,这时亚稳态的问题就不可避免。异步计数器的比较可能得到不可靠的结果,下面一节将着重介绍格雷码指针实现的异步存储器。2.3格雷码指针实现的存储器2.3.1格雷码的编码方式格雷码(GrayCode)因FrankCodeGray1947年申请、1953年获得批准的专利“PulseCommunication”而得名,当初是为了通信,现在则常用于模拟一数字转换中。法国工程师Jean.Maurice.ÉmlleBaudot在1880年曾用过的波是典型格雷码的一种变形【441。图2.4格雷码与二进制转换真值表工程硕士学位论文格雷码的编码方式相较于二进制编码可靠性大大的提高了。因为,在某些情况下,当二进制数之间转化时,每一位可能都会发生改变,譬如当十进制码3转换为十进制码4时,它们二进制码的每一位都会发生变化,这将有可能使得数字电路产生较大的尖峰电流脉冲。格雷码是不存在这个问题的,因为格雷码相邻的两位编码之间只有一位是不一样的,所以当格雷码相邻两位之间进行转换时,只可能有一位会变。这就能够极大地降低了从一个状态到下一个状态出错的概率。格雷码有很多种,而各种格雷码之间的一个共同点是任意2个相邻格雷码之间的数据只有一位是不同的。图2.4给出了一个四位典型的格雷码编码顺序。格雷码的优点是在组成信息码的传输及解码时产生的误差非常小。2.3.2格雷码与二进制码之间的转换可以根据组合逻辑电路的分析方法,通过先列出真值表然后再用卡诺图化简,从而来找出二进制码和格雷码之间的逻辑关系。以图2.4中表示的四位二进制码和格雷码之间的关系为例来说明其化简方法。图2.5是二进制码转格雷码的卡诺图。G3G2GIGo\\BlBoB3B2\\00011110000000000100100011010110011101001010111101010111000100110110011011110图2.5二进制码转换为格雷码卡诺图为了能够得到电路的状态方程,可以将图2.5分解为图2.6中GO、G1、G2和G3的卡诺图。由图2.6得出化简以后的逻辑表达式:Go=昼Bo+且Bo=B10Bo(4.1)Gl=B2尽+B2尽=岛081(4.2)G2=B382+B3垦=马0B(4.3)G3=马(4.4)通过这四个表达式由此可以看出,当要将二进制转化为格雷码时,最高位是保持相同的,后面的格雷码到底是“0”还是“1”则完全由相邻两位的二进制码异或来决定。通过VerilogHDL语言来描述这种转换为:Gray[0]2Bin[0]^Bin[1];高效异步FIFO的设计与实现Gray[1]2Bin[1]^Bin[2];Gray[2]=Bin[2]^Bin[3];Gray[3]=Bin[3];采用连续赋值语句的表述方式更为简单:moduleB2G(Gray,Bin);output[3:O]Gray;input[3:0]Bin;assignGray2(Bin>>1)^Bin;endmodule多位二进制数转为格雷码的方法是一样的。(a)G3(b)G2(c)G3图2.6卡诺图的分解(d)Go格雷码是一种无权码,它一般只是用来表示事物的状态,因为格雷码并没有大小的意思,所以它只是用来表示事物状态的标记而已,因此,如果想要通过读写地址的比较时,格雷码是不够直观的,因此必须把它还原为二进制码。图2.7是格雷码转换为二进制码的卡诺图,为了能够求出电路的状态方程,工程硕士学位论文我们和二进制码转换为格雷码类似,将图2.7分解图2.8中的四个表示B3、B2、B1和Bo的卡诺图。由图2.8得到化简后的逻辑表达式:Bo=G30G20Gl0Go(4.5)昼=G3G2Gl+G3G2G1+G3G2G1+G3G2G1=G30G20Ga(4.6)垦=G3G2+G2G3=G3062(4.7)忍=G3(4.8)11000000000100100011010111011001010100111000100110101011101l11111011010011图2.7格雷码转换为二进制码卡诺图(a)Bo(b)B(c)B2(d)B3图2.8卡诺图的分解-21.高效异步FIFO的设计与实现根据表达式这时可以清楚的知道B3、B2、B1、Bo和G3、G2、G1、Go的关系,如果用VerilogHDL语言来表述这种转换的话,如下表示:Bin[0]=Gray[3]^Gray[2]^Gray[1]^Gray[0];Bin[1]2Gray[3]^Gray[2]^Gray[1];Bin[2]=Gray[3]^Gray[2];Bin[3]=Gray[3];当然还可以使用另为一种算法来实现这一转换;moduleG2B(Bin,Gray);output[4:0]Bin;input[4:0]Gray;reg[4:0]J;always@(Gray)for(i=0;j<4;j_-j+1)Bin[j]=^(Gray>>1);endmodule多位的格雷码转换为二进制码的方法是类似的。2.3.3格雷码计数器在异步时钟域之间使用二进制数据进行传递时,就有可能发生上述提到的多位数据传递后处在亚稳态,那么同步后的结果就有就可能与最终想要传递的数据差别很大。考虑FIFO存储器,我们需要将写指针同步到读时钟域中与读指针比较来判断FIFO此时是否是空状态;将读地址同步到写时钟域中和写指针进行比较来判断FIFO此时是否是满状态。这里就不能使用二进制数进行传递,这样会使FIFO处于混乱状态而得到错误的结果。譬如,在将写指针同步到读时钟域中,由于同步的写指针处于亚稳态得到错误的结果,这样就可能导致产生错误的空标志信号。如果在非空状态下,空标志位被置位,就可能降低应用得到性能,使得读数据的速率降低;而当FIFO实际处于空状态时,空标志位没有被置位,那么执行一次读操作,将会读取无效的数据,这在实际应用中是不允许的。满标志位的产生也可能存在类似的错误。经过以上的分析可以得到这样的结论,异步FIFO容易出错的原因是由于读写时钟域中的读/写时钟是异步的,不能够保证寄存器的建立时间和保持时间,那么在传输的过程中,就有可能发生多位数据处于亚稳态,这些数据再经过亚稳态同步稳定之后,产生的结果可能不是我们想要的数据了;另外,因为地址是多位二进制数组成,各位变化的时间鱼一样,那么异步时钟对其采样的数值可能存在工程硕士学位论文偏差。这些都有可能产生错误的空/满标志信号从而使得FIFO存储器产生误操作。格雷码不同于二进制码,它在相邻位上的数码之间只有一位不相同,当对格雷码计数器进行采样时至多会有一位数据处于亚稳态。如果在采样时有一位数据发生了亚稳态,那么这就表示在异步时钟进行采样时,这位数据正好在发生状态的改变,因为计数器只有一位翻转,这就能保证其它位的状态保持正确,而发生亚稳态的那位数据在经过同步器之后最终可能为稳定为0或者1.因此,采样的结果只可能有两种状态:一种是采样的值还是翻转之前数据,一种是采样的值是的翻转之后的数据。我们以空状态为例,当产生空状态标志时表明此时读指针追上写指针,若最终得到的数值是翻转之前的数据,读地址指针与写地址指针的值进行比较,如果值相等就将空标志置位,此时FIFO的状态显示为空,但是事实是此时FIFO存储器中并不是全空的,它还存储了一个字节,但是这就有效避免了FIFO存储器的误操作,当下一个时钟沿到来时FIFO又会工作,它仅仅引起了FIFO工作效率的降低,最重要是它不会使得FIFO存储器产生误操作。如果采样的结果是翻转后的数据,那么此时FIFO就以正确的方式进行工作,没有一点瑕疵。从上面分析最后可以知道只要设计中读写指针都采用格雷码的编码方式,那么就可以处理好多位数据在异步时钟域之间的传输问题。需要指出的是格雷码指针只能用于实现存储空间为2的幂次方的FIFO,由于绝大多数的RAM存储阵列都大都是2mx2n=2m+n,所以这并不影响格雷码指针的使用。2.4格雷码的转换如前2.2.3节所述,对于二进制指针来说,一般可以通过附加位比较法来判定FIFO的空满状态,当存储器的最后一个单元被写入数据之后,写地址指针将变为零,即写地址指针的低n.1位会清零并且最高位(MSB)会被置位。读地址指针也是如此。如果两个地址指针所有的位数都相同,代表此时读写指针循环了相同的次数,此时FIFO为空状态;如果FIFO读写地址指针只有最高位不相同,代表写地址指针多循环了一次,那么此时FIFO为满状态。二进制地址指针的低n.1位来放存储器地址,最高位用来判断FIFO到底是满状态还是空状态。这种方式对于二进制码来说是可行的。但是,格雷码指针却不可以直接使用这种方法,原因有两点:一我们假设一个4位的格雷码,那么采用地址附加位的方式之后,格雷码计数器的低3位表示存储器地址,最高位作为附加位,那么这个FIFO的存储容量是8位。正确的操作方式应该是,当读(或者写)完一个循环时,地址应该开始重新级数,附加位也应该进行翻转。事实上格雷码指针并不是这样,当地址由7—8时,格雷码进行翻转,由01oo一11oo,指针的附加位虽然改变,但是地址位并没有清零,开始重新计数,这时因为格雷码是一种反射高效异步FIFO的设计与实现码引起的。第二个原因是因为使用格雷码无法产生满状态标志,假设读写地址指针此时的值都为格雷码7(0100),此时FIFO为空状态,再次写入数据之后,写地址指针将加1,此时格雷码变为8(1100),格雷码的附加位改变,但是低3位却没有改变。如果按照先前的判断方式的话,FIFO此时满状态的标志将会被置位,此时FIFO正确的状态应该是有一位地址空间被写入数据,得到的结果显然是错误的。因此需要对这个四位格雷码进行修改。我们要求一个n位的格雷码计数器在异步时钟域之间进行传输,同时也希望它低n.1位也是格雷码的形式,这种方式相对比较麻烦。本设计考虑的是既然格雷码无法进行直接比较的话,可以将同步过来的格雷码再转换为二进制数,这样通过附加比较位的方式能够有效的判定FIFO的空满状态。2.5本章小结本章详细介绍了异步FIFO存储器的基本结构,并且对于FIFO的每个模块进行了详细的介绍,提出了在异步FIFO中存在的一个难点问题,FIFO空满信号的判断。并提出了解决的两种办法,指针附加位比较法和地址空间比较法。接着介绍了采用格雷码指针设计的存储器,指出使用格雷码与二进制码之间的转换关系,支持采用格雷码指针设计的优点。工程硕士学位论文第3章异步信号下的亚稳态问题及解决方法3.1多时钟域下的亚稳态问题异步电路通常采用锁存器和触发器作为存储单元,这两种单元都容易进入亚稳态,所谓亚稳态就是指触发器等无法在规定的时间内达到一个确定的状态。可以了解静态存储器一般采用正反馈来建立双稳态电路,这种电路具有两种稳定状态,分别用0和1来表示这两种状态。如图3.1和3.2所示,图中显示了两个相串联的反相器电路以及这一电路的电压传输特性曲线图,第一个反相器的VTC(V01与Vii的关系)以及第二个反相器的VTC(V02和V01的关系),后一曲线用以表示Vol=Vi2。现在假设第二个反相器的输出V。2连接到第一个反相器的输入Vil,如图2.1中的虚线所示。可以通过图中电路知道这种反相器电路只可能有三个状态点(A,B和C),并且可以推断出当这个电路图中两个反相器的增益大于l时,只有A和B是稳定的状态点,而C就是一个亚稳态工作点。假设一个小的偏移△增加在第一个反相器的输入信号Vil上,此时工作状态在C点。那么这一偏移会因为反相器的增益而放大,放的的偏移量经过第二个反相器的时候继续被放大。于是工作状体将从C状态离开,知道进入A或者B中的一个稳定的工作状态为止。因此C状态就是一个不稳定的工作状态,一个很小的偏移都会使它的工作状态发生偏移。图3.1中表示的交叉耦合的反相器处在C状态并保持在那里的几率是很小的,我们把具有这样的一种特性的状体点称之为亚稳态。\V61:Vi2/力>L-——————————————……——————————…——————————…————…——…——一IV02=VilI图3.1两个串联的反相器反之,可以看到当工作在A或者B状态时,在这两个点上,可以看到由于环路增益比比1大的多,即使在这两个工作状态上出现大的偏移也不会使工作状态发生偏移。在数字集成电路中,寄存器要满足建立/保持时间的要求。如图3.3所示,建立时间是在时钟翻转之前数据必须的有效时间,就是说在时钟状态发生改变前,高效异步FIFO的设计与实现数据必须处于稳定状态的时间;保持时间是从时钟状态发生改变之后数据输入必须有效的时间,也就是说时钟沿之后,输入数据必须保持稳定状态的时间,不能随着时钟改变而输入状态立刻发生改变。V0图3.2两个串联的反相器的电压传输曲线建立时间;;保持时间ClkData//i\\!/图3.3寄存器的建立时间和保持时间当一个信号被寄存器锁存时,如果信号和时钟之间不满足建立/保持时间这个保持时间,那么输出状态就不能够确定,并且会在不确定的时刻进入到高电平和低电平,此时寄存器进入到了亚稳态状态。异步时钟域数据转换的核心就是要保证下级时钟对上级数据采样的Setup时间和Hold时间。如果触发器的Setup时间或者Hold时间不能得到满足,则有可能会产生亚稳态,在时钟有效沿到来之前,那么输出Q就有很长一段时间可能处于亚稳态。这段时期输出端Q会产生振荡并最终稳定在某一电压值上,但是这个工程硕士学位论文电压值并不一定是输出端的值,我们把这段时间称为决断时间(Resolutiontime)。但是Q端经过亚稳态后最终稳定下来的是0还是1是随机产生的,这与输入端的值并没有什么关系,如图3.4所示。有一级同步器处于业橡态图3.4亚稳态示意图亚稳态导致的一个主要危害是它会破坏系统的稳定性[32】【331。由于输出需要经过一段时间的振荡最终才能稳定下来,而稳定下来的值可能并不是我们预期的值,那么这将引起逻辑上的错误。如果情形比较严重的话输出端产生了一个“0”和“l”之间的中间态,从而使下一级电路出现亚稳态,这种情况就是亚稳态的传播现象了。一旦出现逻辑上的错误会导致功能的混乱,同时亚稳态的传播现象导致了故障面的扩大。另为在电路输出处于呀稳态时,任何细小的外界干扰譬如噪声等都会引起更严重的不确定状态,从而增大这个系统的传输延时,状态输出错误,在某些情况下甚至会使寄存器在两个有效判定门限(VoL、V。H)之间长时间的振荡。只要系统中有异步元件存在,亚稳态就无法避免【34】,因此在设计电路时,可以从两个方面来考虑:第一是尽量减少由亚稳态而产生的错误;第二是整个电路系统对产生的错误不那么敏感。第一个方面可以考虑电路使用同步电路来解决,第二个方面是必须根据实际情况采用不同的设计方法如调整电路结构等来解决。有效地降低亚稳态继续传播的概率的方式可以采用两级以上寄存器进行采样。在图3.5中,电路的左边是由clka控制的输入端Datain,在经过了两级触发器进行采样之后,图中右边的输出完成了与clkb的同步,这种情形下的输出基本不存在亚稳态。其基本原理如下:考虑到输入端Datain经过第一个触发器高效异步FIFO的设计与实现的同步之后输出仍可能存在亚稳态,但是经过一个时钟周期延时后,在第二个触发器输入端的电平还没有稳定下来的概率就小了许多,所以在经过第二个触发器同步之后输出端就不那么有概率出现亚稳态了。如果再添加一级寄存器,使同步采样达到3级,那么在最终的输出出现亚稳态的概率基本上就为O了。使用如图3.5所示的两级寄存器采样只是使得出现亚稳态的概率大大降低了[35】【361。但这仍然不能保证最终的结果就是正确的电平值。之前提到在电路经过决断时间之后,经寄存器同步输出的值并不一定是稳定的值,就是说这种处理方式还是有可能产生错误的情况,这就要求我们在设计电路系统时对错误的产生要有一定的容忍度。有些应用由于本身的原因,对错误并不那么敏感,譬如一段话音编码;而有些系统则对错误采样比较敏感。这类由于亚稳态而造成的采样错误是一些突发性错误,所以可以采用一些纠错编码完成对错误的纠正。图3.5两级寄存器采样可以降低亚稳态传播的概率3.2同步分析如果信号需要经过不同的时钟域,就很有可能不能满足建立时间和保持时间的要求,那么触发器就会工作在亚稳态。如果一个亚稳态持续了一个周期就会影响到下一级触发器,从而产生连锁的效应使得整个芯片的工作状态出现混乱。一个时钟域的的信号进入另一个时钟域时有可能在任一时刻改变其状态,那么就有必要在一个异步信号进入另一个时钟域时进行同步。在这里以个人电脑为例,计算机系统内部的所有操作都是由一个提供参考时工程硕士学位论文间的时钟来进行协调【37】[381。这一参考时间就决定了系统内部任一时刻所发生的事件。假设我们通过鼠标和键盘与计算机进行交流,虽然这样对参考时间不了解,但是我们可以在任一时刻点击鼠标。系统处理这样的非同步信号的方法是定时的对信号进行采样或者查询,并且检查它的值。如果采样率足够高的话,就不会错失任一翻转。但是可以知道有可能在查询的时刻信号正处于翻转状态,那么查询到的值就既不是高电平也不是低电平,而是一个不确切的值。那么这时候我们就不清楚鼠标曾被点击,把这个不确定的状态信号返回给计算机就可能会引起不必要的麻烦,特别是把这一信号告诉给不同功能模块时,它们会做出不同的解释。譬如一个功能模块理解为鼠标被点击从而产生相应的操作,另一功能模块理解为没有操作从产生一个相应的与之竞争的操作,这样就可能会引起冲突导致系统的崩溃。因此,可以通过某种方法来确定这一不确定的状态,得出什么结论并不重要,重要的是必须有唯一被认可的结果,键盘被敲击还是未被敲击。所以异步信号在进入另一个时钟域时必须判断出这一信号到底是高电平还是低电平,实现这一功能的电路就是同步器。遗憾的是要建立一个理想的并且总能做出合理回答的同步器是不可能的。一个同步器在做出决定时需要时间,在一些情况下这一时间还可能会任意长,因此异步一一同步信号总是容易出差,从而导致同步失效。电路设计的一个重要任务就是要保证这一失效的概率足够小,以保证这种失效不会干扰到系统的正常工作。增加等待时间有助于减少同步器的失效率[39】【401,下面来看一下图3.6中的同步器。这个电路是由锁存器组成的,它在时钟低电平期间是透明的,并在时钟elk的上升沿期间对输入信号进行采样。但是当被采样的信号与时钟信号不同步时,就有可能不满足锁存器的建立和保持时间,这种概率与输入信号和时钟信号的翻转频率有很大关系。这样造成的结果就是一旦电平升高的时候,锁存器的输出就有可能处于不确定的状态。但是,由于锁存器只有两个稳定的状态,所以最终被采样的信号还是会变成0或者1状态。我们可以通过建立一个双稳态元件行为的数学模型来确定需要的等待时间,并且我们还可以利用这个结果来确定等待时间和同步失效概率的关系。在这里可以模拟一对交叉耦合反相器的亚稳态的瞬态特性。图3.6中双稳态元件瞬态响应可以由下面这个公式给出【4lJ:V(t)=‰+(y(0)一‰)P“1t是时间常数,通过模拟显示这一模型十分精确。(3.1)VMs是锁存器处于亚稳态的电压,V(0)是在取样时钟被切断之后的起始电压,如何对异步时钟域数据进行同步是芯片设计中一个常见的问题,该问题既是一个重点,也是一个难点。很多设计的不稳定都源于在异步时钟域之间进行数据同步出现的不稳定【42l。高效异步FIFO的设计与实现对异步时钟域之间的数据传递进行同步也可以称为数据接口之间的同步,顾名思义,是指在两个时钟域交界的地方进行数据的传递同步。数据所在的时钟域不是同步主要有以下两种:一种是时钟域之间的时钟频率相同,但是相位差不固定,或者相位差固定,但是无法测知,这简称同频率异相位问题;二是两个时钟域的频率不一样,这简称为异频率问题。图3.6一个简单的同步器首先讨论两种在设计中不推荐使用的异步时钟域转换方法。一种是通过增加Buffer或者其他门延时调整采样;另一种是盲目使用时钟正负沿调整数据来采样。(1)通过Buffer等组合逻辑延时线调整采样时间。在早期的逻辑电路图设计阶段,有且设计者养成了子丁一加入Buffer或者非门调整数据延时的习惯,以保证本级模块的时钟对上级模块数据的建主及保持时间的要求。这些做法目前主要应用于两种场合种是使用分立逻辑元件(如74系列)搭建数字逻辑电路;另一种是在ASIC设计领域。使用分立逻辑元件搭建数字逻辑电路的场合一般为系统复杂度相对较低,系统灵活性要求不高的场合。使用分立逻辑元件设计数字逻辑电路时,由于可以使用的延时调整手段较少,而且一般设计频率较低,时序余量较大,因此采用插入Buffer、非门等单元调整延时的手段是可以接受的。在ASIC设计领域中采用这种方法是以严格的仿真和约束条件作为支持的,而在大多数数字逻辑设计,特别是在FPGA/CPLD等可编程逻辑设计中,这种方法是应该坚决避免的,其原因在于,Buffer和非门等单元是组合逻辑,使用组合逻辑的方法来产生延时会存在两个问题:一是容易产生毛刺,影响电路的稳定性,二是采用这种设计方法的话时序问题会比较突出,由于相对来说这种设计的时序剩余空间会比较小,一旦外界条件改变(环境试验,特别是高低温试验),就有可能引起样时序的完全紊乱,最终造成电路的无法使用。另外由于芯片更新换代的速度比较快,当这个设计被移植到到其他的类型的的芯片中,就必须对采样延时重新进行调整,电路的可维护性和继承性都很差。(2)盲目使用时钟正负沿调整数据采样。工程硕士学位论文通过使用时钟的正负沿来调整采样,或者通过产生一系列不同相位或不同占空比的时钟来使用其正负沿调整数据,这种做法存在以下两个方面的问题。第一,如果在一个周期内字时钟的上升沿和下降沿都进行操作,那么取而代之的使用这个时钟的同相位倍频时钟也可以实现这个功能。也就是说在一个时钟周期的时间内,如果需要在时钟的上升沿和下降沿都要进行操作,这就好比使用一个频率是原时钟两倍相位相同的时钟来实现。此时由于电路设计的系统时钟频率变快,那么就会使得电路的整体约束条件变得苛刻,这样无法保证电路可靠性的设计。第二,芯片中的pll和dll一般能较好的确保某一时钟沿的Jitter、Skew等各项参数指标,对于时钟的另一个边沿一般控制的不那么好。特别是对于EDA的工具软件包括综合,仿真等,如果在这一过程中没有明确对另一个时钟沿的约束,那么针对这个时钟沿的时序分析就不一定十分完善,那么最终综合的结果不一定能满足最终的设计要求,譬如时序要求(比如Setup、Hold时间等),这样往往会产生在该沿操作不稳定的结果。亚稳态虽然不可避免,但是可以通过技术手段把它的影响减小。试验结果已经表明了带异步输入的电路故障修复的平均时间(MTBF)【43】与退出亚稳态条件所用的时间长度成指数关系。具体的关系由下面这个公式给出:们BF=羔。T、{c{tV—∽2,fc是时钟的频率,fi是输入信号的频率,t,是数据采样前的建立时间,t是亚稳态延迟率的时间常数,To是期间进入亚稳态的一个渐近的时间宽度常数,T和To都与触发器制造工艺有关。由公式3.2可以看出(1)降低输入数据的变化频率fd。。。in,就可以降低亚稳态的出现率。(2)采用多级采样的同步器。如图3.5所示,异步输入信号wrdata由第一级触发器进行采样,并等待一个读时钟rdelk的时间,使得第一级触发器输出由不稳定状态转化为稳定状态,这样输出的数据在达到第二级触发器的输入端时能够满足触发器的建立时间和保持时间,那么最终的输出结果rddata2就是稳定的。在进行同步的过程中有一个重要的准则,那就是不能够通过多个同步装置来进行异步信号的同步,因为那样的话就出现各个同步装置在产生亚稳态时并且导致最终同步信号的失真‘44】【451。根据异步输入信号脉冲的宽度和时钟周期的大小可以把同步电路分为两种类型。当异步脉冲宽度比时钟周期大的时候,一般同步装置由多级移位寄存器组成。随着技术的不同进步使得时钟频率不断提高,如果仅仅使用一个触发器在一个时钟周期内解决亚稳态是不现实的,所以使用多级触发器来适应时钟的频率。具体的同步装置如图3.7(a)所示,在Asynchin和电路之间插入两个触发器,和电路高效异步FIFO的设计与实现相连的触发器进行二级同步,前一个触发器通过输入的驱动防止电路进入亚稳态。下面看一下电路的工作原理:如果异步输入信号在在进入触发器之前已经达到稳定状态,那么它传输到输出端只需要等待两个时钟周期;如果异步输入信号在达到触发器之时还是不稳定的,那么又存在两种情况:一种是不稳定的输入为1,但是需要的最终结果是0,那么在经过3个周期的延迟后会稳定下来,使得0出现在输出中;如果不稳定的输入为1,最终需要的输出结果为1,那么经过两个周期的延迟后1也会出现在输出中。所以这种情况下最大的延迟是n+l,n指的是触发器的数量。由此可知通过这种装置可以较少亚稳态的输出概率,但是需要增加延迟。那是这种延迟是可以接受的,因为异步电路输入本身到达输出的时间是不固定的,如果一旦产生亚稳态则可能引起性能的紊乱。当时钟周期比输入脉冲大时,所用电路如图3.7(b)所示,这种情况下,相比于前一种情况需要增加电路的硬件。用Vet连接到第一个触发器数据的输入端,Asynchin连到时钟输入端,其余的触发器用系统时钟进行触发。Asynch.in驱动q1到1,然后经过两个时钟周期后传送到Synchout,当Asyn么Synchout将进一步驱动Clr,使之有效,从而驱动第二季触发器避免第一级链路中出现亚稳态。当信号必须通过两个时钟域的边界时可以使用同步装置,如图3.8所示,如果图3.8中的Clock1比Clock2慢,可以采用图3.7(a)的同步装置来同步两个域之间控制数据传输接口信号,如果Clock1比Clock2快,就采用图3.7(b)的同步装置。必须注意的,如果Asynchn被同步到i.Clock1,即且Tlockl>T,loek2当Asynchin有效时,将会出现多个Clock2的有效沿。3.3异步时钟域设计中多位数据的同步可以看到同步器的局限性在于它只能使得被采样的信号从亚稳态逐步稳定下来,产生合法的高电平或者低电平状态。由于最后稳定下来的数值是随机的,所以我们不能够判定这一采样信号到底是什么。把一个时钟域内的多位二进制数直接同步到另一个时钟域是行不通的,由于这两个时钟域内时钟信号并不同步,所以这多位数据可能在任何时候发生改变。如果有两位或者两位以上的信号恰好都在异步信号时钟沿附近翻转的话,这些数据就无法满足时钟的建立/保持时间,所以会导致输出处于亚稳态,同步器给出的状态将是随机的高低电平,这样会导致最终得到的数据并不是本设计想要的。由于三位数据同时在时钟的边沿翻转,经过同步器的同步,就会得到8(23)种可能的结果。如图3.9所示:考虑到异步FIFO存储器处在不同的时钟域之间,读写地址指针是两个不同时钟域的数据,在将它们比较前必须通过同步。这里假设FIFO的深度为N,用工程硕士学位论文写指针(O≤wrptr弋<N.1)和读指针(O≤rdptr弋<N.1)来指示数据的写入与读出。读写FIFO必须对空/满状态进行指示,但是如果仅用读写指针来定义空/满状态存在一个问题,当rd.满是能可也,态状空是能可既时此,确明不态状,时状态。解决这一问题的方._p法tr是增加一位地址指针的宽度,这样,当FIFO第一次被写满时,写指针的值是2N,而不是全零。当判断出wr.ptr=rdptr时,即可认为是空。当FIFO操作正确时必须满足下列不等式:rd_ptr≤wr-ptr≤rd-ptr+1(3.1)读写电路对wrptr和wdptr进行相等或不等判断时,直接采用二进制比较时存在隐含危险,下面我们举一个例子来说明,如图3.10所示。nchinDQDQlock>R>R:setl(a)DQq1DQ_qLDQs、chout>clr>clr>clrnW(b)图3.7同步装置:(a)异步输入脉冲宽度比时钟周期大时所用的电路;(b)异步输入脉冲的宽度比时钟周期小时所用的电路假设FIFO的深度为N=8,读写指针经扩展后均为由4位二进制码构成,在t=k时刻,wrptr指向地址4’b0110,rdptr指向地址4’b0101,读请求信号rd有效,此时,经过比较,4’b0110≠4’bOl01,于是rd.en被置为有效,地址4’b0101处的数据被读出,rdptr累加l,在t--k+l时,rdptr应该变为4’b011O,即读地址指针和写地址指针相等,表明此时FIFO为空。但是,由于电路本身存在着延迟,再者锁存器各个位输出稳定的时间也不相同,很可能使得4’b0101高效异步FIFO的设计与实现的第3位首先跳变为1,而第4位仍然是1,这就使得锁存器在t=k+l时刻会输出一个亚稳态值4’b0111,经比较器比较,4’b0111≠4’b0110,于是rden重新被置位为有效,在4’b01决这种潜在危险呢?11处的数据读出就是错误的,如图3.11所示。如何解n口t口;”DQDQ:lockl>R>Rlock2eset图3.8穿过时钟域的同步装置的应用出』厂]厂]厂]厂●●__●●_●●___●___-●___^___●●______一>>Data_allJData_billk“JData_a[2l>k>clktIDomailDomainclkb...................一!.......................................................................................................................一图3.9同步多位数据的不确定性分析以上问题,可以发现危险产生的原因为指针在相邻两个二进制数之间翻转时,出现了亚稳态的中间结果。例如当读指针累加1时,从工程硕士学位论文4’bOl01—4’b0111—4’b0110,从而导致了错误的比较结果。如果采用Gray码变化是解决这一问题的有效技术。Gray码是一种非连续性的编码,主要的特点是相邻两个编码之间只有一位有变化。采用特殊的电路结构进行二进制和Gray码之间的转换。FIFO00000001001000ll0100010101100111图3.10FIFO存储单元10采用Gray码进行指针比较后,本例中的读指针由4’b0101—4’b01的两位跳变就变成了由4’b0111—4’b0101的一位跳变过程,此时亚稳态就消除了。由于Gray码不连续,并不适合作为FIFO的地址索引,所以仍然采用二进制码作为二进制数的索引,仅仅在读写指针传递给对方时使用其相应的Gray码,以防止从一个时钟域到另一个时钟域产生亚稳态。当然,一般除了可以使用格雷码解决上述的问题,还可以采用握手信号来解决。开始的时候将二进制数据存储在一个寄存器中,向接收数据的时钟域发送一个准备好信号(ready),当准备好(ready)信号被接收时钟域接收到以后后,会反馈一个“收到(acknowledge)”信号,这个信号会被同步到发送的时钟域中。在此之前,被采样寄存器内的数据不发生改变。这样,计数器中的数据就能进行安全地传递,避免了亚稳态的发生。基于设计的便捷简单性,本设计采用格雷码进行传递,避免亚稳态的发生,上面一章已经介绍了格雷码设计实现的基本思想。Ok图3.11FIFO二进制码读写指针的比较高效异步FIFO的设计与实现3.4本章小结本章详细的介绍了异步FIFO设计中的亚稳态问题,具体介绍了亚稳态的产生以及亚稳态会给电路设计带来的危害。并且针对亚稳态问题进行了同步分析。分析了当读时钟频率比写时钟频率大时的同步电路装置以及读时钟频率比写时钟频率小时的同步电路装置。并且分析了异步时钟域设计中多位数据的同步出现的问题,指出采用二进制码指针存在的弊端,最终推论出采用格雷码指针设计可以大大的降低亚稳态的产生概率。工程硕士学位论文第4章本设计的主要思想及高效率策略高效率策略就是降低整体的功耗,提高电源的利用率,这点对航天航空技术尤为重要,这种设计方法依赖多个设计层次,从高到低依次是,算法级和系统级,结构级,寄存器传输级,工艺与器件级等。考虑到对高层次设计进行优化对降低功耗效果更加显著,因此在算法级和结构级进行优化获得的效果要远比寄存器传输级和门级好进行优化要好很多,在寄存器传输级以下采用优化策略基本都是通过添加少量的微调电路以降低功耗来提高效率,因为此时电路的基本框架已经定型,因此优化效果不会明显。本设计的FIFO存储器,其高效率设计方法主要是在算法级和结构级。本章将集中讨论本FIFO的整体结构以及各个模块的设计思想以及高效率策略。4.1FIFO的设计结构本设计采用了可配置的逻辑,并且可以使得时钟在空闲状态时能够暂停,提高了能源利用率;采用可配置的同步装置,使得应用的范围更广。本文提出的FIFO结构如图1所示,虚线左边是写逻辑,右边是读逻辑。当FIFO处于满/空状时,FIFO的写/读功能就需要暂停。为了能够达到高能效的目标,当FIFO停止工作时,相应的时钟振荡器也需要停止工作。相等比较器模块和asynfull模块分别产生信号asyn_empty和asyn—full,用于产生停止和重启时钟的逻辑。ClockdbyclkWrc】。ckdbyclkrd图4.1FIFO的整体结构高效异步FIFO的设计与实现读写指针用来指示有效数据的开始和结束。为了防止多字节的数据通过时钟域时出现错误信息,把地址都转化为Gray码,同步模块是用来同步需要穿过时钟域的信息,采用多个寄存器组成的可配置的同步电路来减少亚稳态的产生。在读时钟域里考虑FIFO是否为空状态,如果不为空,则产生一个读请求信号;在写时钟域里考虑FIFO是否为满状态,如果不为满状态,则产生一个写请求信号。当FIFO为满状态时应立即停止写入数据,通过接收写逻辑来产生full状态,然后才能停止向FIFO写入数据。当FIFO为满状态时,应该立即停止向FIFO存储器中写入数据,但是写地址域需要接受NFIFO的满信号,并且通过写逻辑运算然后它才停止向FIFO中写入数据,这将产生几个时钟的延迟,这时我们通过一个可配置的保留空间来保证FIFO的功能正确。地址指针和格雷码的设计和前面提到的设计思想差不多,下面将重点介绍FIFO的几个模块。4.1.1保留空间和满状态检测有些应用需要在FIFO和数据产生和数据输出模块之间有几个时钟周期的延迟,当FIFO和数据产生或者数据输出模块之间存在延迟时,就存在溢出的可能性。这种情况发生在FIFO和数据输出模块之间的可能性比较小,因为数据输出时必须通过读信号的控制。当FIFO和数据产生模块之间产生延迟时,特别当延迟路径比较苛刻,延迟比较大时,就会存在溢出的可能,因为当写信号是由FIFO中产生,当FIFO被检测为满状态时,这时因为信号存在延迟,这就导致通道内仍然可能存在数据被写入FIFO,这就导致了溢出。解决这一问题的有效方法是给FIFO一个预留空间,当FIFO的数据存入到达这个预留空间时,数据产生模块就停止向FIFO中写入数据。FIFO空间的剩余数有读写地址指针之间的差值决定,当读写地址指针的差值小于或者等于预留空间(Resarvespace)值时,FIFO必须通知数据产生模块停止向FIFO中写入数据。为了检测FIFO满状态的情形,考虑有预留空间的情形,wrptr—rdptr表示FIFO被写满的空间,我们用表达式表示为:wr_ptr—rd_ptr>N—Reserve(4-1)wr_ptr—rd_ptr+Reserve>N(4—2)考虑到FIFO的存储空间基本为2的幂次方,我们对(5.2)不等式两边取对数就能得到Reserve的值。4.1.2信号同步装置工程硕士学位论文由于读写控制电路工作在不同的时钟域下,因此他们传递给对方的Gray码指针不能够直接使用,必须采用跨时钟域的同步技术。普通的同步装置分两种,它取决于输入脉冲的宽度是比时钟周期更大些还是更小些【6,7I。为了能够兼容这两种类型,本设计采用可配置的管道同步装置,如图5.2所示。采用这种方法在时钟频率较高的时候,可以通过配置多层从而保证电路的稳定性,在时钟频率较低的时候,可以减少同步器的级数从而减少延迟。图4.2可配置的同步器单元可以看到这种同步器包含了config=0的情况,通常情况下这种配置被认为不能用于正常的操作,但是我们通过大量的实际应用观察到在这种配置下并没有出错,这是因为虽然在eonfig=0时,同步输出的亚稳态概率非常高,但是这并不能直接导致FIFO的输出错误。相反,这些同步信号是用来产生存储器中读/写输出使能信号的,只有它的下一级输出使能信号出现错误时FIFO才会产生错误。考虑到这个同步输出的延迟小于一个时钟周期时,那么增加级数来那么就能更进一步减少异步信号的亚稳态。4.2低功耗策略之时钟的暂停和重启要使得FIFO正常工作,必须在FIFO满状态时停止向FIFO写入数据,在FIFO空状态时停止从FIFO读出数据。为了能够提高能源利用率,本文采用了新型的结构设计来保证在FIFO满时停止写时钟,在FIFO空时停止读时钟。如图4.3所示,写时钟elkwr显示了在满状态时停止和非满状态重启的情形。如图4.3所示,FIFO的满标志是在elkwr的边沿检测,通过比写地址和同步的读地址来产生。Full的上升沿表示elkwr可以暂停,当FIFO因为读出数据而高效异步FIFO的设计与实现退出full状态时,clkwr必须迅速重启,但是full信号是由clkwr来控制的,而此时elkwr暂停,所以full信号仍然保持高电平。这时我们添加一个新的信号asynfull来解决这个问题。信号asynfull在读时钟域里产生,由clkrd来控制,通过比较读地址和同步的写地址来产生。当FIFO读出数据退出full状态时,信号asynfull立即变成低电平,因此,用他来重启clkwr,然后,在clkwr的上升沿full信号变成低电平。空状态的情形一样,在读时钟域中产生empty信号,用来停止elkrd,在写时钟域中产生asynempty来重启elkrd。图4.3写时钟满状态下暂停和非满状态下的重启可以注意到当信号asyn—full和asyn_empty从一个时钟域跨越到另一个时钟域时并不需要任何同步电路,因为当这两个信号真正作用时总有一个时钟域的时钟是停止的。图4.4写时钟满状态下暂停和非满状态下的重启有好几种方法可以实现时钟暂停和重启的逻辑方案。最直接的理论是用检测器的上升沿来检测full信号,下降沿来检测empty信号,然后暂停和重启时钟,如图4.3所示。两种传统的上升沿检测电路如图4.4所示,4.4(a)是把信号直接接到clock端的触发器,但是这个电路太简单,对噪声太敏感。另一种方法如图4.4(b1所示,用两个寄存器来检测改变的数据,这个方法虽然安全,但是需要一个有效的时钟信号,这个不容易保证【46】【471。本文提出一个简单并且安全的组合逻辑来控制时钟停止和重启的方案。可以注意到当full和asynfull信号都为高时,elkwr就停止,只要其中任意一个变为工程硕士学位论文低时就重启。这个逻辑可以用简单的与逻辑来实现。空状态时也一样:当empty和asyn_empty都为高时,clk—rd就停止,其中有一个变为低时就重启。简单的时钟停止和重启模块如图4.5所示。图4.5简单的时钟暂停和重启电路仅仅用full和asyn_full信号的简单组合逻辑来进行时钟的停止仍然有可能导致功率的浪费。如图4.6所示,当写时钟域的时钟clkwr收到它前端电路的控制而突然停止时,当FIFO为空状态时,此时读时钟域中elkrd也必须停止,asyn_empty信号是由elk—W控制,但是此时clkwr已经停止,所以asynemptv始终为低状态,那么这时当FIFO为空时clkrd就不会停止,这会浪费功率。OSCoff…………………………………………j◆川咖臀露营即锄a嗡虬……Q照煦曼k.熙….◆餐器官蝼图4.6没有一致信号下写时钟突然停止时的状态可以通过添加一个一致信号(consistentsignal)来解决上述的问题,如图4.7所示,处理器要停止,必须由读时钟域中FIFO的empty信号和asyn—empty信号或者写时钟域的full和asyn_full信号同时决定,停止必须要求fifoconsist和outconsist同时为高电平。当信号asyn—full和full信号电平相同时信号fifo—consist为高,当信号asyn—empty和empty信号电平相同时信号out—consist为高电平。图4.8展示了添加一致信号写时钟突然停止时的状态,当clkwr突然停止时,empty信号和asyn_empty电平不相同,所以out—consist变为低电平,所以此时clkwr会重新启动,经过几个时钟周期,asyn_empty信号由elk—wr控制变为高电平,那样的话高效异步FIFO的设计与实现最后就使得读时钟和写时钟都会停止,从而提高了电源的效率。卜赢1卜i品丽画面一图4.7适用一致信号后时钟的暂停和重启电路鼙-E卜留狮鼙-E卜a,u-曹图4.8有一致信号下写时钟突然停止时的状态越4.3寄存器传输级高效策略对FIFO寄存器传输级进行优化,主要可以通过门控时钟和操作数隔离实现。4.3.1门控时钟在数字电路的设计中有很大一部分的功耗是来源于时钟的,时钟会产生大量的动态功耗,由于时钟在所有时间段都会对电容进行充放电,这就有可能导致逻辑门不必要的翻转,从而会引起额外的功耗【4引。门控时钟技术一种专门针对RTL级设计进行功耗减少的有效手段,此技术主要通过对锁存器或触发器的时钟输入进行门控。当子模块处于空闲状态时关断其时钟,这样做的好处是既可以使得自工程硕士学位论文身模块时序电路保持静止状态,同时又可以使得后面的组合逻辑电路不进行翻转。因此门控电路是一种非常有效的降低动态功耗的方法。在一般情况下,使用门控时钟电路,可以节省20%~60%的功耗。下面是门控时钟的电路的verilogHDL描述:always@(posedgeCLK)beginif(EN)Data_out<=Data_in;End综合以上这段代码,生成的门级电路如图4.9所示。outDRegBank图4.9不添加门控时钟生成的电路这种寄存器在数字集成电路设计中是最常见的,当EN=1时,输入数据Datain被多路选择器选中,然后将传送至lJRegBank的输入端D:当EN=0的时候,触发器的输出信号Q(Dataout)被MUX选中,并将其反馈给触发器输入端D,虽然RegBank的输出值没有改变,但由于电路中存在着这样的反馈,从触发器输出端Q到多路选择器输入端不停的在循环,这个过程需要消耗能量。因为虽然EN=0,触发器的输入一直是Q的反馈值,但是由于时钟信号连接到到很多寄存器,那么触发器和时钟线都需要消耗能量,多路选择器也在工作状态,在消耗能量。针对这种情况,可以在触发器状态不改变的时候关断它与时钟信号的联系从而使得触发器停止功耗,这样做能降低电路的功耗,通过加入门控时钟来实现这个过程。下图5.10是加入门控时钟以后,代码进行综合之后生成的电路图。CLK作为系统的时钟信号,由ENCLK信号来控制触发器,它通过与逻辑门(AND)来进行控制,而使能信号ENL和CLK一起来控制与逻辑门的开关,而使能信号ENCLK又由EN信号控制。当EN=0时,ENL和ENCLK都等于0,从而触发器是被关断的,只有在ENL为1时,ENCLK信号就变成了时钟CLK的信号,从而控制触发器的工作。当门控时钟被插入整个电路之后,因为时钟树的减少了开关行为,降低乐在开关过程中引起的功耗。同时,由于切换行为的时钟引脚的减少,也减少了内部寄存器功耗。通常情况下,时钟信号是所有信号中翻转频率最高的,时钟高效异步FIFO的设计与实现树的信号可能会占到整体设计百分之三十的功耗。由此可见,通过使用门控时钟设计功耗可以有效降低。图4.10插入门控时钟后的电路门控时钟不需要用到多路选择单元,所以加入门控时钟后可以有效的降低设面积。门控时钟电路的扇出比较大,所以对降低功耗的性能和面积的效果很好。在本设计中,时钟模块是用来产生读写地址指针的。如图4.11展示了一个写指针电路的产生,出现如下情况:一写复位信号(wrst)有效、二满标志信号(full)有效、三写地址指针的增加量(wraddrptr)为0时,关断wrelk,使其不发生翻转,这样触发器的工作就大大减少了,写指针产生电路的功耗就会被降低。图4.11门控电路门控时钟电路较容易实现,可以在代码中手动加入,也可以通过工具自动插入门控时钟。目前采用工具插入以取代手工输入的情况越来越普遍,这样做的好处是它可以避免产生潜在的毛刺(glitch)。可以通过下面两种方法来管理CLOCKSkew,从而使得门控的时钟单元输出不产生毛刺。方法一是通过采用集成的门控时钟(GC)单元,这个单元是可以从工艺库中加入的,已经对Skew进行了相应的;方法二是在进行布局时把锁存器和与门密切地布局在一起,譬如可以使用PhysicalCompiler自动地对锁存器和与门在版图最终的位置进行控制,为了达到降低功耗的目的,版图中的门控单元应该尽可能的接近其相应的寄存器组。在本设计中用Synopsys公司的PowerCompiler(PC)进行门控时钟的自动插入,把PowerCompiler和综合工具DesignCompiler(DC)综合使用,这使得在插入门控时钟这一步骤可以直接在DC中进行。下面给出了部分插入门控时钟时的命令:setpowerpreservertlhiernamestrue工程硕士学位论文set—clock_gating—style…insert——clock——gating4.3.2操作数隔离对于图4.12的电路,当SEL一0不等于1或者SEL不等于0时,加法器Add一0运算的结果并不能通过mux一0和mux_1输出到达寄存器reg一0。因此,这时候加法器实际上并不需要工作的。图4.12未操作数隔离的电路为了降低FIFO中的算术和逻辑运算单元的功耗,使得算术逻辑单元在没有使用的时候停止不必要的翻转,进而降低电路的功耗。这时候我们可以采用操作数隔离(OperandIsolation)简称OI的方法,在某些条件下,使得加法器停止工作,保持静态。如图4.13所示。图4.13带操作数隔离的电路对SEL0和SELl的值进行组合逻辑运算,结果和Data1还有Data2进行与运算后在对Add0进行输入,一旦当SEL0不等于1或者SEL不等于0时,加法器的没有数据输入,所以加法器也就停止工作,很好的解决了前面遇到的问题。本设计采用了PowerCompiler添加操作数隔离。默认情况下,如果操作数隔离的物体满足以下条件时,PowerCompiler会自动选择它们。(1)OI的物体是算术逻辑单元或层次组合单元。(2)OI的输出是是选择性地使用,例如图4.13.(3)运算器必须有非零的反转率。自动进行操作数隔隔离的脚本如下:高效异步FIFO的设计与实现setdo——operand——isolationtrueset——operand——isolation——styleread—saif.…..report——operand——isolationcompile4.4本章小结本章详细的介绍了本FIFO的设计结构,在通用FIFO设计的基础上进行改进,对满状态和空状态的检测过程中,增加了保留空间,从而保证了FIFO的运行不出错。并且采用可配置的同步单元设计,这样就可以通过改变同步单元的参数,是的能够在各种读写时钟频率下进行同步。本章还对FIFO的低功耗策略进行了详细的介绍。引进asyn_empty和asyn—full两个信号,和empty、full信号采用组合逻辑从而实现了读写时钟的暂停和重启,这样就节省了时钟功耗,并且在综合时引进门控时钟,采用操作数隔离等方法进一步降低功耗。工程硕士学位论文第5章设计实现与验证分析本文开头介绍了ASIC的设计流程,本章将结合具体的FIFO设计来进行详细的阐述,包括功能验证、综合、静态时序分析,版图等,最后还对设计的芯片进行了测试。5.1功能验证本FIFO的设计采用了自上而下的设计方式。主体设计主要包括以下几个模块:控制模块、SRAM模块、GraytoBinaryconverter模块、BinarytoGrayconverter模块、sync模块、地址产生模块和equivalence模块。进行Verilog代码设计时,需要先对每个模块进行在SynopsysVcs中进行代码编写和功能验证,保证其功能的正确性,然后把所有的模块整合在一起,进行整体的仿真,本设计采用synopsysVCS进行仿真。这里主要展示针对整体模块进行的一个综合的仿真,图5.1为FIFO的整体部分仿真波形图。图5。1FIFO的仿真此外,为了验证该处理器芯片进行流片的可行性,本设计还利用FPGA进行了验证,称为Emulation。由于本设计用于整个航天飞船话音处理器部分的分合路模块,所以和其他模块以起进行FPGA的验证。AAC分合路软件中顶层模块内各个逻辑块的流程图可参见图5.2。图像编码器的FPGA1软件最终由一个顶层文件和6个子模块构成,每个模块分别完成各自的功能,分别为:信号处理域模块、遥控指令模块、数据接收预处理模块、H.221复接模块、RS纠错控制模块和RS纠错编码模块。每个模块功能比较,可以单独进行修改,软件可编程性较好。软件在XILINX.ise8.2编译环境中进行编译和综合,最后产生可编程文件17v16.mcs。将17v16.mcs通过编程器固化入EEPROM器件XQl7V16中,烧入程序后的XQl7V16进行落焊。在上电或复位时FPGA器件会主动从EEPROM中读高效异步FIFO的设计与实现取程序信息。FPGA测试板以及Emulation平台如图5.3所示。采用泰克公司的TLA5000系列逻辑分析仪对输出信号进行监测,通过分析可以得出该芯片能够在FPGA里正常工作。图5.2AAC分合路软件顶层模块逻辑流程图图5.3FPGA测试板及Emulation平台本设计的资源利用率可参见下图5.4。工程硕士学位论文LogicUtilizationUsadkveilablegtili.ati01Nmb口ofSliFlipFlops5706,1449篙碍mb口of4inputLUTs5826,144弧Logie毗stributioⅣlqznberofoccupiedSli4623,07215%lhmberofSlicescontainingonlyrelated.109i462462fOOlNumberofSlicescontainingunrelatedlogi04620篙Totll][Iber4imp·utLUTs∞2也l“Mmberused“legic582Numberusedroute—tlu-u100l}rmberofbondedI皿1421628T冀IOBFlipFlops19lfumberofBlockR^ms81650%NumberofGCUh4410嘛l!『umberofGcI豇OBs34T5钵NumberofI【P髓ma口oslTot.1equiveleatgatecountfordesi140,491AdditiondJT^GforIOBs6J960图5.4器件资源利用率5.2逻辑综合长久以来,设计者都必须手动的将HDL代码转化成逻辑图,通过逻辑图生成最终的门级网表,而硬件描述语言通常只是来表示电路的逻辑功能。随着EDA设计工具的改进,我们可以通过综合工具来完成以前需要手工完成的操作,使得设计的规模可以更大,设计的周期缩短。目前常见的综合策略有三种:自顶向下的综合策略、自底向上的时间预算策略以及Compile.Characterize.Write.Script.Recompile(CCWSR)策略。三种策略各有各的特点,需要根据设计结构选择合适的综合策略。一般情况下中、小型设计会选择白顶向下的综合策略,通常较大的设计可以选择对这几种策略进行混合使用以达到较好的综合效果。综合主要有三个过程:转换(translation)、优化(optimization)和映射(mapping)。转换阶段是将高层语言描述的电路改成用门级的逻辑来表示,就Synopsys的综合工具DC来言,这一过程就是使用内嵌的GTECH.DB库中的门级单元来表示硬件设计语言表示的电路,在转换过程中是不会对电路进行优化的,所以得到的逻辑网表是最原始的。接下来通过优化和映射对已有的初始电路根据约束来进行一个优化,去掉电路中的重复的单元,对于不满足条件的路径进行一系列优化,最后将优化之后的逻辑电路映射到由生产商提供的工艺库上。本设计采用SMIC0.18“mCMOS工艺库进行综合。由于本设计用于整个航天飞船话音处理器部分的分合路模块,因此在综合时和话音处理器分合路的其他模高效异步FIFO的设计与实现块进行一起综合,采用了ComplieUltra进行打平综合。在综合之后进行后仿,把生成的门级网表和标准延时文件(sdf)一起进行了时序的仿真,最终验证了本验证了本设计的正确性。本设计利用Synopsys公司的DesignCompiler(DC)工具对设计进行了逻辑综合,采用了白顶向下的综合策略,同时把子模块组合在一起打平或打散后进行最终的综合。DC有两种操作界面,图形界面可以通过design命令行界面可以通过dcshell来运行。这两种界面各有各的优点,图形界面相对来说比较简单,直观;命令行界面相对来说消耗耗的资源比较少,并且所用的命令可以通过脚本来编写,方便操作,并且便于约束的移植。如图5.5所示为DC综合时的输入输出示意图。图5.5DC综合的输入和输出综合时需要设置综合的条件、规则以及优化目标,综合过程依靠约束来驱动。综合约束包括三个方面:环境约束、时序约束及优化约束。(1)对环境属性的约束,包括PvT(制程、电压和温度),线负载模型和模式,其命令有:setoperatingconditions、setwireloadmodel等,图5.6显示了在不同的工艺(Process)、电压(Voltage)、温度(Temperature)下对应的性能差异。图5.6不同的操作条件(PVT)对应的性能差异通常工艺库中会指定一个默认的条件,使用report—liblibname命令把厂商提供的所有的工作条件都列出来。例如:OperatingConditions:工程硕士学位论文NamelibraryProcessTempVoltTyp一25—1.80my—lib1.0025.001.80slow一125—1.62my—lib1.05125.001.62fast一0—1.98my—libO.930.001.98设置工作条件的工作命令是:set—operating—conditions—max“slow一125—1.62’’本设计采用最慢的工作条件,这样综合出来的效果会好些,并且对于后面的工作也有好处。线载模型:设计模块呢节点的延迟和面积可以用线载模型进行估算,在半导体厂商提供的工艺库中,包括了连线载模型(WireLoadModel,简称WLM)。WLM是厂商对那些已经设计出来的芯片进行统计,从而计算出在同一个工艺下,计算出来在某个设计规模范围内负载扇出为1的连线的平均长度,负载扇出为2的连线的平均长度,负载扇出为3的连线的平均长度,并且在工艺库中还提供了连线单位长度的电阻值、电容值和棉结。根据这些综合工具可以计算相应负载的连线延迟等。本设计使用的联系负载模型是40KGATES。(2)时序约束。在De中,所用时序约束的命令如下图5.7所示。图5.7De中约束脚本中使用的命令在综合时必须对综合的对象加入时序约束,因为这会直接影响到最终的优化以及实现。时序约束主要是的基础是建立时间和保持时间,时序约束的不同综合的结果也会不同。需要注意的是由于本设计是使用双时钟的FIFO,所以对于穿越异步边界的任何路径,我们便面对其做时序综合。(3)优化约束:优化约束主要指的是在满足设计功能的情况下,对电路的面积、时序和功耗等进行进一步优化。一般情况下采用的方法是采用一个命令限定电路的最大面积(setmaxarea),通过多次优化,以确定合适的值。但是随着设计的规模逐渐变大,半导体工艺越来越先进,越来越多的设计采用了超深亚微米工艺。很多情况下,面积不是设计的主要目标。在一个规模达数高效异步FIFO的设计与实现百万门的设计中,增加或者减少几万门电路对设计的成本几乎没什么影响。因此现在一般把设许和设计规则作为优化的目标。一般在对HDL代码进行综合完毕后,检查结果。看电路是否满足时间和设计规则的要求。对于时间的检查,可用report_timing命令来显示详细的报告。如果设计既满足时间和面积的要求又不违反设计规则,那么综合就完成了。5.3形式验证及静态时序在数字集成电路设计过程中还需要进行形式验证(FormalVerification),简单来说,形式验证就是对两个设计或者一个设计的两个版本进行等效性比较。针对本设计主要是验证RTL设计与综合后的门级网表是否一致。采进行形式验证的母的是为了更早地发现设计中的缺陷,形式验证具有100%的覆盖率,通过形式验证还能降低设计周期和研发成本。本设计使用Synopsys的Formality工具对RTL代码和综合生成的网表进行形式验证,通过代码的多次修改之后,最终结果表明本设计综合之后的网表与RTL代码所要实现的功能一致。验证通过的窗口如图6.8所示。图5.8形式验证前面所介绍的形式验证是用来检验综合后生成的门级网表的逻辑功能是否正确,由于半导体工艺与技术发展,使得器件尺寸越来越小,使得金属互连线上的信号的延迟的问题变得越来越突出。为此,为了使得设计能够正常工作,必须对设计进行时序分析。时序分析分为静态时序分析(StaticTimingAnalysis,STA)和动态时序分析。动态时序分析具有高精度的优点,但是在百万门级以上的设计中,通过动态时序仿真往往需要数周的时间,这样的属兔相对比较慢,而且在分析的过程中有可能有一些关键的路径并未被分析到。静态时序分析的话优点是分析速度快,测试路工程硕士学位论文径的覆盖率可达到100%,没有遗漏的路径,保证了验证的完备性。静态时序分析是使用工具按照特定的时序分析模型观察电路设计是否在规定额时序下工作[461。静态时序分析的两个基本类型是建立时间(setuptime)和保持时间(holdtime)。由于建立时间的违例一般发生在最差工艺、最慢工作的条件下,所以在setup时序分析时,可以用“最差条件”的库文件来分析,计算最长路径的延迟。保持时间一般发生在最好工、最快工作的条件下,所以在对hold进行时序分析时,可以用“最佳条件"的库文件进行分析,计算最短路径的延迟。目前常用Synopsys公司的PrimeTime(简称PT)工具进行静态时序分析,在加入入门级网表、约束条件后,对环境进行设置和条件进行配置,检查设计的库元件、端口、线网和时钟、延迟约束以及线载模型等给出分析的详细报告,并查出违例路径情况。本设计采用PrimeTime进行静态时序分析,分析报告如图6.9所示从分析报告中可以得出,该分和路处理器的设计满足时序要求。Timingsummary:Timingerrors:0Score:0Constraintscover10081paths,0nets,and4032connec七ionsDesigns七atistics:Minirmmperiod:25.164ns(Maximumfrequency:39,739M-h)Minimminputrequiredtimebeforeclock:11.35&asMaximumoutputdelayafterclock:19.601ns图5.9静态时序分析报告由图5.9分析可得,最坏的时序延迟为19.942ns,发生在下面的信号通道中,总体对此信号的延迟要求为250ns,因此能满足要求。下图5.10显示了最坏时序路径的分析。Delay:19.942ns(LevelsofLo豇C=3)DataPath:sys_rsttoerateoutGateNetCell:in->outfanoutDelayDelayLogicalName哪etName)IBUF:卜>0890.9897_315舒/s..rst—IBUF(sys_rst—IBUF)INV:I一>O480.7385.060XL】【I一369_RESETz_invl—IIN一0(XLXI一369RESETz_inv)OBUFr:T->O5.840erateout..OBUI丌(erateout)19.94抽s(7.567nslogic,12.375nsroute)(37.9%logic,62.“route)图5.10最坏时序路径分析在图形化界面中可以将setup及holdtime的统计信息以柱状图的形进行显示,如图5.11所示。高效异步FIFO的设计与实现图5.11setup及holdtime的统计信息柱状图本设计中最长的关键路径逻辑结构如图5.12所示。图5.12最长关键路径逻辑结构图5.3物理设计通过前面的综合步骤本设计已经从RTL级转换到了门级网表(netlist),接下来的任务要把门级网表转换成版图,这一步骤称之为布局布线,又叫layout。通常布局布线的方式有两种:一是通过设计者手工画版图来实现,这是在EDA工具发展早期或者特殊情况对工艺要求比较严格时才使用的;另一种方法是使用EDA工具来自动布局布线,这一步称之为APR(AutoPlaceandRoute)。相比于手工布线,采用自动布局布线工具可以明显加快速度,而且大规模的集成电路采用手工布线的话容易出错,所以现在普遍使用这种方式进行设计。自动布局布线的典型流程如下:工程硕士学位论文(1)设计输入(Designimport)。读入网表,加入约束时序的脚本文件,跟foundry提供的基本单元库和Pad库以及宏模块库进行映射。(2)布局(floorplan)。主要做整体布局,规定了芯片的大致面积和管脚位置以及宏单元位置等粗略的信息。(3)放置标准单元(Place)。将标准单元放置在芯片的core中。(4)时钟树综合(ClockTreeSynthesis)。为了降低clockskew而产生由许多buffer单元组成的“时钟树”。(5)布线(Route)。把电源和时钟信号以合理的方式互连,布线的设计目标是最大化的满足时序的需要。(6)验证(Verify)。包括验证金属密度(MetalDensity),连接关系(Connectivity),天线效应(ProcessAntenna),几何效应(Geometry)等。为满足designrule从而foundry能成功制造出该芯片而做的修补工作,如填充一些dummy等。(7)时序检查(TimingCheck)。包括检查Setuptime和Holdtime等。(8)导出文件。包括导出版图信息文件(GDS),用于进行后仿真和静态时序分析的延时和文件网表文件等。常用的自动布局布线工具有Synopsys的Astro和Cadence的SocEncounter。本设计采用了Encounter工具进行布局布线。本设计的最终版图如图5.13所示,由于本设计是是话音处理器分合路模块的一小部分,FIFO整个版图中也是极小的一部分,下图方框内包含了FIFO的设计模块。图5.13话音处理器分合路模块版图部分导出进行物理设计之后的相应文件之后,还必须经过再一次仿真(简称后仿真)和时序分析还有形式验证等步骤进一步对本设计进行一系列验证。将版图的gds文件导入Virtuoso工具,然后采用Calibre对设计模块进行了设计规则检查,高效异步FIFO的设计与实现简称DRC(DesignRuleCheck),版图逻辑功能检查,简称LVS(LayoutVersusSchematic)检查。DRC主要用来检查版图的一些基本设计规则如间距,宽度等是否符合提供流片厂商的工艺参数要求;LVS是用来确认版图的结构和设计电路的逻辑是否对应。5.4芯片测试本设计采用的是中芯国际的0.18}tmCMOS工艺进行流片的。图5.14左边是芯片进行封装之前显微镜下照片,右边是进行封装之后的照片。整体芯片的面积为5000}tmx33001xm,整个芯片采用了PGA封装,引脚数为128。OO封m图5。14芯片未封装之前显微镜下和封装之后的照片该话音处理器芯片使用的测试板如下图5.15所示。通过了使用信号发生器和高精度的电流表以及逻辑分析仪进行一系列测试。通过仔细测试得出该芯片的FIFO功能完全正确。图5.15芯片的测试板通过PCB板上的电压开关的控制,用高精度电流表可以测得该话音处理器芯片的真实功耗(包括芯片部分其他电路)。试验证明FIFO满足了低功耗的情况。通过对处理器在不同信号频率1MHz~40MHz的范围内多次测量,取平均值后得工程硕士学位论文到的测量结果如表5.1所示。从表中可以看到,功率基本和频率是正相关的,功率随着频率的增加而增大,基本呈线性关系,如图5.16所示。用功率除以频率可以得到图5.16的斜率,由于斜率是一定的,我们可以用这个参数来表示功耗的情况,实际测的的值为1.18mW/MHz。表5.1不同频率下的平均功率;£斟雷图5.16处理器的平均功率分布图在1.8V的工作电压下,对FIFO进行测试,在各个频率下的动态功耗和静态功耗如下表5.2所示:表5.2PowerCompiler功耗分析结果通过功耗分析可以知道,话音处理器的实际功耗计算的平均功耗功耗也只有高效异步FIFO的设计与实现1.18mW/MHz,而FIFO的动态功耗仅仅只有O.09mW/MHz,通过对比其他设计可知该话音处理器已完全满足了低功耗的设计的要求。在话音处理器模块完成后,在整个实际应用中,通过对数据的收发处理进行测试,实际的出错率在4%以内,并且完全满足速率的要求,所以间接的证明了本FIFO设计的稳定性。5.5本章小结本章对FIFO的设计进行了整体的验证,包括功能验证,逻辑综合,形式验证及时序分析到最后的版图设计。最后对整个话音处理器进行功耗的分析,通过功耗分析可以知道,话音处理器的实际功耗计算的平均功耗功耗也只有1.18mW/MHz,而FIFO的动态功耗仅仅只有O.09mW/MHz,通过对比其他设计可知该话音处理器已完全满足了低功耗的设计的要求。在话音处理器模块完成后,在整个实际应用中,通过对数据的收发处理进行测试,实际的出错率在4%以内,并且完全满足速率的要求,所以间接的证明了本FIFO设计的稳定性。工程硕士学位论文结论异步FIFO存储器在集成电路中的应用十分广泛,它的商业前景十分可观。如何设计出一个性能优越的FIFO是一个有挑战性的课题,这需要电路设计者通过不断地改进设计方法来跟上集成电路行业发展的脚步。信号在跨时钟域中传输,亚稳态的产生以及满,空状态信号的判断是一个异步FIFO存储器设计的难点。由于异步FIFO存储器是用来在两个不同时钟域之间进行数据传递的,写地址和读地址是不在同一个时钟域之间的数据,在将它们进行比较时必须要先经过数据同步,这样才能有效的判断出FIFO的状态。而二进制数在同步时有可能多位数据会改变,那么就存在多位数据处于亚稳态的情况,所以二进制指针不能够直接进行同步。解决这一问题的方法有两种,本文重点讨论了使用格雷码来代替二进制码的设计方法。空满状态信号的判断是设计异步FIFO存储器的另一个难点。当读写地址指针相等时,FIFO存储器既可能处于满也可能处于空两种状态。本文介绍了两种区别FIFO存储器处于哪种状态的方法:一种是在地址前添加附加位;另一种是采用划分地址空间来判断满,空状态。本设计主要针对的是接口模块的编写,并且配合其他模块进行仿真,从而完成话音处理器的设计。本文主要研究了以下几个方面的内容:(1)对异步FIFO的通用结构进行介绍以及解决设计异步FIFO存在的两个主要难问问题。(2)通过同步电路来降低异步FIFO亚稳态出现的概率。(3)对异步FIFO的低功耗进行研究,从异步FIFO的整体结构上解决,通过实现对时钟的有效利用降低功耗,并且通过门控时钟,操作数隔离等方法进一步降低功耗。本设计除了保证FIFO的正常工作之外,还拥有三个方面的创新点:(1)对同步器的同步单元进行可配置逻辑,降低了亚稳态产生的概率,并且可以根据读写时钟频率的不同对同步器进行相应的配置。(2)对读写时钟进行有效控制,通过组合逻辑完成读写时钟的停止和重启,大大的提高了时钟的利用率,降低了功耗。(3)通过对存储器加入保留单元从而能够在FIFO和读写模块之间存在较长延时的时候i保证电路不发生溢出,提高FIFO的稳定性。通过门控时钟的加入和操作数隔离进一步降低功耗,提高效率。高效异步FIFO的设计与实现本设计用Verilog代码进行程序的编写,模块的功能仿真以及整体的功能仿真在SynopsysVCS中进行,并采用了FPGA对该整体的设计进行了验证。通过仿真和验证使得设计的正确性得到保障。该精度满足本项目对航天飞船话音处理器分合路的要求。本话音处理器的流片采用了中芯国际的0.189m工艺,为了保证芯片的成功率,在设计的每一个环节都进行了严格的把关,不仅保证功能的正确性,还有时序,功耗等都进行了分析调整。该FIFO具有可靠性高,效率高等特点。除了可以可以用于本项目中,在其它领域如语音信号处理、图像处理等也具有广泛的用途。虽然本设计在性能上基本满足了设计和应用要求,但是本设计还不够完美,有待进一步完善和提高。在后续的设计中在降低功耗提高能量利用率上可以从底层晶体管级考虑,并且考虑到本设计被应用在航天航空中,所以有必要进行抗辐照设计的研究。工程硕士学位论文参考文献[1]ChrisJMyers.AsynchronousCircuitDesign[M].JohnWiley&SonsCanada,2001,20.40[2]C.H.Van,Berkel,M.B.Josephs,S.M.Nowick.Scanning.thetechnology:Applicationofasynchronouscircuits[J].ProceedingsofthetheIEEEAsynchronousDesign,1999(87):223-233[3]YehHJ,SmithJS.Fluidicself-assemblyfortheintegrationofGaAslight·emittingdiodesonSisubstrates[J].IEEEPhotonicsTechnologyLetter.1994(2):412—416[4]AraifFukudaT.Adhesion-typemicroendeffectorformicromanipulation[J].IEEEIntConferenceonRoboticsandAutomation,1997(2):144—149[5]UNGERSH.AsynchronoussequentialswitchingCircuits[J].NewYorkWileyInterscience,1969(3):277-278[6]冯亚林,张蜀平等.集成电路的现状及其发展趋势[J】.微电子学,1998,36(2):173.176[7]J.Mcconnell.ADEVICEINDEPENDENTGRAPHICALDISPLAYDESCRIPTI.ON[J].AmesResearchCenterMoffetField,1971(5):186.192[8]王兵.基于异步映射的流水线替换研究策略研究.博士毕业论文.上海交通大学,2008:56.78[9]彭瑞华.异步处理器的研究与设计.硕士学位论文.上海交通大学,2007:25.50[10]J.D.Garside,S.B.Fuber,S—HChung.Amulet3Revealed[J].Proc。IEEEAsync,1992(2):300-304[11】S.B.Fuber,GarsideJ.D,TempleS,eta1.AnAsynchronousEmbeddedController[J].Proc.IEEEAsync,1997(1):213-216[12]曾永红.数据包异步电路的关键技术研究.博士毕业论文.华中科技大学,2011:10-25[13]JensSparso,SteveFurber.PrinciplesofAsynchronousCircuitsDesign-ASystemPerspective.Boston[M].KluwerAcademicpublishers,2001:3-28[14]肖勇.异步电路性能的分析与研究.硕士毕业论文.清华大学,2007:15.20[15]S.B.Fuber,D.A.Edwards,J.D.Garside.A100MIPSAsynchronousEmbededProcessor[J].Proc.ComputerDesign,2000(1):47-49[16】SRotem,KStevens,RGinosar.AnAsynchronousInstructionLengthDecoder[J]..61.高效异步FIFO的设计与实现Proc.IEEEAsync,1999(1):23-27[17]Manchesterhtml.2006University.http://www.CS.manchester.ac.Uk/apt/async/groups/index.[18]ScottHauck.AsynchronousDesignMethodologies:AnOverview[J].ProcoftheIEEE,1995,83(1):63-69[19]A.ChakrabortyclockandM.R.Greenstreet,Efficientself-timedinterfacesforcrossingdomains[J],inProc.Int.Symp.Asynch.CircuitsSyst,2003(4):78-88[20]赵冰,黑勇,仇玉林.异步集成电路的设计的研究与进展[J】.半导体技体,2007,29(5):l0—15[21]E.Brunvand,LowVLSI,1latencyself-timedflow-throughfifos[J],inProc.Adv.Res.995(3):76-90[22]李广军.可编程ASIC设计及应用[M].电子科技大学出版社,2003,9.100[23】J.T.Yantchev,C.G.Huang,M.B.josephs,I.M.Nedelchev.LowlatencyFIFOasynchronousbuffers[J],inProc.Asynch.Des.Method.,2011(2):24-3Tam,StefanRusu,Utpal1GenerationAnd[24]SimonNagarjiDesai,eta1.ClockDistributionfortheFirstIA-64Microprocessor[J].IEEEJournalofSolid—StateCircuits,2000,35(11):1545·1552[25】郭阳.异步微处理器设计方法与研究[邛计算机工程与应用,2007,43(3),17.21[26]PatrickMahoney,EricFetzer,BruceDoyle,eta1.ClockDistribitiononaDual-CoreMulti-ThreadedItanium-FamilyProcessor[J].Inthe2012InternationalSolid-StateCircuitsDigestofTechnicalPapersofConference,2012(3):292—293[27]单智阳,王欣,刘丽蓓等.异步组合电路网表优化的研究[J].微电子学与计算机,2005,22(11):144—147[28]JoyceVandeVegte.数字信号处理基础[M】.候正信,王译.北京电子工业出版社,2011:122.144asynchronouscircuitsforlowpower:AnIFIR[29]L.S.Nielsen,J.Sparso.Designingfilterbank268.281foradigitalhearingaid[J].ProceedingsoftheIEEE,2010,87(2):[30]邵磊.专用集成电路设计方法研究与应用一一高速浮点乘法器设计.硕士学位论文.江南大学,2007:15.25[31]虞希清.专用集成电路设计实用教程[M].浙江大学出版社,2007,10.50[32]小林芳直.数字逻辑的ASIC设计[M】.科学出版社,2011:22.45[33]S.K.C.Gelatt,M.Vecchi.Optimization220(4958):671·680[34]李杰.低功耗可扩展FFT专用集成电路的设计.硕士学位论文.湖南大学,2011:45.60bysimulatedannealing[J].Science,1983,.62.[35]c.H.van。Betkel.Beware103.128theisochronicfork[J].TheVLSIjournal,1992,13(3):[36]D.A.Gilber,J.D.Garside.AlinedResultForwardingMechanismforAsynchronousP1pe。Async,1Systems[J].Proc.IEEE997(2):285-290『37]纪志成,高春能.FPGA信号处理设计教程[M】,西安电子科大出版社,2008:15·60[38]MarcosFerretti.Singletrackasynchronouspipelinetemplate[J],PHDthesis,ofSouternCalifornia,DepartmentofElec;tricalEngineeringsystems,University2004,32(12):45—80[391T~EWilliams,Self-TimedtoRingsandtheirApplicationsDivision[J]·PHDthesis,University,DepartmentofEelctricalEngineeringandComputerScience,Stanford1991,31(11):91-482『40】朱永峰,陆生礼,茹邦琴.SoC设计中的多时钟域处理【J】.电子工程师,2003,(11):60-61[411MortzaDamavandpeyma,SiamakMohammadi.ArchitecturalanSynthesiswithContr01DataF10wExtractiontowardconferenceonAsynchronousCADT001.11EuromicorTools,DigitalSystemDesignArchitectures[J],Methodsand2008(2):857-864【42】希里提.VerilogHDL高级数字设计[M】.电子工业出版社,2012:18_90[43]IkJoonChang,SangPhilPark,Kaushik,KaushikforProcess.TolerantandRoy.ExploringAsynchronousDesignTechniquesEnergy—EfficientSubthresholdOperation[J].IEEE[44]WeidongJournalofSolid.StateCircuits,2010,145(2):401-410ofAsynchronousCircuitsforKuang,Peiyizhao,J.S.Yuan,ela1.DesignDeepHignSofitErrorToleranceinTransationsonSubmicrometerCMOSCircuits[J]·IEEE0-422VeryLargeScaleInergration(VLSI)Systems,2010,18(3):41『45]段波,格雷码以及应用【J】.电子质量,2004,4(3):7f461Y.Monnet,M.Renaudin,R。Leveugle.Asynchronoussensitivityevaluation.CA,2005:863_868circuitssensitivitytofaults【47】沙燕萍,皇甫伟,曾烈光.异步FIFO的VHDL设计[J】.电子技术应用,2001,4(2):74.75【48]吴继华,王诚.VerilogHDL设计与验证[M】.北京人民邮电出版社,2011:25-89.63.高效异步FIFO的设计与实现致谢能够完成这篇论文我首先要我的导师晏敏副教授。在我研究生的三年学习中,他给予我无私的关怀,不仅在科研上给我指明方向,解答我的困惑,而且时常给我讲解人生观,告诉我生活的规则,鼓励我朝着自己的梦想前进,这些都使得我终生受益。另外,这这篇论文的成稿期间,晏老师给了我很大的帮助,不仅和我探讨写作的方向,也告诉我写作的要点,在我遇到困难时及时和我探讨,在论文初稿完成时,老师不辞辛苦逐字逐句的帮我修改论文,这为我论文终稿的顺利完成提供了非常大的帮助,在这里我要向晏老师表达最真挚的谢意!在读研三年期间我得到了湖南大学物理与微电子学院的各位老师的帮助,在这里也要向他们表示真诚的感谢!另外我要特别感谢我的师兄李杰,在我研一的时候他给予了很大的帮助,跟我积极讨论学习问题,给我的研究方向提供了很多参考,帮组我分析适合我的科研方向,引领我走向数字IC设计这条道路。此外,他还传授了很多他在论文写作方面的经验。我要感谢我的家人和朋友,是他们在我孤独时陪伴我,在我一路前行中他们见证了我的成长,鼓励我迈上一个又一个台阶,感谢他们为我付出的点点滴滴!此外,我还要感谢中国电子科技集团第五十八研究所为我提供了科研的场所,感谢五十八所的同时高国平和孙云华,他们无私的指导使得我的科研工作能够顺利完成。最后,谢谢各位专家评委,在百忙之中抽出时间来对我的论文进行审阅!工程硕士学位论文附录A芯片测试板的PCB图图A1PCB顶层图图A2PCB底层图.65.高效异步FIFO的设计实现

作者:

学位授予单位:

施华钧湖南大学

本文链接:http://d.g.wanfangdata.com.cn/Thesis_Y2355934.aspx

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baomayou.com 版权所有 赣ICP备2024042794号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务