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

Subversion Repositories alternascope

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /alternascope/tags/Development/SegDriver
    from Rev 10 to Rev 30
    Reverse comparison

Rev 10 → Rev 30

/d_SegDriver.v
0,0 → 1,98
//==================================================================
// File: d_MouseDriver.v
// Version: 0.01
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Copyright Stephen Pickett, Clarke Ellis
// April 28, 2005
//------------------------------------------------------------------
// Revisions:
// Ver 0.01 Apr 28, 2005 Initial Release
//
//==================================================================
 
module sub_SegDriver(
CLK_50MHZ, MASTER_RST,
DATA_IN,
SEG_OUT, SEG_SEL
);
//==================================================================//
// VARIABLE DEFINITIONS //
//==================================================================//
//----------------------//
// INPUTS //
//----------------------//
input CLK_50MHZ; // System wide clock
input MASTER_RST; // System wide reset
input[15:0] DATA_IN;
//----------------------//
// OUTPUTS //
//----------------------//
output[6:0] SEG_OUT;
output[3:0] SEG_SEL;
 
//----------------------//
// WIRES / NODES //
//----------------------//
wire CLK_50MHZ, MASTER_RST;
wire[15:0] DATA_IN;
reg [6:0] SEG_OUT;
reg [3:0] SEG_SEL;
 
//----------------------//
// REGISTERS //
//----------------------//
wire[6:0] seg0, seg1, seg2, seg3;
reg[7:0] clk_390kHz;
 
//==================================================================//
// FUNCTIONAL DEFINITIONS //
//==================================================================//
always @ (posedge CLK_50MHZ or posedge MASTER_RST) begin
if(MASTER_RST == 1'b1)
clk_390kHz <= 8'b0;
else
clk_390kHz <= clk_390kHz + 1;
end
 
always @ (posedge clk_390kHz[7] or posedge MASTER_RST) begin
if(MASTER_RST == 1'b1)
SEG_SEL <= 4'b1110;
else begin
SEG_SEL[3:1] <= SEG_SEL[2:0];
SEG_SEL[0] <= SEG_SEL[3];
end
end
 
always @ (SEG_SEL or seg0 or seg1 or seg2 or seg3) begin
if(SEG_SEL == 4'b1110)
SEG_OUT = seg0;
else if(SEG_SEL == 4'b1101)
SEG_OUT = seg1;
else if(SEG_SEL == 4'b1011)
SEG_OUT = seg2;
else if(SEG_SEL == 4'b0111)
SEG_OUT = seg3;
else
SEG_OUT = 7'b1111111;
end
 
sub_HexSeg sub_seg3( .DATA_IN(DATA_IN[15:12]),
.SEG_OUT(seg3)
);
sub_HexSeg sub_seg2( .DATA_IN(DATA_IN[11:8]),
.SEG_OUT(seg2)
);
sub_HexSeg sub_seg1( .DATA_IN(DATA_IN[7:4]),
.SEG_OUT(seg1)
);
sub_HexSeg sub_seg0( .DATA_IN(DATA_IN[3:0]),
.SEG_OUT(seg0)
);
 
endmodule
 
 
 
 
 
/d_HexSeg.v
0,0 → 1,146
//==================================================================
// File: d_MouseDriver.v
// Version: 0.01
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Copyright Stephen Pickett, Clarke Ellis
// April 28, 2005
//------------------------------------------------------------------
// Revisions:
// Ver 0.01 Apr 28, 2005 Initial Release
//
//==================================================================
 
module sub_HexSeg(
DATA_IN,
SEG_OUT
);
//==================================================================//
// VARIABLE DEFINITIONS //
//==================================================================//
//----------------------//
// INPUTS //
//----------------------//
input[3:0] DATA_IN;
//----------------------//
// OUTPUTS //
//----------------------//
output[6:0] SEG_OUT;
 
//----------------------//
// WIRES / NODES //
//----------------------//
wire[3:0] DATA_IN;
reg[6:0] SEG_OUT;
 
//----------------------//
// REGISTERS //
//----------------------//
 
//==================================================================//
// FUNCTIONAL DEFINITIONS //
//==================================================================//
// ____
// 5 | 0 | 1
// |____|
// 4 | 6 | 2
// |____|
// 3
 
always @ (DATA_IN) begin
SEG_OUT[6] = !((DATA_IN == 4'h2) |
(DATA_IN == 4'h3) |
(DATA_IN == 4'h4) |
(DATA_IN == 4'h5) |
(DATA_IN == 4'h6) |
(DATA_IN == 4'h8) |
(DATA_IN == 4'h9) |
(DATA_IN == 4'hA) |
(DATA_IN == 4'hB) |
(DATA_IN == 4'hD) |
(DATA_IN == 4'hE) |
(DATA_IN == 4'hF));
 
SEG_OUT[5] = !((DATA_IN == 4'h0) ||
(DATA_IN == 4'h4) ||
(DATA_IN == 4'h5) ||
(DATA_IN == 4'h6) ||
(DATA_IN == 4'h8) ||
(DATA_IN == 4'h9) ||
(DATA_IN == 4'hA) ||
(DATA_IN == 4'hB) ||
(DATA_IN == 4'hC) ||
(DATA_IN == 4'hE) ||
(DATA_IN == 4'hF));
 
SEG_OUT[4] = !((DATA_IN == 4'h0) ||
(DATA_IN == 4'h2) ||
(DATA_IN == 4'h6) ||
(DATA_IN == 4'h8) ||
(DATA_IN == 4'hA) ||
(DATA_IN == 4'hB) ||
(DATA_IN == 4'hC) ||
(DATA_IN == 4'hD) ||
(DATA_IN == 4'hE) ||
(DATA_IN == 4'hF));
 
SEG_OUT[3] = !((DATA_IN == 4'h0) ||
(DATA_IN == 4'h2) ||
(DATA_IN == 4'h3) ||
(DATA_IN == 4'h5) ||
(DATA_IN == 4'h6) ||
(DATA_IN == 4'h8) ||
(DATA_IN == 4'h9) ||
(DATA_IN == 4'hB) ||
(DATA_IN == 4'hC) ||
(DATA_IN == 4'hD) ||
(DATA_IN == 4'hE));
 
SEG_OUT[2] = !((DATA_IN == 4'h0) ||
(DATA_IN == 4'h1) ||
(DATA_IN == 4'h3) ||
(DATA_IN == 4'h4) ||
(DATA_IN == 4'h5) ||
(DATA_IN == 4'h6) ||
(DATA_IN == 4'h7) ||
(DATA_IN == 4'h8) ||
(DATA_IN == 4'h9) ||
(DATA_IN == 4'hA) ||
(DATA_IN == 4'hB) ||
(DATA_IN == 4'hD));
 
SEG_OUT[1] = !((DATA_IN == 4'h0) ||
(DATA_IN == 4'h1) ||
(DATA_IN == 4'h2) ||
(DATA_IN == 4'h3) ||
(DATA_IN == 4'h4) ||
(DATA_IN == 4'h7) ||
(DATA_IN == 4'h8) ||
(DATA_IN == 4'h9) ||
(DATA_IN == 4'hA) ||
(DATA_IN == 4'hD));
 
SEG_OUT[0] = !((DATA_IN == 4'h0) ||
(DATA_IN == 4'h2) ||
(DATA_IN == 4'h3) ||
(DATA_IN == 4'h5) ||
(DATA_IN == 4'h6) ||
(DATA_IN == 4'h7) ||
(DATA_IN == 4'h8) ||
(DATA_IN == 4'h9) ||
(DATA_IN == 4'hA) ||
(DATA_IN == 4'hC) ||
(DATA_IN == 4'hE) ||
(DATA_IN == 4'hF));
 
 
end
 
endmodule
 
 
 
 
 
 
 

powered by: WebSVN 2.1.0

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