verilog 加法器

module add(
input [3:0] a,
input [3:0] b,
input cin,
output [3:0] c,
output cout
);

assign {cout,c} = a+b+cin;

endmodule

对应的testbench是

`timescale 1ns/1ns
module add_tb  ; 
 
  reg  [3:0]  a   ; 
  reg    cin   ; 
  reg  [3:0]  b   ; 
  wire    cout   ; 
  wire  [3:0]  c   ; 
  
  initial
  begin
    a =4'd11;
    b =4'd4;
    cin = 1;  
  end
  add  
   DUT  ( 
       .a (a ) ,
      .cin (cin ) ,
      .b (b ) ,
      .cout (cout ) ,
      .c (c ) ); 

endmodule

 

如果都是1位还可以这么写

assign c = a^b^cin;
assign cout =(a&&b)||(b&&cin)||(cin&&a);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值