8×9先进先出(FIFO)缓冲器.doc_第1页
8×9先进先出(FIFO)缓冲器.doc_第2页
8×9先进先出(FIFO)缓冲器.doc_第3页
8×9先进先出(FIFO)缓冲器.doc_第4页
8×9先进先出(FIFO)缓冲器.doc_第5页
免费预览已结束,剩余15页可下载查看

下载本文档

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

文档简介

课程设计任务书 学生姓名: 专业班级: 指导教师: 工作单位: 题 目: 89先进先出(FIFO)缓冲器 要求完成的主要任务: 1、技术要求:设计一个89先进先出(FIFO)缓冲器,8位字深,9位字宽;当读信号ready有效时,FIFO的输出data_out使能;当ready无效时,FIFO的输出处于高阻态;当写信号write有效时,9位宽的寄存器进行写操作,信号rdinc和wrinc被用来作为寄存器读和写指针递增,以指示该位寄存器的读和写。信号rdptclr和wrptclr复位读写指针指向FIFO的第一个寄存器。data_in是将被载入到一个寄存器的数据。掌握Quartus的操作和使用方法。利用Quartus软件对所设计的电路进行仿真分析。2、查阅至少5篇参考文献。按武汉理工大学课程设计工作规范要求撰写设计报告书。全文用A4纸打印,图纸应符合绘图规范。 时间安排:1、2012.6.11 集中作具体实施计划与课程设计报告格式的要求说明; 2、2012.6.12-2012.6.15 查阅相关资料,学习电路的工作原理; 3、2012.6.17-2012.6.19 方案选择和电路设计;4、2012.6.20-2012.6.21 电路调试和设计说明书撰写;5、2012.6.22 上交课程设计成果及报告,提交设计说明书及答辩。指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日武汉理工大学EDA(电子设计自动化)课程设计说明书 目录摘要IAbstractII1、绪论12、FIFO缓冲器22.1 FIFO简介22.2 FIFO的重要参数23、软件介绍及使用方法33.1 Quartus简介33.2 Quartus基本使用方法33.2.1 新建工程33.2.2 新建图形文件33.2.3 由VHDL 程序生成元件4 3.2.4 功能仿真43.2.5 管脚的重新分配与定位44、 FIFO缓存器整体设计54.1 FIFO模块54.1.2 方案论证54.1.3 FIFO具体设计54.2 分频模块64.3 消抖模块74.4 整体原理图75、 功能仿真96、 硬件调试107、 结束语11参考文献12附录13 FIFO模块程序13 分频模块程序15 D触发器程序16本科生课程设计成绩评定表I武汉理工大学EDA(电子设计自动化)课程设计说明书 摘要本文主要介绍了设计先进先出(FIFO)缓存器的方法,并介绍如何使用流行的EDA技术取代传统的基本电子设计方法。先进先出(FIFO)缓冲器是双端口数据存储器,其存储结构与RAM相同,仅存储方式存在差异。本设计就是基于FPGA开发环境Quartus II、用VHDL语言编程来实现FIFO缓冲器的基本功能的,并且进行了仿真和FPGA实现。VHDL是一种标准性很强的语言,易于修改,这就使得本设计更为灵活,从而更有利于产品的升级。关键词:FIFO缓冲器,EDA,Quartus II,VHDL,FPGA AbstractThis article mainly describes the approach of designing First In First Out (FIFO) buffer,it primarily introduce how to use the popular EDA electronic design device to replace the traditional methods.First In First Out (FIFO) buffer is a dual-port data memory. It has the same storage structure with RAM, but differences in the storage pattern.The design is based on Quartus II - the FPGA development environment.And the design is programmed by VHDL language. The basic functions of FIFO buffer is well achived,the simulation and experiment are also right.VHDL is a standard language, which is easy to modify, so it makes the design is more flexible and thus more conductive to product upgrades.Key words:FIFO buffer,EDA,Quartus II,VHDL,FPGA武汉理工大学EDA(电子设计自动化)课程设计说明书 1、绪论EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。此外,本次设计用的Quartus II软件 是DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种很方便的综合性开发平台。本次设计的具体实现是根据方案的要求,可以用VHDL语言,采用自顶向下的设计方法。可用分频的方法得到周期为0.5ms的时钟用与消抖时钟输入,用三个D触发器构成消抖电路,同时可以根据不单个时间脉冲的输入以及读写使能端来控制FIFO缓冲的写入和读出,得到各部分分立模块后再建立顶层文件,连接电路图以实现设计。2、FIFO缓冲器2.1 FIFO简介FIFO是英文First In First Out 的缩写,是一种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读数据,其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地出址线决定读取或写入某个指定的地址。FIFO 是一种不同时钟域之间传递数据的常用方法,基于FIFO(先进先出)设计的存储器的数摘要据读出顺序与数据写入顺序始终一致。这种存储器主要用在两个处理数据速度不同的数字系统之间,作为数据缓冲器来提供必要的数据缓冲,使这两个数字系统达到同步,这在许多信号处理系统中是必须的。FIFO缓冲器一般由三部分构成,分别为写地址产生器、读地址产生器、双端寄存器。2.2 FIFO的重要参数 FIFO的宽度(width):它只是FIFO一次读写操作的数据位, FIFO的深度(deepth):它指的是FIFO可以存储多少个N位的数据(如果宽度为N)。 读使能端(ready):使能端有效且有时钟上沿来临时读数据。 写使能端(write):使能端有效且有时钟上沿来临时写数据。 读指针(rdinc):指向下一个读出地址。读完后自动加1。 写指针(wrinc):指向下一个要写入的地址的,写完自动加1。读写指针其实就是读写的地址,只不过这个地址不能任意选择,而是连续的。 读复位端(rdptclr):复位读指针指向FIFO的第一个寄存器。 写使能端(wrptclr):复位写指针指向FIFO的第一个寄存器。3、软件介绍及使用方法3.1 Quartus简介Altera Quartus II (3.0和更高版本)设计软件是业界唯一提供FPGA和固定功能HardCopy器件统一设计流程的设计工具。工程师使用同样的低价位工具对 Stratix FPGA进行功能验证和原型设计,又可以设计HardCopy Stratix器件用于批量成品。系统设计者现在能够用Quartus II软件评估HardCopy Stratix器件的性能和功耗,相应地进行最大吞吐量设计。 Quartus包括模块化的编译器。它的编译器支持的硬件描述语言有VHDL、Verilog HDL及AHDL。Quartus支持层次化设计,可以在一个新的编辑输入环境中对环境中使用不同输入设计方式完成的模块进行调用。在设计输入之后,Quartus的编译器将给出设计输入的错误报告,这给编程和修改提供了很好的帮助。3.2 Quartus基本使用方法 该部分主要介绍本次设计中用到的基本操作。3.2.1 新建工程双击桌面QUARTUS II图标进入主界面,单击软件主界面中File New Project Wizard.开始新建一个工工程,根据提示选择存储路径,输入工程名,软件会默认顶层实体名与工程名相同并显示。往下选择芯片,在此时选择Cyclone下的EP1C3T144C8,最后会显示所有选择结果,以供最后确认。3.2.2 新建图形文件双击桌面QUARTUS II图标进入主界面,单击软件主界面中File New Block Diagrams/Schematics Files。3.2.3 由VHDL 程序生成元件在经过方案比较厚,本次设计选择用原理图画顶层文件,所以要由VHDL File生成元件。具体过程为FileCreate/updateCreate Symbol Files For Current File.元件生成之后就可以进行原理图绘制。在窗口中的Project下找自己生成的元件,选定元件,OK后将其放置在原理图上适当的位置,选好所有元件后,按照设计对元件进行连线,最后再加上输入输出端口并更改端口名,保存原理图进行编译,若成功则进入下一步,否则根据error提示修改原理图直到编译成功。3.2.4 功能仿真选择FileNew.命令,打开新建文件对话框,在弹出的窗口中选择新建Vector Waveform File,点击OK建立一个空的波形编辑器窗口。在波形仿真文件界面的Name标签区内双击鼠标左键,在弹出的对话框中单击Node Finder,在弹出的窗口中单击List,并将Nodes Found全导入到Selected Nodes,单击OK,仿真图上会显示所有的输入输出端口。选定某一输入端口,在左边的工具条中选择适当的图标设置输入波形。将所有的输入端口设置完毕后保存,单击ProcessingSimulator Tool,Simulation Tool设置为Functional,单击Generate Functional Simulation Netlist。同时将overwrite simulation input file with simulation results选项打勾。待其完成后选择Simulator Tool窗口下方的的Start,完成后,最后点击Open打开仿真后的波形文件,仿真结果会覆盖在仿真图上,根据波形检查是否实现要达到的功能。3.2.5 管脚的重新分配与定位选择AssignmentsDevice.在弹出的Setting窗口下单击Device&Pin Option,在弹出的窗口中设置Unused Pins为高阻态。单击AssignmentsPins,设置好管脚名,设置完毕后保存并进行编译,编译无误后单击Programmer,确保编程器窗口左上角的Hardware Setup栏中硬件已经安装,并确保Program/Configure下的方框选中,单击start开始使用配置文件对FPGA进行配置,观察现象。4、 FIFO缓存器整体设计本设计共由三个部分组成:FIFO缓存器、分频器、消抖模块。4.1 FIFO模块4.1.2 方案论证方案一:FIFO定制该方法是指直接Quartus II自带的FIFO。通过MegaWizard Plug-In Manager来生成,只需按照步骤和要求设置参数,然后自动生成想要的FIFO缓冲器。整个过程很简单,但由于用这种方法生成FIFO缓冲器在功能实现上与设计要求有一点不同,且该方法不能增强编程能力。所以不用该方法。方案二:8个字长为9的变量构成寄存器这种方案是用VHDL语言编写的程序以实现FIFO的设计。按照设计要求自行设计输入输出端口,然后分别编写读过程和写过程,也比较方便,然后也可以生成元件图。这种方案最主要的优点是通过自己对VHDL程序的编写,以便于我们深入了解FIFO的主要功能,以及能明确它的这些功能是怎样实现的,这样对我们今后的学习也更有帮助。故选择此种方案。4.1.3 FIFO具体设计data_in:放置将被输入的数据。data_out:用于输出数据的通道。write:写使能端,当其为1时,输入通道打开,可以进行写操作。ready:读使能端,当其为1时,输出通道打开,可以进行读操作。clk:脉冲控制输入,和读写使能端一起控制数据的写入和读出。Rdinc、wrinc:缓冲器内部读写指针,两指针初始状态都指向0寄存器。当写入第一个数据时,数据存入0寄存器,同时写指针加1,指向下一个寄存器,准备接受下一个将被写入的数据。写数据时,每输出一个数据,读指针加1,准备输出下一个数据,同时输出数据以输入数据的个数为顶限。Rdptclr、wrptclr:复位读写指针,当这值为0时,指向FIFO的寄存器0。程序见附录。生成元件图如下所示:图1、FIFO元件图4.2 分频模块此模块主要是给按键消抖电路提供时间脉冲,取延时为5ms,即使得采样频率为5ms,由此根据f=1/T,算得脉冲频率为200Hz,而实验箱上提供的是20M的时钟频率,用内部计数器计算到来的脉冲数,可计算得该计数器的第16位计数周期基本符合,故取clk_out=q2(16)。将分频器生成元件,供顶层原理图使用。程序见附录,生成元件如下图所示:图2.分频元件图4.3 消抖模块本次设计需要用按键产生脉冲控制FIFO 的读写操作。在按键操作时,机械触点的弹性及电压突跳等原因,在触点闭合或开启的瞬间会出现电压抖动,实际应用中如果不进行处理将会造成误触发。常见的硬件消抖方法有:利用电容的充放电原理;利用RS触发的保持功能;由同相器组成的积分去抖电路;用反相器组成的翻转式去抖电路;不可重复触发单稳态等等。本设计采用较为简单的D触发器型消抖电路。D触发器型消抖电路设计了三个D触发器与一个三输入与门。三个D触发器串行连接,其Q输出端分别与三输入与门的输入端连接。其主要原理就是:在检测出键闭合后执行一个延时程序,产生5ms10ms的延时,让前延抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认有键按下。当检测到按键释放后,也要给5ms10ms的延时,待后沿抖动消失才能转入该键的处理程序。用程序分别编写D触发器然后在元件库中引入三输入与门,按原理连接好,生成元件。程序见附录,生成元件图如下:图3、按键消抖模块4.4 整体原理图新建一个图形设计文件,并将此设为顶层元件,然后将以上所描述模块添加到这个工程。然后将所需的元件从symbol tool中找出来,然后按照原理图的要求进行连线,并在需要的位置加入输入输出处端口并改名。保存原理图。即可得整体原理图如下所示:图4、整体原理图5、 功能仿真该设计FIFO缓冲器为核心模块,所以只对此模块进行仿真。根据前边所介绍的方法,可得仿真波形图如下所示:图5、功能仿真图6、硬件调试选好芯片类型,配置好对应的管脚,用拨码开关来控制它的输入序列,用发光二极管作为它的输出显示,用按键来控制它的脉冲输入以观察灯的的变化从而来观察FIFO的输出。打开实验箱电源,先对其进行写复位操作,然后让写使能端有效,首先用拨码开关拨至如下状态 100000000,然后按键输入脉冲,使写入第一个数。再将拨码开关拨至110000000,然后按键输入脉冲,写入第二个数,用同样的方法可输入八个数。然后对读操作进行复位,然后使读使能端有效,按键输入时间脉冲,可观察到LED显示为“亮灭灭灭灭灭灭灭灭”,与输入的第一个序列100000000相同。继续按键,可依次观察到之前输入进去的序列。至此,调试过程完成,基本功能实现无误。7、结束语本次电子线路EDA课程设计至此已经接近尾声,十天的时间虽然很短暂,但在这期间的设计过程中收获颇丰。通过这次课程设计,让我对EDA这个课程有了更深的了解,同时也进一步熟悉了Quartus II这个软件。刚拿到设计题目时,由于以前没有接触过此类设计,觉得有点棘手,但通过查阅相关资料,才发觉其实并没有想象中的那么困难,所以还是比较顺利地完成了此次设计。经过本次课程设计,我也发现了自己的很多不足,如不细心等。但是通过自己的动手动脑,以及同学老师的帮助,还是成功地完成了任务。总而言之,此次课设不仅增加了一些专业知识,同时对提高自己的思维能力和动手操作能力也有很大的帮助。我也将会更加努力,努力弥补自己的不足,勤加学习,争取在以后的课程中做得更好!参考文献1 潘松,黄继业.EDA技术与VHDL,第2版北京:清华大学出版社,20072 辛春艳编著,VHDL硬件描述语言 北京:国防工业出版社,20023 汪国强,EDA技术与应用. 北京 :电子工业出版社,2007.044 宋嘉玉,孙丽霞EDA实用技术北京:人民邮电出版社,2006. 5 齐洪喜,陆颖VHDL电路设计实用技术北京:清华大学出版社,2004.附录 FIFO模块程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity FIFO isport(data_in:in std_logic_vector(8 downto 0);data_out:out std_logic_vector(8 downto 0);wrptclr,rdptclr: in std_logic; clk:in std_logic; write,ready:in std_logic -写读使能端); end;architecture bhv of FIFO issignal RAM0 : std_logic_vector(8 downto 0);signal RAM1 : std_logic_vector(8 downto 0);signal RAM2 : std_logic_vector(8 downto 0);signal RAM3 : std_logic_vector(8 downto 0);signal RAM4 : std_logic_vector(8 downto 0);signal RAM5 : std_logic_vector(8 downto 0);signal RAM6 : std_logic_vector(8 downto 0);signal RAM7 : std_logic_vector(8 downto 0);signal wrinc: std_logic_vector(2 downto 0):=000;signal rdinc : std_logic_vector(2 downto 0):=000;beginprocess(wrptclr,clk)is -写beginif(wrptclr=0)thenwrinc0);elsif (clkevent and clk=1) thenif (write=1) thencase wrinc iswhen000 = RAM0 RAM1 RAM2 RAM3 RAM4 RAM5 RAM6 RAM7=dat

温馨提示

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

评论

0/150

提交评论