- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机设计与实践——32位先行进位加法器
32位先行进位加法器;32位超前进位加法器的进位是并行同时产生的,能够极大的减少加法器由进位引起的延时。增加了逻辑器件,但有效的减少的延迟。进位是由cla部件超前算出,本位是由不含进位的加法器算出。;Verilog HDL代码如下:
module alu_32(c2,f32,x32,y32,ciii);//32位加法器先行进位加法器
input [32:1]x32;
input [32:1]y32;
input ciii;
output [32:1]f32;
output c2;
wire c1;
wire [2:1]p;
wire [2:1]g;
alu_16 alu_16_1(g[1],p[1],f32[16:1],x32[16:1],y32[16:1],ciii);
alu_16 alu_16_2(g[2],p[2],f32[32:17],x32[32:17],y32[32:17],c1);
assign c1=g[1]|p[1]ciii;
assign c2=g[2]|p[2]g[1]|p[2]p[1]ciii;
endmodule;module alu_16(gmm,pmm,f16,x16,y16,cii);//16位加法器先行进位加法器
input [16:1]x16;
input [16:1]y16;
input cii;
output [16:1]f16;
output gmm,pmm;
wire [4:1]c;
wire [4:1]p;
wire [4:1]g;
jiafaqi_4 alu_4_1(g[1],p[1],f16[4:1],x16[4:1],y16[4:1],cii);
jiafaqi_4 alu_4_2(g[2],p[2],f16[8:5],x16[8:5],y16[8:5],c[1]);
jiafaqi_4 alu_4_3(g[3],p[3],f16[12:9],x16[12:9],y16[12:9],c[2]);
jiafaqi_4 alu_4_4(g[4],p[4],f16[16:13],x16[16:13],y16[16:13],c[3]);
cla_4 cl_4_1(c,p,g,cii);
assign pmm=p[4]p[3]p[2]p[1];
assign gmm=g[4]|p[4]g[3]|p[4]p[3]g[2]|p[4]p[3]p[2]g[1];
endmodule
;module jiafaqi_4(gm,pm,f,x,y,c0); //四位超前进位加法器
input [4:1]x; //四位x值
input [4:1]y; //四位y值
output [4:1]f; //四位加和f
output gm,pm;
input c0; //上一的级进位
wire [3:1]c; //超前进位
wire [4:1]p;
wire [4:1]g;
assign p=x|y;
assign g=xy;
assign c[1]=g[1]|p[1]c0;
assign c[2]=g[2]|p[2]g[1]|p[2]p[1]c0;
assign c[3]=g[3]|p[3]g[2]|p[2]p[3]g[1]|p[3]p[2]p[1]c0;
assign c4=g[4]|p[4]g[3]|p[4]p[3]g[2]|p[4]p[3]p[2]g[1]|p[4]p[3]p[2]p[1]c0;
assign pm=p[4]p[3]p[2]p[1];
assign gm=g[4]|p[4]g[3]|p[4]p[3]g[2]|p[4]p[3]p[2]g[1];
jiafaqi_1 jia1(x[1],y[1],c0,f[1]);
jiafaqi_1 jia2(x[2],y[2],c[1],f[2]);
jiafaqi_1 jia3(x[3],y[3],c[2],f[3]);
jiafaqi_1 jia4(x[4],y[4],c[3],f[4]);
endmodule;module jiafaqi_1(x,y,c0,f); //一位加法器模块
input x;
input y;
input c0;
output f;
assign f=(x^y)^c0;
endmodule
module cla_4(c,p,g,c0);//4位CLA部件
input [4:1]p;
input [4:1]g;
input c0;
output [4:1]c;
assign c[1]=g[1]|p[1]c0;
文档评论(0)