HDLBits练习(九)Circuits_Combinational Logic_Arithmetic Circuits

Hadd

要求:实现一个半加器

module top_module( 
    input a, b,
    output cout, sum );

    assign {cout,sum} = a + b;

endmodule

Fadd

要求:实现一个全加器

module top_module( 
    input a, b, cin,
    output cout, sum );

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

endmodule

Adder3

要求:通过实例化3个1位全加器实现1个3位全加器

module top_module( 
    input [2:0] a, b,
    input cin,
    output [2:0] cout,
    output [2:0] sum );

full_adder full_adder_inst0(a[0],b[0],cin,cout[0],sum[0]);
full_adder full_adder_inst1(a[1],b[1],cout[0],cout[1],sum[1]);
full_adder full_adder_inst2(a[2],b[2],cout[1],cout[2],sum[2]);

endmodule

module full_adder(
    input a,b,cin,
    output cout,sum);
    
    assign {cout,sum} = a + b + cin;
    
endmodule

Adder (Exams/m2014 q4j)

要求:实现下图电路。

module top_module (
    input [3:0] x,
    input [3:0] y, 
    output [4:0] sum);

wire [2:0] cout;

full_adder full_adder_inst0(x[0],y[0],0,cout[0],sum[0]);
full_adder full_adder_inst1(x[1],y[1],cout[0],cout[1],sum[1]);
full_adder full_adder_inst2(x[2],y[2],cout[1],cout[2],sum[2]);
full_adder full_adder_inst3(x[3],y[3],cout[2],sum[4],sum[3]);

endmodule

module full_adder(
    input a,b,cin,
    output cout,sum);
    
    assign {cout,sum} = a + b + cin; 

    
endmodule

Signed addition overflow(Exams/ece241 2014 q1c)

要求:输入两个有符号数,输出两数之和,并判断是否有符号溢出

module top_module (
    input [7:0] a,
    input [7:0] b,
    output [7:0] s,
    output overflow
); 

    assign s = a + b;
//判断是否有符号溢出,即两个负数相加,结果一定是负数,若最高位符号为正,则表明有符号溢出
//两个正数相加同理
    assign overflow = (a[7] & b[7] & ~s[7]) | (~a[7] & ~b[7] & s[7]);

endmodule

Adder100

要求:实现100位的全加器

module top_module( 
    input [99:0] a, b,
    input cin,
    output cout,
    output [99:0] sum );

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

endmodule

Bcdadd4

要求:已提供一个名为bcd_fadd的BCD一位加法器,可以将两个BCD数字和进位相加,产生一个和与进位,实例化4个bcd_fadd来创建一个4位BCD进位加法器。

module top_module( 
    input [15:0] a, b,
    input cin,
    output cout,
    output [15:0] sum );

wire [2:0] cout_m;

bcd_fadd bcd_fadd_inst0(a[3:0],b[3:0],cin,cout_m[0],sum[3:0]);
bcd_fadd bcd_fadd_inst1(a[7:4],b[7:4],cout_m[0],cout_m[1],sum[7:4]);
bcd_fadd bcd_fadd_inst2(a[11:8],b[11:8],cout_m[1],cout_m[2],sum[11:8]);
bcd_fadd bcd_fadd_inst3(a[15:12],b[15:12],cout_m[2],cout,sum[15:12]);

endmodule

总结:本小节主要是对各种加法器的构建,加法器时各种运算电路的核心,通过对加法器与逻辑门的组合可以实现各种数学运算功能。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值