📄 main_programme.v
字号:
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 + -