基于FPGA的异步FIFO的设计

时间:2022-08-03 08:44:11

基于FPGA的异步FIFO的设计

【摘要】 简单的介绍了FPGA和异步FIFO的特点,针对在跨时钟域传递数据的系统中亚稳态的产生,采用异步FIFO(First In First Out,先进先出队列)口来缓冲传输的数据,以克服亚稳态,保证数据的正确传输。由于常规异步FIFO模块中的RAM存储器读写寻址指针常采用格雷码计数器以及“空满”控制逻辑的存在,将使通过这两个模块的信号通路延时对整个模块的工作频率造成制约。提出了一种在FPGA内实现高速异步FIFO的方法.使模块的工作频率得到一定提高。

【关键字】 FPGA FIFO

一、FPGA简介

FPGA(Field-Programmable Gate Array)[1],即现场可编程门阵列,是专用集成电路(ASIC)中集成度最高的一种,用户可对FPGA内部的逻辑模块和I/O模块重新配置,以实现用户的逻辑,因而也被用于对CPU的模拟。

用户对FPGA的编程数据放在Flash芯片中,通过上电加载到FPGA中,对其进行初始化。也可在线对其编程,实现系统在线重构,这一特性可以构建一个根据计算任务不同而实时定制的CPU,这是当今研究的崦帕煊颉<冉饩隽硕ㄖ频缏返牟蛔悖又克服了原有可编程器件门电路数有限的缺点。

二、异步FIFO简介

FIFO ( First In FirstOut)[2],使用在需要产时数据接口的部分,用来存储、缓冲在两个异步时钟之间的数据传输在现代的集成电路芯片中,随着设计规模的不断扩大,一个系统中往往含有数个时钟,因而出现了跨不同时钟区域进行异步数据传输的要求。

异步FIFO ( First In FirstOut)是解决这个问题一种简便、快捷的解决方案。根据FIFO的工作时钟,可将FIFO分为同步FIFO和异步FIFO。同步FIFO是指读时钟和写时钟为同一个时钟,在时钟沿来临时同时进行读写操作;异步FIFO是指读写时钟不是同一个时钟,而是相互独立的。实际上,工作在同一时钟的FIFO很少用到,多数都是读写时钟独立的异步FIFO。

本文设计的异步FIFO (First In First Out,先进先出队列)是一种先进先出的电路,使用在需要实时数据接口的部分[3],用来存储、缓冲在两个异步时钟之间的数据传输。在异步电路中,由于时钟之间周期和相位完全独立,因而数据的丢失概率不为零。

三、异步FIFO的工作原理

常规的FIFO包括:双口RAM存储器,“空满”控制逻辑,存储器读写寻址指针等。访问FIFO时不需要地址线,只需要数据线和读写控制信号线,且数据地址由内部读写指针自动加1完成,因此利用FIFO实现数据的缓存具有接口简单、读写方便的优点。

异步FIFO一般可以分为4个模块[4]:写地址模块、读地址模块、数据存储模块以及空/满标志位产生模块。数据存储模块在FPGA中是一个双口RAM,可以同时进行读写操作。

四、异步FIFO设计方案

在数字集成电路中,触发器要满足setup/hold的时间要求。当一个信号被寄存器锁存时,如果信号和时钟之间不满足这个要求,Q端的值是不确定的,并且在未知的时刻会固定到高电平或低电平。

这个过程称为亚稳态(Metastability) [5]。亚稳态对会使异步FIFO的读写地址发生错误,产生误读或者误写。为此异步FIFO设计中亚稳态问题也是一个比较重要的问题。亚稳态不可能完全消除,只能使其出现的概减小具体方法如下:对写地址/读地址采用格雷码,同步多个异步输入信号出现亚稳态的概率远远大于同步一个异步信号的概率。对多个触发器的输出所组成的写地址/读地址可以采用格雷码。由格雷码每次只变化一位,采用格雷码[6]可以有效地减少亚稳态的产生。

五、结论

通过以上实验测试结果表明,在高速的图像数据采集系统中,FIFO既满足高速采集的需要,同时也减少了亚稳态此模型实现了高可靠性、高速的异步FIFO存储器,同时由于基于verilog语言实现,使用者可以根据不同的设计要求,灵活的修改参数生成各种模式,以及不同大小的异步FIFO存储器,所以这种设计方法也具备较高的可移植性、可重构性.以上实验研究表明,采用基于FPGA的异步FIFO存储器能很好地解决在异步数字系统设计中高可靠性及高速的要求,提高了系统的效率,其思想和方法,具有一定的应用价值和应用前景。

参 考 文 献

[1]郭铮 ;刘文怡;冯妮. 基于FPGA多通道高速数据采集存储器设计.电视技术2012 36(17): 55-57

[2]王凯;孙锋 FIFO的设计分析[J]. 电子器件 2014 37( 3): 431-434

[3]朱东杰 ;邵根富 ;黄国辉;叶晓平 ;游张平;李培远.基于FIFO的GPRSDTU设计. 工业控制计算机. 2015 0(10):59-60

[4]张玉平 ;叶圣江. 基于FPGA的虚拟FIFO改进设计.沈阳工业大学学报. 2016 38(3): 298-303

[5]刘亚兵 ;马瑞卿;张庆超;张震;白浩.基于FIFO的串口通信模式研究.计算机测量与控制.2014 22(7):2301-2303

[6]马志刚 ;刘欣;刘文怡 ;翟成瑞. 基于高速FIFO的远程图像数据采集存储系统.电子器件 2015 38(1): 152-155

上一篇:exchanges 下一篇:我做语文课代表的日子