「HDLBits题解」Arithmetic Circuits

本专栏的目的是分享可以通过HDLBits仿真的Verilog代码 以提供参考 各位可同时参考我的代码和官方题解代码 或许会有所收益

题目链接:Hadd - HDLBits

复制代码
module top_module( 
    input a, b,
    output cout, sum );
	assign cout = a & b ; 
    assign sum = a ^ b ;
endmodule

题目链接:Fadd - HDLBits

复制代码
module top_module( 
    input a, b, cin,
    output cout, sum );
	assign sum = a ^ b ^ cin ; 
    assign cout = (a & b) | (a & cin) | (b & cin) ; 
endmodule

题目链接: Adder3 - HDLBits

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

    add1 u0(a[0], b[0], cin, sum[0], cout[0]) ;
    add1 u1(a[1], b[1], cout[0], sum[1], cout[1]) ;
    add1 u2(a[2], b[2], cout[1], sum[2], cout[2]) ;

endmodule


module add1 ( input a, input b, input cin, output sum, output cout );
 
// Full adder module here
    assign sum = a ^ b ^ cin ; 
    assign cout = (a & b) | (a & cin) | (b & cin) ; 
endmodule

题目链接:Exams/m2014 q4j - HDLBits

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

    wire [4:0] cout ; 

    add1 u0(x[0], y[0], 0, sum[0], cout[0]) ;
    add1 u1(x[1], y[1], cout[0], sum[1], cout[1]) ;
    add1 u2(x[2], y[2], cout[1], sum[2], cout[2]) ;
    add1 u3(x[3], y[3], cout[2], sum[3], cout[3]) ;

    assign sum[4] = cout[3] ;

endmodule


module add1 ( input a, input b, input cin, output sum, output cout );
 
// Full adder module here
    assign sum = a ^ b ^ cin ; 
    assign cout = (a & b) | (a & cin) | (b & cin) ; 
endmodule

题目链接:Exams/ece241 2014 q1c - HDLBits

复制代码
module top_module (
    input [7:0] a,
    input [7:0] b,
    output [7:0] s,
    output overflow
); //
    // assign s = ...
    // assign overflow = ...
    assign s = a + b ;
    assign overflow = (~(a[7] ^ b[7])) & (s[7] != a[7]); 

endmodule

题目链接:Adder100 - HDLBits

复制代码
module top_module( 
    input [99:0] a, b,
    input cin,
    output cout,
    output [99:0] sum );
	assign {cout, sum} = a + b + cin ;
endmodule

题目链接:Bcdadd4 - HDLBits

复制代码
module top_module ( 
    input [15:0] a, b,
    input cin,
    output cout,
    output [15:0] sum 
); 
    wire [3:0] temp ; 

    bcd_fadd u0(a[3:0], b[3:0], cin, temp[0], sum[3:0]) ;
    bcd_fadd u1(a[7:4], b[7:4], temp[0], temp[1], sum[7:4]) ;
    bcd_fadd u2(a[11:8], b[11:8], temp[1], temp[2], sum[11:8]) ;
    bcd_fadd u3(a[15:12], b[15:12], temp[2], temp[3], sum[15:12]) ;

    assign cout = temp[3];

endmodule
相关推荐
郝旭帅电子设计团队2 小时前
图像处理是什么
图像处理·fpga开发·郝旭帅电子设计团队·郝旭帅
weixin_4526006910 小时前
D2632大电流低差压可调线性稳压器介绍,D2632可替换MIC29302
fpga开发·机器人·无人机·电动工具·车载摄像头
ARM|X86+FPGA工业主板厂家12 小时前
基于ARM+FPGA平台在精密测控领域的应用:ZYNQ千兆以太网高速数据记录仪
arm开发·fpga开发
cmc102813 小时前
275.需要双边沿触发时,直接对时钟取反会不会出问题
fpga开发
ARM|X86+FPGA工业主板厂家15 小时前
基于ARM+FPGA平台在精密测控领域的应用:ZYNQ FPGA图像预处理加速系统
arm开发·fpga开发
LCMICRO-133108477461 天前
国产长芯微LPS7118完全pin-pin替代ADP7118,是一款采用 CMOS 技术设计的低噪声、高 PSRR、快速瞬态响应、低压差线性稳压器
arm开发·单片机·嵌入式硬件·fpga开发·硬件工程·线性稳压器·adp7118
LCMICRO-133108477461 天前
国产长芯微LM3042完全P2P替代LT3042,是一款高性能低压差线性稳压器
arm开发·单片机·嵌入式硬件·fpga开发·硬件工程·线性稳压器·lt3042
ARM|X86+FPGA工业主板厂家2 天前
基于ARM+FPGA平台在精密测控领域的应用:ZYNQ高精度温振压多参融合采集系统
fpga开发
辰丁电子3 天前
PCB设计:EMMC设计规范
fpga开发·pcb设计·pcb工艺·layout·pcb layout
小蘇的FPGA3 天前
FPGA远程更新升级和测试(MultiBoot)
fpga开发