加法器

超前进位加法器

戏子无情 提交于 2019-11-26 14:50:29
概述 之前学习了一位半加器与一/四位全加器的相关知识,接着学习超前进位加法器加深认识 八位级联进位加法器 设计文件 采用硬件行为方式描述八位全加器 123456789101112131415161718192021222324252627282930313233343536373839404142434445 module qjq(co,sum,a,b,ci); input[7:0] a,b; input ci; output[7:0] sum; output co; reg[7:0] sum; reg co; reg[7:0] G,P,C; //中间变量,分别是生产函数、传递函数、和进位函数always @(a or b or ci) begin G[0] =a[0] & b[0]; //生产函数,加数相与,产生进位 P[0] =a[0] | b[0]; //传递函数,如果a或b有不为0,则将进位输入传递 C[0] =ci; //最后位的进位输入,初始化位ci sum[0] =G[0]^ P[0] ^ C[0];//输出数据 G[1] =a[1] & b[1]; P[1] =a[1] | b[1]; C[1] =G[0] |(P[0] & C[0]);//c=ab+(a+b)ci=G|(P&ci) sum[1] =G[1] ^ P[1] ^ C[1]; G[2] =a[2] &

verilog设计加法器

左心房为你撑大大i 提交于 2019-11-26 14:49:45
概述 本文利用了硬件行为描述、数据流描述、结构描述三种方法分别写了几个加法器 一位半加法器 即两个一位的二进制数相加,得到其正常相加的结果的最后一位。 仿真波形图 硬件行为描述 设计文件 12345678910111213141516171819202122 module bjqxw(a,b,sum,cout); input a,b; output sum,cout; reg sum,cout; always @(a or b) begin case({a,b}) 2'b00:begin sum=0;cout=0; end 2'b01:begin sum=1;cout=0; end 2'b10:begin sum=1;cout=0; end 2'b11:begin sum=0;cout=1; end endcase endendmodule 仿真结构图 仿真文件 12345678910 module bjqxwsimu; reg a,b; wire sum,cout; bjqxw sl(a,b,sum,cout); initial begin a=0;b=0; end always #10 {a,b}={a,b}+1;endmodule 结构描述 设计文件 123456 module add(a,b,sum,cout); input a,b; output sum,cout;