异步FIFO结构及FPGA设计
摘要:首先介绍异步FIFO的概念、应用及其结构,然后分析实现异步FIFO的难点问题及其解决办法;在传统设计的基础上提出一种新颖的电路结构并对其进行综合仿真和FPGA实现。
关键词:异步电路FIFO亚稳态格雷码
1异步FIFO介绍
在现代的集成电路芯片中,随着设计规模的不断扩大,一个系统中往往含有数个时钟。多时钟域带来的一个问题就是,如何设计异步时钟之间的接口电路。异步FIFO(FirstInFirstOut)是解决这个问题一种简便、快捷的解决方案。使用异步FIFO可以在两个不同时钟系统之间快速而方便地传输实时数据。在网络接口、图像处理等方面,异步FIFO得到了广泛的应用。
异步FIFO是一种先进先出的电路,使用在需要产时数据接口的部分,用来存储、缓冲在两个异步时钟之间的数据传输。在异步电路中,由于时钟之间周期和相位完全独立,因而数据的丢失概率不为零。如何设计一个高可靠性、高速的异步FIFO电路便成为一个难点。本文介绍解决这一问题的一种方法。
图1是异步FIFO的结构框图。
由图1可以看出:整个系统分为两个完全独立的时钟域——读时钟域和写时间域;FIFO的存储介质为一块双端口RAM,可以同时进行读写操作。在写时钟域部分,由写地址产生逻辑产生写控制信号和写地址;读时钟部分由读地址产生逻辑产生读控制信号和读地址。在空/满标志产生部分,由读写地址相互比较产生空/满标志。
2异步FIFO的设计难点
设计异步FIFO有两个难点:一是如何同步异步信号,使触发器不产生亚稳态;二是如何正确地设计空、满以及几乎满等信号的控制电路。
下面阐述解决问题的具体方法。
2.1亚稳态问题的解决
在数字集成电路中,触发器要满足setup/hold的时间要求。当一个信号被寄存器锁存时,如果信号和时钟之间不满足这个要求,Q端的值是不确定的,并且在未知的时刻会固定到高电平或低电平。这个过程称为亚稳态(Metastability)。图2所示为异步时钟和亚稳态,图中clka和clkb为异步时钟。
亚稳态必定会发生在异步FIFO中。图中在异步FIFO中,电路外部的输入和内部的时钟之间是毫无时间关系的,因此setup/hold冲突是必然的;同在电路内部的两个没有关系的时钟域之间的信号传递,也必须会导致setup/hold冲突。
虽然亚稳态是不可避免的,但是,下面的设计改进可以将其发生的概率降低到一个可以接受的程度。
①对写地址/读地址采用格雷码。由实践可知,同步多个异步输入信号出现亚稳态的概率远远大于同步一个异步信号的概率。对多个触发器的输出所组成的写地址/读地址可以采用格雷码。由于格雷码每次只变化一位,采用格雷码可以有效地减少亚稳态的产生。
②采用触发器来同步异步输入信号,如图3中的两极触发器可以将出现亚稳态的几率降低到一个很小的程度。但是,正如图3所示,这种方法同时带来了对输入信号的一级延时,需要在设计时钟的时候加以注意。
2.2空/满标志的产生
空/满标志的产生FIFO的核心部分。如何正确设计此部分的逻辑,直接影响到FIFO的性能。
空/满标志产生的原则是:写满不溢出,读空不多读。即无论在什么进修,都不 《异步FIFO结构及FPGA设计》
本文链接地址:http://www.oyaya.net/fanwen/view/169398.html
关键词:异步电路FIFO亚稳态格雷码
1异步FIFO介绍
在现代的集成电路芯片中,随着设计规模的不断扩大,一个系统中往往含有数个时钟。多时钟域带来的一个问题就是,如何设计异步时钟之间的接口电路。异步FIFO(FirstInFirstOut)是解决这个问题一种简便、快捷的解决方案。使用异步FIFO可以在两个不同时钟系统之间快速而方便地传输实时数据。在网络接口、图像处理等方面,异步FIFO得到了广泛的应用。
异步FIFO是一种先进先出的电路,使用在需要产时数据接口的部分,用来存储、缓冲在两个异步时钟之间的数据传输。在异步电路中,由于时钟之间周期和相位完全独立,因而数据的丢失概率不为零。如何设计一个高可靠性、高速的异步FIFO电路便成为一个难点。本文介绍解决这一问题的一种方法。
图1是异步FIFO的结构框图。
由图1可以看出:整个系统分为两个完全独立的时钟域——读时钟域和写时间域;FIFO的存储介质为一块双端口RAM,可以同时进行读写操作。在写时钟域部分,由写地址产生逻辑产生写控制信号和写地址;读时钟部分由读地址产生逻辑产生读控制信号和读地址。在空/满标志产生部分,由读写地址相互比较产生空/满标志。
2异步FIFO的设计难点
设计异步FIFO有两个难点:一是如何同步异步信号,使触发器不产生亚稳态;二是如何正确地设计空、满以及几乎满等信号的控制电路。
下面阐述解决问题的具体方法。
2.1亚稳态问题的解决
在数字集成电路中,触发器要满足setup/hold的时间要求。当一个信号被寄存器锁存时,如果信号和时钟之间不满足这个要求,Q端的值是不确定的,并且在未知的时刻会固定到高电平或低电平。这个过程称为亚稳态(Metastability)。图2所示为异步时钟和亚稳态,图中clka和clkb为异步时钟。
亚稳态必定会发生在异步FIFO中。图中在异步FIFO中,电路外部的输入和内部的时钟之间是毫无时间关系的,因此setup/hold冲突是必然的;同在电路内部的两个没有关系的时钟域之间的信号传递,也必须会导致setup/hold冲突。
虽然亚稳态是不可避免的,但是,下面的设计改进可以将其发生的概率降低到一个可以接受的程度。
①对写地址/读地址采用格雷码。由实践可知,同步多个异步输入信号出现亚稳态的概率远远大于同步一个异步信号的概率。对多个触发器的输出所组成的写地址/读地址可以采用格雷码。由于格雷码每次只变化一位,采用格雷码可以有效地减少亚稳态的产生。
②采用触发器来同步异步输入信号,如图3中的两极触发器可以将出现亚稳态的几率降低到一个很小的程度。但是,正如图3所示,这种方法同时带来了对输入信号的一级延时,需要在设计时钟的时候加以注意。
2.2空/满标志的产生
空/满标志的产生FIFO的核心部分。如何正确设计此部分的逻辑,直接影响到FIFO的性能。
空/满标志产生的原则是:写满不溢出,读空不多读。即无论在什么进修,都不 《异步FIFO结构及FPGA设计》