6. 简单组合逻辑 |
您所在的位置:网站首页 › 减法运算电路波形图片 › 6. 简单组合逻辑 |
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 |