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


结语

注意巩固练习

相关文章
|
网络协议 机器人 Python
关于运行robot framework 报错解决方法,ModuleNotFoundError: No module named 'robot'
关于运行robot framework 报错解决方法,ModuleNotFoundError: No module named 'robot'
关于运行robot framework 报错解决方法,ModuleNotFoundError: No module named 'robot'
|
7月前
|
JavaScript 前端开发
ES modules: A cartoon deep-dive
ES modules: A cartoon deep-dive
66 1
|
Python
spyder下报错ModuleNotFoundError: No module named
spyder下报错ModuleNotFoundError: No module named
429 0
codeforces 344B - Simple Molecules
题意就是给出3个原子的化学价,然后组成一个分子,要保证这个分子是稳定的,如果你还记得高中化学知识的话这个很容易理解,然后让你求出1-2 2-3 1-3 号原子之间有几条键, 这里我分别用ta tb tc 表示, 用数学的方法表示出来的话就是a = tc + tb; b = ta+tc; c = ta + tb;可能有多种情况,只要输出一种即可。
43 0
|
异构计算
ModuleNotFoundError: No module named ‘mmcv._ext‘
最近想将mmsegmentation打包成exe进行使用,但是遇到了一个问题,在打包的过程中不会显示报错信息,但是在执行exe程序之后,exe会出现ModuleNotFoundError: No module named 'mmcv._ext'的报错,导致软件崩溃。
1031 0
|
TensorFlow 算法框架/工具 Python
成功解决ModuleNotFoundError: No module named '_pywrap_tensorflow_internal'
成功解决ModuleNotFoundError: No module named '_pywrap_tensorflow_internal'
|
决策智能
运筹优化25:ModuleNotFoundError: No module named ‘docplex‘
运筹优化25:ModuleNotFoundError: No module named ‘docplex‘
运筹优化25:ModuleNotFoundError: No module named ‘docplex‘
|
机器学习/深度学习 算法 安全
解决ModuleNotFoundError: No module named ‘dlib‘问题-提供3.7x与3.9两个版本
解决ModuleNotFoundError: No module named ‘dlib‘问题-提供3.7x与3.9两个版本
1184 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
202 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
117 0
HDLBits(1)——Modules:Hierarchy(中)