版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、PAGE PAGE 31本科学生毕业论文(设计):The design of high-speed asynchronous FIFO based on FPGA答辩中提出的主要问题及回答的简要情况记录:问题1:异步FIFO的用处是什么?有什么意义?答:异步FIFO的用处是它能解决在不同时钟域下的大量数据传输的难题,其应用广泛;在网络接口、图像处理等方面,异步FIFO都得到广泛的应用。 问题2:你异步FIFO设计中的读写状态仲裁是怎样工作的?答:异步FIFO主要是在不同频率,不同相位下的时钟对RAM数据的操作,这不免会产生亚稳态,所以它必须要用读写状态仲裁来判断RAM是空还是满。在此设计中,我
2、采用格雷码做为数据的读写指针,在不同的时钟下对读写指针进行同步,再将读写指针进行对比,就可以仲裁RAM内的容量状态。问题3:你设计的异步FIFO工作频率能达到多少?能不能进一步提高它的工作频率?答:在这个设计中我将异步FIFO的写时钟设定为50MHz,读时钟为12MHz,且系统工作正常。由于时间有限没有对其做更进一步的验证。但若要进一步提高它的工作频率,我们可以利用QuartusII软件下的TimeQuest工具进行时序约束,这是提高FPGA工作频率的有效方法。会议主持人:记 录 人:年 月 日目 录 TOC o 1-3 h z u HYPERLINK l _Toc324590570 1 绪论
3、 PAGEREF _Toc324590570 h 1 HYPERLINK l _Toc324590571 1.1概述 PAGEREF _Toc324590571 h 1 HYPERLINK l _Toc324590572 1.1.1什么是FIFO PAGEREF _Toc324590572 h 1 HYPERLINK l _Toc324590573 1.1.2 FIFO的分类 PAGEREF _Toc324590573 h 1 HYPERLINK l _Toc324590574 1.1.3异步FIFO设计的难点 PAGEREF _Toc324590574 h 1 HYPERLINK l _To
4、c324590575 1.2 FIFO的国内外的发展状况 PAGEREF _Toc324590575 h 2 HYPERLINK l _Toc324590576 1.3本课题研究的目的 PAGEREF _Toc324590576 h 3 HYPERLINK l _Toc324590577 1.4研究内容 PAGEREF _Toc324590577 h 3 HYPERLINK l _Toc324590578 2 系统的总体设计及方案 PAGEREF _Toc324590578 h 4 HYPERLINK l _Toc324590579 2.1 高速异步FIFO系统原理和组成 PAGEREF _T
5、oc324590579 h 4 HYPERLINK l _Toc324590580 2.2 系统主要模块的设计 PAGEREF _Toc324590580 h 4 HYPERLINK l _Toc324590581 2.2.1 亚稳态的产生及危害 PAGEREF _Toc324590581 h 4 HYPERLINK l _Toc324590582 2.2.2 格雷码原理 PAGEREF _Toc324590582 h 5 HYPERLINK l _Toc324590583 2.2.3 采用两极触发器消除亚稳态 PAGEREF _Toc324590583 h 6 HYPERLINK l _To
6、c324590584 2.2.4 FIFO的满/空标志的判断 PAGEREF _Toc324590584 h 7 HYPERLINK l _Toc324590585 3 EDA设计方法流程及软件介绍和芯片的选取 PAGEREF _Toc324590585 h 8 HYPERLINK l _Toc324590586 3.1 EDA设计方法及流程 PAGEREF _Toc324590586 h 8 HYPERLINK l _Toc324590587 3.1.1 EDA设计方法 PAGEREF _Toc324590587 h 8 HYPERLINK l _Toc324590588 3.1.2 EDA
7、设计典型流程 PAGEREF _Toc324590588 h 10 HYPERLINK l _Toc324590589 3.2 CycloneII EP2C8Q208c8芯片的介绍 PAGEREF _Toc324590589 h 11 HYPERLINK l _Toc324590590 3.2.1 概述 PAGEREF _Toc324590590 h 11 HYPERLINK l _Toc324590591 3.2.2 EP2C8Q208c8的特性 PAGEREF _Toc324590591 h 11 HYPERLINK l _Toc324590592 3.3 软件QuartusII的介绍 P
8、AGEREF _Toc324590592 h 12 HYPERLINK l _Toc324590593 4 系统仿真测试 PAGEREF _Toc324590593 h 13 HYPERLINK l _Toc324590594 4.1 异步FIFO的地址产生和格雷码产生的设计仿真 PAGEREF _Toc324590594 h 13 HYPERLINK l _Toc324590595 4.2 异步FIFO总体设计仿真验证和综合 PAGEREF _Toc324590595 h 15 HYPERLINK l _Toc324590596 4.2.1 异步FIFO系统的综合 PAGEREF _Toc3
9、24590596 h 15 HYPERLINK l _Toc324590597 4.2.2 异步FIFO总体仿真波形 PAGEREF _Toc324590597 h 17 HYPERLINK l _Toc324590598 结论 PAGEREF _Toc324590598 h 19 HYPERLINK l _Toc324590599 参考文献 PAGEREF _Toc324590599 h 20 HYPERLINK l _Toc324590600 附录一 PAGEREF _Toc324590600 h 21 HYPERLINK l _Toc324590601 附录二 PAGEREF _Toc3
10、24590601 h 22 HYPERLINK l _Toc324590602 致 谢 PAGEREF _Toc324590602 h 30 基于FPGA的高速异步FIFO的设计 摘 要异步FIFO作为一种先进先出通用存储器器件,它的应用非常广泛。可以说几乎所有的涉及到芯片数据处理的软件,都要用到FIFO,其应用前景非常广阔。本文所设计的异步FIFO主要采用了充分利用FPGA内部的RAM资源,在FPGA内部实现异步FIFO模块的设计方法,这种异步FIFO比外部FIFO 芯片更能提高系统的稳定性和灵活性。如设计采用了VHDL硬件语言描述具有良好的移植性和通用性。而且FPGA在不同时钟域的运用能表
11、现出其无比的优越性,因此采用FPGA来设计异步FIFO显得尤为合适。这既可以保证FIFO 高速工作,又可以有效的节省系统的成本。【关键词】异步FIFO FPGA VHDL 亚稳态 格雷码The design of high-speed asynchronous FIFO based on FPGA AbstractThe asynchronous FIFO as an advanced general memory devices of first in first out, its application is very extensive. It can be said that almo
12、st all related to the chip data processing software to be used in the FIFO, the application prospect is very wide. In this thesis, the design of asynchronous FIFO can take a method which is full use of FPGA internal RAM resources and the module design. This asynchronous FIFO can enhance more stabili
13、ty and flexibility of the system than the external FIFO chips. For example, the designed using the VHDL hardware language description can bring a good portability and versatility. Whats more, the FPGA can show an incomparable superiority when it in the use of different clock domains. So take FPGA in
14、 the asynchronous FIFO is particularly suitable. This can not only guarantee high-speed FIFO work, but also can effectively save the cost of the system.【keyword】Asynchronous FIFO FPGA VHDL Metastable Gray code1 绪论1.1概述现代集成电路芯片中,随着设计规模的不断扩大一个系统中往往含有数个时钟。多时钟带来的一个问题就是,如何设计异步时钟之间的接口 HYPERLINK /product/s
15、earchfile/5540.html t _blank 电路。异步FIFO是解决这个问题的一种简便、快捷的解决方案。使用异步FIFO可以在两个不同时钟系统之间快速而方便地传输实时数据。异步FIFO是一种先进先出的电路,使用在数据接口部分,用来存储、缓冲在两个异步时钟之间的数据传输。在网络接口、图像处理等方面,异步FIFO都得到广泛的应用。1.1.1什么是FIFOFIFO是英文First In First Out 的缩写,是一种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样操作时序简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完成,不能
16、像普通存储器那样可以由地址线决定读取或写入某个指定的地址。1.1.2 FIFO的分类根据FIFO工作的时钟域,可以将FIFO分为同步FIFO和异步FIFO。同步FIFO是指读时钟和写时钟为同一个时钟,在同一时钟沿来临时同时发生读写操作。而异步FIFO是指读写时钟不一致,读写时钟是互相独立的。本论文我们只讨论异步FIFO。由此可见,异步FIFO一般用于不同时钟域之间的数据传输,比如FIFO的一端是12MHz的单片机数据输出,另一端是200MHz的DSP数据输入,若要将这两者之间传输数据且不丢失,就必须在这两个不同的时钟域间采用异步FIFO来作为数据缓冲。1.1.3异步FIFO设计的难点一般FIF
17、O包括以下几个重要参数:数据宽度:是FIFO一次读写操作的数据位。 数据深度:是FIFO可以存储多少个N位的数据(如果宽度为N)。满标志:FIFO已满时由FIFO的状态电路输出的一个信号,以阻止FIFO的写操作继续向FIFO中写数据而造成数据溢出。空标志:FIFO已空时由FIFO的状态电路输出的一个信号,以阻止FIFO的读操作继续从FIFO中读出数据而造成无效数据的读出。 读时钟:读操作所遵循的时钟,在每个时钟沿来临时读数据。写时钟:写操作所遵循的时钟,在每个时钟沿来临时写数据。 对于异步FIFO工作在不同的时钟域下,所以就不可避免的会遇到亚稳态的问题,亚稳态的发生会使得FIFO出现错误,读写
18、时钟采样的地址指针会与真实的值之间不同,这就导致写入或读出的地址错误。为了保证数据正确的写入或读出,而不发生溢出或读空的状态出现,必须保证FIFO在满的情况下,不能进行写操作。在空的状态下不能进行读操作。怎样判断FIFO的满/空就成了FIFO设计的核心问题。然而在触发器的电路中,亚稳态是无法彻底消除,只能想办法将其发生的概率降到最低。降低亚稳态的方法有多种,其中的一个方法就是使用格雷码。格雷码在相邻的两个码元之间只有一位变换(二进制码在很多情况下是很多码元在同时变化),可以很大程度上降低误触发的几率。1.2 FIFO的国内外的发展状况20世纪80年代早期,那时候对FIFO存储器的需求在容量和速
19、度上的要求都很低。所以FIFO芯片是基于移位寄存器的中规模逻辑器件。串行的移位寄存器作为存储单元,组合逻辑电路构成输入输出控制部分。数据在这种FIFO芯片中的流程是在输入输出控制时钟的作用下从第一个寄存器到第N个寄存器,然后再被读出,从结构来看,一个数据从写入到读出需要经过N个移位周期的延迟。如果这种FIFO芯片的容量N很大,那么这种延迟也将很长。所以基于移位寄存器的FIFO芯片在容量上不能做得很大,其速度也不可能很快。新型FIFO芯片采用基于RAM方式的结构,这种FIFO芯片由大规模集成电路构成。内部存储单元采用一个双端口RAM,具有两套数据线-输入和输出。独立的读写地址指针在读写时钟的控制
20、下顺序地从存储单元读写数据,类似一个环形指针-从第一个存储单元开始到最后一个存储单元,然后又回到第一个存储单元。控制比较部分给出RAM的空或满的状态指示,甚至还有中间指示。由于采用RAM结构,数据从输入到读出的延迟将大大缩小。这种FIFO芯片能在存储深度和宽度上得到很大发展。新型大规模集成电路技术的日趋先进,使得较大容量的FIFO芯片成为可能。目前,为了使容量得到更大提高,存储单元采用动态RAM代替静态RAM,并将刷新电路集成在芯片内,且内部仲裁单元决定器件的输入、读出及自动刷新操作。由于微电子技术的飞速发展,新一代FIFO芯片容量越来越大,体积越来越小,速度越来越快。美国IDT公司已推出运行
21、速度高达225MHz,电压低至2.5伏,可在业界各种配置下实现高达9Mbit密度的业界最大数据流量的FIFO系列。Cypress Semiconductor公司的BEAST型的高性能FIFO存储器,具有80位宽,它的带宽高达300bps,可以在工作频率200MHz下。Honeywell公司提供一种做在SOI上的FIFO存储器,它采用抗辐射CMOS工艺(刚CMOS IV),即采用专门的设计版图和抗辐射加固工艺,主要应用于军事系统和高辐射的空间环境中;最新的产品是IDT公司的多队列FIFO存储器系列,它集成了高速的队列逻辑和嵌入式的FIFO存储器核来构成块结构。数据写入和读出速度可达到200MHz
22、,存储时间只有36ns,通过最多八个器件的连接可以实现容量深度扩展和队列扩展。从第一个单片FIFO缓冲存储器的研制成功至今,已有双极型、CMOS型等不同规格型号的FIFO存储器及FIFO存储器模块供选择使用。作为一种新型大规模集成电路,FIFO芯片以其灵活、方便、高效的特性,逐渐在高速数据采集、高速数据处理、高速数据传输以及多机处理系统中得到越来越广泛的应用。 国内高速异步FIFO状况,在国内大部分集成到具体芯片中,单独做FIFO的很少。国内有一些研究所和厂商也开发了FIFO电路,但目前还远远不能满足军事需求。1.3本课题研究的目的随着数字系统的发展,其设计规模不断扩大,复杂度不断提高,一些实
23、际应用系统中往往含有多个时钟,数据不可避免地要在不同的时钟域之间传递。如何在异步时钟之间传输数据,是数据传输中一个至关重要的问题,而采用异步FIFO正是解决这一问题的有效方法。异步FIFO是一种在电子系统中得到广泛应用的器件,多数情况下它都是以一个独立芯片的方式在系统中应用。本文介绍一种充分利用FPGA内部的RAM资源,在FPGA内部实现异步FIFO模块的设计方法。这种异步FIFO比外部FIFO 芯片更灵活性,有效性。1.4研究内容本设计采用Altera公司cycloneII系列EP2C8Q208C8芯片,来设计一个8位宽度、1024深度的高速异步FIFO缓存。研究的主要内容如下:掌握VHDL
24、语言的编程特点; 掌握Altera公司的QuartusII软件的使用;掌握高速FIFO工作原理;设计一个高速异步FIFO的VHDL程序;解决FIFO中存在的亚稳态、空/满信号标志的问题;最终硬件调试。2 系统的总体设计及方案2.1 高速异步FIFO系统原理和组成图2-1异步FIFO系统原理图图2-1中有一个具有独立的读端口和独立的写端口的双口RAM存储器,用于存储数据。一个写数据的地址发生器和一个读数据的地址发生器,他们分别在写时钟、读时钟、读写控制端下不断的产生递增的读写地址。并设置了两个格雷码转换器,分别将读写地址转换为格雷码地址。读写状态仲裁器是将读写地址的格雷码进行计算,并输出满空标志
25、和用于控制RAM的读写信号。由此可知,当每次向FIFO进行写操作时,要先查看满标志,判断RAM是否满,若没满就可以向FIFO发出写控制信号,然后写地址加1,同时转换为格雷码输入给读写状态仲裁器进行计算,若没满就可以向RAM写数据了。而读操作也是如此,先查看空标志,判断RAM是否空,若没空就可以向FIFO发出读控制信号,然后读地址加1,同时转换为格雷码输入给读写状态仲裁器进行计算,若没空就可以向RAM读出数据。2.2 系统主要模块的设计2.2.1 亚稳态的产生及危害亚稳态是指触发器无法在某个规定时间段内达到一个可确认的状态。当一个触发器进入亚稳态时,既无法预测该单元的输出电平,也无法预测何时输出
26、才能稳定在某个正确的电平上。在这个稳定期间,触发器输出一些中间级电平,或者可能处于振荡状态,并且这种无用的输出电平可以沿信号通道上的各个触发器级联式传播下去。当系统中有两个以上的时钟时,电路就是一个异步电路 。如图所示,CLK1 时钟域的数据D1要传给CLK2 时钟域,D1 是满足CLK1 的建立和保持时间,但是CLK1和CLK2 是两个异源时钟,D1 一定会在某些时刻不满足CLK2 的建立和保持时间,即当CLK1 和CLK2 两个时钟上升沿靠得很近的时,由D1到D2的传输过程中就会出现一个亚稳态,这种状态的电平既不是高电平也不是低电平。图2-2异步时钟引起的亚稳态及危害亚稳态产生后如果不作处
27、理,直接把信号送到组合电路中,经过布线延迟再经过各种逻辑门将产生不可预知的结果。如图2-2所示,D2传输給后级电路时的状态就不确定,所以要避免这种错误必须消除亚稳态。然而在多时钟域下亚稳态的存在是必然,所以我们也无法完全的消除亚稳态,只能用其它的方法来尽量减少亚稳态发生的几率,这其中之一就是采用格雷码计数方式。2.2.2 格雷码原理格雷码(Gray Code)又称循环码。是一种无权码,采用绝对编码方式,典型格雷码是一种具有反射特性和循环特性的单步自补码,它的循环、单步特性消除了随机取数时出现重大误差的可能,它的反射、自补特性使得求反非常方便。格雷码属于可靠性编码,是一种错误最小化的编码方式。与
28、普通的二进制代码相比,格雷码的最大优点就在于当它按照表2-1的顺序依次变化时,相邻两个代码之间只有一位发生变化。这样在代码转换过程中就不会产生过渡“噪声”,而在普通二进制代码转换过程中,则有时会产生过渡噪声。例如,在表2-1的第四行的二进制代码0011转换为第五行的0100过程中,如果左右边一位的变化比其他的两位的变化慢时,会在一个极短的瞬间出现0101状态,这个状态将成为转换过程中的噪声;然而在第四行的格雷码0010向第五行0110转换过程中则不会出现这样的过渡噪声。这种过渡噪声在有些情况下会影响整个电路的正常工作。下面是格雷码与二进制码的对比表:十进制数二进制码格雷码00000000010
29、0010001200100011300110010401000110501010111601100101701110100810001100910011101101010111111101111101211001010131101101114111010011511111000表2-1 4位格雷码与二进制代码的比较因此采用格雷码来作为多时钟域下的数据传输,将大量减少亚稳态发生的几率。2.2.3 采用两极触发器消除亚稳态由于采用了格雷码作为RAM的读写指针,就必须在异步时钟下对读指针进行写同步和写指针的读同步,以消除亚稳态的影响,并向外界输出同步的满空信号。以下是用两级触发器消除亚稳态的VHDL
30、部分程序:- P5:通过两级触发器消除亚稳态来产生出被写时钟同步了的读指针。P5:PROCESS (clk_write,rst)BEGIN IF (rst = 0) THEN read_ptr_meta 0); read_ptr_write_synch 0); ELSIF(clk_writeevent AND clk_write = 1) THEN read_ptr_meta = read_ptr; read_ptr_write_synch = read_ptr_meta; END IF; END PROCESS; - P6:通过两极触发器消除亚稳态来产生出被读时钟同步了的写指针。P6:PRO
31、CESS (clk_read,rst) BEGIN IF (rst = 0) THEN write_ptr_meta 0); write_ptr_read_synch 0); ELSIF(clk_readevent AND clk_read = 1) THEN write_ptr_meta = write_ptr; write_ptr_read_synch = write_ptr_meta; END IF; END PROCESS;如在P5进程中,在第一个写的时钟上升沿来临时将读的格雷码指针read_prt传递给read_ptr_meta;在第二个写时钟的上升沿时将read_ptr_meta传
32、递给read_ptr_write_synch。这样经过这两级触发器的传输后就可以得到同步的读指针和写指针。2.2.4 FIFO的满/空标志的判断为保证数据的正确写入和读出,不发生写满和读空操作,怎样判断空满标志位的产生就成为异步FIFO设计的核心问题。异步FIFO是环形存储的,当读写地址指针相等时,意味着空标志位或者满标志位的产生。但是却不能确定是写满还是读空状态。因此我们采用格雷码比较MSB位(最高位)的方法 要准确的判断FIFO的空满,可以采用以下算法:建立一个深度为2N,指针宽度为N+1的FIFO。此时格雷码为N+1位。把格雷码转换的最高位进行比较,当写地址和读地址的格雷码的MSB位不相
33、同,其它位相同的时候表示为满,禁止写入数据,而如果写地址和读地址的格雷码完全相同则表示为空,禁止读出数据。以下是VHDL的判断满空信号的部分代码:- P7进程:通过对读写指针的比较,产生出正确的满信号P7:PROCESS (write_ptr,read_ptr_write_synch)BEGINIF(write_ptr(asize DOWNTO asize-1) = not (read_ptr_write_synch(asize DOWNTO asize-1)AND(write_ptr(asize-2 DOWNTO 0) = read_ptr_write_synch(asize-2 DOWNT
34、O 0) THEN full_flag = 1; ELSE full_flag = 0; END IF; END PROCESS; - P8进程:通过对读写指针的比较,产生出正确的空信号 P8:PROCESS(read_ptr,write_ptr_read_synch) BEGIN IF (write_ptr_read_synch = read_ptr) THEN empty_flag = 1; ELSE empty_flag = 0; END IF; END PROCESS;在P7进程中,若写指针的最高两位write_ptr(asize DOWNTO asize-1)和被同步后的读指针的最高
35、两位read_ptr_write_synch(asize-2 DOWNTO 0)不等,而余下的几位都相等,就表示RAM已满,输出满信号;而在P8进程中,若被同步后的写指针write_ptr_read_synch和读指针read_ptr都相等,则表示RAM是空的,就会输出空信号。因此,使用二进制码进行计数,再将二进制码转换为格雷码,用格雷码进行跨时钟域的比较,这样显然可以减少亚稳态出现的概率。保留MSB就方便判断空满标志。3 EDA设计方法流程及软件介绍和芯片的选取3.1 EDA设计方法及流程3.1.1 EDA设计方法数字电路设计中有两种基本的设计方法:自底向上和自顶向下设计方法。在自顶向下方法
36、中,首先定义定出功能模块,进而分享需要哪些构成顶层模块的必要的子模块;然后进一步对各子模块进行分解,直到达到无法进一步分解的底层功能块。图3-1-1-a显示了这种方法的设计过程。图3-1-1-a 自顶向下设计方法学在自底向上设计方法中。我们首先对现有的功能块进行分析,然后使用这些模块来搭建规模大一些的功能块,如此继续直至顶层模块。图3-1-1-b显示了这种方法的设计过程图3-1-1-b 自底向上设计方法学在典型的设计中,这两种方法是混合使用的。设计者首先根据电路的体系结构定义顶层模块。逻辑设计者确定如何根据功能将整个设计划分为子模块;与此同时,电路设计者对底层功能块电路进行优化设计,并进一步施
37、压这些底层模块来搭建其高层模块。两者的工作按相反的方向独立进行,直至在某中点回合。这时,电路设计者已经使用开关级设计创建了一个底层功能块库,而逻辑设计者也通过使用自顶向下是方法将整个设计分解为由库单元构成的结构描述。3.1.2 EDA设计典型流程图3-1-2 典型的设计流程在任何设计流程中,必须首先编写设计电路的技术指标和功能要求细节,从抽象的角度对实现电路功能、接口和总体结构进行描述。行为级描述一般也使用HDL来编写。由行为级描述向RTL级描述的转换是由设计者手工完成的。在这个过程中,设计者需要对实现电路功能的数据流进行详细描述。综合工具的作用是将RTL级描述转换成门级网表,而在整个设计流程
38、中,设计的重点主要在于手工对RTL描述的优化,后续的设计就可以在EDA工具下辅助下完成。在最近出现的行为级综合工具可以讲电路或算法的行为级描述转换为RTL级描述。随着行为级综合工具的不断完善,数字电路设计将越来越类似于软件程序设计。设计者只需在非常抽象的层次使用HDL对电路的算法进行描述,然后在EDA工具的帮助下完成从行为级描述到最终芯片结构的转换。3.2 CycloneII EP2C8Q208c8芯片的介绍3.2.1 概述Altera公司2004年推出了新款Cyclone II系列FPGA器件。Cyclone II是在Cyclone的基础上改进的,其 FPGA的成本比第一代Cyclone器件
39、低30%,逻辑容量却大了三倍多,可满足低成本大批量应用需求。Cyclone II器件采用TSMC90nm低K绝缘材料工艺技术,这种技术结合Altera低成本的设计方式,使之能够在更低的成本下制造出更大容量的器件。这种新的器件比第一代Cyclone产品具有两倍多的I/O引脚,且对可编程逻辑,存储块和其它特性进行了最优的组合,具有许多新的增强特性,如嵌入存储器、嵌入乘法器、PLL和低成本的封装,这些都为诸如视频显示、数字电视(DTV)、机顶盒(STB)、DVD播放器、DSL调制解调器、家用网关和中低端路由器等批量应用进行了优化。因此,在电信、计算机外设、工业和汽车市场上获得了巨大的进步。3.2.2
40、 EP2C8Q208c8的特性CycloneII系列特性EP2C5EP2C8EP2C15EP2C20EP2C35EP2C50EP2C70LEs4,6088,25614,44818,75233,21650,52868,416M4K RAM blocks26365252105129250Total RAM bits119,808165,888239,616239,616483,840594,4321,152,000Embedded multiplier 131826263586150PLLs2244444Maximum userI/O pins158 182315315475450622表3-2-
41、2 Cyclone II FPGA系列特性由上表可知EP2C8Q208c8芯片是拥有8256个LE(逻辑资源);36个M4K RAM总量相当于165888 bit;18个嵌入式硬件乘法器;高达182个用户自定义I/O,支持LVDS,RSDS,minn-LVDS,LVPECL,差分HSRL和差分SSTL电平系列;2个PLL倍频器,拥有全局时钟管理电路,8个外部时钟输入引脚,内部时钟频率最高可达260MHz;支持高速的串行存储器,和多种下载模式(AS主串模式,JTAG边界扫描模式);更重要的是,它能支持DSP功能和Nios II嵌入式处理器。图3-2-2 Cyclone II EP2C8Q208C
42、8芯片原理图封装3.3 软件QuartusII的介绍Quartus II是Altera公司推出的CPLD/FPGA开发工具,它提供了完全集成且与电路结构无关的开发包环境,从设计输入到硬件配置的完整PLD设计流程,具有数字逻辑设计的全部特性,包括:可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件;芯片(电路)平面布局连线编辑;LogicLock增量设计方法,用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块;功能强大的逻辑综合工具;完备的电路功能仿真与时序逻辑仿真工具;定时/时序分析与关键路径延时分析;可使用Signal
43、Tap II逻辑分析工具进行嵌入式的逻辑分析;支持软件源文件的添加和创建,并将它们链接起来生成编程文件;使用组合编译方式可一次完成整体设计流程;自动定位编译错误;高效的期间编程与验证工具;可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件;能生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件,同时对第三方EDA工具的良好支持,使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具;在DSP领域Quartus II 通过和DSP Builder工具与Matlab的Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SO
44、PC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。图3-3 QuartusII软件界面4 系统仿真测试4.1 异步FIFO的地址产生和格雷码产生的设计仿真FIFO的地址是在每个时钟下与使能有效的情况下,二进制地址自动加1输出,并转换为相应的格雷码输出。而这重点在于二进制怎样转换为格雷码。二进制转格雷码有多种方法,一种是查表法,将二进制码对应的格雷码先存储在一个固定ROM中,一个二进制码对应一个格雷码。只需输入要查询的二进制码就可以输出相应的格雷码。优点是转换的速度快,但不灵活,不便于移植修改。这里我们介绍一种移位异或的方法来实现。将二进制码先右移一位得到一
45、个值,然后再与原值相异或就可以得到相应的格雷码。例如二进制码为0011,右移移位后得到0001,将这两个值相异或得0010。可以参考表2-1对比是正确的。以下是VHDL编写的二进制转格雷码的部分程序:PROCESS (clk,rst)BEGINIF (rst = 0) THENbin = 00000000001;gray_out = 00000000000; ELSIF(clkevent AND clk =1) THENIF(ennable = 1) THEN -二进制计数器bin = bin + 1; - 通过SRL和XOR运算实现二进制码向格雷码的转变gray_out = (TO_STDL
46、OGICVECTOR(TO_BITVECTOR(bin) SRL 1) XOR bin; END IF;END IF;END PROCESS;在每个时钟上升沿来临时,将二进制bin右移移位再与bin相异或传递给格雷码gray_out。本设计的异步FIFO的存储深度是1024个字节,所以二进制地址码的宽度是10位,因而格雷码的宽度是11位。下面是Quartus II的仿真图:图4-1-a二进制转格雷码仿真图由上图可以看出,在每个clk时钟的上升沿,将此刻的二进制码bin_addr输出,并在下一个上升沿时输出这刻对于的格雷码gray_out。下面是此模块的RTL视图:图4-1-b 二进制地址产生及
47、相应的格雷码输出4.2 异步FIFO总体设计仿真验证和综合4.2.1 异步FIFO系统的综合根据第二章图2-1的系统原理框图可以得知,异步FIFO是根据写时钟、写使能、满信号来进行写操作的;通过读时钟、读使能、空信号来进行读操作的。下面是异步FIFO在QuartusII下生成的Smypol元件图,它言简意赅地表述了整个系统的设计目标。左边的是输入端口,右边的是输出端口。 图4-2-1-a 异步FIFO的Smybol视图上图的clk_read为读操作的时钟;clk_write为写操作的时钟;write_en为写使能端;read_en为读操作的使能端;rst为系统复位端;din7.0为8位宽度的数
48、据输入端;dout7.0为8位宽度的数据输出端;empty是空标志;full为满标志。图4-2-1-b异步FIFO系统总体RTL视图图中我们已经介绍了RTL视图各部分的功能,此刻我可以更清楚地看到系统的数据流向。读地址产生后经过两级触发器被写时钟同步,再经过满信号判断电路后判断是否为满,同时其读地址和控制信号流向了RAM单元,控制数据的读出;再另一边同时写地址产生后经过两级触发器被读时钟同步,也再经过空判断电路后输出空信号,同时其写地址和其控制信号流向了RAM单元,控制数据的写入。4.2.2 异步FIFO总体仿真波形仿真开始先向FIFO 写入两个数据,然后读出两个数据,然后不断地写入数据直到写
49、满为止。空标志empty为高,表示禁止读数据同时读地址不再增加;满标志full为高,表示禁止写数据同时写地址也不再增加,写使能write_en为高电平表示可以写数据,读使能read_en为高电平表示可以读数。由于系统总体仿真复杂,为了根据直观性,我们将总体仿真的每一部分分开解读,而且把仿真的关键部分用红色框进行标记,以便醒目。图4-2-2-a异步FIFO总体仿真图图4-2-2-a是异步FIFO总体仿真的第一部分。我们设定读时钟是约为58.8MHz,写时钟是100MHz。红框1(1号红色框图,以下都是如此简称)为系统复位部分仿真,可以看出在复位后RAM是空的,所以空信号empty为高电平,满信号
50、full是低电平,其读写指针都是指向0地址。在红框2中,给一个写时钟周期的写使能高电平,且数据输入的值是136,马上emptyb变为低电平,表示RAM中数据不再为空的,可以进行读操作了。图4-2-2-b异步FIFO总体仿真图图4-2-2-b异步FIFO总体仿真的第二部分。红框1的write_en为高电平,表示再给RAM写入一个40的数值。红框2的read_en为高电平,表示进行了第一次读操作,且读出的数据正是第一次写入的数据,正如红框3所示。图4-2-2-c异步FIFO总体仿真图图4-2-2-c异步FIFO总体仿真是第三部分。红框1的read_en为高电平,进行了第二次读操作,因为前面只进行了
51、两次写操作,也进行了两次读操作,此时RAM内应该为空了,所以empty变为高电平;红框2是第二次读出的数据值为40这是第二次写入的数据。图4-2-2-d异步FIFO总体仿真图图4-2-2-d异步FIFO总体仿真是第四部分。此刻红框1表示在经过多次写操作后,没有进行读操作,RAM内数据满了,full就变高电平了,不能再进行写操作了。综上可知,FIFO系统总体仿真与预定设计一致,系统规划合理,功能完善,符合设计要求。结论本文主要研究了用FPGA芯片实现异步FIFO的一种方法。对于异步FIFO的设计的主要难点,采用了地址递增的计算方式,并转换为格雷码用于异步时钟域的指针比较,降低了亚稳态出现的概率,
52、从而产生正确的空/满信号,通过验证,这种方法在有效判断空满标志位方面有很大的优势。实践证明它可以解决大多数异步FIFO电路常见的错误。同时增加了系统的可靠性和应用灵活性。在FPGA内成功实现了高速异步FIFO目前该方法可用于各个方面,如在基于FPGA图像采集预处理系统中,会大大提高了整个系统的工作速度,提高效率。然而由于条件的有限和时间的仓促,未能将其应用于其他系统中,但为了答辩时的表现效果,我在此基础上增加了其他的模块,实现了用串口发送数据到FPGA中,通过控制模块存入此异步FIFO中;再用串口将数据发送出来。而且设定了两个按键分别控制数据的写入与读取,采用8位数码管显示当前的写指针地址和读
53、指针地址。改进后的设计为附录一中的图一,效果图为附录一的图二。参考文献XILINX.Synthesizable High Performance SDRAM Con2troller.NebhrajaniVA.Asynchronous FIFO Architectures Part1.NebhrajaniVA.Asynchronous FIFO Architectures Part2.Clifford E.Cummings Synthesis and Scripting Techniques for Designing Multi2Asynchronous Clock Designs.A.Cha
54、kraborty,M.R.Greenstreet A minimal source-synchronous interface,ASIC/SOC Conference,2002.15th Annual IEEE International,25-28 Sept.2002 Page:443-447.William J.Dally,John W.Poulton Digital Systems Engineering, CambridgeUniversity Press,1998,Page:468.Clifford E.Cummings Synthesis and Scripting Techniq
55、ues for Designing Multi-Asynchronous Clock Designs,Sunburst Design,Inc.于海,樊晓桠.基于FPGA异步FIFO的研究与实现J.微电子学与计算机,2007,24(3):210-213. 杨军,孔兵,宋克俭,等.基于FPGA的高速异步FIFO存储器设计J.云南大学学报:自然科学版,2007,29(6):560-565.Rabaey JM.数字集成电路设计透视M.北京:清华大学出版社,l999.汪东,马剑武,陈书明.基于Gray码的异步FIFO接口技术及其应用J.计算机工程与科学,2005,27(11):58260.John FW
56、.数字设计原理与实践M.北京:机械工业出版社,2003.候伯亨,顾新.VHDL硬件描述语言与电路设计M.西安:西安电子科技大学出版社,1997.夏宇闻.Verilog数字系统设计教程.北京航空航天大学出版社.2008.雷海卫,刘俊.FPGA中软FIFO的设计与实现J.微计算机信息, 2008,24(2):207-209.吴自信,张嗣忠.异步FIFO结构及FPGA设计J.单片机及嵌入式系统应用,2000,22(3).陈明义,夏海旻,周建国.高速大容量FIFO的设计J.电子科技,2008, 21(6):123.熊红兵,陈琦.基于FPGA的异步FIFO设计与实现J.微计算机信息, 2006,22(6
57、-2):216-218.林敏,方颖立.VHDL数字系统设计与高层次综合M.北京:电子工业出版社,2002.杨宗凯.数字专用集成电路的设计与验证M.北京:电子工业出版社,2004.214-225.池雅庆,廖峰,刘毅.ASIC芯片设计从实践到提高M.北京:中国电力出版社,2007:1-4,210-239.附录一图一效果改进的异步FIFO设计图二效果改进的异步FIFO实物图(数码管左四位是写地址,右四位是读地址)附录二VHDL源代码:1、格雷码产生模块代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;US
58、E IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY graycounter IS generic ( asize : integer := 10 ); PORT ( -时钟信号 clk : IN STD_LOGIC; -复位信号 rst : IN STD_LOGIC; -使能信号 ennable : IN STD_LOGIC; -格雷码输出 gray_out : OUT STD_LOGIC_VECTOR(asize DOWNTO 0); -二进制码输出 bin_addr : OUT STD_LOGIC_VECTOR(asize-1 DOWNTO 0); END grayc
59、ounter;ARCHITECTURE Behavioral OF graycounter IS -格雷码产生所需内部信号 SIGNAL bin : STD_LOGIC_VECTOR(asize DOWNTO 0); BEGIN PROCESS (clk,rst) BEGIN IF (rst = 0) THENbin = 00000000001; gray_out = 00000000000; ELSIF(clkevent AND clk =1) THEN IF(ennable = 1) THEN -二进制计数器 bin = bin + 1; - 通过SRL和XOR运算实现二进制码向格雷码的转
60、变 gray_out = (TO_STDLOGICVECTOR(TO_BITVECTOR(bin) SRL 1) XOR bin; END IF; END IF; END PROCESS; -输出对应二进制码 bin_addr = bin(asize-1 DOWNTO 0); END Behavioral;2、异步FIFO顶层代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY fifo64 is generic ( asiz
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 暖通自控系统调试技术要领
- 《导数的计算》学考达标练
- 2026年汽车维修与汽车技术知识题目
- 2026年外语能力考试类
- 2026年社会心理学社会行为与互动机制研究试题
- 2026年考研英语综合能力模拟试题
- 2026年审计师专业能力提升题库
- 2026年食品卫生安全食品加工操作规范模拟试题
- 2026年工程技术人员专业能力测试题
- 2026年金融产品环境足迹EFLCA学习试题
- 2026四川成都经开建工集团有限公司招聘项目制工作人员6人备考题库含答案详解
- 2026年北京市离婚协议书规范范本(无子女)
- 2026届新疆维吾尔自治区乌鲁木齐市一模英语试题(有解析)
- 2025年食品安全管理员考试题库(含标准答案)
- 2025肿瘤患者心身症状临床管理中国专家共识课件
- 中西医结合治疗肿瘤的进展
- 2026年检察院书记员面试题及答案
- 多维度解析黄河河源区径流模拟与动态演变
- 绿城物业工程部考试题及答案
- TCHES65-2022生态护坡预制混凝土装配式护岸技术规程
- 租户报装充电桩合同范本
评论
0/150
提交评论