verilog学习记(快速入门)
来源:互联网 发布:mysql latin1 编辑:程序博客网 时间:2024/05/17 07:55
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
在前面的一篇博客中,我们说到可以使用modelsim对verilog进行测试和仿真。事实上,还有很多开源的工具可以使用,比如说iverilog+gtkwave,大家如果有兴趣,可以在网上查找相关的内容。现在的芯片设计越来越复杂,如果按照基本的门电路设计,那么效率是非常低的。恰当地使用硬件描述语言,可以有效地提高我们工作效率。同时,如果深入了解了verilog,对于我们了解芯片的设计流程也非常有益。在购物网站上,有这么一本书,书名为《计算机原理与设计-Verilog HDL版》,它从另外一个角度帮我们描述了计算机到底是怎么一回事,个人感觉内容非常好,也非常实在。
当然,回到今天的内容。有过软件开发经验的朋友都知道,我们编写代码的时候经常需要编写测试用例对代码功能进行测试。其实编写verilog代码也是一样的。最简单的verilog代码也需要两部分的内容,一部分就是实现模块功能,另外一部分就是实现testbench功能,也就是测试我们设计的模块是否满足需求。verilog代码和C语言很相似,大家不需要有什么顾虑。首先,我们还是看看verilog module的代码内容,
module add(a, b, c); input a; input b; output c; assign c = a & b;endmodule
工科的同学都学过数字电路,一般来说数字电路包括逻辑电路和时序电路。上面的代码实现就是一个最简单的逻辑功能,也就是与功能。其中a、b为输入信号,c为输出信号。那么testbench代码是什么样的呢?我们接着看,
`timescale 1ns/1nsmodule add_t; reg a; reg b; wire c; add t(a,b,c); initial begin #10 a = 1; b = 0; #10 a = 0; b = 1; #10 a = 0; b = 0; #10 a = 1; b = 1; #50 $finish; end initial $monitor("a = %d, ", a, " b = %d, ", b, "c = %d\n", c);endmodule从代码中,大家可以看到initial的内容,也可以看到add的内容。add模块表示当前实现了一个add实例,名称为t。initial模块中的内容是测试内容,从10ns开始,a为高电平、b为低电平;再过10ns,a为低电平、b为高电平;依次类推,直到信号finish为止。在每一次信号翻转的时候,我们都会利用monitor打印相关数据信息。当然,这些都是一些代码的内容,大家可以在modelsim实践一下,看一下wave或者是dataflow,会有更多的收获。
- verilog学习记(快速入门)
- Verilog HDL 快速入门
- verilog学习记(时序电路)
- verilog学习记(加法器)
- Welcome To Verilog (verilog 学习)
- verilog学习记(开头篇)
- verilog学习记(测试和验证)
- verilog 学习记(如何编写assert)
- verilog入门
- Verilog入门
- Verilog、FPGA学习(一)
- Verilog HDL 学习(一)
- Verilog HDL学习(二)
- verilog学习笔记(一)
- Verilog学习笔记(四)
- Verilog学习笔记(五)
- Verilog HDL 学习篇——快速同步FIFO
- verilog入门经验(四) 经验总结
- 久久网络收藏夹
- linux_rm
- form表单底下的button按钮点击自动提交恶心问题的解决
- 8版本控制工具svn
- winsock client & server
- verilog学习记(快速入门)
- install Python 3.3 on Ubuntu 12.04
- Entity Framework 实体关系总结
- 算数表达式逻辑表达式求值
- 10位顶级PHP大师的开发原则
- android 控件圆角的设置
- 简单的socket通信Android和Socket(一)
- Ubuntu(Linux)连接小米手机2(Android 4.0以上)管理文件的两种方式:MTP和WiFi FTP
- 学会以项目经理的视角来看待工作之20130507