四位全加器

这篇博客展示了如何使用Verilog编写一个4位加法器模块adder4,并提供了对应的测试用例test_adder4。测试用例详细说明了输入变量的变化及对应的输出结果,通过$monitor显示即时状态,并使用$dumpfile保存仿真波形。
摘要由CSDN通过智能技术生成

rtl视图

6b713f82efb9422cbdefe3190f856b1c.png

 代码

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

 

tset代码

/*
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

 

仿真

41c7ac5a3a724344834a0776950723ef.png
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值