码迷,mamicode.com
首页 > 其他好文 > 详细

先行进位加法器的实现

时间:2014-12-17 14:16:32      阅读:308      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   ar   color   os   sp   on   div   

我的verilog处女作,已通过ise仿真,过两天进行FPGA开发板仿真。暂时不给出原理图,过两天更新原理图,先准备考试O(∩_∩)O~【处女作,一天半查资料,半天敲写,两天调试,共八九次修改。】

bubuko.com,布布扣
  1 module mu0(x1,x2,s,zero,overflow);
  2 input [31:0]x1,x2;
  3 output [31:0]s;
  4 output zero,overflow;
  5 wire [31:0]p,g,c;
  6 wire [15:0]p1,g1;
  7 wire [7:0]p2,g2;
  8 wire [3:0]p3,g3;
  9 wire [1:0]p4,g4;
 10 reg zero,overflow;
 11 assign c[0]=0;
 12 
 13 mu1 i0 (x1[31:0],x2[31:0],p[31:0],g[31:0]);
 14 mu01 i161 (p[31:0],g[31:0],p1[15:0],g1[15:0]);
 15 mu02 i162 (p1[15:0],g1[15:0],p2[7:0],g2[7:0]);
 16 mu03 i163 (p2[7:0],g2[7:0],p3[3:0],g3[3:0]);
 17 mu04 i164 (p3[3:0],g3[3:0],p4[1:0],g4[1:0]);
 18 mu4 i001 (p[0],g[0],c[0],c[1]);
 19 mu4 i002 (p1[0],g1[0],c[0],c[2]);
 20 mu4 i003 (p[2],g[2],c[2],c[3]);
 21 mu4 i004 (p2[0],g2[0],c[0],c[4]);
 22 mu4 i005 (p[4],g[4],c[4],c[5]);
 23 mu4 i006 (p1[2],g1[2],c[4],c[6]);
 24 mu4 i007 (p[6],g[6],c[6],c[7]);
 25 mu4 i008 (p3[0],g3[0],c[0],c[8]);
 26 mu4 i009 (p[8],g[8],c[8],c[9]);
 27 mu4 i010 (p1[4],g1[4],c[8],c[10]);
 28 mu4 i011 (p[10],g[10],c[10],c[11]);
 29 mu4 i012 (p2[2],g2[2],c[8],c[12]);
 30 mu4 i013 (p[12],g[12],c[12],c[13]);
 31 mu4 i014 (p1[6],g1[6],c[12],c[14]);
 32 mu4 i015 (p[14],g[14],c[14],c[15]);
 33 mu4 i016 (p4[0],g4[0],c[0],c[16]);
 34 mu4 i017 (p[16],g[16],c[16],c[17]);
 35 mu4 i018 (p1[8],g1[8],c[16],c[18]);
 36 mu4 i019 (p[18],g[18],c[18],c[19]);
 37 mu4 i020 (p2[4],g2[4],c[16],c[20]);
 38 mu4 i021 (p[20],g[20],c[20],c[21]);
 39 mu4 i022 (p1[10],g1[10],c[20],c[22]);
 40 mu4 i023 (p[22],g[22],c[22],c[23]);
 41 mu4 i024 (p3[2],g3[2],c[16],c[24]);
 42 mu4 i025 (p[24],g[24],c[24],c[25]);
 43 mu4 i026 (p1[12],g1[12],c[24],c[26]);
 44 mu4 i027 (p[26],g[26],c[26],c[27]);
 45 mu4 i028 (p2[6],g2[6],c[24],c[28]);
 46 mu4 i029 (p[28],g[28],c[28],c[29]);
 47 mu4 i030 (p1[14],g1[14],c[28],c[30]);
 48 mu4 i031 (p[30],g[30],c[30],c[31]);
 49 mu3 i1 (x1[31:0],x2[31:0],c[31:0],s[31:0]);
 50 
 51 always @(s)
 52 begin
 53  zero=~(|s);
 54 end
 55 always @(x1[31] or x2[31] or s[31])
 56 begin
 57  overflow=~((x1[31]^x2[31])|(~(s[31]^x1[31])));
 58 end
 59 
 60 endmodule
 61 
 62 module mu1(x1,x2,p,g);
 63 input [31:0]x1,x2;
 64 output [31:0]p,g;
 65 assign p[31:0]=x1[31:0]|x2[31:0],g[31:0]=x1[31:0]&x2[31:0];
 66 endmodule
 67 
 68 module mu2(p1,g1,p2,g2,p3,g3);
 69 input p1,g1,p2,g2;
 70 output p3,g3;
 71 assign p3=p1&p2;
 72 assign g3=g2|(p2&g1);
 73 endmodule
 74 
 75 module mu3(x1,x2,cin,s);
 76 input [31:0]x1,x2,cin;
 77 output [31:0]s;
 78 assign s[31:0]=x1[31:0]^x2[31:0]^cin[31:0];
 79 endmodule
 80 
 81 module mu4(p,g,cin,cout);
 82 input p,g,cin;
 83 output cout;
 84 assign cout=g|(p&cin);
 85 endmodule
 86 
 87 module mu01(p,g,p1,g1);
 88 input [31:0]p,g;
 89 output [15:0]p1,g1;
 90 mu2 i101 (p[0],g[0],p[1],g[1],p1[0],g1[0]);
 91 mu2 i102 (p[2],g[2],p[3],g[3],p1[1],g1[1]);
 92 mu2 i103 (p[4],g[4],p[5],g[5],p1[2],g1[2]);
 93 mu2 i104 (p[6],g[6],p[7],g[7],p1[3],g1[3]);
 94 mu2 i105 (p[8],g[8],p[9],g[9],p1[4],g1[4]);
 95 mu2 i106 (p[10],g[10],p[11],g[11],p1[5],g1[5]);
 96 mu2 i107 (p[12],g[12],p[13],g[13],p1[6],g1[6]);
 97 mu2 i108 (p[14],g[14],p[15],g[15],p1[7],g1[7]);
 98 mu2 i109 (p[16],g[16],p[17],g[17],p1[8],g1[8]);
 99 mu2 i110 (p[18],g[18],p[19],g[19],p1[9],g1[9]);
100 mu2 i111 (p[20],g[20],p[21],g[21],p1[10],g1[10]);
101 mu2 i112 (p[22],g[22],p[23],g[23],p1[11],g1[11]);
102 mu2 i113 (p[24],g[24],p[25],g[25],p1[12],g1[12]);
103 mu2 i114 (p[26],g[26],p[27],g[27],p1[13],g1[13]);
104 mu2 i115 (p[28],g[28],p[29],g[29],p1[14],g1[14]);
105 mu2 i116 (p[30],g[30],p[31],g[31],p1[15],g1[15]);
106 endmodule
107 
108 module mu02(p1,g1,p2,g2);
109 input [15:0]p1,g1;
110 output [7:0]p2,g2;
111 mu2 i21 (p1[0],g1[0],p1[1],g1[1],p2[0],g2[0]);
112 mu2 i22 (p1[2],g1[2],p1[3],g1[3],p2[1],g2[1]);
113 mu2 i23 (p1[4],g1[4],p1[5],g1[5],p2[2],g2[2]);
114 mu2 i24 (p1[6],g1[6],p1[7],g1[7],p2[3],g2[3]);
115 mu2 i25 (p1[8],g1[8],p1[9],g1[9],p2[4],g2[4]);
116 mu2 i26 (p1[10],g1[10],p1[11],g1[11],p2[5],g2[5]);
117 mu2 i27 (p1[12],g1[12],p1[13],g1[13],p2[6],g2[6]);
118 mu2 i28 (p1[14],g1[14],p1[15],g1[15],p2[7],g2[7]);
119 endmodule
120 
121 module mu03(p2,g2,p3,g3);
122 input [7:0]p2,g2;
123 output [3:0]p3,g3;
124 mu2 i31 (p2[0],g2[0],p2[1],g2[1],p3[0],g3[0]);
125 mu2 i32 (p2[2],g2[2],p2[3],g2[3],p3[1],g3[1]);
126 mu2 i33 (p2[4],g2[4],p2[5],g2[5],p3[2],g3[2]);
127 mu2 i34 (p2[6],g2[6],p2[7],g2[7],p3[3],g3[3]);
128 endmodule
129 
130 module mu04(p3,g3,p4,g4);
131 input [3:0]p3,g3;
132 output [1:0]p4,g4;
133 mu2 i41 (p3[0],g3[0],p3[1],g3[1],p4[0],g4[0]);
134 mu2 i42 (p3[2],g3[2],p3[3],g3[3],p4[1],g4[1]);
135 endmodule
View Code

教训:看书真心不可不求甚解,走了好多弯路。。。

先行进位加法器的实现

标签:style   blog   http   ar   color   os   sp   on   div   

原文地址:http://www.cnblogs.com/jiu0821/p/4169108.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!