同步fifo设计实验报告_第1页
同步fifo设计实验报告_第2页
同步fifo设计实验报告_第3页
同步fifo设计实验报告_第4页
同步fifo设计实验报告_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

课程设计报告 题目:同步FIFO的设计 姓名: 贾安乐 学号: 学院:电子科学与应用物理学院 专业:电子科学与技术10-3 组员: 徐健勋、兰伯章 指导老师:杨小平、杞宁 日期:2014.12.15一 课程设计要求1.课程设计的目的通过运用Verilog语言编写程序,体会程序的逻辑性,掌握基本的程序开发的注意事项。在实践中,学习掌握简单、周全的编程方法。掌握较大工程的基本开发技能。培养综合运用Modelsim,Quartus II工具进行硬件开发的能力。培养数字系统设计的基本能力。理解FIFO的定义与功能,掌握FIFO的Verilog编写方法。2.课程设计的条件FIFO的定义与功能Quartus II仿真工具3.课程设计的要求FIFO是英文First In First Out 的缩写,是一种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。 使用Verilog语言和Quartus II仿真器完成同步FIFO的设计和验证。使用Quartus II和SOPC实验箱验证设计的正确性。Verilog代码要符合微电子中心编码标准。4.Verilog语言 Verilog HDL是一种硬件描述语言(HDL:Hardware Description Language),是一种以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。 Verilogs是由Gateway设计自动化公司的工程师于1983年末创立的。当时Gateway设计自动化公司还叫做自动集成设计系统(Automated Integrated Design Systems),1985年公司将名字改成了前者。该公司的菲尔莫比(Phil Moorby)完成了Verilog的主要设计工作。1990年代初,开放Verilog国际(Open Verilog International, OVI)组织(即现在的Accellera)成立,Verilog面向公有领域开放。1992年,该组织寻求将Verilog纳入电气电子工程师学会标准 。最终,Verilog成为了电气电子工程师学会1364-1995标准,即通常所说的Verilog-95。设计人员在使用这个版本的Verilog的过程中发现了一些可改进之处。为了解决用户在使用此版本Verilog过程中反映的问题,Verilog进行了修正和扩展,这部分内容后来再次被提交给电气电子工程师学会。这个扩展后的版本后来成为了电气电子工程师学会1364-2001标准,即通常所说的Verilog-2001。Verilog-2001是对Verilog-95的一个重大改进版本,它具备一些新的实用功能,例如敏感列表、多维数组、生成语句块、命名端口连接等。目前,Verilog-2001是Verilog的最主流版本,被大多数商业电子设计自动化软件包支持。2005年,Verilog再次进行了更新,即电气电子工程师学会1364-2005标准。该版本只是对上一版本的细微修正。这个版本还包括了一个相对独立的新部分,即Verilog-AMS。这个扩展使得传统的Verilog可以对集成的模拟和混合信号系统进行建模。容易与电气电子工程师学会1364-2005标准混淆的是加强硬件验证语言特性的(电气电子工程师学会1800-2005标准),它是Verilog-2005的一个超集,它是硬件描述语言、硬件验证语言(针对验证的需求,特别加强了面对对象特性)的一个集成。2009年,IEEE 1364-2005和IEEE 1800-2005两个部分合并为IEEE 1800-2009,成为了一个新的、统一的SystemVerilog硬件描述验证语言(hardware description and verification language, HDVL)。5. Quartus II仿真器Quartus II 是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。Maxplus II 作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。目前Altera已经停止了对Maxplus II 的更新支持,Quartus II 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。Altera在Quartus II 中包含了许多诸如SignalTap II、Chip Editor和RTL Viewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了Maxplus II 友好的图形界面及简便的使用方法。Quartus II提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括:可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件;芯片(电路)平面布局连线编辑;LogicLock增量设计方法,用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块;功能强大的逻辑综合工具;完备的电路功能仿真与时序逻辑仿真工具;定时/时序分析与关键路径延时分析;自动定位编译错误;高效的期间编程与验证工具;二 课程设计的内容1.功能定义:用RAM实现一个同步先进先出(FIFO)队列设计。由写使能端控制该数据流的写入FIFO,并由读使能控制FIFO中数据的读出。写入和读出的操作由时钟的上升沿触发。当FIFO的数据满和空的时候分别设置相应的高电平加以指示。2顶层信号定义:信号名称I/O功能描述源/目标备注resetIn全局复位(低有效)管脚clkIn全局时钟管脚wrIn低有效写使能管脚rdIn低有效读使能管脚din7:0In数据输入端管脚dout7:0Out数据输出端管脚emptyOut空指示信号管脚为高时表示fifo空fullOut满指示信号管脚为高时表示fifo满3顶层模块划分及功能实现该同步fifo可划分为如下四个模块:存储器模块(RAM)用于存放及输出数据;读地址模块(rp)用于读地址的产生;写地址模块(wp)用于写地址的产生标志模块-用于产生FIFO当前空满状态。1)RAM模块本设计中的FIFO的RAM,以循环读写的方式实现;1.根据rd_addr_gen模块产生的读地址,在读使能rd为低电平的时候,将RAM中rp3:0地址中的对应单元的数据在时钟下降沿到来的时候,读出到data_out7:0中。2.根据wr_addr_gen产生的写地址和在写使能wr为低电平的时候,将输入数据(din7:0)在时钟下降沿到来的时候,写入wp3:0地址对应的单元。2)wp:该模块用于产生FIFO写数据时所用的地址。由于RAM单元可以用3位地址线寻址。本模块用3位计数器(wp 2:0)实现写地址的产生。l在复位时(reset=1),写地址值为0。l如果FIFO未满(full)且有写使能(wr)有效,则wp2:0加1;否则不变。3)rp:该模块用于产生FIFO读数据时所用的地址。由于RAM单元可以用3位地址线寻址。本模块用3位计数器(rp2:0)实现读地址的产生。l在复位时(rreset=1),读地址值为1。l如果FIFO未空(empty)且有读使能(rd_en)有效,则rp2:0加1;否则不变。4)empty和full标志产生FIFO空满标志。本模块设计并不用读写地址判定FIFO是否空满。具体计算如下:1.复位的时候,r_empty=1和w_full=0;2.如果wrn和rd同时有效的时候,表示同时对FIFO进行读写操作的时候,FIFO中的数据个数不变。3.如果wr有效且full=0,表示写操作且FIFO未满时候,FIFO中的数据个数增加了1;4.如果rd有效且empty=0,表示读操作且FIFO未满时候,FIFO中的数据个数减少了1; 5.如果rp=wp-3b010或者(rp=3b111)&(wp=3b001)或者(rp=3b111)&(wp=3b001)时,表示FIFO空,需要设置empty=1;如果rp=wp的时候,表示FIFO现在已经满,需要设置full=1。4.实验程序(verilog)module syn_fifo(clk,reset,wr,rd,din,dout,full,empty);input clk,reset,wr,rd;input7:0 din;output7:0 dout;output full,empty;wire7:0 din;wire7:0 doubt;wire full,empty;reg2:0 wp,rp;reg w_full,r_empty;reg7:0 fifo7:0; assign full=w_full; assign empty=r_empty; assign doubt=fiforp; /output the data rp pointed/data wire in the FIFO always (posedge clk) begin if (wr=1b0)&(w_full=1b0) fifowp=din; end/wp(indicate then adress of the coming new data)modified always (posedge reset or posedge clk) begin if(reset) wp=1b0; else begin if(wr=1b0)&(w_full=1b0) begin if(wp=3b111) wp=3b000; else wp=wp+1b1; end end end/rp(indicate the address of data which was readout) modefied always (posedge reset or posedge clk) begin if(reset) rp=3b111; else begin if(rd=1b0)&(r_empty=1b0) begin if(rp=3b111) rp=3b000; else rp=rp+1b1; end end end/generate empty indication always (posedge reset or posedge clk) begin if(reset) r_empty=1b1; else begin if(rd=1b0)&(wr=1b1)&(rp=wp-3b010)|(rp=3b111)&(wp=3b001)|(rp=3b110)&(wp=3b000) r_empty=1b1; else if(r_empty=1b1)&(wr=1b0) r_empty=1b0; end end/generate full indication always (posedge reset or posedge clk) begin if(reset) w_full=1b0; else begin if(rp=wp)&(wr=1b0)&(rd=1b1) w_full=1b1; else if(w_full=1b1)&(rd=1b0) w_full=1b0; end endendmodule5.实验仿真图形及结果分析先写后读,仿真图如下:分析:有仿真图知,全局使能端起初为复位状态,从输入为1时才有效;写地址使能端在输入数据位0到8时,处于有效状态,也就是正在写地址,写入8个数据时,full=1,表示已经写满了;而读地址在0到5时为高电平无效,也就是此时没有读,在输入6以后开始读地址,所以此时开始读出输入到队列的0到7。之后被读空,则empty=1。边写边读分析:由仿真图知,在wr=0时,即写地址使能端有效,在写入数据,写进3个数据1、2、3时,rd=0,即输出有效,此时开始输出;所以,堆栈中一直没有被写满数据,也就是一直full=0,。 一直写入,隔一段读出一次分析:wr=0,表示一直在写入数据,在rd=0时,才读出数据,第一次只读出了4个数据为1、2、3、4,之后rd=1,表示未读,再之后rd=0又开始读出5、6、7、一直读出,直到读完为止;因此一直未被写满过,所以full=0。三 课程设计心得体会通过为期两周的课程设计使我充分体会到了编程的美妙。并有几点心得与教训。 一、要有良好的逻辑思维。在verilog编程中良好的逻辑思维是很重要的,好的逻辑思维可以是编程简单,每个语句都要有一定的目的。特别是在测试文件中,好的编程不仅会使语句简单,而且会充分考虑所有可能出现的问题,只有这样才能写出简单易懂,优良的程序。二、要注意编程中可能出现的问题。Verilog语言虽然与C语言有些相似,但在逻辑性与时序性上与C语言有本质上的区别,在编写程序时要注

温馨提示

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

评论

0/150

提交评论