• 全国客户服务热线:4006-054-001 疑难解答:173-0411-9111(7X24受理投诉、建议、合作、售前咨询),155-4267-2990(售前),传真:0411-83767788,微信:543646
当前位置:主页 > 技术方案 > 环境传感

基于VHDL的异步FIFO设计

时间:2023-09-25 22:55来源: 作者: 点击:
>基于VHDL的异步FIFO设计

摘要:经常应用于从一个时钟域传输数据到另一个时钟域。为解决过程中空满标志判断难以及FPGA亚稳态的问题,提出一种新颖的方案,即利用格雷码计数器(每次时钟到来仅有1位发生改变)表示读/写指针,二级同步链为跨越不同时钟域的读/写指针,以提供充足的稳定时间,并通过对比格雷码指针产生空满标志位。该设计采用语言进行设计,利用ALTERA公司的FPGA得以实现。经验证进一步表明,模块化的设计不仅避免了亚稳态的产生,增大平均无故障工作时间(MBTF),也使工作效率大为提升。
关键词:;;亚稳态;格雷码

先进先出缓存电路读/写(FIFO)在大规模逻辑设计中被广泛应用,几乎每个芯片都要涉及,同样在空空导弹的数据传输体系中也得以大量应用。FIFO类型可以分为两种,第一种为同步FIFO,即读/写时钟是同步的,这里的同步不仅仅是指读/写时钟为同一个时钟,即属于同一个时终域。当读/写时钟频率为倍数关系,即相位关系确定时,也归属同步FIFO的范畴。另一种为异步FIFO,读/写时钟频率不成倍数关系或相位关系不确定,即跨时钟域。异步FIFO可以在不同的时钟域之间快速方便地传输实时数据,因此在遥测数据传输中,异步FIFO实用性更好。然而如何正确地产生空满标志以及如果解决亚稳态问题是异步FIFO设计的难点。

1 FIFO结构
首先,典型的FIFO结构框图如图1所示。FIFO的数据存储在具有独立写端口和读端口的RAM中。读指针r0_pointer指向下一个将要读取的位置,写指针wrpointer指向下一个将要写入的位置,每1次写操作后写指针加1,读操作使读指针加1。状态产生模块中,full和empty表示FIFO读/写的临界状态。FIFO设计的关键是产生读/写地址和空满标志。空满标志是引起指针相等的操作。如果是复位或者读操作引起
读/写指针相等,FIFO认为是空;如果原因是写操作,那么FIFO认为是满。异步FIFO设计的难点是如何同步跨时钟域的指针以及空满标志的产生。



2 亚稳态
亚稳态是当信号在无关的电路中或异步时钟域之间传输时导致FPGA系统失效的一种现象。包括FPGA在内的所有数字器件的寄存器都定义了信号时序要求,以保证每一个寄存器都能够从输入端获取数据和在输出端产生数据。为了确保可靠的操作,输入信号必须在时钟沿之前稳定一段时间(寄存器建立时间tsu),并且在时钟沿之后稳定一段时间(寄存器保持时间th),然后寄存器输出经过一个特定的时钟到输出延时后有效。满足此要求寄存器才可以正确的在输入端获取数据在输出端产生数据,否则输出有可能是亚稳态。在亚稳态时,寄存器的输出电压在高低电平之间摇摆,即输出将有可能是逻辑0(0 V)或者逻辑1(+5 V),或者是介于0~5 V中间的某个值。亚稳态产生机制图如图2所示,当建立时间或者保持时间不满足时序要求时便会产生亚稳态。


在同步系统中,输入信号必须总是满足寄存器时序要求,所以亚稳态不会发生。亚稳态问题通常发生在当一个信号在无关的线路中或异步时钟域中传输。一个寄存器进入亚稳态和从亚稳态进入稳态的时间依赖于制造商的制造工艺和使用环境。大部分情况下,寄存器会很快的进入一个定义的稳态中。在异步FIFO设计中就要避免亚稳态的产生。



>基于VHDL的异步FIFO设计
热门服务和内容