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

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

时间: 2024-08-10 16:08:51

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

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

前言 如果你只是想检查Verilog文件的语法是否有错误,然后进行一些基本的时序仿真,那么Icarus Verilog 就是一个不错的选择.相比于各大FPGA厂商的IDE几个G的大小,Icarus Verilog 显得极其小巧,最新版安装包大小仅有17MB,支持全平台:Windows+Linux+MacOS,并且源代码开源.本文将介绍如何使用Icarus Verilog来进行verilog文件的编译和仿真. 关于 Icarus Verilog Icarus Verilog是一个轻量.免费.开源的

v3学院教你编译xilinx仿真库

1.安win->所有程序->键找到xilinx design tools –>ise design tools 里找到Simulation Library Compilation Wizard,如果modelsim 是64位就要选择64位文件夹下的,32位选择32位文件夹下的 2.找到modelsim 的安装目录把modelsim.ini 的只读属性去掉 3.Ise 仿真库编译工具,选择modelsim se 4.设置modelsim 仿真工具启动工具路径 5.语言选择 Verilog

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

软件版本:  Ubuntu14.04 32位        Qt5.4.0  32位 开源项目: vlc2.2.4: wget http://download.videolan.org/pub/videolan/vlc/2.2.4/vlc-2.2.4.tar.xz vlc-qt-0.10.0:https://github.com/vlc-qt/vlc-qt/releases 由于编译vlc-qt-0.10.0需要VLC SDK和Qt5.5.0版本以上,而vlc SDK 这个需要自己手动来编译vl

全网首创ISE入门级教程

转眼间我已经大三了,现在成为了实验室的负责人,对于下一届学生的纳新重任就交到了我的手上,想采取不同的方法暑假就可能对他们进行一些培训,所以制作了此教程,说实话,在网上还没有找到关于ISE的入门级使用教程呢!可谓是全网首创啊!话不多说,我们赶紧看看我的处女视频教程吧! 互联网是最好的学习平台,让贫富之间的教育资源差距减小,对于FPGA来说晚上的教学资料.视频非常多,但是多数为Altera的QuartusII开发套件使用,而Vidado的使用貌似这两年也多了起来,那么ISE被抛弃了吗?之前有过一个前

搭建Eclipse+MyEclipse开发环境

Eclipse+MyEclipse区别: 一个是开源免费的软件,一个是基由开源免费而开发的收费软件. MyEclipse是在Eclipse的基础上添加了更多插件... 我觉得MyEclipse比Eclipse更容易操作,使用方便.但它是收费的~-_ myEclipse是商业用途, 要注册的, 而且不开源, 因为版权问题, 所以一般的公司是不会用MYECLIPSE ECLIPSE是开源的, 也可以用于WEB开发, 比如装上WTP 插件, 就可以了 Eclipse:IBM 花了4千万美金来开发这个I

ubuntu apache2 ssl配置

Ubuntu下HTTPS配置非常简单,对大部分用户而言,使用普通的自签名证书,只需按照步骤进行就可以了,无需了解密钥.证书的更多知识,更深的背景 知识还有RSA算法.DES算法.X509规范.CA机构...等等,随便哪个方向都够学习一阵子的,所幸的是有了OpenSSL.OpenSSH等这些 开源免费的软件,把很多底层的算法.规范都集成了,对上层应用而言,只需一二三操作即可,至多到官网去查查一些特殊的命令集. 一.安装Apache $sudo apt-get install apache2 使用此

Subversion FAQ(常见问题解答)

转自:http://subversion.apache.org/faq.zh.html 常见问题: 为什么会有这样一个项目? 为了接管CVS的用户基础.确切的说,我们写了一个新的版本控制系统,它和CVS很相似,但是它修正了以前CVS所没有解决的许多问题.请看我们的首页. Subversion是私有软件的吗?我听说它是属于CollabNet公司的. 不是,Subversion一款开源/免费的软件.CollabNet公司为几个全职的开发人员支付薪水,并且拥有相关代码的版权,但是这个版权是一个Apac

Ubuntu下多服务器 Rsync同步镜像服务配置

主服务器:192.168.5.13_ubuntu 从服务器:192.168.5.11_centos ================== 1> 在两台主机上分别安装rsync=================== ubuntu安装如下: # apt-get install rsync 编译安装:下载这个免费的软件 rsync.samba.org/ 或者 samba.anu.edu.au/rsync 去官方网站下载最新的版本 解压缩进目录后执行 #./configure && make

向modesim中添加alter库 (或者在每次仿真时将库文件加入仿真文件夹一起编译)

在ModelSim中进行仿真需要加入Quartus提供的仿真库,原因是下面三个方面:    ·Quartus不支持Testbench:    ·调用了megafunction或者lpm库之类的Altera的函数:    ·时序仿真要在Modelsim下做仿真.    下面以Altera器件为例,介绍如何在ModelSim中加入Altera的仿真库,Quartus II软件中自带有Altera的仿真库,只要把它拿到ModelSim中去编译一下就可以了,具体步骤如下:1.设置仿真库路径    打开M