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

標題: FPGA控制呼吸燈 [打印本頁]

作者: 梔子忍冬艷薔薇    時間: 2021-3-26 22:13
標題: FPGA控制呼吸燈
  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



復制代碼







歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产91在线视频 | 国产免费av在线 | 日韩精品一区在线 | 成人9ⅰ免费影视网站 | 国产日产精品一区二区三区的介绍 | 一区二区自拍 | 久久亚洲免费视频 | 成人午夜激情视频 | 中文字幕在线观看免费视频 | 天天搞天天干 | 在线看av网址 | 手机福利视频 | 国产成人在线观看免费网站 | 国产精品va | 免费毛片在线播放免费 | 这里只有精品视频 | 国产一区二区三区视频 | 国产成人综合在线 | 在线免费观看毛片 | 国产精品久久久久久久久 | 日本视频www | 亚洲综合在线一区 | 三年中文在线观看免费大全中国 | av在线播放不卡 | 日韩欧美国产一区二区三区 | 视频一区中文字幕 | 欧美精品系列 | 亚洲一区二区免费 | 黑人巨大猛烈捣出白浆 | 色综合五月天 | 久久成人毛片 | 伊人av网| 久久黄色大片 | 在线观看网址你懂的 | 亚洲一区国产精品 | 在线成人免费 | 久久精品一区二区国产 | 日韩成人精品一区二区 | 国产精品成人国产乱一区 | 欧美成人一级片 | 免费精品 |