verilog之四位全加器的编译及仿真(用开源免费的软件——iverilog+GTKWave)

四位全加器的verilog的代码比比皆是,这里上一个比较简单的:

/*
4位全加器全加器需要有输入输出,需要有下级向上进位的输入,
需要有向上一位进位的输出。大家看一下,这个模块已经包含全部的输入输出信息。
大家都知道,N位加法器得出来的出来的和最多是N+1位
因此可以清晰从下面代码中看到相关信息。
然后assign用的是阻塞赋值。相加即满足相关的需求。
*/
module adder4(cout,sum,ina,inb,cin);
output[3:0] sum;
output cout;
input[3:0] ina,inb;
input cin; assign {cout,sum}=ina+inb+cin;
endmodule

在写testbeach文件之前,先普及一点testbeach的知识:
一般来讲,在数据类型声明时,和被测模块的输入端口相连的信号定义为reg类型,这样便于在initial语句和always语句块中对其进行赋值;和被测模块输出端口相连的信号定义为wire类型,便于进行检测。Testbench模块最重要的的任务就是利用各种合法的语句,产生适当的时序和数据,以完成测试,并达到覆盖率要求。

那么testbeach文件如下:

/*
File Name : test_adder4.v
Description : The testbench of the adder_4.v
Written By : LiMing
Data : 2011/04/18 20:13 modefied : 在仿真的时候,把延时从10ns改为5ns
: cout显示为2位
*/ //test_adder4 (top-level module)
`timescale 1ns/1ns
module test_adder4; //Declare variables
wire[3:0] sum;
wire cout;
reg[3:0] ina,inb;
reg cin; //Instantiate the module adder4
adder4 adder4_1(cout,sum,ina,inb,cin); //Stimulate the inputs, Finish the stimulation at 90 time units
initial
begin
#0 ina = 4'b0001; inb = 4'b1010; cin = 1'b0;
#5 ina = 4'b0010; inb = 4'b1010; cin = 1'b1;
#5 ina = 4'b0010; inb = 4'b1110; cin = 1'b0;
#5 ina = 4'b0011; inb = 4'b1100; cin = 1'b1;
#5 ina = 4'b0111; inb = 4'b1001; cin = 1'b0;
#5 ina = 4'b0001; inb = 4'b1100; cin = 1'b1;
#5 ina = 4'b0011; inb = 4'b1100; cin = 1'b0;
#5 ina = 4'b0111; inb = 4'b1111; cin = 1'b1;
#5 $finish;
end initial
$monitor("At time %t, ina(%b) + inb(%b) + cin(%b) = sum(%b)(%2d),cout(%b)",$time, ina, inb, cin, sum, sum, cout); initial
begin
$dumpfile("test.vcd");
$dumpvars(0,test_adder4);
end
endmodule

由于是在windows的cmd下进行命令行的运行,所以有时候每次输入一个命令显得很费时间,所以我这里又写了一个(批处理文件)bat文件:go.bat

ECHO OFF
ECHO *********************************
ECHO * Batch file
ECHO *********************************
ECHO *
ECHO ON
iverilog -o test adder4.v test_adder4.v
vvp -n test -lxt2
cp test.vcd test.lxt
gtkwave test.lxt

(说明一下,我在windows下安装了gnuwin的软件,即能在windows下用gnu的一些小的实用的工具!)哈哈,这里就可以一键运行了,上面的一些命令的解释可以到我的“wndows下如何用Iverilog+GTKWave进行verilog的编译和查看仿真波形”的博文里去看看吧。。这里就不多说了。

G:\Verilog HDL\examples\Verilog135\01>go.bat

G:\Verilog HDL\examples\Verilog135\01>ECHO OFF
*********************************
* Batch file
*********************************
* G:\Verilog HDL\examples\Verilog135\01>iverilog -o test adder4.v test_adder4.v G:\Verilog HDL\examples\Verilog135\01>vvp -n test -lxt2
LXT2 info: dumpfile test.vcd opened for output.
At time 0, ina(0001) + inb(1010) + cin(0) = sum(1011)(11),cout(0)
At time 5, ina(0010) + inb(1010) + cin(1) = sum(1101)(13),cout(0)
At time 10, ina(0010) + inb(1110) + cin(0) = sum(0000)( 0),cout(1)
At time 15, ina(0011) + inb(1100) + cin(1) = sum(0000)( 0),cout(1)
At time 20, ina(0111) + inb(1001) + cin(0) = sum(0000)( 0),cout(1)
At time 25, ina(0001) + inb(1100) + cin(1) = sum(1110)(14),cout(0)
At time 30, ina(0011) + inb(1100) + cin(0) = sum(1111)(15),cout(0)
At time 35, ina(0111) + inb(1111) + cin(1) = sum(0111)( 7),cout(1) G:\Verilog HDL\examples\Verilog135\01>cp test.vcd test.lxt G:\Verilog HDL\examples\Verilog135\01>gtkwave test.lxt

note:在monitor里面的(%2d)就是输出位宽为2的十进制数。其他同理哦!~~~

记下来来几张GTKWave的截图:

图一:

图二:

我想说就一般的练习,iverilog+GTKWave足以应付,感谢网上的牛人们!!

转载:https://www.cnblogs.com/CodeWorkerLiMing/archive/2012/04/18/2455945.html

verilog之四位全加器的编译及仿真(用开源免费的软件——iverilog+GTKWave)的更多相关文章

  1. Windows上使用iverilog+gtkwave仿真

    主要参考了: https://www.cnblogs.com/lsgxeva/p/8280662.html 谢谢! ------------------------------------------ ...

  2. S3C6410裸奔之旅——RVDS2.2编译、仿真、调试过程 LED流水灯---转的

    S3C6410裸奔之旅——RVDS2.2编译.仿真.调试过程 LED流水灯 (2012-10-13 23:56:30) 转载▼ 标签: s3c6410裸奔 ok6410 rvds2.2 rvds2.2 ...

  3. 全平台轻量开源verilog仿真工具iverilog+GTKWave使用教程

    前言 如果你只是想检查Verilog文件的语法是否有错误,然后进行一些基本的时序仿真,那么Icarus Verilog 就是一个不错的选择.相比于各大FPGA厂商的IDE几个G的大小,Icarus V ...

  4. 编译安装开源免费中文分词scws

    一.SCWS了解一下: SCWS 是 Simple Chinese Word Segmentation 的首字母缩写(即:简易中文分词系统). 这是一套基于词频词典的机械式中文分词引擎,它能将一整段的 ...

  5. 在ubuntu16.04-32bits 下编译vlc和vlc-qt开源项目

      软件版本:  Ubuntu14.04 32位        Qt5.4.0  32位 开源项目: vlc2.2.4: wget http://download.videolan.org/pub/v ...

  6. 怎么卸载用 make install 编译(源码)安装的软件?

    在linux 中用 ./configure && make && make install 后,如果想删除这个软件我应该怎么删除呢?好像有一个叫"make u ...

  7. 末学者笔记--apache编译安装及LAMP架构上线

    apache介绍 一.Apache的三种工作模式 Apache一共有3种稳定的MPM模式(多进程处理模块),它们分别是prefork.worker.event.http-2.2版本的httpd默认的m ...

  8. 全网首创ISE入门级教程

    转眼间我已经大三了,现在成为了实验室的负责人,对于下一届学生的纳新重任就交到了我的手上,想采取不同的方法暑假尽可能对他们进行一些培训,所以制作了此教程,说实话,在网上还没有找到关于ISE的入门级使用教 ...

  9. 20个免费的 JavaScript 游戏引擎分享给开发者

    这篇文章收集了20个免费的 JavaScript 游戏引擎分享给开发者.这些游戏引擎能够帮助游戏开发人员更快速高效的开发出各种好玩的游戏. 使用 HTML5.CSS3 和 Javascript 可以帮 ...

随机推荐

  1. .NET:字符集和编码学习总结

    背景 一直没有深入的学习字符集和编码的知识(现在也没有深入),今天查阅了一些资料,弄明白了一些事情,本文就简单记录一下. 字符集和编码 字符集是指一些符号组成的集合,编码是对指定字符集如何表示为字节的 ...

  2. 错误 1 error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use . See online help for details.

    出现这种警告的原因是因为我们没有使用安全的字符串处理函数.如果想屏蔽这种警告,可以使用: 还可以使用其它的方法,参考: https://www.cnblogs.com/gb2013/archive/2 ...

  3. Scurm 术语

    角色 Product Owner Scrum Master Team 工件(Backlog) Product Backlog Sprint Backlog Burndown Backlog 活动 Sp ...

  4. UVA 10790 (13.08.06)

     How Many Points of Intersection?  We have two rows. There are a dots on the toprow andb dots on the ...

  5. with(nolock)解释

    摘自: http://blog.sina.com.cn/s/blog_5fafba5e010113kr.html with(nolock)解释   所有Select加 With (NoLock)解决阻 ...

  6. python 安装whl文件

    对于安装whl格式的文件,首先要安装wheel包 利用 pip install wheel或下载再安装: 下载地址: https://pypi.python.org/pypi/wheel 解压后安装: ...

  7. Android -- SurfaceView绘制

    SurfaceView SurfaceView是View的一个特殊子类,它的目的是另外提供一个线程进行绘制操作. 步骤 1.用SurfaceView进行绘制,首先要创建一个类,继承 SurfaceVi ...

  8. [HNOI2002]营业额统计 Splay tree入门题

    题目连接:http://www.lydsy.com/JudgeOnline/problem.php?id=1588 1588: [HNOI2002]营业额统计 Time Limit: 5 Sec   ...

  9. Elasticsearch 数据搜索篇

    curl 'localhost:9200/_cat/indices?v' health index pri rep docs.count docs.deleted store.size pri.sto ...

  10. eclipse中android开发怎么修改xml文件字体大小

    windows->preference->General->appearence->Colors and Font->Basic->Text Font.点击右侧的E ...