作业帮 > 数学 > 作业

用Verilog HDL写8位超前进位加法器程序?

来源:学生作业帮 编辑:作业帮 分类:数学作业 时间:2024/10/02 19:27:17
用Verilog HDL写8位超前进位加法器程序?
请问maosui001你能给我解释下你定义字母的含义吗?如果你有8位程序可以直接给我吗参考下吗?我已经提供悬赏分了,如果你提供的程序仿真结果正确的话我将再追加悬赏分,
module add(a,b,cb,gb,pb,s,c,g,p);
input a,b,cb,gb,pb;
output s,c,g,p;
wire c,g,p,s;
assign g=a&b;
assign p=a|b;
assign c=gb|(cb&pb);
assign s=g^p^c;
endmodule
这是一位的,重复调用8次就行了,下面是个32位的,你参考一下
module add_32(a,b,sub,s,co,n,v);
input[31:0] a,b;
input sub;
output[31:0] s;
output co,n,v;
wire[31:0] g,p,c,a,b,s;
wire n,v;
add a1(a[0],b[0]^sub,sub,0,1,s[0],c[0],g[0],p[0]);
add a2(a[1],b[1]^sub,c[0],g[0],p[0],s[1],c[1],g[1],p[1]);
add a3(a[2],b[2]^sub,c[1],g[1],p[1],s[2],c[2],g[2],p[2]);
add a4(a[3],b[3]^sub,c[2],g[2],p[2],s[3],c[3],g[3],p[3]);
add a5(a[4],b[4]^sub,c[3],g[3],p[3],s[4],c[4],g[4],p[4]);
add a6(a[5],b[5]^sub,c[4],g[4],p[4],s[5],c[5],g[5],p[5]);
add a7(a[6],b[6]^sub,c[5],g[5],p[5],s[6],c[6],g[6],p[6]);
add a8(a[7],b[7]^sub,c[6],g[6],p[6],s[7],c[7],g[7],p[7]);
add a9(a[8],b[8]^sub,c[7],g[7],p[7],s[8],c[8],g[8],p[8]);
add a10(a[9],b[9]^sub,c[8],g[8],p[8],s[9],c[9],g[9],p[9]);
add a11(a[10],b[10]^sub,c[9],g[9],p[9],s[10],c[10],g[10],p[10]);
add a12(a[11],b[11]^sub,c[10],g[10],p[10],s[11],c[11],g[11],p[11]);
add a13(a[12],b[12]^sub,c[11],g[11],p[11],s[12],c[12],g[12],p[12]);
add a14(a[13],b[13]^sub,c[12],g[12],p[12],s[13],c[13],g[13],p[13]);
add a15(a[14],b[14]^sub,c[13],g[13],p[13],s[14],c[14],g[14],p[14]);
add a16(a[15],b[15]^sub,c[14],g[14],p[14],s[15],c[15],g[15],p[15]);
add a17(a[16],b[16]^sub,c[15],g[15],p[15],s[16],c[16],g[16],p[16]);
add a18(a[17],b[17]^sub,c[16],g[16],p[16],s[17],c[17],g[17],p[17]);
add a19(a[18],b[18]^sub,c[17],g[17],p[17],s[18],c[18],g[18],p[18]);
add a20(a[19],b[19]^sub,c[18],g[18],p[18],s[19],c[19],g[19],p[19]);
add a21(a[20],b[20]^sub,c[19],g[19],p[19],s[20],c[20],g[20],p[20]);
add a22(a[21],b[21]^sub,c[20],g[20],p[20],s[21],c[21],g[21],p[21]);
add a23(a[22],b[22]^sub,c[21],g[21],p[21],s[22],c[22],g[22],p[22]);
add a24(a[23],b[23]^sub,c[22],g[22],p[22],s[23],c[23],g[23],p[23]);
add a25(a[24],b[24]^sub,c[23],g[23],p[23],s[24],c[24],g[24],p[24]);
add a26(a[25],b[25]^sub,c[24],g[24],p[24],s[25],c[25],g[25],p[25]);
add a27(a[26],b[26]^sub,c[25],g[25],p[25],s[26],c[26],g[26],p[26]);
add a28(a[27],b[27]^sub,c[26],g[26],p[26],s[27],c[27],g[27],p[27]);
add a29(a[28],b[28]^sub,c[27],g[27],p[27],s[28],c[28],g[28],p[28]);
add a30(a[29],b[29]^sub,c[28],g[28],p[28],s[29],c[29],g[29],p[29]);
add a31(a[30],b[30]^sub,c[29],g[29],p[29],s[30],c[30],g[30],p[30]);
add a32(a[31],b[31]^sub,c[30],g[30],p[30],s[31],c[31],g[31],p[31]);
assign co=c[31];
assign v=co^c[30];
assign n=s[31];
endmodule