用半加器模块设计全加器
创作时间:
作者:
@小白创作中心
用半加器模块设计全加器
引用
CSDN
1.
https://m.blog.csdn.net/2301_80417284/article/details/140063478
半加器模块设计
半加器是最基本的加法器模块,用于完成两个一位二进制数的加法运算。其Verilog实现代码如下:
module half_adder(A,B,Cout,Sum);
input A;
input B;
output Cout;
output Sum;
assign {Cout,Sum} = A + B;
endmodule
全加器模块设计
全加器是在半加器的基础上发展而来的,用于完成三个一位二进制数的加法运算。其Verilog实现代码如下:
module full_adder(A,B,Cin,Sum,Cout);
input A;
input B;
input Cin;
output Sum;
output Cout;
wire h0_Cout;
wire h1_Cout;
wire h0_Sum;
half_adder half_adder_inst0(
.A(A),
.B(B),
.Cout(h0_Cout),
.Sum(h0_Sum)
);
half_adder half_adder_inst1(
.A(h0_Sum),
.B(Cin),
.Cout(h1_Cout),
.Sum(Sum)
);
assign Cout = (h0_Cout | h1_Cout) ;
endmodule
仿真测试
为了验证全加器模块的功能正确性,可以编写相应的仿真测试代码。以下是全加器的测试代码示例:
`timescale 1ns/1ns
module full_adder_tb;
reg A;
reg B;
reg Cin;
wire Sum;
wire Cout;
full_adder full_adder_inst(
.A(A),
.B(B),
.Cin(Cin),
.Sum(Sum),
.Cout(Cout)
);
initial begin
A <= 1'd0;
B <= 1'd0;
Cin <= 1'd0;
#2000;
$stop;
end
always #10 A = {$random}%2;
always #10 B = {$random}%2;
always #10 Cin = {$random}%2;
endmodule
仿真结果如下图所示:
引脚绑定与MCS程序固化
在实际硬件实现中,需要进行引脚绑定和MCS程序固化。以下是相关的配置信息:
热门推荐
探寻历史与诗意的交融,深度游历苏州锦溪古镇
20本末世危机小说,丧尸病毒、天灾废土、外星入侵
孩子家暴如何保护:专家建议与实际操作
新冠感染后的注意事项:不只是吃药那么简单
古代皇室女性称谓解读:公主、郡主与县主
12星座适合住哪?选择理想生活地的合适指南
番石榴叶的功效与作用及药用价值是什么
绅士风度xyz:现代社交中的优雅指南
公司内部代码一般放到gitlab上面还是 代码放github安全吗
如何识别和避免投资中的常见陷阱
《黑神话:悟空》- 玩前要知道的 20 个技巧
海南的十大名菜
月圆人团圆,诗词映中秋佳节之美好祝福
热门游戏的名字有什么?探析游戏命名中的创意与套路
民事上诉流程详解:一审、二审程序及费用标准
北京二环内破旧胡同平房拆迁难题:法律、经济与文化的多重考量
治愈书单:心灵的避风港!
别再乱按摩了!这些部位的按摩,尽量别做
薪酬和工资的范围分别是什么?
Excel工人工资表怎么做最合理
静脉曲张什么情况下可以保守治疗
从《周易》看梦境与现实的关系
【家装妙招】教你7个小户型房子的软装搭配技巧,让空间变大不止一点点!
怎么样除体内湿气比较快
三伏天正是祛寒湿的好时机,这几种食物祛湿最好
揭秘透明之谜:为什么有些固体透明而有些不透明?
中医解析口苦四大原因及调理方法
美好女性深情相拥
食管反流、反酸烧心,5个中成药能调理
社保从缴15年延长到20年,要多缴十几万?以后还会延长吗?