久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2202|回復: 0
收起左側

FPGA控制呼吸燈

[復制鏈接]
ID:832896 發表于 2021-3-26 22:13 | 顯示全部樓層 |閱讀模式
  1. //`timescale 1ns / 1ps
  2. ////////////////////////////////////////////////////////////////////////////////////
  3. //// Company:
  4. //// Engineer:
  5. ////
  6. //// Create Date: 2020/12/14 19:22:24
  7. //// Design Name:
  8. //// Module Name: led_breath
  9. //// Project Name:
  10. //// Target Devices:
  11. //// Tool Versions:
  12. //// Description:
  13. ////
  14. //// Dependencies:
  15. ////
  16. //// Revision:
  17. //// Revision 0.01 - File Created
  18. //// Additional Comments:
  19. ////
  20. ////////////////////////////////////////////////////////////////////////////////////


  21. //module led_breath(
  22. //        input        i_sys_clk,             //輸入時鐘
  23. //        input        i_sys_rst_n,
  24. //        output  [3:0] o_led
  25. //    );
  26.    
  27.    
  28. //    /* 計數器r_cnt_2us循環計數,計到99為2us */    //計數r_cnt_2us 計數器
  29. //    parameter p_cnt_2us_max = 7'd100 - 1'b1;
  30. //    reg [7:0] r_cnt_2us = 7'b0;
  31. //    always @(posedge i_sys_clk or negedge i_sys_rst_n)
  32. //    begin
  33. //          if (i_sys_rst_n == 1'b0)
  34. //            r_cnt_2us <= 7'd0;
  35. //          else if(r_cnt_2us == p_cnt_2us_max)
  36. //            r_cnt_2us <= 7'd0;
  37. //          else
  38. //            r_cnt_2us <= r_cnt_2us + 1'b1;
  39. //    end
  40.    
  41.    
  42. //    /* 計數器r_cnt_2ms,每2us加一,計到999為2ms */  //計數r_cnt_2ms
  43. //    parameter p_cnt_2ms_max = 10'd1000 - 1'b1;
  44. //    reg [9:0] r_cnt_2ms = 10'b0;
  45.    
  46. //    always @(posedge i_sys_clk or negedge i_sys_rst_n)
  47. //    begin
  48. //      if (i_sys_rst_n == 1'b0)
  49. //        r_cnt_2ms <= 10'd0;
  50. //      else if(r_cnt_2us == p_cnt_2us_max && r_cnt_2ms == p_cnt_2ms_max)
  51. //        r_cnt_2ms <= 10'd0;
  52. //      else if(r_cnt_2us == p_cnt_2us_max)
  53. //        r_cnt_2ms <= r_cnt_2ms + 1'b1;
  54. //      else
  55. //        r_cnt_2ms = r_cnt_2ms;
  56. //    end
  57.    
  58.    
  59. //    /* 計數器r_cnt_2s,每2ms加一,計到999為2s */        //計數r_cnt_2s 計數
  60. //    parameter p_cnt_2s_max = 10'd1000 - 1'b1;
  61. //    reg [9:0] r_cnt_2s = 10'b0;
  62. //    reg [3:0] r_led = 4'b0;
  63. //    always @(posedge i_sys_clk or negedge i_sys_rst_n)
  64. //    begin
  65. //          if (i_sys_rst_n == 1'b0)
  66. //            r_cnt_2s <= 10'd0;
  67. //          else if(r_cnt_2us == p_cnt_2us_max && r_cnt_2ms == p_cnt_2ms_max && r_cnt_2s == p_cnt_2s_max)
  68. //            r_cnt_2s <= 10'd0;
  69. //          else if(r_cnt_2us == p_cnt_2us_max && r_cnt_2ms == p_cnt_2ms_max)
  70. //            r_cnt_2s <= r_cnt_2s + 1'b1;
  71. //          else
  72. //            r_cnt_2s <= r_cnt_2s;
  73. //    end
  74.    
  75.    
  76. //    /* r_flag標志 */
  77. //    reg r_flag = 1'b0;
  78. //    always @(posedge i_sys_clk or negedge i_sys_rst_n)
  79. //    begin
  80. //      if (i_sys_rst_n == 1'b0)
  81. //        r_flag <= 1'b0;
  82. //      else if(r_cnt_2us == p_cnt_2us_max && r_cnt_2ms == p_cnt_2ms_max && r_cnt_2s == p_cnt_2s_max)
  83. //        r_flag <= ~r_flag;
  84. //      else
  85. //        r_flag <= r_flag;
  86. //    end
  87.    
  88.    
  89.    
  90. //    /* control */
  91. //    always @(posedge i_sys_clk or negedge i_sys_rst_n)
  92. //    begin
  93. //      if (~i_sys_rst_n)
  94. //        r_led <= 4'b0000;                                         
  95. //      else if (r_cnt_2s >= r_cnt_2ms && r_flag == 1'b0)         //2s>兩毫秒,0
  96. //        r_led <= 4'b1111;
  97. //      else if (r_cnt_2s < r_cnt_2ms && r_flag == 1'b0)          //2s<2ms,0
  98. //        r_led <= 4'b0000;
  99. //      else if (r_cnt_2s >= r_cnt_2ms && r_flag == 1'b1)         // 2s>2ms, 1
  100. //        r_led <= 4'b0000;
  101. //      else if (r_cnt_2s < r_cnt_2ms && r_flag == 1'b1)          // 2s<2ms, 1
  102. //        r_led <= 4'b1111;
  103. //      else
  104. //        r_led <= 4'b0000;
  105. //    end
  106.    
  107. //    /* 信號輸出 */
  108. //    assign o_led = r_led;
  109.    
  110. //    endmodule
  111. `timescale 1ns/1ps

  112. module led_breath(
  113. clk,led,rst

  114. );
  115. input clk;
  116. input rst;
  117. output reg[3:0] led;
  118. parameter p_2us_max=32'd100-32'd1;
  119. parameter p_2ms_max=32'd1000-32'd1;
  120. parameter p_2s_max=32'd1000-32'd1;



  121. reg [32:1]cnt_2us;//2us計數器計數計到99次,2ms計數器加1
  122. always@(posedge clk or negedge rst)

  123. begin
  124.     if(rst!=1)
  125.     cnt_2us<=32'd0;
  126.     else if(cnt_2us==p_2us_max)
  127.     cnt_2us<=32'd0;
  128.     else
  129.     cnt_2us<=cnt_2us+32'd1;
  130. end


  131. reg[32:1] cnt_2ms;  //2ms 計數器計數計到999次,2s計數器加1
  132. always@(posedge clk or negedge rst)
  133. begin
  134.     if(rst!=1)
  135.     cnt_2ms<=32'd0;
  136.     else if(cnt_2ms==p_2ms_max&&cnt_2us==p_2us_max)
  137.     cnt_2ms<=32'd0;
  138.     else if(cnt_2us==p_2us_max)
  139.     cnt_2ms<=cnt_2ms+32'd1;
  140.    
  141.     else
  142.     cnt_2ms<=cnt_2ms;

  143. end

  144. reg[32:1]  cnt_2s;    //2s計數器計計到999次,清零,重新計數
  145. always@(posedge clk or negedge rst)
  146. begin
  147.     if(rst!=1)
  148.     cnt_2s<=32'd0;
  149.     else if(cnt_2s==p_2s_max&&cnt_2ms==p_2ms_max&&cnt_2us==p_2us_max)
  150.     cnt_2s<=32'd0;
  151.     else if(cnt_2us==p_2us_max&&cnt_2ms==p_2ms_max)
  152.     cnt_2s<=32'd1+cnt_2s;
  153.     else
  154.     cnt_2s<=cnt_2s;
  155. end

  156. //always@(posedge clk or negedge rst)
  157. //begin
  158. //if(rst!=1)
  159. // led<=4'b0000;
  160. //else if(cnt_2s>=cnt_2ms)
  161. //led<=4'b1111;
  162. //else if(cnt_2s<cnt_2ms)
  163. //led<=4'b0000;
  164. //else
  165. //led<=4'b0000;

  166. //end

  167. reg flag;// 定義標志位   
  168. always@(posedge clk or negedge rst)
  169. begin
  170.     if(rst!=1)
  171.     flag<=1'b0;
  172.     else if(cnt_2s==p_2s_max&&cnt_2ms==p_2ms_max&&cnt_2us==p_2us_max)
  173.     flag<=~flag;
  174.     else
  175.     flag<=flag;
  176. end
  177. //led由亮變暗的過程
  178. //always@(posedge clk or negedge rst)
  179. //begin
  180. //if(rst!=1)
  181. //led<=4'b0000;
  182. //else if(cnt_2s>=cnt_2ms)
  183. //led<=4'b1111;
  184. //else if(cnt_2s<cnt_2ms)   //滅到亮的過程
  185. //led<=4'b0000;
  186. //else
  187. //led<=4'b0000;


  188. //end

  189. //利用標志位來判斷亮暗的過程
  190. always@(posedge clk or negedge rst)
  191. begin
  192.     if(rst!=1)
  193.     led<=4'b0000;
  194.     else if(cnt_2s>=cnt_2ms&&flag==1'b0)
  195.     led<=4'b1111;
  196.     else if(cnt_2s<cnt_2ms&&flag==1'b0)
  197.     led<=4'b0000;
  198.     else if(cnt_2s>=cnt_2ms&&flag==1'b1)
  199.     led<=4'b0000;
  200.     else if(cnt_2s<cnt_2ms&&flag==1'b1)
  201.     led<=4'b1111;
  202. end



  203. endmodule



復制代碼


回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产视频观看 | 妹子干综合 | 亚洲精品区 | 久久中文一区二区 | 亚洲国产偷 | 国产成人a亚洲精品 | 日日草夜夜草 | 日本免费一区二区三区视频 | 国产成人叼嘿视频在线观看 | 日韩蜜桃视频 | 久久久久网站 | 欧美久久视频 | 在线观看日韩精品视频 | 日韩精品在线免费观看 | 精品国产一区二区三区久久 | av网站在线播放 | 一区二区三区四区在线播放 | 色中文在线 | 91超碰在线 | 欧美日韩福利 | 天天影视网天天综合色在线播放 | 亚洲精品成人av久久 | 亚洲成人精品一区 | 日日射影院 | 性生生活大片免费看视频 | 中文字幕一区二区三区四区不卡 | 国产一级视频在线观看 | 国外成人在线视频网站 | 极品销魂美女一区二区 | 99亚洲精品 | 色片在线观看 | 天天插天天操 | 免费在线看黄 | 亚洲视频精品 | 亚洲成人精品一区二区 | 国产综合视频 | 久久久久国产精品一区 | 精品国产一区二区三区免费 | 99久视频 | 亚洲天堂av一区 | 色频|