FPGA--(verilog)一个完整工程的设计(包含设计块和激励块)及仿真
1、 模块设计完成之后,我们需要检验功能的正确性,通过设计激励块来完成测试。(可以把激励块理解成一个新的设计块,但是又和原来的设计块存在联系)
将激励块和测试块分开设计是一种良好的设计风格。激励块一般称为测试台。可以使用不同的测试台对设计块进行全面测试。
2、激励块的设计有两种模式。
一种是将激励块作为顶层模块,调用(实例引用)并直接驱动设计块,如图1。顶层为激励块,由它控制clk和reset信号,检查并显示输出信号q。
另一种是在一个虚拟的顶层模块中调用(实例引用)激励块和设计块,激励块和设计块之间通过接口进行交互,如图2。激励块驱动信号d_clk和d-reset,这两个信号则连接到设计块的clk和reset输入端口,激励模块同时检查和显示信号c_q,这个信号连接到输出端口q,顶层模块的作用只是调用(实例引用)设计块和激励块。
3、设计举例
☆设计块:我们使用自顶向下的方法设计。
①顶层模块:脉动进位计数器
module ripplp_carry_counter(q,clk,reset); output [3:0] q; input clk, reset; //调用(实例引用)四个T触发器 T_FF tff0(q[0],clk,reset); T_FF tff1(q[1],clk,reset); T_FF tff2(q[2],clk,reset); T_FF tff3(q[3],clk,reset); endmodule
②定义模块T_FF
module T_FF(q,clk,reset); output q; input clk, reset; wire d; D_FF dff0(q,d,clk,reset);//调用(实例引用)一个D触发器 not n1(d,q);//调用(实例引用)一个非门,非门是verilog语言的内置原语部件 endmodule
③定义模块D触发器
//异步复位D触发器 module D_FF(q,d,clk,reset); output q; input d,clk,reset; reg q; always @(posedge reset or negedge clk)if (reset)q<=1'b0;elseq<=d; endmodule
通过以上三步,我们按照自顶向下的设计方法完成了设计块。接下来就要对设计块施加激励信号以检验其是否正确,即设计激励块。
☆激励块:激励块可以看做是一个新的模块,但同时又和设计块一一对应。在这一例中按照前面的第一种方法来设计激励块,即在激励块中实例引用设计块。
①激励块的编写
module stimulus;reg clk; reg reset; wire [3:0] q;//实例引用已经设计好的模块 ripple_carry_counter r1(q,clk, reset);//控制驱动设计块的时钟信号,时钟周期为10个单位时间 initialclk =1'b0;//把clk设置为0 always#5 clk =~clk;//每5个时间单位时钟翻转一次,即时钟周期为10个时间单位//控制驱动设计块的reset信号 initial beginreset = 1'b1;#15 reset = 1'b0;#180 reset = 1'b1;#10 reset =1'b0;#20 $finish;//终止仿真 end//监视输出 initial$monitor($time," Output q= %d",q);endmodule
在激励块设计完成之后就可以进行仿真来验证设计块的功能正确性了。
②仿真
在激励块中信号有clk,reset,和计数器的4位输出。
信号clk的重复周期为10个单位;
信号reset在0-15和195至205两个时间区段为1,其余时刻为0;
输出信号q从0开始计数到15;
整个仿真在225个时间单位(此例中每个单位为1ns)终止。
仿真结果如下图所示:
检测输出结果为:
转载于:https://www.cnblogs.com/pdf000/p/7497531.html
FPGA--(verilog)一个完整工程的设计(包含设计块和激励块)及仿真相关推荐
- ISE14.7使用教程(一个完整工程的建立)
ISE14.7使用教程(一个完整工程的建立) 博主提到 黑金xlinix FPGA 黑金动力社区(http://www.heijin.org)如需转载,请注明出处http://www.cnblogs. ...
- keil4怎么建立c语言工程,第5节:用keil软件新建,关闭,打开一个完整工程的操作流程...
从业十年,教你单片机入门基础 第五讲: Keil平台软件的安装我就不多讲了,网上这方面的资料很多,大家可以百度一下如何安装keil的教程.下面开始讲解用keil软件新建,关闭,打开一个完整工程的操作流 ...
- 一个完整的程序化交易系统包含了哪些因素?
一个完整的程序化交易系统包含了成功的交易所需的每项决策: 1,市场--买卖什么 首要的决策是买卖什么期货品种,或者在哪个市场进行交易.如果你只在很少的几个市场中进行交易,你就大大减少了赶上趋势行情的机 ...
- 一个完整的短视频包含哪些要素?做短视频还要学会把控全局
一个完整的短视频包含哪些要素?做短视频还要学会把控全局 对于做短视频的小伙伴们来说,首先一定要了解做短视频的具体流程,有了理论知识后再上手实操,才能事半功倍.那么我们今天就一起来学习一下一个完整的短视 ...
- 一个完整计算机软件应包含,一个完整的计算机软件应包含
[名词&注释] 系统软件(system software).设计方案(design scheme).计算机硬件(computer hardware).十进制数(decimal digit).邮 ...
- keil c语言 打开文件,第5节:用keil软件新建,关闭,打开一个完整工程的操作流程...
从业十年,教你单片机入门基础 第五讲: Keil平台软件的安装我就不多讲了,网上这方面的资料很多,大家可以百度一下如何安装keil的教程.下面开始讲解用keil软件新建,关闭,打开一个完整工程的操作 ...
- 一个完整的html文件包含哪些标签,HTML基础有哪些单标签
单标签:由一个标签组成.包含: 换行; 水平分隔线: 图片: 用于搜集用户信息: 允许您为插入 XHTML 文档的对象规定 run-time 设置: 可提供有关页面的元信息(meta-informat ...
- 一个完整的URL地址包含什么
假设这是一个url地址http://localhost:8080/a/b/c?a=1&b=2#abc,里面包含的部分: protocol: 'http:',//协议 host: 'localh ...
- 如何快速搭建一个完整的移动直播系统?
**如何快速搭建一个完整的移动直播系统?** 原文连接:http://toutiao.com/a6301796359717945601/ http://toutiao.com/a62784095597 ...
最新文章
- js高级程序设计(六)面向对象
- 计算机在线作业题,中医大计算机在线作业及答案-20210412090026.docx-原创力文档
- Opengl-光照-基本光照-材质(有了材质一个物体才算是完整了)
- CloudStack的部署架构概览
- 新华三,定义服务器虚拟化市场新格局
- php class variable,解决关于PHP“Undefined variable”变量未定义
- iQOO 9系列将全球首发三星GN5传感器:对焦更快更稳
- SpringCloud Config 本地配置
- python绘制函数x^2+y^2的3D图像
- 【单片机仿真】(十一)指令系统逻辑运算指令 — 逻辑与指令ANL、逻辑或指令ORL
- 关于LANP的相关常识题
- exchange虚拟服务器,exchange服务器之为Exchange服务重建IIS虚拟目录
- 又是一年新来到,别墅翻新要趁早
- 计算机或信息化的专业职称,信息系统项目管理师是高级职称吗?
- 几种常见的服务器攻击类型
- 解读PMP考点:质量管理中规划质量、实施质量保证、实施质量控制的对比
- IOS APP 推荐
- Ubuntu Women:女娃玩电脑不输纯爷们!
- matlab基础入门学习(有这一篇就够啦)
- android studio无法打开Browse ReRepository的解决办法(无法收索到插件库的解决办法)
热门文章
- python数字转字符串固定位数_python-将String转换为64位整数映射字符以自定...
- Win10设置防火墙,使局域网能访问此电脑的Tomcat服务
- 微信android 流畅,【黑科技】微信只需这样操作,立刻提升流畅度和使用效率
- PNG和PVR之间互相转换的脚本
- 一篇文章为你深度解析HTTPS 协议 1
- UITableViewController 滚动引起的cocos2d动画暂停问题的解决
- 多线程-Threading
- ado.net Oracle中一次执行多条sql语句
- 自动生成 Makefile 的全过程详解
- 编辑框CEdit自动换行简单设置