全加器
全加器能进行家数,被加数和低位来的进位信号相加,并根据求和结果给出该进位信号。真值表如下:
输入 输出
a b c s co
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
1,电路符号
如图,,ci为低位进位,co为进位
2,设计方法
采用文本编辑发,利用Verilog HDL语言描述全加器,代码如下:
(1)行为级描述的4位全加器
module add4(s,co,a,b,ci);
output[3:0] s; //和数
output co; //进位
input[3:0] a,b; //被加数,加数
input ci; //低位进位
reg co;
reg[3:0] s;
always@(*)
begin
{co,s} = a+b+ci;
end
endmodule
(2)数据流描述的4位全加器
module add4_1 (s,co,a,b,ci);
input [3:0] a,b; //被加数,加数
input ci; //低位进位
output [3:0] s; //和数
output co; //进位
assign {co,s} = a+b+ci;
endmodule
(3)结构化描述的4位级联全加器.
//'include"full_add1.v"
module fulladd4 (s,co,a,b,ci);
output[3:0] s;
output co;
input[3:0] a,b;
input ci;
// wire ci1,ci2,ci3;
full_add1 f0(a[0],b[0],ci,s[0],ci1); //级联描述
full_add1 f1(a[1],b[1],ci1,s[1],ci2);
full_add1 f2(a[2],b[2],ci2,s[2],ci3);
full_add1 f3(a[3],b[3],ci3,s[3],co);
endmodule
//半加器代码
module full_add1(a,b,cin,sum,cout);
input a,b,cin;
output sum,cout;
wire s1,m1,m2,m3;
and (m1,a,b),
(m2,b,cin),
(m3,a,cin);
xor(s1,a,b),
(sum,s1,cin);
or(cout,m1,m2,m3);
endmodule
文章评论(0条评论)
登录后参与讨论