ModelSim入门
verilog设计进阶
时间:2014年5月5日星期一
主要收获:
1. 安装了ModelSim ALTERA 6.4a;
2. 熟悉基本流程,仿真成功;
3. 了解testbench语法基本。
为什么要学ModelSim……
1. Modelsim是专业的HDL语言仿真器,比 Quartus自带的仿真器功能强大的多.
2. Quartus simulator不支持Testbench ,只支持波形文件.vwf。vwf文件全称是矢量波形文件(Vector Waveform File),是Quartus II中仿真输入、计算、输出数据的载体。一般设计者建立波形文件时,需要自行建立复位、时钟信号以及控制和输入数据、输出数据信号等。其中工作量最大的就是输入数据的波形录入。比如要仿真仅1KB的串行输入数据量,则手工输入信号的波形要画8000个周期,不仅费时费力而且容易出错。
安装遇到的问题……
由于笔记本是win8系统,安装的是ModelSim ALTERA 6.4a,破解之后仍然打不开。解决的方法是……以管理员的身份打开。
可综合的比较器:
module compare(a, b, equal);
input a;
input b;
output equal;
assign equal = (a==b)?1:0;
endmodule
测试模块:
`timescale 1ns/1ns
module compare_test;
reg a,b;
wire equal;
initial begin
a=0;b=0;
#100 a=0;b=1;
#100 a=1;b=0;
#100 a=1;b=1;
#100 $stop;
end
compare u1(a, b, equal);
endmodule
仿真波形:
练习:
设计一个字节(8位)比较器。
要求:比较两个字节的大小,如a[7:0]大于b[7:0]输出高电平,否则输出低电平,改写测试模型,使其能进行比较全面的测试。
思考:
第一次接触testbench文件,所以有很多问题。比较困难的就是"全面的测试",需要对a和b进行所有情况的测试。分析a和b的数值都是在0~255之间,则可以对b每1ns进行一次自增,对a每256ns进行一次自增,即可实现对a和b所有情况的比较。
测试文件:
`timescale 1ns/1ns
module compare_test;
reg[7:0] a,b;
wire equal;
initial begin
a[7:0]=0;b[7:0]=0;
#100 a[7:0]=8'b0000_0001; b[7:0]=8'b0000_0010;
#100 a[7:0]=8'b0000_0010; b[7:0]=8'b0000_0010;
#100 a[7:0]=8'b1000_0001; b[7:0]=8'b0000_0010;
#100 a[7:0]=8'b1000_0001; b[7:0]=8'b1000_0001;
#100 a[7:0]=8'b1111_0001; b[7:0]=8'b1111_0001;
end
always #1 b[7:0]<=b[7:0]+1;
always #256 a[7:0]<=a[7:0]+1;
compare u1(a[7:0], b[7:0], equal);
endmodule
仿真波形图:
ModelSim入门的更多相关文章
- FPGA/SOPC学习转载
转自小時不識月http://www.cnblogs.com/yuphone/archive/2010/08/27/docs_plan.html 新网址为:http://andrewz.cn [连载计划 ...
- ModelSim仿真入门
ModelSim仿真入门之一:软件介绍 编写这个教程之前,为了让不同水平阶段的人都能阅读,我尽量做到了零基础入门这个目标,所有的操作步骤都经过缜密的思考,做到了详细再详细的程度. 如果您是FPGA开发 ...
- Modelsim的demo入门教程
写在前面的话学过MCU设计的朋友都知道,系统调试是多么的重要.而对于FPGA设计来说,仿真确实最重要的.一个完整的项目,必须有完整的仿真平台.有朋友说,按键仿真模型没法搞. 我只能说,你并不了解硬件及 ...
- ModelSim之命令行仿真入门
下面是我们的Tcl仿真步骤:启动ModelSim SE, 首先看到在在ModelSim SE右边的窗口有ModelSim> 这样的提示符.在提示符后,顺序运行以下命令: vlib work ...
- Modelsim仿真新手入门最详细教程
2021年11月15日 00 安装包/版本 我是提前在网上下好的(但这一点也给我的实验造成了"麻烦"),用的是Modelsim SE-64 2020.4版本的,学校实验室的似乎不同 ...
- 《FPGA零基础入门到精通视频教程》-第002计数器(Modelsim前仿真)
高清视频和配套讲义这里下载 http://www.fpgaw.com/thread-68524-1-1.html 优酷视频
- System Generator入门
System generator 安装之后会在Simulin模块库中添加一些Xilinx FPGA专用的模块库,包括Basic Element,Communication,Control Logi ...
- modelsim使用命令
1. 常用仿真命令 vlib work // 建立work仿真库 vmap work wrok // 映射库 vlog -cover bcest *.v // 加覆盖率分析的编 ...
- ModelSim仿真教程
本文章详细介绍了怎样用ModelSim仿真Verilog,虽然只是很简单的一个二分频器的例子,但却正式小白入门所需要的. 本教程以ModelSim SE 10.4为例 1. 新建工程 file-> ...
随机推荐
- shell脚本之字符串测试表达式
1.字符串测试操作符 字符串测试操作符的作用有:比较两个字符串是否相同.字符串的长度是否为零,字符串是否为NULL(注:bash区分零长度字符串和空字符串等) 下表为常用字符串操作符 也可以通过man ...
- MySQL索引分析及使用
一.索引介绍 1.1.什么是索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此 ...
- Dapr实现分布式有状态服务的细节
Dapr是为云上环境设计的跨语言, 事件驱动, 可以便捷的构建微服务的系统. balabala一堆, 有兴趣的小伙伴可以去了解一下. Dapr提供有状态和无状态的微服务. 大部分人都是做无状态服务(微 ...
- PS零基础入门教程--裁剪工具用法
我是IT轩,分享一下我使用PS的一些用法,希望对大家有帮助!欢迎关注微信公众号:笑林新记 PS版本:PS CC 2019 主要技术:裁剪工具. 裁剪工具主要有:裁剪工具.透视裁剪工具.切片工具和切片选 ...
- NIO源码分析:SelectionKey
SelectionKey SelectionKey,选择键,在每次通道注册到选择器上时都会创建一个SelectionKey储存在该选择器上,该SelectionKey保存了注册的通道.注册的选择器.通 ...
- null列的值不参与比较
假如数据库有表emp: empno name age 001 lucy 22 002 lily null 003 lilei nu ...
- CSS兼容性总结一点点
CSS3的兼容性,除了前缀.还有参数格式的区分,因为仍在变化中,不在这篇文章中讨论. 很想总结一下IE 6 7 8 9 10的兼容性问题,但是我实在不喜欢IE 6 7 8,在Web开发上也很少再调整到 ...
- 微信告警如何配置?用Cloud Alert快速实现微信告警
在当下互联网蓬勃发展的时代里,微信已经成为了人们生活中不可分割的一部分.作为苦逼的运维人员,我们自然也得跟得上时代的步伐,将微信添加进告警的通知方式里.如果能够将告警消息第一时间发送到微信中,更清楚地 ...
- IP 层收发报文简要剖析6--ip报文输出3 ip_push_pending_frames
L4层的协议会把数据通过ip_append_data或ip_append_page把数据线放在缓冲区,然后再显示调用ip_push_pending_frames传送数据. 把数据放在缓冲区有两个优点, ...
- 一篇文章了解_selenium
(一)安装selenium 2018年10月7日 星期日 11:14 安装python 打开 Python官网,找到"Download", 在其下拉菜单中选择自己的平台(Windo ...