文章目录
一、加法器
本文介绍数字逻辑电路中常用的基础组合逻辑电路加法器。它是处理器内部ALU算术逻辑单元的基础构件。
最常见加法器有半加器及全加器,区别在于全加器考虑了低位进位情况。
半加器的门级电路如下:
半加器真值表如下:
输入 输出
A B C S
0 0 0 0
1 0 0 1
0 1 0 1
1 1 1 0
半加器的逻辑表达式如下:
S = A xor B
C = A and B
全加器的门级电路如下:
全加器真值表如下:
输入 输出
A B Cin Cout S
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
全加器的逻辑表达式如下:
S = A xor B xor Cin
Cout = (A and B) or ((A xor B) and Cin)
二、verilog源码
c
// half adder
module half_adder(a, b, s, cout);
input a, b;
output s, cout;
assign s = a ^ b;
assign cout = a & b;
endmodule // half_adder
// full_adder
module full_adder(a, b, cin, s, cout);
input a, b, cin;
output s, cout;
assign s = a ^ b ^ cin;
assign cout = (a & b) | ((a ^ b) & cin);
endmodule // full_adder
三、综合及仿真结果
本文使用的综合工具为quartus13.1,软件的使用请搜索相关教程。综合生成的RTL层次网表如下,可以看出它生成的门级电路和上面的图相同。
仿真结果如下:
你也可以试着修改上述的输入值或者添加更多的输入值进行试验,观察仿真结果是否和你预期的一致!
转载请注明出处!