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 |
|
|
|
|
|
|
|