×
嵌入式 > 技术百科 > 详情

异步FIFO实现不同时钟域间数据传递的设计

发布时间:2023-04-18 发布时间:
|
摘 要:数据流在不同时钟域间的传递一直是集成电路芯片设计中的一个重点问题。本文通过采用异步FIFO的方式给出了这个问题的一种解决方法,并采用Verilog 硬件描述语言通过前仿真和逻辑综合完成设计。 关键词:异步FIFO;时钟域;Verilog引言当今集成电路设计的主导思想之一就是设计同步化,即对所有时钟控制器件(如触发器、RAM等)都采用同一个时钟来控制。但在实际的应用系统中,实现完全同步化的设计非常困难,很多情况下不可避免地要完成数据在不同时钟域间的传递(如高速模块和低速模块之间的数据交换)。这时,如何保持系统的稳定,顺利完成数据的传输就成为一个重要的问题,这也是异步电路设计中最为棘手的问题。通常的做法是采用对每位信号加同步器或增加握手信号来解决这一问题,但这样会增加系统的复杂度且影响传输速度。本文的做法是在两个时钟域的交界处设计一个异步FIFO,通过它来实现数据流的传输。由发送时钟域将数据写入,接收时钟域将数据取出,在数据传输的同时实现了数据的缓存,因此是一种较理想的方法。

不同时钟域间数据传递的问题及其解决方法不同时钟域间数据传递的最重要问题就是亚稳态问题。当数据信号通过两个时钟域的交界处时,将会分别由这两个时钟来控制信号的值。此时如果两时钟信号的敏感沿非常接近并超过了允许的额度,则将出现数据信号的不稳定,即电路陷入亚稳态,也称为同步失败。亚稳态是在两时钟敏感沿靠得很近、第二级时钟敏感沿到来时其输入数据不稳时发生,可将其视为仅仅是第二级触发器输入信号不稳定所导致的结果。只要使输入信号稳定,就能解决亚稳态问题。针对如上所述亚稳态的特点,可设计一个同步器来保证数据的稳定传输以解决这个问题。其原理在于使信号在新的时钟域中先稳定下来再进入相关的逻辑,以保证信号与新的时钟同步。本设计在时钟域的接口处就采用此法。

异步FIFO模块设计及实现异步FIFO结构设计本文所设计的异步FIFO采用循环队列方式,由独立的两个时钟Iclk和Oclk来控制读、写指针。模块结构如图1所示。输入端口:输入端时钟Iclk,输出端时钟Oclk,8位并行输入数据Din,复位信号Rst_。输出端口:8位并行输出数据Dout,FIFO写满信号Full,FIFO读空信号Empty。信号后缀:i—由输入时钟域控制、o—由输出时钟域控制、g—GRAY码、b—二进制自然码。由于FIFO的空、满是通过比较读、写指针来确定的,而读、写指针分别属于Oclk和Iclk两个时钟域,所以对其比较时要进行同步化处理,即用到双触发器型同步器,以避免亚稳态的出现。以写指针Wp为例。Wpib转换为Wpig,一方面控制Din的写入地址,另一方面通过同步和GRAY到二进制码转换送入到Oclk。本文将传输的Wp由GRAY码形式转换为二进制形式,形成Wpob。此时Wpob与Rpob为同步信号,比较其大小后可判断FIFO是否读空来控制FlagE信号。若FIFO为空,则FlagE置Empty信号,同时调整Rpob停止读出数据。同理可知Rp和Full的控制过程。在整个数据流动过程中,需要跨过时钟域的指针经历了两次码制的变化:二进制码到GRAY码和GRAY码到二进制码。前者是利用GRAY码在递增时每次只有一位发生变化的特点,以GRAY码的形式通过时钟域分界线最大限度减小了指针信号的变化,避免了信号传输中的抖动。而再将信号由GRAY码转换为二进制码进行比较则是由FIFO异步的特点所决定。由于读、写指针异步,不存在稳定的相对关系,为避免读、写指针同时对一个存储单元进行操作,在对FIFO做空、满比较时会对指针差留下一定余量。由于GRAY码形式不易于直接比较这种有固定差额的数值,所以将其转化为二进制码进行比较。HDL实现下面采用Verilog HDL语言在RTL级上设计此异步FIFO数据通道。此方案的核心在于GRAY码到二进制的转换和同步器的设计,均在同步和GRAY到二进制码转换模块中实现,程序如下:……always@(posedge 工具实现ASIC综合。通过生成的Violators.rpt、area.rpt、tim_max.rpt、lib.rpt等报告观察综合所得电路的特性,可知此设计无violated constraints,表明综合结果能够达到约束条件的要求,此设计能在给定条件下工作,即约束成功。

结语本文讨论了异步设计中数据在不同时钟域间传递所产生的亚稳态问题及其解决方法,使用Verilog HDL,采用Top-Down的模块设计方法实现了一种解决此问题的异步FIFO方案。经验证这种方案能方便安全地实现数据跨时钟域的传递,并能同时起到数据缓存的作用,因此是一种较好的解决方法。■

参考文献1 A.Chakraborty, M.R.Greenstreet A minimal source-synchronous interface, ASIC/SOC Conference, 2002. 15th Annual IEEE International , 25-28 Sept. 2002 Page(s): 443 -4472 William J. Dally,John W. Poulton Digital Systems Engineering, CambridgeUniversity Press, 1998, Page(s): 468. 3 Clifford E. Cummings Synthesis and Scripting Techniques for Designing Multi-Asynchronous Clock Designs, Sunburst Design, Inc.


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
NTMD6N03R2G的技术参数