2014年5月24日 星期六

可控流水燈設計(通過按鍵實現啟動/停止控制)

源自於
http://www.worlduc.com/blog2012.aspx?bid=16824701


設計8LED迴圈燈控制電路程式,並下載到FPGA開發板中驗證。

要求:1、輸入時鐘為50MHZ2 LED為共陰;3、按動ON/OFF鍵, 可實現啟動/停止LED迴圈。






module ledshift(clk_50M,ON_OFF,LED);
input clk_50M,ON_OFF;
output[7:0] LED ;
reg[7:0] LED ;
reg  clk_10,clk_1,shift_en;

/*1/5000000分頻模組,產生10HZ時鐘,用於按鍵查詢*/
reg[21:0] cnt1;
always@(posedge clk_50M)
   if(cnt1==2499999)
       begin
           cnt1<=0;
           clk_10<=~clk_10;
       end
   else
       cnt1<=cnt1+1'b1;

/*1/10分頻模組,產生1HZ時鐘,用於LED迴圈*/
reg[2:0] cnt2;
always@(posedge clk_10)
   if(cnt2==4)
       begin
           cnt2<=0;
           clk_1<=~clk_1;
       end
   else
       cnt2<=cnt2+1'b1;

/*按鍵識別模組,CLK_10時鐘查詢按鍵動作*/
/*
並產生LED迴圈使能信號shift_en*/
reg A,B;
wire C;
always@(posedge clk_10)
   begin
       A<=ON_OFF; B<=A;
   end
assign C=A&&(~B);
always@(posedge C)
   shift_en<=~shift_en;



/*迴圈移位元模組*/
always@(posedge clk_1)
begin
    if(shift_en==1'b0)//shift_en=0
移位
       if(LED==8'b00000000||LED==8'b10000000)
          LED<=8'b00000001;
       else 
          LED<=LED<<1;
    else ;//shift_en=1
停止移位
end
endmodule 

沒有留言:

張貼留言

Messaging API作為替代方案

  LINE超好用功能要沒了!LINE Notify明年3月底終止服務,有什麼替代方案? LINE Notify將於2025年3月31日結束服務,官方建議改用Messaging API作為替代方案。 //CHANNEL_ACCESS_TOKEN = 'Messaging ...