OpenCores
URL https://opencores.org/ocsvn/statled/statled/trunk

Subversion Repositories statled

[/] [statled/] [trunk/] [rtl/] [statled.v] - Rev 4

Go to most recent revision | Compare with Previous | Blame | View Log

`timescale 1ns / 100ps
/******************************************************************************
*  Status LED module
*
*  Use single LED ouput to displays various internal states as blink codes.
*  http://www.opencores.org/cores/statled
*
******************************************************************************/
module statled (
    input           clk,
    input           rst,
    input  [3:0]    status,
    output          led
);
 
`include "statled_par.v"
 
reg [32:0] 	pre;            // Prescaler
reg [7:0]	bcnt;           // Bit counter
reg [15:0] 	lsr;            // LED shift register 
reg [15:0]	cr;             // Code register
reg [3:0] 	str;            // Status register
wire 		rate;           // LED rate
 
//-----------------------------------------------------------------------------
// LED rate  
//
always @(posedge clk or posedge rst)
	if (rst) 
        pre <= #tDLY 0;
    else if (rate)
        pre <= #tDLY 0;
    else
        pre <= #tDLY pre + 1;
 
assign rate = (pre == STATLED_PULSE_CLKCNT);
 
//-----------------------------------------------------------------------------
// Capture status inputs
//
always @(posedge clk or posedge rst)
	if (rst) 
        str <= #tDLY 0;
    else 
        str <= #tDLY status;
 
//-----------------------------------------------------------------------------
// Shift register and bit counter
//
always @(posedge clk or posedge rst)
	if (rst) 
        bcnt <= #tDLY 15;
	else if (bcnt == 16)
        bcnt <= #tDLY 0;
	else if (rate)
        bcnt <= #tDLY bcnt + 1;
 
always @(posedge clk or posedge rst)
	if (rst) 
        lsr <= #tDLY 0;
	else if (bcnt == 16)
        lsr <= #tDLY cr;
	else if (rate)
        lsr <= #tDLY lsr << 1;
 
assign led = rst? 1 : lsr[15];	
 
//-----------------------------------------------------------------------------
// Codes 
//
always @*
    case(str) 
        0: cr = CODE_50_50;           // Default code
        1: cr = CODE_ONE;             // State 1 
        2: cr = CODE_TWO;             // State 2
        3: cr = CODE_THREE;           // ....
        4: cr = CODE_FOUR;            //
        5: cr = CODE_FIVE;            //
        6: cr = CODE_SIX;             //
 
        default: cr = 0;	         
    endcase	
 
endmodule
 

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.