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

📄 datapath.v

📁 32位元2進位SIGNED乘法器32位元SIGNED乘法器
💻 V
字号:
module MultiplierV102 (dataP, clear, loadA, loadB, dataA, dataB, shift, done, clk, start, PNtest, PNdet, addsign);//output A0;output reg [63:0] dataP; input clear, loadA, loadB, shift, done, clk, start, PNtest, PNdet, addsign;input [31:0] dataA;input [31:0] dataB;//reg A0;reg [31:0] B;reg [63:0] P;wire [31:0] P1;wire [31:0] sumT1, sumT2;reg pnA, pnB;//reg [31:0] zzz;always @ (negedge clk) begin   if (PNtest) begin       if (pnB) B <= ~B+1;       if (pnA) P[31:0] <= ~P[31:0] + 1;endendalways @ (PNdet & ~clk) if (pnB ^ pnA) P <= ~P+1; always @ (posedge clk) beginif (loadB) beginB = dataB; pnB <= B[31];endendalways @ (posedge clk) beginif (loadA) beginP[31:0] = dataA;pnA <= P[31];endendassign A0 = P[0];//assign sumT = A0 ? (P1+B+33'b00000000_00000000_00000000_000000000) :(P1+33'b00000000_00000000_00000000_000000000);assign sumT1 = P1+B+32'b0000000_00000000_00000000_000000000;assign sumT2 = P1+32'b0000000_00000000_00000000_000000000;//assign P[63:31] = A0 ? sumT1 : sumT2;always @ (negedge clk & ~done & addsign)begin    if (A0) P[63:32] <= sumT1;    else P[63:32] <= sumT2;   // zzz <= ~B + 1;endalways @ (posedge clk)case({shift, done, clear})    3'b100 : P <= {1'b0, P[63:1]};    3'b010 : dataP <= P;    3'b001 : begin    P <= 64'b00000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000;    B <= 32'b00000000_00000000_00000000_00000000;    //P1 = 32'b00000000_00000000_00000000_00000000;    //sumT1 = 32'b00000000_00000000_00000000_00000000;    //sumT2 = 32'b00000000_00000000_00000000_00000000;    end    //4'b0001 : if (start & P[0]) P[63:32] <= B;     default : P <= P;endcaseassign P1 = P[63:32];endmodule

⌨️ 快捷键说明

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