⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main_programme.v

📁 64位乘法器
💻 V
📖 第 1 页 / 共 2 页
字号:
    else        part_out3 <= {part_tmp3, Y_tmp3} ;  end                                             // dao  ci shi  suo you  si  ge bu fen ji  quan bu  qiu chu . //xia yi bu jiang bu fen ji xiang jia    always@(part_out0 or part_out1)beginif (!rst)   part_adder0<=97'b0;else      part_adder0<=part_out0 +(part_out1<<16) ;endalways@(part_out2 or part_out3)beginif (!rst)   part_adder1<=97'b0;else      part_adder1<=part_out2 +(part_out3<<16) ;end//bring  muilt outalways@(part_adder0 or part_adder1)begin if(!rst)   muilt_out<=128'b0;else   muilt_out<=part_adder0 +(part_adder1<<32);end//**************************************************////adder kuai //Produce carry P ,G always@(X_reg0 or Y_reg0)begin   if (!rst)     begin     P<=64'b0;     G<=64'b0;     end   else      begin      P<=X_reg0^ Y_reg0;      G<=X_reg0& Y_reg0;     end end // jiang P he G chuan dao  xia  yi ge register P_sec he G_sec shang qu //yi que bao  shi xu zheng que always@(P or G)beginif (!rst)   begin   P_sec<=64'b0;  endelse   begin   P_sec<=P;   endend// level 1 carry look ahead circuit always@(P[0]or G[0] or P[1] or G[1] or P[2] or G[2] or P[3] or G[3] or sel[0])   begin       CP[0]<=G[0]|(P[0]& sel[0]);       CP[1]<=G[1]|(P[1]&G[0])|(P[1]&P[0]& sel[0]);       CP[2]<=G[2]|(P[2]&G[1])|(P[2]&P[1]&G[0])|(P[2]&P[1]&P[0]& sel[0]);       P0_a<= P[0]&P[1]&P[2]&P[3];       G0_a<= G[3]|(P[3]&G[2])|(P[3]&P[2]&G[1])|(P[3]&P[2]&P[1]&G[0]);  end//carry_look_ahead n1 (P[0],G[0],P[1],G[1],P[2],G[2],P[3],G[3],1'b0,CP[0],CP[1],CP[2],P0_a,G0_a);always@(P[4]or G[4] or P[5] or G[5] or P[6] or G[6] or P[7] or G[7] or CP[3])   begin       CP[4]<=G[4]|(P[4]& CP[3]);       CP[5]<=G[5]|(P[5]&G[4])|(P[5]&P[4]& CP[3]);       CP[6]<=G[6]|(P[6]&G[5])|(P[6]&P[5]&G[4])|(P[6]&P[5]&P[4]& CP[3]);       P1_a<= P[4]&P[5]&P[6]&P[7];       G1_a<= G[7]|(P[7]&G[6])|(P[7]&P[6]&G[5])|(P[7]&P[6]&P[5]&G[4]);  end//carry_look_ahead n2 (P[4],G[4],P[5],G[5],P[6],G[6],P[7],G[7],CP[3],CP[4],CP[5],CP[6],P1_a,G1_a);always@(P[8]or G[8] or P[9] or G[9] or P[10] or G[10] or P[11] or G[11] or CP[7])   begin       CP[8]<=G[8]|(P[8]& CP[7]);       CP[9]<=G[9]|(P[9]&G[8])|(P[9]&P[8]& CP[7]);       CP[10]<=G[10]|(P[10]&G[9])|(P[10]&P[9]&G[8])|(P[10]&P[9]&P[8]& CP[7]);       P2_a<= P[8]&P[9]&P[10]&P[11];       G2_a<= G[11]|(P[11]&G[10])|(P[11]&P[10]&G[9])|(P[11]&P[10]&P[9]&G[8]);  end//carry_look_ahead n3 (P[8],G[8],P[9],G[9],P[10],G[10],P[11],G[11],CP[7],CP[8],CP[9],CP[10],P2_a,G2_a);always@(P[12]or G[12] or P[13] or G[13] or P[14] or G[14] or P[15] or G[15] or CP[11])   begin       CP[12]<=G[12]|(P[12]& CP[11]);       CP[13]<=G[13]|(P[13]&G[12])|(P[13]&P[12]& CP[11]);       CP[14]<=G[14]|(P[14]&G[13])|(P[14]&P[13]&G[12])|(P[14]&P[13]&P[12]& CP[11]);       P3_a<= P[12]&P[13]&P[14]&P[15];       G3_a<= G[15]|(P[15]&G[14])|(P[15]&P[14]&G[13])|(P[15]&P[14]&P[13]&G[12]);  end//carry_look_ahead n4 (P[12],G[12],P[13],G[13],P[14],G[14],P[15],G[15],CP[11],CP[12],CP[13],CP[14],P3_a,G3_a);always@(P[16]or G[16] or P[17] or G[17] or P[18] or G[18] or P[19] or G[19] or CP[15])   begin       CP[16]<=G[16]|(P[16]& CP[15]);       CP[17]<=G[17]|(P[17]&G[16])|(P[17]&P[16]& CP[15]);       CP[18]<=G[18]|(P[18]&G[17])|(P[18]&P[17]&G[16])|(P[18]&P[17]&P[16]& CP[15]);       P4_a<= P[16]&P[17]&P[18]&P[19];       G4_a<= G[19]|(P[19]&G[18])|(P[19]&P[18]&G[17])|(P[19]&P[18]&P[17]&G[16]);  end//carry_look_ahead n5 (P[16],G[16],P[17],G[17],P[18],G[18],P[19],G[19],CP[15],CP[16],CP[17],CP[18],P4_a,G4_a);always@(P[20]or G[20] or P[21] or G[21] or P[22] or G[22] or P[23] or G[23] or CP[19])   begin       CP[20]<=G[20]|(P[20]& CP[19]);       CP[21]<=G[21]|(P[21]&G[20])|(P[21]&P[20]& CP[19]);       CP[22]<=G[22]|(P[22]&G[21])|(P[22]&P[21]&G[20])|(P[22]&P[21]&P[20]& CP[19]);       P5_a<= P[20]&P[21]&P[22]&P[23];       G5_a<= G[23]|(P[23]&G[22])|(P[23]&P[22]&G[21])|(P[23]&P[22]&P[21]&G[20]);  end//carry_look_ahead n6 (P[20],G[20],P[21],G[21],P[22],G[22],P[23],G[23],CP[19],CP[20],CP[21],CP[22],P5_a,G5_a);always@(P[24]or G[24] or P[25] or G[25] or P[26] or G[26] or P[27] or G[27] or CP[23])   begin       CP[24]<=G[24]|(P[24]& CP[23]);       CP[25]<=G[25]|(P[25]&G[24])|(P[25]&P[24]& CP[23]);       CP[26]<=G[26]|(P[26]&G[25])|(P[26]&P[25]&G[24])|(P[26]&P[25]&P[24]& CP[23]);       P6_a<= P[24]&P[25]&P[26]&P[27];       G6_a<= G[27]|(P[27]&G[26])|(P[27]&P[26]&G[25])|(P[27]&P[26]&P[25]&G[24]);  end//carry_look_ahead n7 (P[24],G[24],P[25],G[25],P[26],G[26],P[27],G[27],CP[23],CP[24],CP[25],CP[26],P6_a,G6_a);always@(P[28]or G[28] or P[29] or G[29] or P[30] or G[30] or P[31] or G[31] or CP[27])   begin       CP[28]<=G[28]|(P[28]& CP[27]);       CP[29]<=G[29]|(P[29]&G[28])|(P[29]&P[28]& CP[27]);       CP[30]<=G[30]|(P[30]&G[29])|(P[30]&P[29]&G[28])|(P[30]&P[29]&P[28]& CP[27]);       P7_a<= P[28]&P[29]&P[30]&P[31];       G7_a<= G[31]|(P[31]&G[30])|(P[31]&P[30]&G[29])|(P[31]&P[30]&P[29]&G[28]);  end//carry_look_ahead n8 (P[28],G[28],P[29],G[29],P[30],G[30],P[31],G[31],CP[27],CP[28],CP[29],CP[30],P7_a,G7_a);always@(P[32]or G[32] or P[33] or G[33] or P[34] or G[34] or P[35] or G[35] or CP[31])   begin       CP[32]<=G[32]|(P[32]& CP[31]);       CP[33]<=G[33]|(P[33]&G[32])|(P[33]&P[32]& CP[31]);       CP[34]<=G[34]|(P[34]&G[33])|(P[34]&P[33]&G[32])|(P[34]&P[33]&P[32]& CP[31]);       P8_a<= P[32]&P[33]&P[34]&P[35];       G8_a<= G[35]|(P[35]&G[34])|(P[35]&P[34]&G[33])|(P[35]&P[34]&P[33]&G[32]);  end//carry_look_ahead n9 (P[32],G[32],P[33],G[33],P[34],G[34],P[35],G[35],CP[31],CP[32],CP[33],CP[34],P8_a,G8_a);always@(P[36]or G[36] or P[37] or G[37] or P[38] or G[38] or P[39] or G[39] or CP[35])   begin       CP[36]<=G[36]|(P[36]& CP[35]);       CP[37]<=G[37]|(P[37]&G[36])|(P[37]&P[36]& CP[35]);       CP[38]<=G[38]|(P[38]&G[37])|(P[38]&P[37]&G[36])|(P[38]&P[37]&P[36]& CP[35]);       P9_a<= P[36]&P[37]&P[38]&P[39];       G9_a<= G[39]|(P[39]&G[38])|(P[39]&P[38]&G[37])|(P[39]&P[38]&P[37]&G[36]);  end//carry_look_ahead n10 (P[36],G[36],P[37],G[37],P[38],G[38],P[39],G[39],CP[35],CP[36],CP[37],CP[38],P9_a,G9_a);always@(P[40]or G[40] or P[41] or G[41] or P[42] or G[42] or P[43] or G[43] or CP[39])   begin       CP[40]<=G[40]|(P[40]& CP[39]);       CP[41]<=G[41]|(P[41]&G[40])|(P[41]&P[40]& CP[39]);       CP[42]<=G[42]|(P[42]&G[41])|(P[42]&P[41]&G[40])|(P[42]&P[41]&P[40]& CP[39]);       P10_a<= P[40]&P[41]&P[42]&P[43];       G10_a<= G[43]|(P[43]&G[42])|(P[43]&P[42]&G[41])|(P[43]&P[42]&P[41]&G[40]);  end//carry_look_ahead n11 (P[40],G[40],P[41],G[41],P[42],G[42],P[43],G[43],CP[39],CP[40],CP[41],CP[42],P10_a,G10_a);always@(P[44]or G[44] or P[45] or G[45] or P[46] or G[46] or P[47] or G[47] or CP[43])   begin       CP[44]<=G[44]|(P[44]& CP[43]);       CP[45]<=G[45]|(P[45]&G[44])|(P[45]&P[44]& CP[43]);       CP[46]<=G[46]|(P[46]&G[45])|(P[46]&P[45]&G[44])|(P[46]&P[45]&P[44]& CP[43]);       P11_a<= P[44]&P[45]&P[46]&P[47];       G11_a<= G[47]|(P[47]&G[46])|(P[47]&P[46]&G[45])|(P[47]&P[46]&P[45]&G[44]);  end//carry_look_ahead n12 (P[44],G[44],P[45],G[45],P[46],G[46],P[47],G[47],CP[43],CP[44],CP[45],CP[46],P11_a,G11_a);always@(P[48]or G[48] or P[49] or G[49] or P[50] or G[50] or P[51] or G[51] or CP[47])   begin       CP[48]<=G[48]|(P[48]& CP[47]);       CP[49]<=G[49]|(P[49]&G[48])|(P[49]&P[48]& CP[47]);       CP[50]<=G[50]|(P[50]&G[49])|(P[50]&P[49]&G[48])|(P[50]&P[49]&P[48]& CP[47]);       P12_a<= P[48]&P[49]&P[50]&P[51];       G12_a<= G[51]|(P[51]&G[50])|(P[51]&P[50]&G[49])|(P[51]&P[50]&P[49]&G[48]);  end//carry_look_ahead n13 (P[48],G[48],P[49],G[49],P[50],G[50],P[51],G[51],CP[47],CP[48],CP[49],CP[50],P12_a,G12_a);always@(P[52]or G[52] or P[53] or G[53] or P[54] or G[54] or P[55] or G[55] or CP[51])   begin       CP[52]<=G[52]|(P[52]& CP[51]);       CP[53]<=G[53]|(P[53]&G[52])|(P[53]&P[52]& CP[51]);       CP[54]<=G[54]|(P[54]&G[53])|(P[54]&P[53]&G[52])|(P[54]&P[53]&P[52]& CP[51]);       P13_a<= P[52]&P[53]&P[54]&P[55];       G13_a<= G[55]|(P[55]&G[54])|(P[55]&P[54]&G[53])|(P[55]&P[54]&P[53]&G[52]);  end//carry_look_ahead n14 (P[52],G[52],P[53],G[53],P[54],G[54],P[55],G[55],CP[51],CP[52],CP[53],CP[54],P13_a,G13_a);always@(P[56]or G[56] or P[57] or G[57] or P[58] or G[58] or P[59] or G[59] or CP[55])   begin       CP[56]<=G[56]|(P[56]& CP[55]);       CP[57]<=G[57]|(P[57]&G[56])|(P[57]&P[56]& CP[55]);       CP[58]<=G[58]|(P[58]&G[57])|(P[58]&P[57]&G[56])|(P[58]&P[57]&P[56]& CP[55]);       P14_a<= P[56]&P[57]&P[58]&P[59];       G14_a<= G[59]|(P[59]&G[58])|(P[59]&P[58]&G[57])|(P[59]&P[58]&P[57]&G[56]);  end//carry_look_ahead n15 (P[56],G[56],P[57],G[57],P[58],G[58],P[59],G[59],CP[55],CP[56],CP[57],CP[58],P14_a,G14_a);always@(P[60]or G[60] or P[61] or G[61] or P[62] or G[62] or P[63] or G[63] or CP[59])   begin       CP[60]<=G[60]|(P[60]& CP[59]);       CP[61]<=G[61]|(P[61]&G[60])|(P[61]&P[60]& CP[59]);       CP[62]<=G[62]|(P[62]&G[61])|(P[62]&P[61]&G[60])|(P[62]&P[61]&P[60]& CP[59]);       P15_a<= P[60]&P[61]&P[62]&P[63];       G15_a<= G[63]|(P[63]&G[62])|(P[63]&P[62]&G[61])|(P[63]&P[62]&P[61]&G[60]);  end//carry_look_ahead n16 (P[60],G[60],P[61],G[61],P[62],G[62],P[63],G[63],CP[59],CP[60],CP[61],CP[62],P15_a,G15_a);//Level two carry look circuitalways@(P0_a or G0_a or P1_a or G1_a or P2_a or G2_a or P3_a or G3_a or sel[0] )   begin       CP[3]<=G0_a|(P0_a&sel[0]);       CP[7]<=G1_a|(P1_a&G0_a)|(P1_a&P0_a&sel[0]);       CP[11]<=G2_a|(P2_a&G1_a)|(P2_a&P1_a&G0_a)|(P2_a&P1_a&P0_a&sel[0]);       P0_a_a<= P0_a&P1_a&P2_a&P3_a;       G0_a_a<= G3_a|(P3_a&G2_a)|(P3_a&P2_a&G1_a)|(P3_a&P2_a&P1_a&G0_a);  end//carry_look_ahead n17 (P0_a,G0_a,P1_a,G1_a,P2_a,G2_a,P3_a,G3_a,1'b0,CP[3],CP[7],CP[11],P0_a_a,G0_a_a);always@(P4_a or G4_a or P5_a or G5_a or P6_a or G6_a or P7_a or G7_a or CP[15])   begin       CP[19]<=G4_a|(P4_a& CP[15]);       CP[23]<=G5_a|(P5_a&G4_a)|(P5_a&P4_a& CP[15]);       CP[27]<=G6_a|(P6_a&G5_a)|(P6_a&P5_a&G4_a)|(P6_a&P5_a&P4_a& CP[15]);       P1_a_a<= P4_a&P5_a&P6_a&P7_a;       G1_a_a<= G7_a|(P7_a&G6_a)|(P7_a&P6_a&G5_a)|(P7_a&P6_a&P5_a&G4_a);  end//carry_look_ahead n18 (P4_a,G4_a,P5_a,G5_a,P6_a,G6_a,P7_a,G7_a,CP[15],CP[19],CP[23],CP[27],P1_a_a,G1_a_a);always@(P8_a or G8_a or P9_a or G9_a or P10_a or G10_a or P11_a or G11_a or CP[31])   begin       CP[35]<=G8_a|(P8_a& CP[31]);       CP[39]<=G9_a|(P9_a&G8_a)|(P9_a&P8_a& CP[31]);       CP[43]<=G10_a|(P10_a&G9_a)|(P10_a&P9_a&G8_a)|(P10_a&P9_a&P8_a& CP[31]);       P2_a_a<= P8_a&P9_a&P10_a&P11_a;       G2_a_a<= G11_a|(P11_a&G10_a)|(P11_a&P10_a&G9_a)|(P11_a&P10_a&P9_a&G8_a);  end//carry_look_ahead n19 (P8_a,G8_a,P9_a,G9_a,P10_a,G10_a,P11_a,G11_a,CP[31],CP[35],CP[39],CP[43],P2_a_a,G2_a_a);always@(P12_a or G12_a or P13_a or G13_a or P14_a or G14_a or P15_a or G15_a or CP[47])   begin       CP[51]<=G12_a|(P12_a& CP[47]);       CP[55]<=G13_a|(P13_a&G12_a)|(P13_a&P12_a& CP[47]);       CP[59]<=G14_a|(P14_a&G13_a)|(P14_a&P13_a&G12_a)|(P14_a&P13_a&P12_a& CP[47]);       P3_a_a<= P12_a&P13_a&P14_a&P15_a;       G3_a_a<= G15_a|(P15_a&G14_a)|(P15_a&P14_a&G13_a)|(P15_a&P14_a&P13_a&G12_a);  end//carry_look_ahead n20 (P12_a,G12_a,P13_a,G13_a,P14_a,G14_a,P15_a,G15_a,CP[47],CP[51],CP[55],CP[59],P3_a_a,G3_a_a);// Level 3  carry look ahead circuitalways@(P0_a_a or G0_a_a or P1_a_a or G1_a_a or P2_a_a or G2_a_a or P3_a_a or G3_a_a or sel[0])   begin       CP[15]<=G0_a_a|(P0_a_a&sel[0]);       CP[31]<=G1_a_a|(P1_a_a&G0_a_a) |(P1_a_a&P0_a_a&sel[0]);       CP[47]<=G2_a_a|(P2_a_a&G1_a_a)|(P2_a_a&P1_a_a&G0_a_a)|(P2_a_a&P1_a_a&P0_a_a&sel[0]);       P0_a_a_a<= P0_a_a&P1_a_a&P2_a_a&P3_a_a;       G0_a_a_a<= G3_a_a|(P3_a_a&G2_a_a)|(P3_a_a&P2_a_a&G1_a_a)|(P3_a_a&P2_a_a&P1_a_a&G0_a_a);  end//carry_look_ahead n21 (P0_a_a,G0_a_a,P1_a_a,G1_a_a,P2_a_a,G2_a_a,P3_a_a,G3_a_a,1'b0,CP[15],CP[31],CP[47],P0_a_a_a,G0_a_a_a);//********************************************************************************//produce the top carryalways@(G[63:59] or P[63:60] )begin    if(!rst)      CP[63]<=1'b0;    else      CP[63]=G[63]|(P[63] & G[62])|(P[63] & P[62] & G[61])|(P[63]&P[62]&P[61]&G[60])|(P[63]&P[62]&P[61]&P[60]&G[59]);end//  bring result,always@(P_sec or  CP or sel[0])    begin        if(!rst)           sum[64:0]<=65'b0;        else           sum[64:0]<={CP[63],(P_sec[63:0]^{CP[62:0],sel[0]})};    end endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -