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

Subversion Repositories usbhostslave

[/] [usbhostslave/] [trunk/] [RTL/] [hostController/] [sofcontroller.v] - Blame information for rev 2

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

Line No. Rev Author Line
1 2 sfielding
//--------------------------------------------------------------------------------------------------
2
//
3
// Title       : No Title
4
// Design      : usbhostslave
5
// Author      : Steve
6
// Company     : Base2Designs
7
//
8
//-------------------------------------------------------------------------------------------------
9
//
10
// File        : c:\projects\USBHostSlave\Aldec\usbhostslave\usbhostslave\compile\sofcontroller.v
11
// Generated   : 09/08/04 06:24:36
12
// From        : c:\projects\USBHostSlave\RTL\hostController\sofcontroller.asf
13
// By          : FSM2VHDL ver. 4.0.3.8
14
//
15
//-------------------------------------------------------------------------------------------------
16
//
17
// Description : 
18
//
19
//-------------------------------------------------------------------------------------------------
20
 
21
`timescale 1ns / 1ps
22
`include "usbSerialInterfaceEngine_h.v"
23
 
24
module SOFController (HCTxPortCntl, HCTxPortData, HCTxPortGnt, HCTxPortRdy, HCTxPortReq, HCTxPortWEn, SOFEnable, SOFTimerClr, SOFTimer, clk, rst);
25
input   HCTxPortGnt;
26
input   HCTxPortRdy;
27
input   SOFEnable;
28
input   SOFTimerClr;
29
input   clk;
30
input   rst;
31
output  [7:0] HCTxPortCntl;
32
output  [7:0] HCTxPortData;
33
output  HCTxPortReq;
34
output  HCTxPortWEn;
35
output  [15:0] SOFTimer;
36
 
37
reg     [7:0] HCTxPortCntl, next_HCTxPortCntl;
38
reg     [7:0] HCTxPortData, next_HCTxPortData;
39
wire    HCTxPortGnt;
40
wire    HCTxPortRdy;
41
reg     HCTxPortReq, next_HCTxPortReq;
42
reg     HCTxPortWEn, next_HCTxPortWEn;
43
wire    SOFEnable;
44
wire    SOFTimerClr;
45
reg     [15:0] SOFTimer, next_SOFTimer;
46
wire    clk;
47
wire    rst;
48
 
49
// BINARY ENCODED state machine: sofCntl
50
// State codes definitions:
51
`define START_SC 3'b000
52
`define WAIT_SOF_EN 3'b001
53
`define WAIT_SEND_RESUME 3'b010
54
`define INC_TIMER 3'b011
55
`define SC_WAIT_GNT 3'b100
56
`define CLR_WEN 3'b101
57
 
58
reg [2:0] CurrState_sofCntl;
59
reg [2:0] NextState_sofCntl;
60
 
61
 
62
//--------------------------------------------------------------------
63
// Machine: sofCntl
64
//--------------------------------------------------------------------
65
//----------------------------------
66
// NextState logic (combinatorial)
67
//----------------------------------
68
always @ (SOFTimerClr or SOFTimer or SOFEnable or HCTxPortRdy or HCTxPortGnt or HCTxPortReq or HCTxPortWEn or HCTxPortData or HCTxPortCntl or CurrState_sofCntl)
69
begin : sofCntl_NextState
70
        NextState_sofCntl <= CurrState_sofCntl;
71
        // Set default values for outputs and signals
72
        next_HCTxPortReq <= HCTxPortReq;
73
        next_HCTxPortWEn <= HCTxPortWEn;
74
        next_HCTxPortData <= HCTxPortData;
75
        next_HCTxPortCntl <= HCTxPortCntl;
76
        next_SOFTimer <= SOFTimer;
77
        case (CurrState_sofCntl) // synopsys parallel_case full_case
78
                `START_SC:
79
                        NextState_sofCntl <= `WAIT_SOF_EN;
80
                `WAIT_SOF_EN:
81
                        if (SOFEnable == 1'b1)
82
                        begin
83
                                NextState_sofCntl <= `SC_WAIT_GNT;
84
                                next_HCTxPortReq <= 1'b1;
85
                        end
86
                `WAIT_SEND_RESUME:
87
                        if (HCTxPortRdy == 1'b1)
88
                        begin
89
                                NextState_sofCntl <= `CLR_WEN;
90
                                next_HCTxPortWEn <= 1'b1;
91
                                next_HCTxPortData <= 8'h00;
92
                                next_HCTxPortCntl <= `TX_RESUME_START;
93
                        end
94
                `INC_TIMER:
95
                begin
96
                        next_HCTxPortReq <= 1'b0;
97
                        if (SOFTimerClr == 1'b1)
98
                          next_SOFTimer <= 16'h0000;
99
                        else
100
                          next_SOFTimer <= SOFTimer + 1'b1;
101
                        if (SOFEnable == 1'b0)
102
                        begin
103
                                NextState_sofCntl <= `WAIT_SOF_EN;
104
                                next_SOFTimer <= 16'h0000;
105
                        end
106
                end
107
                `SC_WAIT_GNT:
108
                        if (HCTxPortGnt == 1'b1)
109
                                NextState_sofCntl <= `WAIT_SEND_RESUME;
110
                `CLR_WEN:
111
                begin
112
                        next_HCTxPortWEn <= 1'b0;
113
                        NextState_sofCntl <= `INC_TIMER;
114
                end
115
        endcase
116
end
117
 
118
//----------------------------------
119
// Current State Logic (sequential)
120
//----------------------------------
121
always @ (posedge clk)
122
begin : sofCntl_CurrentState
123
        if (rst)
124
                CurrState_sofCntl <= `START_SC;
125
        else
126
                CurrState_sofCntl <= NextState_sofCntl;
127
end
128
 
129
//----------------------------------
130
// Registered outputs logic
131
//----------------------------------
132
always @ (posedge clk)
133
begin : sofCntl_RegOutput
134
        if (rst)
135
        begin
136
                SOFTimer <= 16'h0000;
137
                HCTxPortCntl <= 8'h00;
138
                HCTxPortData <= 8'h00;
139
                HCTxPortWEn <= 1'b0;
140
                HCTxPortReq <= 1'b0;
141
        end
142
        else
143
        begin
144
                SOFTimer <= next_SOFTimer;
145
                HCTxPortCntl <= next_HCTxPortCntl;
146
                HCTxPortData <= next_HCTxPortData;
147
                HCTxPortWEn <= next_HCTxPortWEn;
148
                HCTxPortReq <= next_HCTxPortReq;
149
        end
150
end
151
 
152
endmodule

powered by: WebSVN 2.1.0

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