APP下载

一种基于FPGA的异步FIFO设计方法

2017-03-30黄凡

微处理机 2017年1期
关键词:时序中断上位

黄凡

(海军驻昆明地区军事代表办事处,昆明650000)

一种基于FPGA的异步FIFO设计方法

黄凡

(海军驻昆明地区军事代表办事处,昆明650000)

设计完成了一种基于FPGA的异步FIFO,运用Verilog HDL高级可编程语言和原理图相结合的设计方法实现FIFO读、写控制算法和数据查询、存储中断模块。运用时钟同步技术,解决了FIFO设计中亚稳态和竞争冒险的难点。最后采用QuartusII9.0设计仿真验证了该设计,测试结果表明该方案工作原理简单,性能稳定可靠。

FIFO设计;FPGA芯片;数据存储;数据采集;时序;时钟同步

1 引言

异步FIFO作为数据采集和存储的关键组成部分之一,在数据采集系统中发挥着举足轻重的作用。在传统设计方法中,常常采用微处理器[1]和具有FIFO功能的专用RAM芯片实现异步FIFO,达到数据高速采集和存储功能,其系统成本较高,实现起来较困难[2-3]。而FPGA作为一种集成度很高的设计芯片,可以将微处理器和RAM集成到一块FPGA上,大大简化了系统设计流程,降低了系统成本和设计风险[4-8]。运用VerilogHDL高级可编程语言和原理图设计相结合的方法,选定Altera公司CycloneⅢ系列FPGA作为设计平台,设计完成了一种稳定可靠的异步FIFO。

2 设计方案

提出了一种异步FIFO的设计方案,其组成结构示意图如图1所示。

图1 组成结构示意图

系统主要由FIFO控制模块、读/写地址信号产生模块和RAM模块组成,其中:

(1)FIFO控制模块为整个系统的核心,实现了与上位机数据通讯、RAM数据读写和控制、读/写地址信号产生单元的控制、外部数据采集,以及保证整个系统可靠稳定的工作。其中,外部数据采集采用中断处理的方式,当接收到外部数据储存中断申请,提供握手信号;如果连接成功,则将数据存储到RAM中。与上位机通讯同样采取中断查询的方式,当接收到上位机数据查询请求,提供握手信号,如果连接成功,则发送RAM中的数据到上位机。同时,对读、写地址信号产生模块的控制以及内部读、写指针均采用时钟同步技术,保证每次进行数据读写时,地址信号处于稳定状态,保证了时序,提高了系统性能。

(2)读、写地址信号产生模块为RAM提供地址信号,采用二进制计数器,与FIFO控制模块的通讯采用时钟同步技术,避免了系统的亚稳态现象,提高系统的安全性和稳定性。

(3)RAM作为系统数据存储器,用于中间数据的存储。

3 主要模块设计

3.1 FIFO控制模块

FIFO控制模块为整个系统的核心,主要完成功能包含以下四个方面:

(1)与上位机通讯

提供中断接口,控制模块接收到上位机中断数据查询请求之后,根据FIFO控制算法判断是否可以读取数据,如果可以,则经过数据处理,将数据提供给上位机,并提供握手信号,提示上位机可以读取数据。

(2)外部数据采集通讯

提供中断接口,控制模块接收到外部数据存储请求,根据FIFO控制算法判断是否可以存储数据,如果可以,则经过数据处理,将数据存储到RAM中,并提供握手信号,提示数据已经存储完毕,可以进行下次存储。

(3)RAM数据交换控制

通过算法,控制RAM数据读写,协调系统各部分的工作,保证系统各部分满足时序要求,按照设定的流程工作。

(4)读/写地址信号产生模块的时钟信号

提供地址信号产生模块所需要的时钟信号和复位信号,经过算法计算,判定当前地址是否增加1或者复位。

FIFO控制模块控制流程时序示意图如图2所示。

控制时序:系统上电,发送复位信号RET,系统完成初始化,等待接收系统外部读取、存储中断信号。

图2 FIFO控制流程时序示意图

当接收到中断存储信号DatInFlag时,首先判断是否可以进行写入数据,如果不行,则丢失该中断信号;如果可以,则进行算法计算,通知写地址信号产生单元得出当前的存储地址WrAddr[15:0],并且将需要的输入数据DatIn[7:0]准备好输出到RAM的数据输入口上,然后给出RAM写信号时钟WrClk=1,将数据输入到RAM中,并回复握手信号ReWrEn。

当接收到中断读取信号DatOutFlag时,首先判断是否可以进行读取数据,如果不可以,则丢失该中断信号;如果可以,则进行算法计算,通知读地址信号产生单元得出当前的存储地址WrAddr[15:0],然后给出RAM读信号时钟RdClk=1,数据读出,然后输出到通讯模块,并回复握手信号ReRdEn,提示上位机读取。

3.2 地址信号产生模块

读地址信号产生模块和写地址信号产生模块均采用16位2进制计数器,且实现原理基本一样。FPGA设计中,广泛存在亚稳态现象,它会使系统出现临界状态,导致系统不稳定,甚至崩溃。常见设计中,采用格雷码计数器用于读、写指针和地址信号产生,在本设计中为了简化设计流程,采用2进制计数器加时钟同步设计的方法。在计数器地址信号的输出端,经过一个计数器将地址信号同步输出到RAM模块,并且读、写RAM时钟信号RdClk、WrClk均采用系统时钟同步,且比地址信号多同步输出一个时钟脉冲周期,保证了信号RdClk、WrClk与地址信号之间不会存在临界状态。同时RAM的数据信号输出也采用了时钟同步技术,即数据输出也进行了相应的同步,大大提高了系统稳定性。

3.3 RAM模块

Quartus II软件提供了软件IP核,直接通过软件进行简单的配置调用即可,如图3所示。该模块为系统自动生成的RAM模块。

图3 RAM结构示意图

4 设计实现与仿真验证

以Altera公司CycloneⅢ系列的一款FPGA为设计平台,基于 QuartusII9.0设计软件,采用VerilogHDL高级可编程语言和原理图相结合的设计模式,并且该方案可以无需更改任何代码即可移植到Altera公司其它系列FPGA上。

限于篇幅,不能将FPGA的设计代码一一描述,在这里只给出FPGA设计原理图和时序仿真结果图,分别如图4和图5所示。

图4 FPGA设计原理图

图5 时序仿真波形图

如图4所示,系统分为三个大的部分,FIFO控制模块,读、写地址信号产生单元和RAM,其中设计的重点和难点是FIFO控制模块。在FIFO控制模块设计中,采用状态机的设计方式,使各个功能都按照设计好的时序工作,强化了系统的执行状态,同步了工作时序,提高了系统稳定性。但需要注意的是,降低了系统的执行速度,从仿真波形图可以看出系统存储和读取的速度大约为400ns/字节。

仿真结果表明:

中断存储:系统采集到外部数据中断存储信号ReWrFlag,经过计算,如果可以进行数据存储,则提供RAM模块写时钟WrClk两个脉冲,第一个脉冲将地址信号输入到RAM,第二个脉冲将数据写入到RAM,完成数据存储。在图5中,可以知道数据从0x0000地址开始存储,一共存储了6个数据:0x02、0x03、0x04、0x05、0x06、0x07。存储完毕,提供握手信号ReWrEn。系统开始等待,直到有中断存储信号的到来。

中断查询:系统采集到上位机数据中断查询信号ReRdFlag,经过计算,如果可以进行数据读取,则提供RAM模块读时钟WrClk两个脉冲,第一个脉冲将地址信号输入到RAM,第二个脉冲将数据写输出到数据总线,完成数据读取。在图5中,可以知道数据从0x0000地址开始读取,一共读取了6个:0x02、0x03、0x04、0x05、0x06、0x07,读取完毕,系统提供握手信号ReRdEn,此时上位机可以从数据总线上读取数据。

注意,如果上位机一直提供中断查询信号,若此时RAM中的数据已经读取完毕,则不再提供RAM读时钟信号,不进行RAM读操作,且系统输出Empty=1,表示RAM中已经没有数据,系统重新开始等待。

5 结束语

简要分析和介绍了一种基于FPGA的异步FIFO设计原理和方法,分成几个模块,其中详细介绍了FIFO控制核心模块的设计,最后选择Altera公司Cyclone系列FPGA为设计平台,运用QuartusII9.0的时序仿真模块对该设计方法进行了仿真验证。测试结果表明该设计方法设计简单灵活,易于实现,大大简化了设计流程,降低了设计成本与风险,是一个值得推广和应用的方法。

[1]鲍尔.嵌入式微处理器系统设计实例(3版)[M].苏建平,李鹏飞,译.北京:电子工业出版社,2004. Bauer.Embedded Microprocessor Systems Real World Design [M].Su Jian-pin,LiPeng-fei,Trans.Beijing: Publishing House of Electronics Industry,2004.

[2]高礼忠.FIFO在高速数据采集系统中应用 [J].电子测量技术,2005(1):51-52. Gao Li-zhong.The Application of FIFO in High Speed Data Acquisition Systems [J].Electronic Measurement Technology,2005(1):51-52.

[3]陈明义,夏海旻,周建国.高速大容量FIFO的设计[J].电子科技,2008,21(6):1-3. Chen Ming-yi,Xia Hai-min,Zhou Jian-guo.A Design of High Speed and Deep FIFO.Electronic Science and Technology,2008,21(6):1-3.

[4]徐欣,于红旗,易凡,等.基于FPGA的嵌入式系统设计[M].北京:机械工业出版社,2004. Xu Xin,Yu Hong-qi,Yi Fan,etc.Design of Embedded System Based on FPGA[M].Beijing:China Machine Press, 2004.

[5]周昆正.基于FPGA的SDRAM控制器设计[J].现代电子技术,2003,26(13):63-65. Zhou Kun-zheng.Design of SDRAM Controller Based on FPGA[J].Modern Electronic Technique,2003,26(13): 63-65.

[6]迈耶·贝斯.数字信号处理的FPGA实现(2版)[M].刘凌,译.北京:清华大学出版社,2006. Mayeer Baese.Implementation of digital signal processing with FPGA[M].Liu Ling,Trans.Beijing:Tsinghua University Press,2006.

[7]王建华,刘缠牢,陈大川,等.基于DSP+FPGA技术的实时视频采集系统的设计[J].国外电子测量技术,2007,26 (9):42-44. Wang Jian-hua,Liu Chan-nao,Chen Da-chuan,et al. Design of real-time video processing system based on DSP+FPGA[J].Foreign Electronic Measurement Technology,2007,26(9):42-44.

[8]刘凤伟.一种并行异步FIFO控制算法设计[J].微处理机,2012,33(5):32-34. Liu Feng-wei.Design of Parallel Asynchronous FIFO Control Algorithm[J].Microprocessors,2012,33(5):32-34.

Design of Asynchronous FIFO Based on FPGA

Huang Fan
(Naval Military Office Stationed at Kunming Area,Kunming 650051,China)

A method of asynchronous FIFO is designed in this paper.The design method of Verilog HDL and schematic diagram is used to realize reading and writing method of FIFO,and data query and storage of interrupt module.The problems of metastable state and competitive risk are solved by using clock synchronization technology.Finally,the test results,by simulation of QuartusII9.0,show that it has a simple operational principle and stable performance.

FIFO design;FPGA chip;Data acquisition;Data storage;Time sequence;Clock synchronization

10.3969/j.issn.1002-2279.2017.01.007

TN368.1

B

1002-2279-(2017)01-0023-04

黄凡(1984-),男,湖北省天门市人,工程师,博士,主研方向:装备监造与目标探测、信号处理。

2016-04-06

猜你喜欢

时序中断上位
清明
基于不同建设时序的地铁互联互通方案分析
基于FPGA的中断控制器设计*
Linux中断线程化分析及中断延时测试
特斯拉 风云之老阿姨上位
基于FPGA 的时序信号光纤传输系统
跟踪导练(二)(5)
千里移防,卫勤保障不中断
“三扶”齐上位 决战必打赢
基于ZigBee和VC上位机的教室智能监测管理系统