微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 为什么我的乘法器不好使?

为什么我的乘法器不好使?

时间:10-02 整理:3721RD 点击:
module multiply(
               input[3:0] a,
                    input[3:0] b,
                    input clk,
                    output[7:0] product);
        reg[3:0] ma;
   reg[7:0] mb;
        reg done;
        reg[7:0] sum;
        integer i=0;
       
        initial
        begin
            ma=a;
            mb={4'b0,b};
            done=1'b0;
            sum=8'b0;
        end
   
        always @(posedge clk)
        begin
            if(i>=4)
                    begin done<=1'b1;end
            if(!done)
                begin
                 if(ma[0]) begin sum<=sum+mb; end
                        i<=i+1;
                        mb<=mb<<1;
                        ma<=ma>>1;
                end
        end
       
        assign product=sum;
endmodule
在仿真中,product一直是8'b0.....................

  代码不规范....

哦,是的。经验太少,高手指点下

4bit
同问呀,那位高手可以传个呀

module multiply(
             input[3:0] a,
             input[3:0] b,
             input clk,
             output[7:0] product);
reg[3:0] ma;
reg[7:0] mb;
reg done;
reg[7:0] sum;
reg[3:0] i;
   
always @(posedge clk)
begin
     if(done==1'b0)
  begin
      if(ma[0]==1'b1) begin sum<=sum+mb; end
      i<=i+1;
      mb<=mb<<1;
      ma<=ma>>1;
  end
end

always @(posedge clk)begin
     if(i>=4)begin done<=1'b1;end
end

always @(ma or mb or sum)begin
     $display("ma=%b,mb=%b,sum=%b",ma,mb,sum);
end

always @(a or b)begin
     done=1'b0;
  sum=8'b0;
  i=4'b0;
  ma=a;
     mb={4'b0,b};
end

assign product=done?sum:8'b0;
endmodule

very good

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top