Verilog新手入门20个项目——1,4位全加器

module add_4(cout,sum,a,b,cin);
output[3:0] sum;
output cout;
input[3:0] a,b;
input cin;
assign {cout,sum}=a+b+cin;
endmodule

4位全加器:能实现4位二进制数全加的数字电路模块,称之为四位全加器(逐位进位 超前进位)多位全加器连接可以是逐位进位,也可以是超前进位。逐位进位也称串行进位,其逻辑电路简单,但速度也较低。

module adder_4();
    wire[3:0] sum;//被测模块输出端口相连的信号定义为wire类型,便于进行检测
    wire cout;
    reg[3:0] a,b;//被测模块的输入端口相连的信号定义为reg类型,
    reg cin;
    initial
        begin//真值表
            #0 a = 4'b0001; b = 4'b1010; cin = 1'b0;
            #5 a = 4'b0010; b = 4'b1010; cin = 1'b1;
            #5 a = 4'b0010; b = 4'b1110; cin = 1'b0;
            #5 a = 4'b0011; b = 4'b1100; cin = 1'b1;
            #5 a = 4'b0111; b = 4'b1001; cin = 1'b0;
            #5 a = 4'b0001; b = 4'b1100; cin = 1'b1;
            #5 a = 4'b0011; b = 4'b1100; cin = 1'b0;
            #5 a = 4'b0111; b = 4'b1111; cin = 1'b1;
            #5 $stop;                               //时间都可以改
        end
    add_4 u1(.a(a),.b(b),.cin(cin),.sum(sum),.cout(cout));//例化
endmodule

测试模块,

测试结果,(由于我是用vivoda自带的,不是很好看,用仿真用modelsim更好)

 测试结果,

RTL显示图:

 

4位全加器电路图(4个串行进位全加器组成):

 真值表和公式可以按电路图写出来,公式没办法化简就先写出真值表,按卡诺图写出化简公式,办法总比困难多,

  • 6
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值