前言:
這個範例是控制 4 顆 LED 輸出流水燈,每 50000000 Clock (也就是一秒,因為板子上使用 50M 震盪器) 自動換下一顆亮。
程式碼:
module led_test
(
input clk, // 系統 50 Mhz 時鐘
output reg[3:0] led // 板子上有 4 顆 LED,宣告為輸出
);
reg [31:0] timer; // 宣告 32 bit 的整數變數
// 每個 Clock 都會觸發
always@(posedge clk)
begin
//---------------------------------------
// 計數器
// 每個 Clock 將 timer 自動加一
timer <= timer + 32'd1;
// timer 達到 199999999 ( 4秒 ) 時,將 timer 清零
if(timer == 32'd199_999_999)
timer <= 32'd0;
//---------------------------------------
// LED 控制
if(timer == 32'd0)
led <= 4'b0001; // LED 1 亮
else if(timer == 32'd49_999_999)
led <= 4'b0010; // LED 2 亮
else if(timer == 32'd99_999_999)
led <= 4'b0100; // LED 3 亮
else if(timer == 32'd149_999_999)
led <= 4'b1000; // LED 4 亮
end
endmodule