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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [orpsocv2/] [rtl/] [verilog/] [usbhostslave/] [slaveDirectControl.v] - Blame information for rev 408

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 408 julius
 
2
// File        : ../RTL/slaveController/slaveDirectcontrol.v
3
// Generated   : 11/10/06 05:37:25
4
// From        : ../RTL/slaveController/slaveDirectcontrol.asf
5
// By          : FSM2VHDL ver. 5.0.0.9
6
 
7
//////////////////////////////////////////////////////////////////////
8
////                                                              ////
9
//// slaveDirectControl
10
////                                                              ////
11
//// This file is part of the usbhostslave opencores effort.
12
//// http://www.opencores.org/cores/usbhostslave/                 ////
13
////                                                              ////
14
//// Module Description:                                          ////
15
//// 
16
////                                                              ////
17
//// To Do:                                                       ////
18
//// 
19
////                                                              ////
20
//// Author(s):                                                   ////
21
//// - Steve Fielding, sfielding@base2designs.com                 ////
22
////                                                              ////
23
//////////////////////////////////////////////////////////////////////
24
////                                                              ////
25
//// Copyright (C) 2004 Steve Fielding and OPENCORES.ORG          ////
26
////                                                              ////
27
//// This source file may be used and distributed without         ////
28
//// restriction provided that this copyright statement is not    ////
29
//// removed from the file and that any derivative work contains  ////
30
//// the original copyright notice and the associated disclaimer. ////
31
////                                                              ////
32
//// This source file is free software; you can redistribute it   ////
33
//// and/or modify it under the terms of the GNU Lesser General   ////
34
//// Public License as published by the Free Software Foundation; ////
35
//// either version 2.1 of the License, or (at your option) any   ////
36
//// later version.                                               ////
37
////                                                              ////
38
//// This source is distributed in the hope that it will be       ////
39
//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
40
//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
41
//// PURPOSE. See the GNU Lesser General Public License for more  ////
42
//// details.                                                     ////
43
////                                                              ////
44
//// You should have received a copy of the GNU Lesser General    ////
45
//// Public License along with this source; if not, download it   ////
46
//// from http://www.opencores.org/lgpl.shtml                     ////
47
////                                                              ////
48
//////////////////////////////////////////////////////////////////////
49
//
50
//
51
`include "timescale.v"
52
`include "usbhostslave_serialinterfaceengine_h.v"
53
 
54
module slaveDirectControl (SCTxPortCntl, SCTxPortData, SCTxPortGnt, SCTxPortRdy, SCTxPortReq, SCTxPortWEn, clk, directControlEn, directControlLineState, rst);
55
input   SCTxPortGnt;
56
input   SCTxPortRdy;
57
input   clk;
58
input   directControlEn;
59
input   [1:0] directControlLineState;
60
input   rst;
61
output  [7:0] SCTxPortCntl;
62
output  [7:0] SCTxPortData;
63
output  SCTxPortReq;
64
output  SCTxPortWEn;
65
 
66
reg     [7:0] SCTxPortCntl, next_SCTxPortCntl;
67
reg     [7:0] SCTxPortData, next_SCTxPortData;
68
wire    SCTxPortGnt;
69
wire    SCTxPortRdy;
70
reg     SCTxPortReq, next_SCTxPortReq;
71
reg     SCTxPortWEn, next_SCTxPortWEn;
72
wire    clk;
73
wire    directControlEn;
74
wire    [1:0] directControlLineState;
75
wire    rst;
76
 
77
// BINARY ENCODED state machine: slvDrctCntl
78
// State codes definitions:
79
`define START_SDC 3'b000
80
`define CHK_DRCT_CNTL 3'b001
81
`define DRCT_CNTL_WAIT_GNT 3'b010
82
`define DRCT_CNTL_CHK_LOOP 3'b011
83
`define DRCT_CNTL_WAIT_RDY 3'b100
84
`define IDLE_FIN 3'b101
85
`define IDLE_WAIT_GNT 3'b110
86
`define IDLE_WAIT_RDY 3'b111
87
 
88
reg [2:0] CurrState_slvDrctCntl;
89
reg [2:0] NextState_slvDrctCntl;
90
 
91
// Diagram actions (continuous assignments allowed only: assign ...)
92
 
93
// diagram ACTION
94
 
95
//--------------------------------------------------------------------
96
// Machine: slvDrctCntl
97
//--------------------------------------------------------------------
98
//----------------------------------
99
// Next State Logic (combinatorial)
100
//----------------------------------
101
always @ (directControlLineState or directControlEn or SCTxPortGnt or SCTxPortRdy or SCTxPortReq or SCTxPortWEn or SCTxPortData or SCTxPortCntl or CurrState_slvDrctCntl)
102
begin : slvDrctCntl_NextState
103
  NextState_slvDrctCntl <= CurrState_slvDrctCntl;
104
  // Set default values for outputs and signals
105
  next_SCTxPortReq <= SCTxPortReq;
106
  next_SCTxPortWEn <= SCTxPortWEn;
107
  next_SCTxPortData <= SCTxPortData;
108
  next_SCTxPortCntl <= SCTxPortCntl;
109
  case (CurrState_slvDrctCntl)
110
    `START_SDC:
111
      NextState_slvDrctCntl <= `CHK_DRCT_CNTL;
112
    `CHK_DRCT_CNTL:
113
      if (directControlEn == 1'b1)
114
      begin
115
        NextState_slvDrctCntl <= `DRCT_CNTL_WAIT_GNT;
116
        next_SCTxPortReq <= 1'b1;
117
      end
118
      else
119
      begin
120
        NextState_slvDrctCntl <= `IDLE_WAIT_GNT;
121
        next_SCTxPortReq <= 1'b1;
122
      end
123
    `DRCT_CNTL_WAIT_GNT:
124
      if (SCTxPortGnt == 1'b1)
125
        NextState_slvDrctCntl <= `DRCT_CNTL_WAIT_RDY;
126
    `DRCT_CNTL_CHK_LOOP:
127
    begin
128
      next_SCTxPortWEn <= 1'b0;
129
      if (directControlEn == 1'b0)
130
      begin
131
        NextState_slvDrctCntl <= `CHK_DRCT_CNTL;
132
        next_SCTxPortReq <= 1'b0;
133
      end
134
      else
135
        NextState_slvDrctCntl <= `DRCT_CNTL_WAIT_RDY;
136
    end
137
    `DRCT_CNTL_WAIT_RDY:
138
      if (SCTxPortRdy == 1'b1)
139
      begin
140
        NextState_slvDrctCntl <= `DRCT_CNTL_CHK_LOOP;
141
        next_SCTxPortWEn <= 1'b1;
142
        next_SCTxPortData <= {6'b000000, directControlLineState};
143
        next_SCTxPortCntl <= `TX_DIRECT_CONTROL;
144
      end
145
    `IDLE_FIN:
146
    begin
147
      next_SCTxPortWEn <= 1'b0;
148
      next_SCTxPortReq <= 1'b0;
149
      NextState_slvDrctCntl <= `CHK_DRCT_CNTL;
150
    end
151
    `IDLE_WAIT_GNT:
152
      if (SCTxPortGnt == 1'b1)
153
        NextState_slvDrctCntl <= `IDLE_WAIT_RDY;
154
    `IDLE_WAIT_RDY:
155
      if (SCTxPortRdy == 1'b1)
156
      begin
157
        NextState_slvDrctCntl <= `IDLE_FIN;
158
        next_SCTxPortWEn <= 1'b1;
159
        next_SCTxPortData <= 8'h00;
160
        next_SCTxPortCntl <= `TX_IDLE;
161
      end
162
  endcase
163
end
164
 
165
//----------------------------------
166
// Current State Logic (sequential)
167
//----------------------------------
168
always @ (posedge clk)
169
begin : slvDrctCntl_CurrentState
170
  if (rst)
171
    CurrState_slvDrctCntl <= `START_SDC;
172
  else
173
    CurrState_slvDrctCntl <= NextState_slvDrctCntl;
174
end
175
 
176
//----------------------------------
177
// Registered outputs logic
178
//----------------------------------
179
always @ (posedge clk)
180
begin : slvDrctCntl_RegOutput
181
  if (rst)
182
  begin
183
    SCTxPortCntl <= 8'h00;
184
    SCTxPortData <= 8'h00;
185
    SCTxPortWEn <= 1'b0;
186
    SCTxPortReq <= 1'b0;
187
  end
188
  else
189
  begin
190
    SCTxPortCntl <= next_SCTxPortCntl;
191
    SCTxPortData <= next_SCTxPortData;
192
    SCTxPortWEn <= next_SCTxPortWEn;
193
    SCTxPortReq <= next_SCTxPortReq;
194
  end
195
end
196
 
197
endmodule

powered by: WebSVN 2.1.0

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