基于FPGA的异步FIFO设计(毕业设计论文).doc_第1页
基于FPGA的异步FIFO设计(毕业设计论文).doc_第2页
基于FPGA的异步FIFO设计(毕业设计论文).doc_第3页
基于FPGA的异步FIFO设计(毕业设计论文).doc_第4页
基于FPGA的异步FIFO设计(毕业设计论文).doc_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

江苏科技大学本 科 毕 业 设 计(论文)学 院 专 业 学生姓名 班级学号 指导教师 二零壹叁年六月江苏科技大学本科毕业论文基于fpga的异步fifo设计asynchronous fifo design based on fpga江苏科技大学本科毕业设计(论文)摘 要在现代集成电路芯片中,随着设计规模的不断扩大,一个系统往往包含多个时钟,如何进行异步时钟间的数据传输成为了一个很重要的问题。异步fifo(first in first out)是一种先进先出电路,可以在两个不同的时钟系统间进行快速准确的数据传输,是解决异步时钟数据传输问题的简单有效的方案。异步fifo在网络接口、数据采集和图像处理等方面得到了十分广泛的应用,由于国内对该方面研究起步较晚,国内的一些研究所和厂商开发的fifo电路还远不能满足市场和军事需求。由于在异步电路中,时钟间的周期和相位完全独立,以及亚稳态问题的存在,数据传输时的丢失率不为零,如何实现异步信号同步化和降低亚稳态概率以及正确判断fifo的储存状态成为了设计异步fifo电路的难点。本课题介绍了一种基于fpga的异步fifo 电路设计方法。课题选用quartus ii软件,在cyclone ii系列的ep2c5t144c8n芯片的基础上,利用vhdl 硬件描述语言进行逻辑描述,采用层次化、描述语言和图形输入相结合的方法设计了一个ram深度为128 bit,数据宽度为8 bit的高速、高可靠的异步fifo电路,并对该电路功能进行时序仿真测试和硬件仿真测试。关键词:异步fifo;同步化;亚稳态;仿真测试 abstractin modern ic chips, with the continuous expansion of the scale of design, a system always contains several clocks. how to transmit data between the asynchronous clocks become a very important problem.asynchronous fifo (first in first out) is a first-in, first-out circuit, it can transmit data between two diffent clock systems fastly and accurately, it is also a simple and effective solution to solve the problem of asynchronous clock data transfer. the asynchronous fifo has a very wide range of applications in network interface, data acquisition and image processing.but because of the aspect of a late start, some domestic research institutes and manufacturers which research the fifo circuit also can not meet the needs of the market and the military. in the asynchronous circuit, because of that the clock cycle and phase is completely independent, and the presence of metastability problems, the loss rate of data transmission is not zero. how to implement asynchronous signal synchronization, reduce the probability of metastability and judge the state of the fifo storage correctly become a difficult problem while designing the asynchronous fifo circuit. this paper introduces a method of asynchronous fifo circuit design based on fpga. this topic selects quartus ii software, the cyclone ii family ep2c5t144c8n chip, based on the use of vhdl hardware description language for logical descriptions, using the method of combining hierarchical, description language and graphical input ,this topic designs a high-speed, highly reliable asynchronous fifo circuit as the ram depth is 128 bit and the data width is 8 bit, and tests the circuit function with timing and software simulation.keywords:asynchronous fifo; synchronization; metastability; simulation testing目 录第一章 绪论11.1 fpga简介11.2 异步fifo简介11.3 国内外研究现状及存在的问题11.3.1 研究现状11.3.2 存在问题21.4 本课题主要研究内容3第二章 异步fifo设计要求及基本原理42.1 设计要求42.2 异步fifo基本原理52.3 异步fifo设计难点52.4 系统设计方案62.5 异步fifo验证方案72.5.1 验证复位功能72.5.2 验证写操作功能72.5.3 验证读操作功能72.5.4 验证异步fifo电路整体功能7第三章 模块设计与实现83.1 格雷码计数器模块83.2 同步模块83.3 格雷码自然码转换模块93.4 空满标志产生模块103.5 双端口ram13第四章 时序仿真与实现154.1 模块整合154.2 时序仿真及功能测试174.2.1 复位功能软件仿真与测试174.2.2 写操作功能时序仿真与测试174.2.3 读操作功能时序仿真与测试184.2.4 异步fifo电路整体功能软件仿真与测试184.2.5 时序仿真结果总结19第五章 硬件仿真与实现205.1 外部电路焊接205.2 引脚分配215.3 调试电路设计245.3.1 调试电路介绍245.3.2 异步时钟产生模块255.3.3 伪随机数据队列产生模块255.3.5 调试电路引脚分配265.3.6 调试电路硬件仿真275.4 异步fifo电路硬件仿真285.4.1 复位功能硬件仿真与测试295.4.2 写操作功能硬件仿真与测试305.4.3 读操作功能硬件仿真与测试305.4.4 异步fifo硬件电路整体功能软硬件仿真与测试315.4.5 硬件仿真结果总结32结论33致谢34参考文献35附录36iv第1章 绪论1.1 fpga简介fpga(fieldprogrammable gate array),即现场可编程门阵列,它是在cpld、pal、gal等可编程器件的基础上进一步发展的产物10。利用vhdl或verilog硬件描述语言进行电路设计,经过简单的布局整合之后,快速的烧入至 fpga 上进行调试,是现代 ic设计验证技术的主流。fpga作为一种半定制电路而出现在专用集成电路(asic)领域中,既克服了先前可编程器件的门电路数目有限的缺点,又弥补了定制电路的不足。基于fpga的异步fifo具有现场可编程,容量改动性大,速度快,实现简单,开发时间快,生产周期短,可移植性好的优点。1.2 异步fifo简介在现代集成电路芯片中,设计规模不断扩大,一个系统中往往包含多个时钟。如何在异步时钟间进行数据传输成为了电路设计中的一个重要问题。异步fifo(first in first out)是解决这个问题的一个简单有效的方案。异步fifo是一种先进先出电路,常用来缓存数据和容纳异步信号间的周期和相位差异,使用异步fifo可以在两个不同的时钟系统之间进行快速准确的实时数据传输。异步fifo在网络接口、数据采集和图像处理等方面得到了十分广泛的应用2。异步fifo用在异步时钟数据接口部分,由于异步时钟间的频率和相位完全独立,数据传输时的丢失率不为零,如何降低数据丢失率,设计一个高速可靠的异步fifo便成为了一个难点。本课题介绍了一种基于fpga设计高速可靠的异步fifo电路的方法。1.3 国内外研究现状及存在的问题1.3.1 研究现状在20世纪80年代早期对fifo存储器的容量和速度需求都很低,所以那时的fifo芯片是基于移位寄存器的中规模集成(msi)器件,由于这种芯片在容量不会太大,所以其速度也不可能很快。新型的fifo芯片是基于ram结构的大规模集成(lsi)电路,其内部存储单元使用一个双端口ram,具有输入和输出两套数据线。由于采用ram结构,数据从写入到读出的延迟时间将大大缩短。这种芯片能在存储宽度和深度上得到很大的发展。目前,为了更大的提高芯片容量,其内部存储单元使用动态ram代替静态ram,并在芯片内部集成刷新电路,通过内部仲裁单元控制器件的读写及自动刷新操作。随着微电子技术的飞速发展,新一代的fifo芯片容量越来越大,速度越来越快,体积也越来越小。美国idt公司已经推出运行速度高达225mhz,电压低至2.5v,可在业内各种配置下实现业内最大数据流量高达9 mb的fifo系列。cypress semiconductor公司推出具有80位宽的beast型的高性能fifo存储器,它的带宽高达300bps,可以工作在200 mhz频率下;honeywell公司推出了一种基于soi的fifo存储器,它采用专门的抗辐射加固工艺和设计版图,主要用于军事系统和高辐射的空间环境中;fifo芯片的最新产品是idt公司推出的多队列fifo存储器系列,它使用集成的嵌入式fifo存储器核和高速队列逻辑来构成块结构。它的数据读写速度可达到200 mhz,存储时间也只有3.6 ns,可以通过最多八个器件的连接来实现容量深度的扩展和队列扩展6。目前在国内大部分集成芯片中,单独做fifo芯片的很少,国内的一些研究所和厂商也开发了fifo电路,但还远不能满足市场和军事需求。1.3.2 存在问题 国内外设计fifo时,通常使用两种方法,一是利用可编程逻辑器件来构造fifo(如xilinx公司),二是利用verilog、vhdl等硬件描述语言来对fifo的功能结构进行描述6。在大部分的eda软件中,都是通过综合器来完成对eda等硬件语言的编译的,综合器将硬件描述语言的描述转变为物理可实现的电路形式,由于fifo是基于ram结构的,大部分的参考资料都是建立在数组存取的基础上对fifo进行描述的,然而综合器对数组的综合一般是将其转变为寄存器的结构,这带来的缺陷是综合后的结构会非常庞大,造成在大容量的fifo设计时,会产生大量面积的浪费,甚至无法集成。1.4 本课题主要研究内容本课题基于fpga技术,在cyclone ii系列的ep2c5t144c8n芯片的基础上,选用quartus ii软件利用vhdl 硬件描述语言进行逻辑描述,并采用层次化、描述语言和图形输入相结合的方法设计了一个ram深度为128 bit,数据宽度为8 bit的异步fifo电路,并对其功能进行了时序仿真和硬件仿真验证。论文各章节的主要内容安排如下:第一章为绪论,简要介绍了fpga的相关知识以及异步fifo的主要作用、研究背景和国内外的发展现状,并概括介绍了本课题的主要研究内容。第二章为异步fifo设计要求及基本原理,首先介绍了本课题的设计要求,然后对异步fifo的结构、基本原理以及其设计难点进行了分析,并由此归纳出系统的设计模块和预期功能。第三章为模块设计与实现,主要介绍了异步fifo的模块组成及各模块的功能和原理,并利用vhdl硬件描述语言,通过quartus ii软件对各模块进行了编写和仿真。第四章为时序仿真与实现,通过层次化、描述语言和图形输入相结合的方法将各模块整合为异步fifo顶层模块,并通过quartus ii软件的波形编辑器对其进行时序仿真和分析。第五章为硬件仿真与实现,连接外设及进行引脚分配后,将完成的异步fifo顶层实体下载入开发板,并通过编写测试程序产生读写时钟及伪随机数输入数据,利用quartus ii软件的嵌入式逻辑分析仪signaltap ii对实物进行硬件仿真和分析,完成设计任务。最后结论对本次毕业设计进行了归纳和综合,概括了所取得的成果和存在的不足,以及对进一步开展研究的见解与建议。第2章 异步fifo设计要求及基本原理2.1 设计要求本课题使用ep2c5t144c8n核心板最小系统设计一个ram深度为128 bit,数据宽度为8 bit的异步fifo电路,其外部接口如图2-1所示,接口说明如表2-1所示。复位后,通过读写使能控制读写操作。当写时钟脉冲上升沿到来时,判断写信号是否有效,有效则写入一个八位数据到ram中;当读时钟脉冲上升沿到来时,判断读信号是否有效,有效则从ram中把一个八位数据读取出来。当ram中数据写满时产生一个写满标志,不能再往ram写入数据;当ram中数据读空时产生一个读空标志,不能再从ram读出数据。图2-1 异步fifo外部接口表2-1 异步fifo外部接口说明管脚名称方向说明rstin复位,低电平有效wr_enin写使能,高电平有效rd_enin读使能,高电平有效wr_clkin写时钟rd_clkin读时钟fullout读空标志emptyout写满标志data7.0out输入数据q7.0out输出数据2.2 异步fifo基本原理异步fifo主要由双端口ram和读写控制逻辑及空满标志产生逻辑构成,其基本结构图如图2-2所示。读时钟读地址读控制读数据写地址写控制写数据双端口ram写地址产生逻辑读地址产生逻辑同步电路空满标志产生逻辑写时钟复位图2-2 异步fifo基本结构图由结构图可以看出该系统为环状结构,存在两个完全独立的时钟域写时钟域和读时钟域。异步fifo的存储介质是一块双端口ram,可以同时进行读写操作。在写时钟域,写地址产生逻辑产生写地址和写控制信号,在读时钟域,读地址产生逻辑产生读地址和读控制信号。空满标志产生逻辑通过比较同步后的读写地址来产生空满标志信号,同时,产生的空满标志信号又和输入的读写使能信号一起控制读写时钟域进行读写操作。2.3 异步fifo设计难点异步fifo设计存在两个难点:一是如何同步异步信号,降低亚稳态发生概率;二是如何正确产生存储器的空满标志8。其中如何正确产生存储器的空满标志在下一章节有详细介绍。亚稳态是一种物理现象,必然发生在异步fifo电路中。在数字电路中,触发器必须满足建立和保持的时间要求,然而在实际电路中,电路的外部输入和内部时钟完全独立,存在很大可能性出现不满足建立和保持的时间要求的情况,另外,由于在电路内部的两个毫无关系的时钟域之间进行信号传递,也可能出现不满足建立和保持的时间要求的情况。这种情况会使系统中存在未知态,输出将有可能是逻辑0或者逻辑1,或者是介于两者之间的任何值,这个过程称为亚稳态。由于亚稳态使物理系统产生了一种不可预知性,所以亚稳态是很危险的。虽然亚稳态没法避免,但可以通过下面两种方法降低亚稳态发生的概率12:(1) 对读写地址使用格雷码计数器。格雷码是一种错误最小化的编码方式,使用格雷码计数器进行计数时,每一次计数增加只有一位数据位改变,而使用自然二进制码计数时,每一次计数增加都可能造成多位数据位的变动,这就使得数据位变动时,格雷码计数器发生亚稳态的概率大大低于自然二进制码计数器。(2) 使用触发器同步异步信号。使用触发器同步或者增加冗余可以很好的降低亚稳态发生的概率,本课题采用d触发器二级同步方式,同步电路图如图2-3所示。当且仅当q1的跃变非常接近时钟沿的时候,q2才会进入亚稳态2,这就大大提高了系统的可靠性。d q clkd q clk异步输入同步输出图2-3 d触发器二级同步2.4 系统设计方案根据异步fifo基本原理,本课题可采用层次化、描述语言和图形输入相结合的方法设计异步fifo电路,该系统可分为同步模块、格雷码计数模块、格雷码自然码转换模块、空满标志产生模块和双端口ram几部分组成。2.5 异步fifo验证方案根据异步fifo的基本原理和本课题的设计方案,若所设计的异步fifo电路能实现如下预期设计功能,则该异步fifo电路符合设计要求。2.5.1 验证复位功能将系统运行后,若按下复位键,无论读写使能信号处于什么状态,读写操作都不进行,数据输出始终不变,异步fifo处于读空状态。2.5.2 验证写操作功能系统复位后,将写使能置位,读使能复位,则系统只能进行写操作写入数据,所以经过一段时间后由于双端口ram存储器存储单元被写满,异步fifo应该始终处于写满状态,数据输出始终不变。2.5.3 验证读操作功能系统复位后,将读使能置位,写使能复位,则系统只能进行读操作读取数据,由于双端口ram存储器存储单元数据被读空,异步fifo应该始终处于读空状态,数据输出始终不变。2.5.4 验证异步fifo电路整体功能系统复位后,将读写使能均置位,系统能同时进行读写操作。若输入的异步读时钟频率大于写时钟频率,则读操作快于写操作,异步fifo间歇性处于读空状态,但始终不处于写满状态,输出数据队列应与输入数据队列相同以实现先入先出的功能,但会有一定的延时;若输入的异步读时钟频率小于写时钟频率,则写操作快于读操作,异步fifo间歇性处于写满状态,但始终不处于读空状态,输出数据队列也应与输入数据队列相同以实现先入先出的功能,但也会有一定的延时。第3章 模块设计与实现3.1 格雷码计数器模块为了降低亚稳态发生的概率,本课题将读、写地址转化为格雷码进行计数,由于格雷码是一种错误最小化编码方式,它在任意相邻的两个数间转换时只有一个数位发生变化,其发生亚稳态的可能性远低于自然二进制码,大大增加了电路的可靠性。另外,为了准确的判断存储器的空满状态,本课题使用5 bit的格雷码计数器,这在后面的空满标志产生模块章节有详细介绍。5 bit格雷码计数器模块的vhdl设计程序见附录。程序编译成功后生成的格雷码计数器模块如图3-1所示,利用quartus ii软件的波形编译器对该模块进行时序仿真,其仿真波形如图3-2所示。图3-1 格雷码计数器模块图3-2 5 bit格雷码计数器仿真波形3.2 同步模块为了降低亚稳态发生的概率,本课题使用前章所介绍d触发器二级同步将异步信号同步化。在空满标志模块判断写满标志时,同步模块将读指针与写时钟同步后,和写指针比较产生写满标志;判断读空标志时,同步模块将写指针与读时钟同步后,和读指针比较产生读空标志。同步模块的vhdl设计程序见附录。程序编译成功后生成的同步模块如图3-3所示,利用quartus ii软件的波形编辑器对该模块进行时序仿真,其仿真波形如图3-4所示。从仿真波形可以看出,该模块将输入的异步码与输入时钟同步后输出同步码,由延时时间可以看出其满足二级同步要求。图3-3 同步模块图3-4 同步模块仿真波形3.3 格雷码自然码转换模块虽然为了降低亚稳态发生概率而使用格雷码对读、写地址进行转换,但在双端口ram进行存储和空满产生模块进行读写地址比较时仍使用自然二进制码,所以在异步地址信号同步后,仍需将格雷码地址转换回自然二进制码。n位格雷码转换为自然二进制码的法则为:bn = gn,bi = gibi+1 (in),其中g表示格雷码,b标志自然二进制码。格雷码自然码转换模块的vhdl设计程序见附表。程序编译成功后生成的格雷码自然码转换模块如图3-5所示,利用quartus ii软件的波形编辑器对该模块进行时序仿真,其仿真波形如图3-6所示。图3-5 格雷码自然码转换模块图3-6 格雷码自然码转换模块仿真波形3.4 空满标志产生模块空满标志产生模块是整个异步fifo系统的核心部分,该模块设计的好坏直接决定了该异步fifo的性能。空满标志产生的基本原则是无论在什么情况下,都不会出现存储器对同一存储地址同时进行读写操作的情况,也就是存储器写满后不产生溢出,读空后不进行多读2。对于同步的fifo系统,读写操作同时从存储单元起始位置开始进行读写操作,每进行完一次读写操作后,控制指针就增加一位,指向下一个存储单元,直到下一次时钟沿到来后存储器对该存储单元进行一次读写操作,然后指针继续增加。当指针移动到最后一个存储单元后,它又重新回到起始位置继续进行读写操作。由于同步fifo读写操作同时进行,所以存储器始终处于非空和非满的状态,读写操作可以一直进行。对于异步fifo系统,有两个独立的控制指针读指针和写指针,读操作和写操作独立运行。然而当存储器存储空间被读空后,若继续读取数据则会造成多读,使一个无用的信号被读出;当存储器存储空间写满后,若继续写入数据则会产生溢出,造成一个有用的数据被覆盖。为了避免这种情况发生,异步fifo系统对存储器设置了读空和写满两个状态标志。当存储器读空后,读空标志置位,暂停读操作继续读取数据,但仍可以执行写操作;当存储器写满后,写满标志置位,暂停写操作继续写入数据,但仍可以执行读操作。按照此原理,当全局复位信号复位后,异步fifo应该处于读空状态。由上述原理可以知道,当读指针和写指针不相等时,读写操作互不干扰,异步fifo处于非空和非满的状态。当读指针和写指针相等时,fifo要么处于读空状态,要么处于写满状态。那么该怎么判断异步fifo究竟处于什么样的状态呢?判断的方法有很多,本课题使用读写指针比较的方法,通过额外增加状态标志位来判断究竟是读指针追赶写指针输出读空标志,还是写指针追赶读指针输出写满标志。本课题设计的异步fifo存储深度为128 bit,那么读写指针应有4个地址位,本设计使用5 bit的读写指针,其最高位作为额外增加的状态标志位,剩下的低4位为地址位。地址位随着相应的读(写)操作的进行依次递增,当读(写)指针由最后一个存储单元重新回到起始位置时状态标志位取反。当读写指针的状态标志位和地址位完全相同时,表明执行了相同次数的读写操作,此时异步fifo处于读空状态;当读写指针的状态标志位不同,而地址位完全相同时,表明写操作比读操作多进行了一次循环,此时异步fifo处于写满状态。空满状态的行为描述如下:full = 1 when (wr_addr(4) /= rd_addr(4) and (wr_addr(3 downto 0) = rd_addr(3 downto 0)empty = 1 when (wr_addr(4 downto 0) = rd_addr(4 downto 0)由于空满标志是通过比较同步后的读写指针产生的,那么就可能出现这样的情况:当同步写指针时,实际的写指针可能已经发生了变化,这意味着此时的写指针可能是一个无用的值。这样从读操作的角度来看,就会发生就会发生少写的的现象,也就是异步fifo判定为读空时,fifo实际上可能未空,因为写操作可能正在发生,写指针仍在变化,但这从读操作的角度是“看不到的”;同理从写操作的角度来看,也会出现类似的情况,即异步fifo判定为写满时,fifo实际上可能未满。上述的情况被称为保守的报告,当fifo未空时判定fifo读空,而阻止读操作的继续进行;当fifo未满时判定fifo写满,而阻止写操作的继续进行。这种情况从存储器的角度来看,存储器的存储空间好像变小,然而这种情况是毫无坏处的,能很好的避免错误的发生,因为当fifo真的读空或写满了,而不去阻止读操作或写操作的进行将会出现多读或溢出的错误,影响异步fifo的性能2。读空、写满状态判定的vhdl设计程序分别见附录。空满标志产生模块的顶层设计电路如图3-7所示,其中empty_cmp模块和full_cmp模块分别是读空标志判定模块和写满标志判定模块。将该顶层电路编译成功后生成的空满标志产生模块如图3-8所示。图3-7 空满标志产生模块顶层电路图图3-8 空满标志产生模块3.5 双端口ram本课题设计的异步fifo的存储器是一个存储深度为128 bit,数据宽度为8 bit的双端口ram,该ram使用altera的mega wizard plug-in manager工具定制,定制主要参数设置过程如下:(1)打开mega wizard plug-in manager对话框,选择“create a new custom megafunction variation”定制新的宏功能模块。(2) 定制完新的功能模块后选中memory compiler下的ram:2-port生成双端口ram。然后选择cyclone ii器件和vhdl文件格式,输入ram存放路径和模块名。(3) 生成ram后在ram功能设置界面的ram端口点击“with one read port and one write port”,选择一个读端口和一个写端口。存储方式选择bit方式,即“as a number of bits”。(4) 双端口ram的存储深度选择128 bit,数据线宽度选择8 bit。(5) 设置完存储深度和数据宽度后进入时钟设置界面,选择独立的读写时钟,并添加读使能。(6) 在寄存器设置界面选中“which ports should be registered?”栏下第三个选择框,增加输出寄存器。(7) 定制生成的双端口ram外部接口如图3-9所示。图3-9 双端口ram外部接口第4章 时序仿真与实现4.1 模块整合本课题采用层次化、描述语言和图形输入相结合的方法设计异步fifo电路,该系统被分为同步模块、格雷码计数模块、格雷码自然码转换模块、空满标志产生模块和双端口ram几部分,上一章节已经完成了各模块的编写及时序仿真测试。将各模块整合后的异步fifo电路的顶层实体如图4-1所示,其中gray模块是格雷码计数器模块,g2b模块是格雷码自然码转换模块,full_empty是空满标志产生模块,dram模块是双端口ram。图4-1 异步fifo顶层电路图4.2 时序仿真及功能测试本课题使用quartus ii 9.0软件的波形编辑器对设计的异步fifo电路进行时序仿真,并根据仿真波形对各模块功能进行测试,确认该异步fifo是否满足设计要求。4.2.1 复位功能软件仿真与测试对于复位功能的时序仿真测试波形如图4-2所示。从图中可以看出,当系统运行后,复位端置1,即不按下复位键时,异步fifo系统正常工作;当复位端置0,即按下复位键后,无论读写使能信号处于什么状态,数据输出始终不变,异步fifo处于读空状态。该仿真波形表明所设计的异步fifo电路的复位键能控制系统的全局操作,复位功能达到了预期的设计要求。图4-2 复位功能时序仿真测试波形4.2.2 写操作功能时序仿真与测试对于写操作功能的时序仿真测试波形如图4-3所示。从图中可以看出,将系统复位端置1,将写使能置位,读使能复位,经过一段时间后,数据输出始终不变,读空标志始终为0,写满标志始终为1,这表明异步fifo电路始终处于写满状态。该仿真波形表明写使能端控制系统只进行写操作写入数据,由于不进行读操作,一段时间后双端口ram存储器存储单元会始终处于写满状态,这表明所设计的异步fifo电路的写操作功能达到了预期的设计要求。图4-3 写操作功能时序仿真测试波形4.2.3 读操作功能时序仿真与测试对于读操作功能的时序仿真测试波形如图4-4所示。从图中可以看出,将系统复位端置1,将写使能复位,读使能置位,数据输出始终不变,写满标志始终为0,读空标志始终为1,这表明异步fifo电路始终处于读空状态。该仿真波形表明读使能端控制系统只进行读操作读取数据,由于不进行写操作,双端口ram存储器存储单元会始终处于读空状态,这表明所设计的异步fifo电路的读操作功能达到了预期的设计要求。图4-4 读操作功能时序仿真测试波形4.2.4 异步fifo电路整体功能软件仿真与测试对于异步fifo电路整体功能的时序仿真测试波形如图4-5和图4-6所示,其中图4-5的输入的读时钟频率是写时钟频率的2倍,图4-6的输入的写时钟频率是读时钟频率的2倍。对于图4-5,将系统复位端置1,将读写使能均置位,一段时间后异步fifo间歇性处于读空状态,但始终不处于写满状态,输出数据队列与输入数据队列相同,但会有一定的延时。这表明系统能同时进行读写操作,由于读操作速度快于写操作,所以异步fifo只会处于读空状态,而不会进入写满状态。另外,输出数据队列与输入数据队列相同,也表明该电路实现了先入先出的功能,输入输出队列之间的延时是由同步电路和程序的运行时间造成的。对于图4-6,将系统复位端置1,将读写使能均置位,一段时间后异步fifo间歇性处于写满状态,但始终不处于读空状态,输出数据队列与输入数据队列相同,但会有一定的延时。和图4-5相似,这同样表明系统同时进行了读写操作,由于写操作速度快于读操作,异步fifo只会处于写满状态,而不会进入读空状态。输出数据队列与输入数据队列相同,同样说明电路实现了先入先出的功能,队列之间的延时依然是由同步电路和程序的运行时间造成的。图4-5和图4-6的仿真波形表明所设计的异步fifo电路的整体功能达到了预期的设计要求。图4-5 异步fifo系统时序仿真测试波形1图4-6 异步fifo系统时序仿真测试波形24.2.5 时序仿真结果总结从上述时序仿真测试结果可以看出,该异步fifo电路在硬件逻辑设计方面实现了所有的预期设计功能,能快速准确的判定fifo存储器的空满状态,并能通过外部读写使能控制系统内部读写操作,实现宽度为8 bit的数据队列在两个独立的异步时钟域之间进行先进先出的数据传输。第5章 硬件仿真与实现5.1 外部电路焊接由于本课题使用ep2c5t144c8n核心板最小系统,其外设远不能满足设计要求,所以仍需焊接相应的外设电路板来连接开发板以完成异步fifo电路的硬件实物设计。本课题除使用开发板自带的按键作为系统复位键外,仍需焊接两个拨动开关作为读写使能控制键,拨动开关原理图如图5-1所示。另外,在外设板上还需要焊接一定数量的引脚来作为相应的读写时钟输入端和数据输入输出端,焊接完成的外设电路板如图5-2所示。对于图5-2所示拨码开关,向上拨码为0,向下拨码为1,其中1号开关为写使能控制开关,2号开关为读使能控制开关,3、4号开关为预留的无用开关。开发板电路的(18-19,a-c)区域引脚为写时钟输入引脚,(08-09,a-c)区域引脚为读时钟输入引脚,(26,m-o)区域引脚为vcc引脚,(13-14,h)区域引脚为控制信号输入引脚,(01,m-o)区域引脚为接地引脚,(24-26,w-d(右)区域引脚为输入数据引脚,(18-19,c-e(右)区域引脚为写满状态(full)引脚,(08-09,c-e(右)区域引脚为读空状态(empty)引脚,(01-03,w-d(右)区域引脚为输出数据引脚。.gnd拨码开关1004.7k控制信号输入.vcc图5-1 拨动开关原理图图5-2 外设电路板5.2 引脚分配焊接好外设电路板后,将外设电路板使用杜邦线接入ep2c5t144c8n最小系统核心板。但在此之前,仍需对设计的异步fifo电路进行相应的引脚分配,使系统下载入核心板后能按照设计要求正常工作,外设电路板也需根据引脚分配情况,将相应功能区域引脚接入核心板。本设计使用quartus ii 9.0软件里的pin planner工具栏分配电路引脚,分配完成后的引脚如表5-1所示。其中rst引脚分配为144引脚,其对应为核心板的自带按键,本设计使用此按键作为系统复位键。引脚分配完成后点击settings工具栏,找到里面的device选项栏,选中device and pin options工具栏,将未用引脚设置为高阻态,防止未用引脚出现其他状态而对设计电路的功能测试产生干扰,将nceo端口设置为io口。完成这些设置后点击start compilation进行编译,编译成功后电路图中各端口处显示相应的引脚编号如图5-3所示。表5-1 异步fifo电路引脚分配表图5-3 异步fifo端口引脚分配完成5.3 调试电路设计5.3.1 调试电路介绍完成引脚分配后,按照引脚相应的功能设计,使用杜邦线将外设电路板与核心板连接,连接完成后的异步fifo电路硬件实物如图5-4所示。其中(18-19,a-c)区域引脚为写时钟输入端,(08-09,a-c)区域引脚为读时钟输入端,(24-26,w-d(右)区域引脚为输入数据端,(18-19,c-e(右)区域引脚为写满标志(full)输出端,(08-09,c-e(右)区域引脚为读空标志(empty)输出端,(01-03,w-d(右)区域引脚为输出数据端。图5-4 异步fifo硬件电路实物若本课题所设计的异步fifo电路达到设计要求,则将该硬件电路通电并使用programmer工具,通过as接口将设计电路下载入核心板后,该硬件电路即本课题所设计完成的异步fifo电路硬件实物。该异步fifo电路能实现任意两个异步读写时钟输入,并在读写使能开关的控制下,能实现宽度为8 bit的输入数据队列在两个异步时钟域之间进行先进先出的数据传输。根据设计要求,该异步fifo电路不自带异步时钟产生模块和输入数据产生模块,为了测试完成的异步fifo硬件电路的功能是否达到设计要求,本课题仍需设计一个调试电路来产生异步的读写时钟信号和宽度为8 bit的输入数据队列。为了不影响完成的异步fifo硬件电路的功能,该调试电路使用另一块核心板装载运行,将调试电路输出的两个异步时钟和随机数据队列分别作为测试异步fifo硬件电路的异步读写时钟输入和数据输入。5.3.2 异步时钟产生模块该调试程序使用pll锁相环通过将核心板自带50 mhz时钟进行12分频和14分频产生两个异步时钟输出,输出时钟频率分别为25 mhz和12.5 mhz,将这两个时钟输出连入外设电路板的读时钟和写时钟引脚区域即可作为异步fifo硬件电路的异步读写时钟输入。pll锁相环使用altera的mega wizard plug-in manager工具定制。5.3.3 伪随机数据队列产生模块该调试电路使用描述语言和图形输入相结合的方法设计一个宽度为8 bit的伪随机数据队列产生模块,将该模块产生的伪随机数据连入外设电路板的输入数据引脚区域即可作为异步fifo硬件电路的数据输入。8 bit伪随机数据队列产生模块的vhdl设计程序见附录。5.3.4 调试电路时序仿真将调试电路异步时钟产生模块和伪随机数据产生模块整合后生成电路如图5-5所示,其中shuiji模块为伪随机数据产生模块。图5-5 调试电路利用quartus ii软件的波形编辑器对该调试电路进行时序仿真,其仿真波形如图5-6所示。从仿真波形可以看出该调试电路能准确有效的生成两个异步时钟信号和宽度为8 bit的伪随机数据队列,其时序仿真结果达到设计要求。图5-6 调试电路仿真波形5.3.5 调试电路引脚分配同前面章节异步fifo电路引脚分配相似,使用quartus ii 9.0软件里的pin planner工具栏对调试电路分配引脚,引脚表如表5-2所示。其中inclk0引脚分配为17引脚,其对应为核心板的自带晶振。引脚分配完成后使用同样的方法将未用引脚设置为高阻态,将nceo设置为io口,完成这些设置后点击start compilation进行编译,编译成功后电路图中各端口处显示相应的引脚编号如图5-7所示。表5-2 调试电路引脚分配表图5-7 调试电路引脚分配完成5.3.6 调试电路硬件仿真因为此电路只进行调试,所以下载程序时使用jtag接口。本课题使用quartus ii软件中的嵌入式逻辑分析仪signaltap ii对系统进行硬件仿真3。在new窗口选择signaltap ii logic analyzer file后生成signaltap ii编辑窗口如图5-8所示。图5-8 signaltap ii编辑窗口点击instance栏里面的auto_signaltap_0,将其更名为check2,此名与所建工程名相同。之后在node栏下面空白处双击弹出node finder窗口,选择“pins: all”后单击list按钮选中除inclk0外的所有结点。结点选择后,在signal configuration栏的clock处选择inclk0结点作为逻辑分析仪的工作时钟,接着在data栏的sample depth处选择采样深度为128 bit。参数设置完成后将signaltap ii文件保存并编译。编译成功后,将用于装载调试电路的核心板通电,并通过usb-blaster编程器连接电脑,然后利用signaltap ii编辑窗口下载电路程序。单击右侧setup按钮选择usb-blaster编程器模式,之后单击下方的scan chain按钮扫描核心板,若连接成功,则device处会显示核心板的fpga芯片型号,最后单击下方“.”按钮选中check2.sof文件,点击左侧下载标志进行下载。当文件下载完成后,核心板已可以实现调试电路的功能。然后点击autorun analysis按钮对该调试电路进行硬件仿真,仿真波形如图5-9所示,从该仿真波形可以看出该调试电路能准确有效的生成两个异步时钟信号和宽度为8 bit的伪随机数据队列,其硬件仿真结果同样达到设计要求。图5-9 调试电路硬件仿真波形5.4 异步fifo电路硬件仿真由上一小节设计的调试电路的时序仿真和硬件仿真结果可以看出,调试电路能产生两个异步时钟信号和深度为8 bit的数据队列,完全达到了设计要求,能对该异步fifo硬件电路的功能进行测试。根据调试电路的引脚分配情况,通过杜邦线将调试电路和异步fifo硬件电路连接在一起后组成的异步fifo功能测试电路实物如图5-10所示,其中上面的核心板和外设电路板一起组成异步fifo硬件电路,下面的核心板为调试电路板。现通过quartus ii软件中的嵌入式逻辑分析仪signaltap ii对异步fifo功能测试电路进行硬件仿真,通过仿真结果测试异步fifo电路的各部分功能,判断其是否达到预期设计要求。异步fifo功能测试电路的硬件仿真方法与5.3.6小节调试电路的硬件仿真相似。图5-10 异步fifo功能测试电路5.4.1 复位功能硬件仿真与测试对于复位功能的硬件仿真测试波形如图5-11所示。从图中可以看出,当复位键按下后,复位端显示为0,系统复位,即使此时读写使能处于有效状态,数据输出始终不变,异步fifo处于读空状态。该仿真波形表明所设计的异步fifo硬件电路的复位键能控制系统的全局操作,复位功能达到了预期的设计要求。图5-11 复位功能硬件仿真测试波形5.4.2 写操作功能硬件仿真与测试对于写操作功能的硬件仿真测试波形如图5-12所示。从图中可以看出,将1号拨码开关置1,2号拨码开关置0,即写使能置位,读使能复位,经过一段时间后,数据始终无输出,读空标志始终为0,写满标志始终为1,这表明异步fifo电路始终处于写满状态。该仿真波形表明写使能端控制系统只进行写操作写入数据,由于不进行读操作,一段时间后双端口ram存储器存储单元会始终处于写满状态,这表明所设计的异步fifo硬件电路的写操作功能达到了预期的设计要求。图5-12 写操作功能硬件仿真测试波形5.4.3 读操作功能硬件仿真与测试对于读操作功能的硬件仿真测试波形如图5-13所示。从图中可以看出,将1号拨码开关置0,2号拨码开关置1,即写使能复位,读使能置位,经过一段时间后,数据始终无输出,写满标志始终为0,读空标志始终为1,这表明异步fifo电路始终处于读空状态。该仿真波形表明读使能端控制系统只进行读操作读取数据,由于不进行写操作,一段时间后双端口ram存储器存储单元会始终处于读空状态,这表明所设计的异步fifo硬件电路的读操作功能达到了预期设计要求。图5-13 读操作功能硬件仿真测试波形5.4.4 异步fifo硬件电路整体功能软硬件仿真与测试对于异步fifo硬件电路整体功能的硬件仿真测试波形如图5-14和图5-15所示,其中图5-14的输入的读时钟频率为25 mhz,写时钟频率为12.5 mhz,图5-15的输入的写时钟频率为25 mhz,读时钟频率为12.5 mhz。对于图5-14,将1号拨码开关置1,2号拨码开关置1,即读写使能均置位,复位键不按下。一段时间后异步fifo电路间歇性处于读空状态,但始终不处于写满状态,输出数据队列与输入数据队列相同,但会有一定的延时。这表明系统能同时进行读写操作,但由于读操作速度快于写操作,所以异步fifo只会处于读空状态,而不会进入写满状态。另外,输出数据队列与输入数据队列相同,也表明该异步fifo硬件电路实现了先入先出的功能,输入输出队列之间的延时是由同步电路和程序的运行时间造成的。同样对于图5-15,将1号拨码开关置1,2号拨码开关置1,复位键不按下。一段时间后异步fifo电路间歇性处于写满状态,但始终不处于读空状态,输出数据队列与输入数据队列相同,但会有一定的延时。和图5-14相似,这同样表明系统能同时进行读写操作,由于写操作速度快于读操作,异步fifo只会处于写满状态,而不会进入读空状态。输出数据队列与输入数据队列相同,同样说明该异步fifo硬件电路实现了先入先出的功能,队列之间的延时依然是由同步电路和程序的运行时间造成的。图5-14和图5-15的硬件仿真波形表明所设计的异步fifo硬件电路的整体功能达到了预期的设计要求。图5-14 异步fifo系统硬件仿真测试波形1图5-15 异步fifo系统硬件仿真测试波形25.4.5 硬件仿真结果总结从上述硬件仿真测试结果可以看出,该异步fifo电路在硬件实物设计方面也能满足所有的设计要求。该异步fifo电路可以实现任意两个异步读写时钟输入,通过外部读写使能控制系统内部读写操作,并能快速准确的判定fifo存储器的空满状态,实现宽度为8 bit的数据队列在两个独立的异步时钟域之间进行先进先出的数据传输。综合时序仿真和硬件仿真结果可以证实本课题所设计的异步fifo电路能满足设计要求,达到实验目的。撤除测试电路核心板,并使用programmer工具,通过as接口将设计电路下载入核心板后,该硬件电路即本课题所设计完成的ram深度为128 bit,数据宽度为8 bit的异步fifo电路实物。完成的异步fifo实物电路如图5-16所示,外设电路板引脚功能与图5-4所示电路的引脚说明相同。图5-16 异步fifo电路完成实物结 论异步fifo电路是现代集成电路芯片飞速发展的产物,应

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论