当前位置:   article > 正文

EDA学习记录(二)verilog加法器设计,组合逻辑乘法器设计_eda加法器

eda加法器

前言:

芝士!知识!芝士猫猫

一,verilog加法器设计

1,半加器

(1)代码

  1. module h_adder(A,B,SO,CO);
  2. input A,B;
  3. output SO,CO;
  4. assign SO= A^B;
  5. assign CO= A&B;
  6. endmodule

2,全加器

(1)代码

  1. module f_adder(ain,bin,cin,cout,sum);
  2. output cout,sum;
  3. input ain,bin,cin;
  4. wire net1,net2,net3;
  5. h_adder U1(ain,bin,net1,net2);
  6. h_adder U2(.A(net1),.SO(sum),.B(cin),.CO(net3));
  7. or U3(cout,net2,net3);
  8. endmodule

(2)仿真结果

3,算数运算符

  1. module test1(A,B,C,D,RCD,RAB,RM1,RM2,S,C0,R1,R2);
  2. input [3:0] C,D; input [3:0] A,B;
  3. output [3:0] RCD; output [3:0]RAB;
  4. output [7:0] RM1; output [7:0] RM2;
  5. output [3:0] S; output C0;
  6. output R1,R2;
  7. reg[3:0] S; reg C0;
  8. reg[3:0] RCD; reg[7:0] RM1;
  9. reg signed[3:0]RAB; reg signed[7:0]RM2;
  10. reg R1,R2;
  11. always@ (A,B,C,D)begin
  12. RCD <= C+D;
  13. RAB <= A+B;
  14. RM1 <= C*D;
  15. RM2 <= A*B;
  16. {C0,S} <= {1'b0,C} - {1'b0,D};
  17. R1<= (C>D);
  18. R2<= (A>B);
  19. end
  20. endmodule

(1)仿真代码

 

(2)显示16进制

(3)仿真显示

 5,BCD码加法器

(1)代码

  1. module BCD_ADDER(A,B,D);
  2. input [7:0]A,B; output[8:0]D;
  3. wire [4:0] DT0,DT1; reg[8:0]D; reg S;
  4. always@(DT0)
  5. begin
  6. if (DT0[4:0]>=5'b01010)
  7. begin D[3:0]=(DT0[3:0]+4'b0110); S=1'b1;end
  8. else begin D[3:0]=DT0[3:0]; S=1'b0;end
  9. end
  10. always@(DT1)
  11. begin
  12. if (DT1[4:0]>=5'b01010)
  13. begin D[7:4] = (DT1[3:0]+4'b0110); D[8]=1'b1; end
  14. else begin D[7:4] =DT1[3:0]; D[8]=1'b0; end
  15. end
  16. assign DT0=A[3:0]+B[3:0];
  17. assign DT1=A[7:4]+B[7:4]+S;
  18. endmodule

(2)仿真结果

二,组合逻辑乘法器设计

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

闽ICP备14008679号