当前位置:   article > 正文

FPAG—计数器—BCD译码器—Verilog_bcd码解码 verilog

bcd码解码 verilog

1原理电路

2计数器模块代码

  1. module CNT4(clk,rst,EN,cntout);//4位计数器
  2. input clk,rst,EN; //低电平使能 高电平复位
  3. output [3:0]cntout; //高电平同步复位
  4. reg [3:0]cntout;
  5. always @(posedge clk)
  6. begin
  7. if(EN==0)
  8. begin
  9. if(rst==1)
  10. begin
  11. cntout=0;
  12. end
  13. else
  14. begin
  15. if(cntout>=15) cntout = 0;
  16. else cntout = cntout+1;
  17. end
  18. end
  19. else cntout=cntout;
  20. end
  21. endmodule

3BCD七段译码器模块

数码管显示和BCD段码之间的关系

                   

bcdout 的7位从左到右分别是a,b,c,d,e,f,g。

  1. module bcd_decoder(cntin,bcdout);
  2. input[3:0] cntin;
  3. output reg[6:0] bcdout;
  4. always@(cntin)
  5. begin
  6. case(cntin)
  7. 4'b0000:bcdout = 7'b1111110;
  8. 4'b0001:bcdout = 7'b0110000;
  9. 4'b0010:bcdout = 7'b1101101;
  10. 4'b0011:bcdout = 7'b1111001;
  11. 4'b0100:bcdout = 7'b0110011;
  12. 4'b0101:bcdout = 7'b1011011;
  13. 4'b0110:bcdout = 7'b1011111;
  14. 4'b0111:bcdout = 7'b1110000;
  15. 4'b1000:bcdout = 7'b1111111;
  16. 4'b1001:bcdout = 7'b1111001;
  17. 4'b1010:bcdout = 7'b1110111;
  18. 4'b1011:bcdout = 7'b0001111;
  19. 4'b1100:bcdout = 7'b1001110;
  20. 4'b1101:bcdout = 7'b0111101;
  21. 4'b1110:bcdout = 7'b1001111;
  22. 4'b1111:bcdout = 7'b1000111;
  23. endcase
  24. end
  25. endmodule

4顶层模块代码

  1. module LED_NUM(clk,rst,en,cntout,bedout); //顶层模块
  2. input clk,rst,en;
  3. output [3:0]cntout;
  4. output [6:0]bedout;
  5. CNT4 cnt4(.clk(clk),.rst(rst),.EN(en),.cntout(cntout));
  6. bcd_decoder decoder(.cntin(cntout),.bcdout(bedout));
  7. endmodule

5测试脚本

  1. `timescale 1 ns/ 1 ps
  2. module LED_NUM_vlg_tst();
  3. // constants
  4. // general purpose registers
  5. reg eachvec;
  6. // test vector input registers
  7. reg clk;
  8. reg en;
  9. reg rst;
  10. // wires
  11. wire [3:0] cntout;
  12. wire [6:0] bedout;
  13. // assign statements (if any)
  14. LED_NUM i1 (
  15. // port map - connection between master ports and signals/registers
  16. .clk(clk),
  17. .cntout(cntout),
  18. .en(en),
  19. .rst(rst),
  20. .bedout(bedout)
  21. );
  22. initial
  23. begin
  24. // code that executes only once
  25. // insert code here --> begin
  26. rst = 1;
  27. clk = 0;
  28. en = 0;
  29. #300;
  30. en = 0;
  31. rst = 0;
  32. #1000;
  33. rst = 1;
  34. #100;
  35. rst = 0;
  36. #500
  37. en = 1;
  38. #500;
  39. en = 0;
  40. #2000
  41. $stop;
  42. // --> end
  43. $display("Running testbench");
  44. end
  45. always #40 clk = ~clk;
  46. // optional sensitivity list
  47. // @(event1 or event2 or .... eventn)
  48. //begin
  49. // code executes for every event on sensitivity list
  50. // insert code here --> begin
  51. //@eachvec;
  52. // --> end
  53. //end
  54. endmodule

5仿真结果

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

闽ICP备14008679号