当前位置:   article > 正文

4位乘法器的实现_四位乘法器

四位乘法器
  • 组合逻辑实现
  1. module mult4(
  2. input wire [3:0] a,
  3. input wire [3:0] b,
  4. output reg [7:0] y
  5. );
  6. integer i;
  7. reg [7:0] bp;
  8. reg [7:0] pv;
  9. always @(*)
  10. begin
  11. pv=8'b00000000;
  12. bp={4'b0000,b};
  13. for (i=0;i<4;i=i+1)
  14. begin
  15. if(a[i]==1)
  16. pv=pv+bp;
  17. bp={bp[6:0],1'b0};
  18. end
  19. y=pv;
  20. end
  21. endmodule

  • 时序逻辑
  1. module multi_4bits_pipelining(mul_a, mul_b, clk, rst_n, mul_out);
  2. input [3:0] mul_a, mul_b;
  3. input clk;
  4. input rst_n;
  5. output [7:0] mul_out;
  6. reg [7:0] mul_out;
  7. reg [7:0] stored0;
  8. reg [7:0] stored1;
  9. reg [7:0] stored2;
  10. reg [7:0] stored3;
  11. reg [7:0] add01;
  12. reg [7:0] add23;
  13. always @(posedge clk or negedge rst_n) begin
  14. if(!rst_n) begin
  15. mul_out <= 0;
  16. stored0 <= 0;
  17. stored1 <= 0;
  18. stored2 <= 0;
  19. stored3 <= 0;
  20. add01 <= 0;
  21. add23 <= 0;
  22. end
  23. else begin
  24. stored0 <= mul_b[0]? {4'b0, mul_a} : 8'b0;
  25. stored1 <= mul_b[1]? {3'b0, mul_a, 1'b0} : 8'b0;
  26. stored2 <= mul_b[2]? {2'b0, mul_a, 2'b0} : 8'b0;
  27. stored3 <= mul_b[3]? {1'b0, mul_a, 3'b0} : 8'b0;
  28. mul_out<= stored1 + stored0+stored3 + stored2;
  29. end
  30. end

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/707907
推荐阅读
相关标签
  

闽ICP备14008679号