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

Subversion Repositories cxd9731

[/] [cxd9731/] [TF_Stub.v] - Blame information for rev 5

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 5 regttycomi
`timescale 1ns / 1ps
2
//////////////////////////////////////////////////////////////////////////////////
3
// Company: 
4
// Engineer: 
5
// 
6
// Create Date:    11:38:24 04/11/2010 
7
// Design Name: 
8
// Module Name:    TF_Stub 
9
// Project Name: 
10
// Target Devices: 
11
// Tool versions: 
12
// Description: 
13
//
14
// Dependencies: 
15
//
16
// Revision: 
17
// Revision 0.01 - File Created
18
// Additional Comments: 
19
//
20
//////////////////////////////////////////////////////////////////////////////////
21
module TF_Stub(
22
                input   RESET,
23
                input   CLK4,
24
// external bus
25
                inout TFD0,
26
                inout TFD1,
27
                inout TFD2,
28
                inout TFD3,
29
                output TF_CMD,
30
                output TF_CLK,
31
                input TF_SENSE
32
    );
33
 
34
//////
35
 
36
//// ================================
37
////////////////////////////////////////////////
38
// signals
39
// 25MHz output = 36.6 x 4 / 6 = 24 MHz approx
40
//////////////////////////////////////
41
reg TF_CLKSO;
42
reg [7:0] TF_COUNT;
43
wire TFD0i,TFD1i,TFD2i,TFD3i;
44
reg [3:0] TFDD;
45
wire TerminateCount;
46
wire FAST;              // select 25MHz or 400kHz output
47
 
48
////==========================================================
49
 
50
//  The ORIGINAL signal - if TF not install, then nothing happen
51
        assign TFD0     = (TF_SENSE == 1'b1) ? TFDD[0] : 1'bZ;
52
        assign TFD0i    = TFD0;
53
        assign TFD1     = (TF_SENSE == 1'b1) ? TFDD[1] : 1'bZ;
54
        assign TFD1i    = TFD1;
55
        assign TFD2     = (TF_SENSE == 1'b1) ? TFDD[2] : 1'bZ;
56
        assign TFD2i    = TFD2;
57
        assign TFD3     = (TF_SENSE == 1'b1) ? TFDD[3] : 1'bZ;
58
        assign TFD3i    = TFD3;
59
        assign TF_CLK   = (TF_SENSE == 1'b1) ? TF_CLKSO : 1'b0;         // do not drive the clock if nothing there
60
        assign TF_CMD   = (TF_SENSE == 1'b1) ? TFD0i ^ TFD1i ^ TFD2i ^ TFD3i : 1'b0;                    // just stub output some dummy data
61
 
62
// ***************************************************
63
// Terminate Count either FAST (02 ) or (182 = 128 + 32 + 16 + 4 + 2)
64
        assign  FAST = TFD0i;
65
        assign  TerminateCount =        (FAST & TF_COUNT[1] & ~TF_COUNT[0] ) |
66
                                                                                (TF_COUNT[7] & TF_COUNT[5] & TF_COUNT[4] & TF_COUNT[2] & TF_COUNT[1]);
67
always @(posedge CLK4)begin
68
if (RESET == 1'b1) begin
69
// ============================================================
70
        TF_COUNT                <= 2'b00;               // always clear
71
        TF_CLKSO                <= 1'b0;                        // clock low
72
        TFDD                    <= 4'b0000;
73
// ============================================================
74
end else begin
75
        TFDD    <= TFDD + 1;
76
// =========================================================
77
// 400kHz or 25MHz
78
// 25MHz output = 36.6 x 4 / 6 = 24.4 MHz approx == level change every 3 clocks
79
// 400kHz output = 36.6 x 4 / 366 = 400 kHz ( level changes every 183 clock )
80
 
81
        if (TerminateCount == 1'b1) begin
82
                TF_COUNT[7:0]    <= 8'b0000_0000;                // reset the count
83
                TF_CLKSO                        <= ~TF_CLKSO;   // negate the clock pulse
84
        end else begin
85
                TF_COUNT                        <= TF_COUNT + 1;
86
        end
87
end //RESET
88
end
89
 
90
endmodule

powered by: WebSVN 2.1.0

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