网站大量收购独家精品文档,联系QQ:2885784924

verilog同步和异步FIFO,可直接仿真和综合技巧.doc

verilog同步和异步FIFO,可直接仿真和综合技巧.doc

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
EDA/SOPC课程设计报告 题目: 同异步FIFO模块的设计与验证 姓 名: xxx 学 号: 120260320 同组人: xxx 指导教师: xxx 成 绩: 目录 目录 II 第1章 课程设计的要求 1 1.1 课程设计的目的 1 1.2 课程设计的条件 1 1.3 课程设计的要求 1 第2章 课程设计的内容 2 2.1 设计思路 2 2.2 软件流程图 2 2.3 HDL代码阐述 2 2.4 ModelSim验证 2 第3章 课程设计的心得 3 课程设计的要求 课程设计的目的 掌握FIFO设计的基本原理与方法 培养Verilog语言模块化设计的思想意识 完成一个FIFO的设计与验证 加强对课堂 ISE、 设计同步FIFO并验证(包括仿真验证、FPGA 设计异步 采用Design Compiler完成其逻辑综合,评估其面积和时序 设计要求4 完成综合后的反标FIFO(First Input First Output),即先进先出队列。在 计算机中,先入先出队列是一种传统的按序执行方法,先进入的指令先完成并引退,跟着才执行第二条指令(指令就是计算机在响应用户操作的程序代码,对用户而 言是透明的)。如所示,当CPU在某一时段来不及响应所有的指令时,指令就会被安排在FIFO队列中,比如0号指令先进入队列,接着是1号指令、2号 指令……当CPU完成当前指令以后就会从队列中取出0号指令先行执行,此时1号指令就会接替0号指令的位置,同样,2号指令、3号指令……都会向前挪一个 位置,这样解释大家清楚了吧? 在设计之初,我们只对 在前两天的工作当中,我们查阅了中外各类资料和文献,对Simulation and Synthesis Techniques for Asynchronous FIFO Design》和《Simulation and Synthesis Techniques for Asynchronous FIFO Design with Asynchronous Pointer Comparisons》为学习和参考的重要资料完成本次的课程设计。 在两天的研究中,我们敲定异步 在”写满“信号并且自动开始”读模式“,在读的状态,关键步骤就是验证是否在读空之后不再继续读。当然,这也是FIFO不再继续读,在这方面的程序设计中我们走了很多的弯路,最终在两篇重要的论文中找到了解决问题的方式,在写自己代码的时候我们也参考了文章中的代码,感到受益匪浅! 一:同步FIFO设计流程图: 二:异步FIFO设计流程图 FIFOMEMORY部分 2)sync_r2w部分 sync_w2r部分 4)wptr_full部分 5)rptr_empty部分 6) 主模块afifo部分 同步FIFO设计代码: `define DEL 1 module synfifo(clock,reset_n,data_in,read_n,write_n,data_out,full,empty); input clock,reset_n,read_n,write_n; input [0:7] data_in; output [0:7] data_out; output full,empty; wire clock,reset_n,read_n,write_n; wire [0:7] data_in; reg [0:7] data_out; wire full,empty;//? reg[7:0] fifo_mem[14:0]; reg [3:0] counter; reg[3:0] rd_pointer; reg[3:0] wr_pointer; assign #`DEL full=(counter==15)?1b1:1b0;//当计数值为15时代表已经满了 assign #`DEL empty=(counter==0)?1b1:1b0;//当计数值为0的时候代表空了 always @(posedge clock or negedge res

文档评论(0)

4753333 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档