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

Subversion Repositories statled

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

Compare with Previous | Blame | View Log

//////////////////////////////////////////////////////////////////////
////  statled.v                                                   ////   
////                                                              ////
////  This file is part of the Status LED module.                 ////
////  http://www.opencores.org/projects/statled/                  ////
////                                                              ////
////  Author:                                                     ////
////     -Dimitar Dimitrov, d.dimitrov@bitlocker.eu               ////
////                                                              ////
//////////////////////////////////////////////////////////////////////
////                                                              ////
//// Copyright (C) 2010 Authors                                   ////
////                                                              ////
//// This source file may be used and distributed without         ////
//// restriction provided that this copyright statement is not    ////
//// removed from the file and that any derivative work contains  ////
//// the original copyright notice and the associated disclaimer. ////
////                                                              ////
//// This source file is free software; you can redistribute it   ////
//// and/or modify it under the terms of the GNU Lesser General   ////
//// Public License as published by the Free Software Foundation; ////
//// either version 2.1 of the License, or (at your option) any   ////
//// later version.                                               ////
////                                                              ////
//// This source is distributed in the hope that it will be       ////
//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
//// PURPOSE.  See the GNU Lesser General Public License for more ////
//// details.                                                     ////
////                                                              ////
//// You should have received a copy of the GNU Lesser General    ////
//// Public License along with this source; if not, download it   ////
//// from http://www.opencores.org/lgpl.shtml                     ////
////                                                              ////
//////////////////////////////////////////////////////////////////////
 
`timescale 1ns / 100ps
 
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
 

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.