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

Subversion Repositories usbhostslave

[/] [usbhostslave/] [trunk/] [RTL/] [hostController/] [hctxportarbiter.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\hctxportarbiter.v
11
// Generated   : 09/10/04 20:20:21
12
// From        : c:\projects\USBHostSlave\RTL\hostController\hctxportarbiter.asf
13
// By          : FSM2VHDL ver. 4.0.3.8
14
//
15
//-------------------------------------------------------------------------------------------------
16
//
17
// Description : 
18
//
19
//-------------------------------------------------------------------------------------------------
20
 
21
`timescale 1ns / 1ps
22
 
23
module HCTxPortArbiter (HCTxPortCntl, HCTxPortData, HCTxPortWEnable, SOFCntlCntl, SOFCntlData, SOFCntlGnt, SOFCntlReq, SOFCntlWEn, clk, directCntlCntl, directCntlData, directCntlGnt, directCntlReq, directCntlWEn, rst, sendPacketCntl, sendPacketData, sendPacketGnt, sendPacketReq, sendPacketWEn);
24
input   [7:0] SOFCntlCntl;
25
input   [7:0] SOFCntlData;
26
input   SOFCntlReq;
27
input   SOFCntlWEn;
28
input   clk;
29
input   [7:0] directCntlCntl;
30
input   [7:0] directCntlData;
31
input   directCntlReq;
32
input   directCntlWEn;
33
input   rst;
34
input   [7:0] sendPacketCntl;
35
input   [7:0] sendPacketData;
36
input   sendPacketReq;
37
input   sendPacketWEn;
38
output  [7:0] HCTxPortCntl;
39
output  [7:0] HCTxPortData;
40
output  HCTxPortWEnable;
41
output  SOFCntlGnt;
42
output  directCntlGnt;
43
output  sendPacketGnt;
44
 
45
reg     [7:0] HCTxPortCntl, next_HCTxPortCntl;
46
reg     [7:0] HCTxPortData, next_HCTxPortData;
47
reg     HCTxPortWEnable, next_HCTxPortWEnable;
48
wire    [7:0] SOFCntlCntl;
49
wire    [7:0] SOFCntlData;
50
reg     SOFCntlGnt, next_SOFCntlGnt;
51
wire    SOFCntlReq;
52
wire    SOFCntlWEn;
53
wire    clk;
54
wire    [7:0] directCntlCntl;
55
wire    [7:0] directCntlData;
56
reg     directCntlGnt, next_directCntlGnt;
57
wire    directCntlReq;
58
wire    directCntlWEn;
59
wire    rst;
60
wire    [7:0] sendPacketCntl;
61
wire    [7:0] sendPacketData;
62
reg     sendPacketGnt, next_sendPacketGnt;
63
wire    sendPacketReq;
64
wire    sendPacketWEn;
65
 
66
 
67
// Constants
68
`define DIRECT_CTRL_MUX 2'b10
69
`define SEND_PACKET_MUX 2'b00
70
`define SOF_CTRL_MUX 2'b01
71
// diagram signals declarations
72
reg  [1:0]muxCntl, next_muxCntl;
73
 
74
// BINARY ENCODED state machine: HCTxArb
75
// State codes definitions:
76
`define START_HARB 3'b000
77
`define WAIT_REQ 3'b001
78
`define SEND_SOF 3'b010
79
`define SEND_PACKET 3'b011
80
`define DIRECT_CONTROL 3'b100
81
 
82
reg [2:0] CurrState_HCTxArb;
83
reg [2:0] NextState_HCTxArb;
84
 
85
// Diagram actions (continuous assignments allowed only: assign ...)
86
// SOFController/directContol/sendPacket mux
87
always @(muxCntl or SOFCntlWEn or SOFCntlData or SOFCntlCntl or
88
                                 directCntlWEn or directCntlData or directCntlCntl or
89
                  directCntlWEn or directCntlData or directCntlCntl or
90
                                 sendPacketWEn or sendPacketData or sendPacketCntl)
91
begin
92
case (muxCntl)
93
    `SOF_CTRL_MUX :
94
    begin
95
        HCTxPortWEnable <= SOFCntlWEn;
96
        HCTxPortData <= SOFCntlData;
97
        HCTxPortCntl <= SOFCntlCntl;
98
    end
99
    `DIRECT_CTRL_MUX :
100
    begin
101
        HCTxPortWEnable <= directCntlWEn;
102
        HCTxPortData <= directCntlData;
103
        HCTxPortCntl <= directCntlCntl;
104
    end
105
    `SEND_PACKET_MUX :
106
    begin
107
        HCTxPortWEnable <= sendPacketWEn;
108
        HCTxPortData <= sendPacketData;
109
        HCTxPortCntl <= sendPacketCntl;
110
    end
111
    default :
112
    begin
113
        HCTxPortWEnable <= 1'b0;
114
        HCTxPortData <= 8'h00;
115
        HCTxPortCntl <= 8'h00;
116
    end
117
endcase
118
end
119
 
120
 
121
//--------------------------------------------------------------------
122
// Machine: HCTxArb
123
//--------------------------------------------------------------------
124
//----------------------------------
125
// NextState logic (combinatorial)
126
//----------------------------------
127
always @ (SOFCntlReq or sendPacketReq or directCntlReq or SOFCntlGnt or muxCntl or sendPacketGnt or directCntlGnt or CurrState_HCTxArb)
128
begin : HCTxArb_NextState
129
        NextState_HCTxArb <= CurrState_HCTxArb;
130
        // Set default values for outputs and signals
131
        next_SOFCntlGnt <= SOFCntlGnt;
132
        next_muxCntl <= muxCntl;
133
        next_sendPacketGnt <= sendPacketGnt;
134
        next_directCntlGnt <= directCntlGnt;
135
        case (CurrState_HCTxArb) // synopsys parallel_case full_case
136
                `START_HARB:
137
                        NextState_HCTxArb <= `WAIT_REQ;
138
                `WAIT_REQ:
139
                        if (SOFCntlReq == 1'b1)
140
                        begin
141
                                NextState_HCTxArb <= `SEND_SOF;
142
                                next_SOFCntlGnt <= 1'b1;
143
                                next_muxCntl <= `SOF_CTRL_MUX;
144
                        end
145
                        else if (sendPacketReq == 1'b1)
146
                        begin
147
                                NextState_HCTxArb <= `SEND_PACKET;
148
                                next_sendPacketGnt <= 1'b1;
149
                                next_muxCntl <= `SEND_PACKET_MUX;
150
                        end
151
                        else if (directCntlReq == 1'b1)
152
                        begin
153
                                NextState_HCTxArb <= `DIRECT_CONTROL;
154
                                next_directCntlGnt <= 1'b1;
155
                                next_muxCntl <= `DIRECT_CTRL_MUX;
156
                        end
157
                `SEND_SOF:
158
                        if (SOFCntlReq == 1'b0)
159
                        begin
160
                                NextState_HCTxArb <= `WAIT_REQ;
161
                                next_SOFCntlGnt <= 1'b0;
162
                        end
163
                `SEND_PACKET:
164
                        if (sendPacketReq == 1'b0)
165
                        begin
166
                                NextState_HCTxArb <= `WAIT_REQ;
167
                                next_sendPacketGnt <= 1'b0;
168
                        end
169
                `DIRECT_CONTROL:
170
                        if (directCntlReq == 1'b0)
171
                        begin
172
                                NextState_HCTxArb <= `WAIT_REQ;
173
                                next_directCntlGnt <= 1'b0;
174
                        end
175
        endcase
176
end
177
 
178
//----------------------------------
179
// Current State Logic (sequential)
180
//----------------------------------
181
always @ (posedge clk)
182
begin : HCTxArb_CurrentState
183
        if (rst)
184
                CurrState_HCTxArb <= `START_HARB;
185
        else
186
                CurrState_HCTxArb <= NextState_HCTxArb;
187
end
188
 
189
//----------------------------------
190
// Registered outputs logic
191
//----------------------------------
192
always @ (posedge clk)
193
begin : HCTxArb_RegOutput
194
        if (rst)
195
        begin
196
                muxCntl <= 2'b00;
197
                SOFCntlGnt <= 1'b0;
198
                sendPacketGnt <= 1'b0;
199
                directCntlGnt <= 1'b0;
200
        end
201
        else
202
        begin
203
                muxCntl <= next_muxCntl;
204
                SOFCntlGnt <= next_SOFCntlGnt;
205
                sendPacketGnt <= next_sendPacketGnt;
206
                directCntlGnt <= next_directCntlGnt;
207
        end
208
end
209
 
210
endmodule

powered by: WebSVN 2.1.0

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