目录
一.1位全加器
1.原理图实现
全加器是用门电路实现两个二进制相加并求出和的组合线路,成为一位全加器,一位全加器可以处理低位进位,并输出本位加法进位。多个一位全加器进行级联可以得到多位全加器。
Ain表示被加数,Bin表示加数,Cin表示低位进位,Cout表示高位进位,Sum表示本位和
1位全加器真值表
Ain | Bin | Cin | Cout | Sum |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 1 |
0 | 1 | 0 | 0 | 1 |
0 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 0 | 1 |
1 | 0 | 1 | 1 | 0 |
1 | 1 | 0 | 1 | 0 |
1 | 1 | 1 | 1 | 1 |
半加器原理图输入
通过tool->Netlist Viewers->RTL Viewer,查看电路图
创建一个向量波形文件,选择菜单项 File→New->VWF,添加信号
功能仿真结果
时序仿真结果
全加器原理图输入
在打开半加器原理图文件情况下,选择菜中File中的Create/Update→CreateSymbolFilesforCurrentFile项,即可将当前文件变成一个元件符号存盘,以待在高层次设计中调用
查看电路图
仿真结果
下载测试
配置引脚
下载
结果
输入信号 1,1,1
输入信号1,0,0
2. Verilog代码实现
module full_adder(
//输入信号,ain表示被加数,bin表示加数,cin表示低位向高位的进位
input ain,bin,cin,
//输出信号,cout表示向高位的进位,sum表示本位的相加和
output reg cout,sum
);
reg s1,s2,s3;
always @(ain or bin or cin) begin
sum=(ain^bin)^cin;//本位和输出表达式
s1=ain&cin;
s2=bin&cin;
s3=ain&bin;
cout=(s1|s2)|s3;//高位进位输出表达式
end
endmodule
查看电路图
仿真步骤和上面相同
二.4位全加器
1.原理图实现
可以通过多个1位全加器的级联实现多位全加器。
仿真效果
功能仿真
时序仿真
2.verilog代码
module fulladder4(cout,sum,a,b,cin);
output[3:0] sum;
output cout;
input[3:0] a,b;
input cin;
assign {cout,sum}=a+b+cin;
endmodule
编译后仿真步骤相同。