HDLBits(1)——Modules:Hierarchy(下)

简介: 目录HDLBits——Modules:Hierarchy问题19 Module将信息连接到端口By positionBy name问题20 Connecting ports by position(Module pos)问题21 Connecting ports by name(Module name)问题22 Three modules(Module shift)问题23 Modules and vectors(Module shift8)问题24 Adder 1(Module add)问题25 Adder 2(Module fadd)问题26 Carry-selec

问题26 Carry-select adder (Module cseladd)

问题25 实现的加法器叫做行波进位加法器(RCA: Ripple-Carry Adder),缺点是计算进位输出的延迟是相当慢的(最坏的情况下,来自于进位输入),前一级加法器计算完成之前,后一级加法器不能开始计算,使得加法器的计算延迟变大。


在本练习中,为您提供与前一练习相同的模块 add16,它将两个 16 位数字与进位相加,并产生一个进位和 16 位和。您必须使用您自己的 162 对 1 多路复用器来实例化其中的三个以构建进位选择加法器。

如下图所示将模块连接在一起。提供的模块 add16 具有以下声明:

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

module top_module(
    input [31:0] a,
    input [31:0] b,
    output [31:0] sum
);
    wire [15:0] sum1;
    wire [15:0] sum2;
    wire [15:0] sum3;
    wire        cout;
    assign sum = cout ? {sum3, sum1} : {sum2, sum1};
    add16 add161(
        .a    (a[15:0]  ),
        .b    (b[15:0]  ),
        .sum  (sum1   ),
        .cin  (1'b0   ),
        .cout (cout   )
    );
    add16 add162(
        .a    (a[31:16] ),
        .b    (b[31:16] ),
        .sum  (sum2   ),
        .cin  (1'b0   ),
        .cout (     )
    );
    add16 add163(
        .a    (a[31:16] ),
        .b    (b[31:16] ),
        .sum  (sum3   ),
        .cin  (1'b1   ),
        .cout (     )
    );
endmodule


问题27 Adder–subtractor (Module addsub)

减法器可以由加法器来构建,对其中一个数取相反数(逐位取反加1)即可。最终结果是一个可以执行两种操作的电路:(a + b + 0) 和 (a + ~b + 1)。如果您想更详细地了解该电路的工作原理,请参阅 Wikipedia。


为您提供了一个 16 位加法器模块,您需要对其进行两次实例化:module add16 (

input[15:0] a, input[15:0] b, input cin, output[15:0] sum, output cout );
1

当 sub 为 1 时,使用 32 位的异或门对 b 进行取反(这也可以被视为 b[31:0] 与 sub 复制 32 次相异或),同时 sub 信号连接到加法器的进位。

module top_module(
    input [31:0] a,
    input [31:0] b,
    input sub,
    output [31:0] sum
);
    wire cout;
    wire [31:0] b_com;
    assign b_com = {32{sub}}^ b;  
    add16 add161(
        .a    (a[15:0]    ),
        .b    (b_com[15:0]  ),
        .cin  (sub      ),
        .cout (cout     ),
        .sum  (sum[15:0]    )
    );
    add16 add162(
        .a    (a[31:16]   ),
        .b    (b_com[31:16] ),
        .cin  (cout     ),
        .cout (       ),
        .sum  (sum[31:16]   )
    );
endmodule


结语

注意巩固练习

相关文章
|
JavaScript 前端开发
每天3分钟,重学ES6-ES12(十八)ES Module(一)
每天3分钟,重学ES6-ES12(十八)ES Module
93 0
|
JavaScript 前端开发
每天3分钟,重学ES6-ES12(十八)ES Module(二)
每天3分钟,重学ES6-ES12(十八)ES Module
95 0
|
决策智能
运筹优化25:ModuleNotFoundError: No module named ‘docplex‘
运筹优化25:ModuleNotFoundError: No module named ‘docplex‘
运筹优化25:ModuleNotFoundError: No module named ‘docplex‘
|
Linux API Android开发
解决ModuleNotFoundError: No module named ‘cv2‘问题
解决ModuleNotFoundError: No module named ‘cv2‘问题
8952 0
解决ModuleNotFoundError: No module named ‘cv2‘问题
|
机器学习/深度学习 算法 安全
解决ModuleNotFoundError: No module named ‘dlib‘问题-提供3.7x与3.9两个版本
解决ModuleNotFoundError: No module named ‘dlib‘问题-提供3.7x与3.9两个版本
1231 0
解决ModuleNotFoundError: No module named ‘dlib‘问题-提供3.7x与3.9两个版本
HDLBits(1)——Modules:Hierarchy(上)
目录 HDLBits——Modules:Hierarchy 问题19 Module 将信息连接到端口 By position By name 问题20 Connecting ports by position(Module pos) 问题21 Connecting ports by name(Module name) 问题22 Three modules(Module shift) 问题23 Modules and vectors(Module shift8) 问题24 Adder 1(Module add) 问题25 Adder 2(Module fadd) 问题26 Carry-selec
208 0
HDLBits(1)——Modules:Hierarchy(上)
HDLBits(1)——Modules:Hierarchy(中)
目录 HDLBits——Modules:Hierarchy 问题19 Module 将信息连接到端口 By position By name 问题20 Connecting ports by position(Module pos) 问题21 Connecting ports by name(Module name) 问题22 Three modules(Module shift) 问题23 Modules and vectors(Module shift8) 问题24 Adder 1(Module add) 问题25 Adder 2(Module fadd) 问题26 Carry-selec
122 0
HDLBits(1)——Modules:Hierarchy(中)
|
Python
ModuleNotFoundError: No module named ‘Image‘
ModuleNotFoundError: No module named ‘Image‘
404 0
ModuleNotFoundError: No module named ‘Image‘
|
计算机视觉
【Bug记录】ModuleNotFoundError: No module named ‘sklearn.grid_search‘
【Bug记录】ModuleNotFoundError: No module named ‘sklearn.grid_search‘
218 0
|
Python
ModuleNotFoundError No module named 'PIL'问题解决
ModuleNotFoundError No module named 'PIL'问题解决
192 2