1 / 53
文档名称:

实用电路设计.ppt

格式:ppt   页数:53页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

实用电路设计.ppt

上传人:分享精品 2016/1/26 文件大小:0 KB

下载得到文件列表

实用电路设计.ppt

文档介绍

文档介绍:第9章 加法器设计◆◆级连加法器级连加法器◆◆数据流描述的加法器数据流描述的加法器◆◆超前进位加法器超前进位加法器◆◆流水线加法器流水线加法器(1)级连加法器module add_jl(sum,cout,a,b,cin);input[7:0] a,b;input cin;output[7:0] sum;output cout;full_add1 f0(a[0],b[0],cin,sum[0],cin1); full_add1 f1(a[1],b[1],cin1,sum[1],cin2);full_add1 f2(a[2],b[2],cin2,sum[2],cin3);full_add1 f3(a[3],b[3],cin3,sum[3],cin4);full_add1 f4(a[4],b[4],cin4,sum[4],cin5);full_add1 f5(a[5],b[5],cin5,sum[5],cin6);full_add1 f6(a[6],b[6],cin6,sum[6],cin7);full_add1 f7(a[7],b[7],cin7,sum[7],cout);endmodule8位级连加法器代码(2)数据流描述的加法器module add_bx(cout,sum,a,b,cin);parameter WIDTH=8; input cin; output cout;input[WIDTH-1:0] a,b; output[WIDTH-1:0] sum; assign {cout,sum}=a+b+cin;endmodule全部由逻辑门实现(3) 8位超前进位加法器module add_ahead(sum,cout,a,b,cin);input[7:0] a,b;input cin;output[7:0] sum;output cout;wire[7:0] G,P;wire[7:0] C,sum;assign G[0]=a[0]&b[0]; assign P[0]=a[0]|b[0];assign C[0]=cin;assign sum[0]=G[0]^P[0]^C[0];assign G[1]=a[1]&b[1]; assign P[1]=a[1]|b[1];assign C[1]=G[0]|(P[0]&cin);assign sum[1]=G[1]^P[1]^C[1];assign G[2]=a[2]&b[2]; assign P[2]=a[2]|b[2];assign C[2]=G[1]|(P[1]&C[1]);assign sum[2]=G[2]^P[2]^C[2];assign G[3]=a[3]&b[3];assign P[3]=a[3]|b[3];assign C[3]=G[2]|(P[2]&C[2]);assign sum[3]=G[3]^P[3]^C[3];assign G[4]=a[4]&b[4];assign P[4]=a[4]|b[4];assign C[4]=G[3]|(P[3]&C[3]);assign sum[4]=G[2]^P[2]^C[2];assign G[5]=a[5]&b[5]; assign P[5]=a[5]|b[5];assign C[5]=G[4]|(P[4]&C[4]);assign sum[5]=G[5]^P[5]^C[5];assign G[6]=a[6]&b[6];assign P[6]=a[6]|b[6];assign C[6]=G[5]|(P[5]&C[5]);assign sum[6]=G[6]^P[6]^C[6];assign G[7]=a[7]&b[7]; assign P[7]=a[7]|b[7];assign C[7]=G[6]|(P[6]&C[6]);assign sum[7]=G[7]^P[7]^C[7];assign cout=G[7]|(P[7]&C[7]); endmodule(4)流水线加法器module adder8(cout,sum,a,b,cin,enable);input[7:0] a,b; input cin,enable;output[7:0] sum; reg[7:0] sum;output cout;reg cout;reg[3:0] tempa,tempb,firsts; reg firstc;always @(posedge enable)begin{firstc,firsts}=a[3:0]+b[3:0]+cin;tempa=a[7:4]; tempb=b[7:4];endalways @(posedge enable)begin{cout,sum[7:4]}=tempa+te