请用Verilog分别实现1位半加器和1位全加器

1.原理
半加器
全加器
当多位数相加时,半加器可用于最低位求和,并给出进位数。第二位的相加有两个待加数和,还有一个来自前面低位送来的进位数。这三个数相加,得出本位和数(全加和数)和进位数。这种就是“全加真值表:
2.编程思路
(1)根据真值表编写
按照半加器和全加器的真值表写出输出端的逻辑表达式,对半加器,输出的进位端是量输入的“与”,输出的计算结果是量输入的异或;对全加器,也按照逻辑表达式做。
//半加器模块module adder_half( inputa,inputb,output regsum,output regcout);//这里的always @(*)搭配里面的“=”阻塞赋值符号//实现的效果和 assign sum = a ^ b; assign cout = a & b;是一样的always @(*)beginsum = a ^ b;cout = a & b;endendmodule全加器:
module all_adder(cout,sum,a,b,cin);input a,b,cin;output sum,cout;wire sum,cout;assign sum=a^b^cin;assign cout=(a&b)|(a&cin)|(b&cin);endmodule3.问题汇总
(1)`timescale 1 ns/1 ps
timescale是verilog中的一种时间尺度预编译指令,用来定义仿真时的时间单位和时间精度,左边是时间单位,右边是时间精度,时间单位是用于编写激励文件,时间精度是显示时的刻度,比如#100也就是100ns。时间精度不能大于时间单位,比如timescale 1 ns/1 ps是正确的,而timescale 1 ps/1 ns是错误的。
(2)#({$random}%100)
首先,#代表延时,这个语句表示延时随机的一个时间,结合`timescale 1 ns/1 ns是延时随机的ns。
$random 是 verilog 中产生随机数的系统函数,在调用时返回一个 32 位的随机数,是带符号的整形数。有几种用法:
random 和random()意义一样,都是产生随机数;
$random%100 在-99 到 99 之间产生随机数;
{$random}%100 采用位拼接符,在 0 到 100 之间产生随机数;
如 seed =10, $random(seed) 根据 seed 值产生随机数,而后 seed 值也会更新。
(3)add t0(.cin(cin), .a(a), .b(b), .sum(sum), .count(count));
例化的格式,先建立一个叫add的模块(module),有5个引脚,分别是cin/a/b/sum/count,例化的模块叫做t0,比较简单的例化方式就是如上所示的,括号外的引脚与括号内的引脚名称完全一致,无需区分。
实际上,括号外的引脚名称代表的是模块定义时的引脚,括号内的引脚是目前实际使用的引脚名称,如可以将@大神袁的测试文件改为:
`timescale 1 ns/1 ns
module top_tb();
reg a1;
reg b1;
wire sum1;
wire count1;
initial
begin
a1 = 0;
b1 = 0;
forever
begin
#({$random}%100)
a1 = ~a1;
#({$random}%100)
b1 = ~b1;
end
end
top t0(.a(a1), .b(b1), .sum(sum1), .count(count1));
endmodule
(4)对于延时,可以采用直接赋值的延时,如#5,使用随机延时目前暂时不常用。
当仿真到想结束时,可以在initial块的最后加$finish(此处可参考@大神李),即调用系统函数结束仿真,否则,仿真在modelsim中会一直进行下去,不方便观察(在vivado中设置的第一次仿真结束时间停止,默认1ns)。
此外,这里建议使用stop来代替finish,即停止仿真,在modelsim中是暂停了仿真,而$finishi则可能会退出,看不到仿真波形。

PLC的自锁、互锁梯形图程序
M12航空插头的发展新趋势
简述超声波焊接原理及超声波技术应用
资讯 | 第七届硬创大赛华东赛区亚军好叭科技发布国内首个OpenHarmony手表 OS 发行版
新UV LED封装技术可提高10倍寿命
请用Verilog分别实现1位半加器和1位全加器
恩智浦与Kontron即将开展合作 满足下一代工业物联网需求
【参展消息】格瑞普电池(格氏ACE)现场G-Tech技术生态发布会,首日下午2:30不见不散!
中关村元坤智造工场
智慧屏兴起后,海信展示出不可小觑的实力
中兴ZM9000通过中国电信入库测试 中兴5G模组迈入新阶段
什么是固态继电器?固态继电器的原理图解
聚合物锂离子电池原理图
wifi信号弱如何解决
华硕发布了全球最强的三款无线路由器新品
自燃,巨亏,股价暴跌 特斯拉刚盈利两个季度就被打回原形
一流工厂“十项管理制度” 原来优秀生产品控是这样炼成的!
颅脑脊髓损伤撞击仪(气动)
盘点人工智能处理器芯片技术
自愈式电容器更换的步骤