6. 简单组合逻辑

您所在的位置:网站首页 减法运算电路波形图片 6. 简单组合逻辑

6. 简单组合逻辑

2024-06-02 04:44| 来源: 网络整理| 查看: 265

6.3.3. 程序设计¶ 6.3.3.1. 模块框图¶

根据功能分析,该工程只需实现一个半加器的功能,所以设计成一个模块即可。模块命名half_adder,半加器由两个1bit的加数,分别命名为in1和in2,输出也有两个信号,为什么会是两个呢?我们不要忘记两个数加和后除了求得的“和”以外会有“进位”的情况,这里我们把进位信号单独拉出来,所以输出就有两个 信号,分别为1bit的sum和cout信号,该模块的功能是实现输入任意两个1bit加数的组合都能求得正确的和与进位值。根据上面的分析设计出的Visio框图如图 12‑4所示。

图 12‑4 模块框图

端口列表与功能总结如表格 12‑1所示。

表格 12‑1 输入输出信号描述

信号

位宽

类型

功能描述

in1

1Bit

Input

加数1

in2

1Bit

Input

加数2

sum

1Bit

Output

两个加数的求和结果

cout

1Bit

Output

两个加数求和后的进位信号

6.3.3.2. 波形图绘制¶

经分析得,in1和in2均为1bit输入信号,其任意组合有4种,就能够全覆盖验证所有的输入情况,这里我们任意画了4种输入情况,每种输入情况的组合根据相加的结果会对应输出4种求得的和与进位关系,我们根据这种关系可以轻松的列出如表格 12‑2所示的真值表,然后再根据真值表的输入与输出的对应关系画出波形图。其波形如图 12‑5所示,与真值表的关系一一对应。

表格 12‑2 半加器真值表

输入(input)

输出(output)

in1

in2

sum

cout

0

0

0

0

0

1

1

0

1

0

1

0

1

1

0

1

图 12‑5 信号波形关系图

6.3.3.3. 代码编写¶

半加器参考代码如下所示。

1 2 3 4 5 6 7 8 9 10 11 12 13 14module half_adder ( input wire in1 , //加数1 input wire in2 , //加数2 output wire sum , //两个数的加和 output wire cout //两个数加和后的进位 ); //sum:两个数加和的输出 //cout:两个数进位的输出 assign {cout, sum} = in1 + in2; endmodule

根据上面RTL代码综合出的RTL视图如图 12‑6所示,我们可以看到加法器被抽象为一个“ADDER”的基本单元。

图 12‑6 RTL视图

6.3.3.4. 仿真验证¶

仿真文件编写

半加器仿真参考代码如下所示。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42`timescale 1ns/1ns module tb_half_adder(); //reg define reg in1; reg in2; //wire define wire sum; wire cout; //初始化输入信号 initial begin in1


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3