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

Subversion Repositories usbhostslave

[/] [usbhostslave/] [tags/] [rel_00_01_alpha/] [RTL/] [serialInterfaceEngine/] [usbTxWireArbiter.v] - Blame information for rev 3

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      : 
6
// Company     : 
7
//
8
//-------------------------------------------------------------------------------------------------
9
//
10
// File        : c:\projects\USBHostSlave\Aldec\usbhostslave\usbhostslave\compile\usbTxWireArbiter.v
11
// Generated   : 06/05/04 05:53:14
12
// From        : c:\projects\USBHostSlave\RTL\serialInterfaceEngine\usbTxWireArbiter.asf
13
// By          : FSM2VHDL ver. 4.0.3.8
14
//
15
//-------------------------------------------------------------------------------------------------
16
//
17
// Description : 
18
//
19
//-------------------------------------------------------------------------------------------------
20
 
21
`timescale 1ns / 1ps
22
`include "usbConstants_h.v"
23
 
24
module USBWireTxArbiter (SIETxCtrl, SIETxData, SIETxGnt, SIETxReq, SIETxWEn, TxBits, TxCtl, USBWireRdyIn, USBWireRdyOut, USBWireWEn, clk, prcTxByteCtrl, prcTxByteData, prcTxByteGnt, prcTxByteReq, prcTxByteWEn, rst);
25
input   SIETxCtrl;
26
input   [1:0] SIETxData;
27
input   SIETxReq;
28
input   SIETxWEn;
29
input   USBWireRdyIn;
30
input   clk;
31
input   prcTxByteCtrl;
32
input   [1:0] prcTxByteData;
33
input   prcTxByteReq;
34
input   prcTxByteWEn;
35
input   rst;
36
output  SIETxGnt;
37
output  [1:0] TxBits;
38
output  TxCtl;
39
output  USBWireRdyOut;
40
output  USBWireWEn;
41
output  prcTxByteGnt;
42
 
43
wire    SIETxCtrl;
44
wire    [1:0] SIETxData;
45
reg     SIETxGnt, next_SIETxGnt;
46
wire    SIETxReq;
47
wire    SIETxWEn;
48
reg     [1:0] TxBits, next_TxBits;
49
reg     TxCtl, next_TxCtl;
50
wire    USBWireRdyIn;
51
reg     USBWireRdyOut, next_USBWireRdyOut;
52
reg     USBWireWEn, next_USBWireWEn;
53
wire    clk;
54
wire    prcTxByteCtrl;
55
wire    [1:0] prcTxByteData;
56
reg     prcTxByteGnt, next_prcTxByteGnt;
57
wire    prcTxByteReq;
58
wire    prcTxByteWEn;
59
wire    rst;
60
 
61
// diagram signals declarations
62
reg muxSIENotPTXB, next_muxSIENotPTXB;
63
 
64
// BINARY ENCODED state machine: txWireArb
65
// State codes definitions:
66
`define START_TARB 2'b00
67
`define TARB_WAIT_REQ 2'b01
68
`define PTXB_ACT 2'b10
69
`define SIE_TX_ACT 2'b11
70
 
71
reg [1:0] CurrState_txWireArb;
72
reg [1:0] NextState_txWireArb;
73
 
74
// Diagram actions (continuous assignments allowed only: assign ...)
75
// processTxByte/SIETransmitter mux
76
always @(USBWireRdyIn)
77
begin
78
    USBWireRdyOut <= USBWireRdyIn;
79
end
80
always @(muxSIENotPTXB or SIETxWEn or SIETxData or
81
SIETxCtrl or prcTxByteWEn or prcTxByteData or prcTxByteCtrl)
82
begin
83
    if (muxSIENotPTXB  == 1'b1)
84
    begin
85
        USBWireWEn <= SIETxWEn;
86
        TxBits <= SIETxData;
87
        TxCtl <= SIETxCtrl;
88
    end
89
    else
90
    begin
91
        USBWireWEn <= prcTxByteWEn;
92
        TxBits <= prcTxByteData;
93
        TxCtl <= prcTxByteCtrl;
94
    end
95
end
96
 
97
 
98
//--------------------------------------------------------------------
99
// Machine: txWireArb
100
//--------------------------------------------------------------------
101
//----------------------------------
102
// NextState logic (combinatorial)
103
//----------------------------------
104
always @ (prcTxByteReq or SIETxReq or prcTxByteGnt or muxSIENotPTXB or SIETxGnt or CurrState_txWireArb)
105
begin : txWireArb_NextState
106
        NextState_txWireArb <= CurrState_txWireArb;
107
        // Set default values for outputs and signals
108
        next_prcTxByteGnt <= prcTxByteGnt;
109
        next_muxSIENotPTXB <= muxSIENotPTXB;
110
        next_SIETxGnt <= SIETxGnt;
111
        case (CurrState_txWireArb) // synopsys parallel_case full_case
112
                `START_TARB:
113
                        NextState_txWireArb <= `TARB_WAIT_REQ;
114
                `TARB_WAIT_REQ:
115
                        if (prcTxByteReq == 1'b1)
116
                        begin
117
                                NextState_txWireArb <= `PTXB_ACT;
118
                                next_prcTxByteGnt <= 1'b1;
119
                                next_muxSIENotPTXB <= 1'b0;
120
                        end
121
                        else if (SIETxReq == 1'b1)
122
                        begin
123
                                NextState_txWireArb <= `SIE_TX_ACT;
124
                                next_SIETxGnt <= 1'b1;
125
                                next_muxSIENotPTXB <= 1'b1;
126
                        end
127
                `PTXB_ACT:
128
                        if (prcTxByteReq == 1'b0)
129
                        begin
130
                                NextState_txWireArb <= `TARB_WAIT_REQ;
131
                                next_prcTxByteGnt <= 1'b0;
132
                        end
133
                `SIE_TX_ACT:
134
                        if (SIETxReq == 1'b0)
135
                        begin
136
                                NextState_txWireArb <= `TARB_WAIT_REQ;
137
                                next_SIETxGnt <= 1'b0;
138
                        end
139
        endcase
140
end
141
 
142
//----------------------------------
143
// Current State Logic (sequential)
144
//----------------------------------
145
always @ (posedge clk)
146
begin : txWireArb_CurrentState
147
        if (rst)
148
                CurrState_txWireArb <= `START_TARB;
149
        else
150
                CurrState_txWireArb <= NextState_txWireArb;
151
end
152
 
153
//----------------------------------
154
// Registered outputs logic
155
//----------------------------------
156
always @ (posedge clk)
157
begin : txWireArb_RegOutput
158
        if (rst)
159
        begin
160
                muxSIENotPTXB <= 1'b0;
161
                prcTxByteGnt <= 1'b0;
162
                SIETxGnt <= 1'b0;
163
        end
164
        else
165
        begin
166
                muxSIENotPTXB <= next_muxSIENotPTXB;
167
                prcTxByteGnt <= next_prcTxByteGnt;
168
                SIETxGnt <= next_SIETxGnt;
169
        end
170
end
171
 
172
endmodule

powered by: WebSVN 2.1.0

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