社区导航

 

搜索
查看: 396|回复: 0

[资源共享] (FPGA实验五):Verilog HDL语言数码管时钟(时分秒)

[复制链接]
回帖奖励 10 枚芯币 回复本帖可获得 2 枚芯币奖励! 每人限 1 次(中奖概率 30%)

395

TA的帖子

7

TA的资源

版主

Rank: 6Rank: 6

发表于 2019-4-26 19:49 | 显示全部楼层 |阅读模式
本帖最后由 bqgup 于 2019-4-26 19:51 编辑
Verilog HDL语言写得数码管时钟

  1. module smg(
  2.                         input ext_clk_50M,
  3.                         inout reg div_clk_1K,
  4.                         output reg[7:0]wei_xuan,
  5.                         output reg[7:0]duan_xuan
  6.                         );

  7. reg [31:0]cnt;
  8. reg [31:0]cnt1;//time
  9. reg div_clk_1Hz;

  10. reg [7:0]sec;
  11. reg [7:0]min;
  12. reg [7:0]h;

  13. reg [2:0]duan_num;


  14. always [url=home.php?mod=space&uid=775551]@[/url] (posedge ext_clk_50M)//scan clk

  15. if(cnt == 32'd10_000)
  16. begin
  17.         cnt <= 32'd0;
  18.         div_clk_1K <= ~div_clk_1K;
  19. end
  20. else cnt <= cnt + 32'd1;

  21. always @ (posedge ext_clk_50M)//time clk

  22. if(cnt1 == 32'd25_000_000)
  23. begin
  24.         cnt1 <= 32'd0;
  25.         div_clk_1Hz <= ~div_clk_1Hz;
  26. end
  27. else cnt1 <= cnt1 + 32'd1;
  28. ////////////////////////////////////////////////////////////////
  29. always @(posedge div_clk_1Hz)

  30. if(sec == 8'd59)
  31. begin
  32.          sec <= 8'd0;
  33.          min <= min + 8'd1;
  34.          if(min == 8'd59)
  35.          begin
  36.                 min <= 8'd0;
  37.                 h <= h + 8'd1;
  38.                 if(h == 8'd23)
  39.                 h <= 8'd0;
  40.          end
  41. end

  42. else sec <= sec + 8'd1;
  43. ////////////////////////////////////////////////////////////////

  44. always @ (posedge div_clk_1K)
  45. if(duan_num == 3'b110) duan_num <= 3'b0;
  46. else duan_num <= duan_num + 3'b1;

  47. always @ (sec or min or h or duan_num)//encoder
  48.         if(duan_num == 3'b001)
  49.         begin
  50.                 wei_xuan <= 8'b0111_1111;
  51.                 case(sec % 10)
  52.                                 
  53.                         8'd0: duan_xuan <= 8'b1100_0000;//0

  54.                         8'd1: duan_xuan <= 8'b1111_1001;//1

  55.                         8'd2: duan_xuan <= 8'b1010_0100;//2

  56.                         8'd3: duan_xuan <= 8'b1011_0000;//3

  57.                         8'd4: duan_xuan <= 8'b1001_1001;//4

  58.                         8'd5: duan_xuan <= 8'b1001_0010;//5

  59.                         8'd6: duan_xuan <= 8'b1000_0011;//6

  60.                         8'd7: duan_xuan <= 8'b1111_1000;//7

  61.                         8'd8: duan_xuan <= 8'b1000_0000;//8

  62.                         8'd9: duan_xuan <= 8'b1001_0000;//9
  63.                 endcase
  64.         end
  65.         else if(duan_num == 3'b010)
  66.         begin
  67.                 wei_xuan <= 8'b1011_1111;
  68.                 case(sec / 10)
  69.                                 
  70.                         8'd0: duan_xuan <= 8'b1100_0000;//0

  71.                         8'd1: duan_xuan <= 8'b1111_1001;//1

  72.                         8'd2: duan_xuan <= 8'b1010_0100;//2

  73.                         8'd3: duan_xuan <= 8'b1011_0000;//3

  74.                         8'd4: duan_xuan <= 8'b1001_1001;//4

  75.                         8'd5: duan_xuan <= 8'b1001_0010;//5

  76.                         8'd6: duan_xuan <= 8'b1000_0011;//6

  77.                         8'd7: duan_xuan <= 8'b1111_1000;//7

  78.                         8'd8: duan_xuan <= 8'b1000_0000;//8

  79.                         8'd9: duan_xuan <= 8'b1001_0000;//9
  80.                 endcase
  81.         end
  82.         else if(duan_num == 3'b011)
  83.         begin
  84.                 wei_xuan <= 8'b1110_1111;
  85.                 case(min % 10)
  86.                                 
  87.                         8'd0: duan_xuan <= 8'b1100_0000;//0

  88.                         8'd1: duan_xuan <= 8'b1111_1001;//1

  89.                         8'd2: duan_xuan <= 8'b1010_0100;//2

  90.                         8'd3: duan_xuan <= 8'b1011_0000;//3

  91.                         8'd4: duan_xuan <= 8'b1001_1001;//4

  92.                         8'd5: duan_xuan <= 8'b1001_0010;//5

  93.                         8'd6: duan_xuan <= 8'b1000_0011;//6

  94.                         8'd7: duan_xuan <= 8'b1111_1000;//7

  95.                         8'd8: duan_xuan <= 8'b1000_0000;//8

  96.                         8'd9: duan_xuan <= 8'b1001_0000;//9
  97.                 endcase
  98.         end
  99.         
  100.         else if(duan_num == 3'b100)
  101.         begin
  102.                 wei_xuan <= 8'b1111_0111;
  103.                 case(min / 10)
  104.                                 
  105.                         8'd0: duan_xuan <= 8'b1100_0000;//0

  106.                         8'd1: duan_xuan <= 8'b1111_1001;//1

  107.                         8'd2: duan_xuan <= 8'b1010_0100;//2

  108.                         8'd3: duan_xuan <= 8'b1011_0000;//3

  109.                         8'd4: duan_xuan <= 8'b1001_1001;//4

  110.                         8'd5: duan_xuan <= 8'b1001_0010;//5

  111.                         8'd6: duan_xuan <= 8'b1000_0011;//6

  112.                         8'd7: duan_xuan <= 8'b1111_1000;//7

  113.                         8'd8: duan_xuan <= 8'b1000_0000;//8

  114.                         8'd9: duan_xuan <= 8'b1001_0000;//9
  115.                 endcase
  116.         end
  117.         else if(duan_num == 3'b101)//h
  118.         begin
  119.                 wei_xuan <= 8'b1111_1101;
  120.                 case(h % 10)
  121.                                 
  122.                         8'd0: duan_xuan <= 8'b1100_0000;//0

  123.                         8'd1: duan_xuan <= 8'b1111_1001;//1

  124.                         8'd2: duan_xuan <= 8'b1010_0100;//2

  125.                         8'd3: duan_xuan <= 8'b1011_0000;//3

  126.                         8'd4: duan_xuan <= 8'b1001_1001;//4

  127.                         8'd5: duan_xuan <= 8'b1001_0010;//5

  128.                         8'd6: duan_xuan <= 8'b1000_0011;//6

  129.                         8'd7: duan_xuan <= 8'b1111_1000;//7

  130.                         8'd8: duan_xuan <= 8'b1000_0000;//8

  131.                         8'd9: duan_xuan <= 8'b1001_0000;//9
  132.                 endcase
  133.         end
  134.         
  135.         else if(duan_num == 3'b110)//h
  136.         begin
  137.                 wei_xuan <= 8'b1111_1110;
  138.                 case(h / 10)
  139.                                 
  140.                         8'd0: duan_xuan <= 8'b1100_0000;//0

  141.                         8'd1: duan_xuan <= 8'b1111_1001;//1

  142.                         8'd2: duan_xuan <= 8'b1010_0100;//2

  143.                         8'd3: duan_xuan <= 8'b1011_0000;//3

  144.                         8'd4: duan_xuan <= 8'b1001_1001;//4

  145.                         8'd5: duan_xuan <= 8'b1001_0010;//5

  146.                         8'd6: duan_xuan <= 8'b1000_0011;//6

  147.                         8'd7: duan_xuan <= 8'b1111_1000;//7

  148.                         8'd8: duan_xuan <= 8'b1000_0000;//8

  149.                         8'd9: duan_xuan <= 8'b1001_0000;//9
  150.                 endcase
  151.         end
  152. endmodule
复制代码




代码写完使用JTAG(联合测试行动组)下载观看效果

HDL语言数码管时钟.mp4 (1.15 MB, 下载次数: 0)
TIM图片20190426194806.jpg


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐上一条 /1 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2019-7-16 06:16 , Processed in 0.085817 second(s), 20 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表