/* * Design: ECE 274 - Testbench for LED Sequencer (Design Challenge 3) * Author: Roman Lysecky * Copyright 2009, All Rights Reserved * * Date: November 2, 2009 * */ `timescale 1ns/1ns module LEDSequencer(Clk, Rst, En, OnTime, OffTime, LED); input Clk, Rst; input En; input [7:0] OnTime, OffTime; output reg LED; parameter S_Off = 0, S_OnSeq = 1, S_OffSeq = 2; // Local Registers reg [7:0] OnCnt, OffCnt; // State Register reg [1:0] State; // One Procedure State Machine Model for LED Sequencer always @(posedge Clk) begin if (Rst==1) begin LED <= 0; State <= S_Off; OnCnt <= 1; OffCnt <= 1; end else begin case (State) S_Off: begin LED <= 0; OnCnt <= 1; OffCnt <= 1; if (En==1 && OnTime>0) State <= S_OnSeq; else State <= S_Off; end S_OnSeq: begin LED <= 1; OnCnt <= OnCnt + 1; OffCnt <= 1; if (En==1 && (OnCnt=OnTime && OffTime>0) State <= S_OffSeq; else State <= S_Off; end S_OffSeq: begin LED <= 0; OffCnt <= OffCnt + 1; OnCnt <= 1; if (En==1 && (OffCnt=OffTime && OnTime>0) State <= S_OnSeq; else State <= S_Off; end endcase end end endmodule