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

Subversion Repositories usbhostslave

[/] [usbhostslave/] [trunk/] [bench/] [comboHostSlaveTestHarness.v] - Blame information for rev 43

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

Line No. Rev Author Line
1 37 sfielding
`include "timescale.v"
2
 
3
module testHarness(     );
4
 
5
 
6
// -----------------------------------
7
// Local Wires
8
// -----------------------------------
9
reg clk;
10
reg rst;
11
reg usbClk;
12
wire [8:0] adr;
13
wire [7:0] masterDout;
14
wire [7:0] masterDin;
15
wire [7:0] usbSlaveDout;
16
wire [7:0] usbHostDout;
17
wire stb;
18
wire we;
19
wire ack;
20
wire host_stb;
21
wire slave_stb;
22
wire DPlusPullup;
23
wire DPlusPullDown;
24
wire DMinusPullup;
25
wire DMinusPulDown;
26
reg USBWireVP;
27
reg USBWireVM;
28
wire [1:0] hostUSBWireDataIn;
29
wire [1:0] hostUSBWireDataOut;
30
wire [1:0] slaveUSBWireDataIn;
31
wire [1:0] slaveUSBWireDataOut;
32
wire hostUSBWireCtrlOut;
33
wire slaveUSBWireCtrlOut;
34
 
35
initial begin
36
$dumpfile("wave.vcd");
37
$dumpvars(0, testHarness);
38
end
39
 
40
pullup(DPlusPullup);
41
pulldown(DPlusPullDown);
42
pullup(DMinusPullup);
43
pulldown(DMinusPullDown);
44
 
45
assign hostUSBWireDataIn = {USBWireVP, USBWireVM};
46
assign slaveUSBWireDataIn = {USBWireVP, USBWireVM};
47
//always @(hostUSBWireCtrlOut or slaveUSBWireCtrlOut or hostUSBWireDataOut or slaveUSBWireDataOut or
48
//  DPlusPullup or DPlusPullDown or DMinusPullup or DMinusPullDown) begin
49
always @(*) begin
50
  if (hostUSBWireCtrlOut == 1'b1 && slaveUSBWireCtrlOut == 1'b0)
51
    {USBWireVP, USBWireVM} <= hostUSBWireDataOut;
52
  else if (hostUSBWireCtrlOut == 1'b0 && slaveUSBWireCtrlOut == 1'b1)
53
    {USBWireVP, USBWireVM} <= slaveUSBWireDataOut;
54
  else if (hostUSBWireCtrlOut == 1'b1 && slaveUSBWireCtrlOut == 1'b1)
55
    {USBWireVP, USBWireVM} <= 2'bxx;
56
  else if (hostUSBWireCtrlOut == 1'b0 && slaveUSBWireCtrlOut == 1'b0) begin
57
    if (USBDPlusPullup == 1'b1)
58
      USBWireVP <= DPlusPullup;
59
    else
60
      USBWireVP <= DPlusPullDown;
61
    if (USBDMinusPullup == 1'b1)
62
      USBWireVM <= DMinusPullup;
63
    else
64
      USBWireVM <= DMinusPullDown;
65
  end
66
end
67
 
68
assign host_stb = ~adr[8] & stb;
69
assign slave_stb = adr[8] & stb;
70
assign masterDin = host_stb == 1'b1 ? usbHostDout : usbSlaveDout;
71
 
72
//Parameters declaration: 
73
defparam u_usbHost.HOST_FIFO_DEPTH = 64;
74
parameter HOST_FIFO_DEPTH = 64;
75
defparam u_usbHost.HOST_FIFO_ADDR_WIDTH = 6;
76
parameter HOST_FIFO_ADDR_WIDTH = 6;
77
defparam u_usbHost.EP0_FIFO_DEPTH = 64;
78
parameter EP0_FIFO_DEPTH = 64;
79
defparam u_usbHost.EP0_FIFO_ADDR_WIDTH = 6;
80
parameter EP0_FIFO_ADDR_WIDTH = 6;
81
defparam u_usbHost.EP1_FIFO_DEPTH = 64;
82
parameter EP1_FIFO_DEPTH = 64;
83
defparam u_usbHost.EP1_FIFO_ADDR_WIDTH = 6;
84
parameter EP1_FIFO_ADDR_WIDTH = 6;
85
defparam u_usbHost.EP2_FIFO_DEPTH = 64;
86
parameter EP2_FIFO_DEPTH = 64;
87
defparam u_usbHost.EP2_FIFO_ADDR_WIDTH = 6;
88
parameter EP2_FIFO_ADDR_WIDTH = 6;
89
defparam u_usbHost.EP3_FIFO_DEPTH = 64;
90
parameter EP3_FIFO_DEPTH = 64;
91
defparam u_usbHost.EP3_FIFO_ADDR_WIDTH = 6;
92
parameter EP3_FIFO_ADDR_WIDTH = 6;
93
usbHostSlave u_usbHost (
94
  .clk_i(clk),
95
  .rst_i(rst),
96
  .address_i(adr[7:0]),
97
  .data_i(masterDout),
98
  .data_o(usbHostDout),
99
  .we_i(we),
100
  .strobe_i(host_stb),
101
  .ack_o(ack),
102
  .usbClk(usbClk),
103
  .hostSOFSentIntOut(hostSOFSentIntOut),
104
  .hostConnEventIntOut(hostConnEventIntOut),
105
  .hostResumeIntOut(hostResumeIntOut),
106
  .hostTransDoneIntOut(hostTransDoneIntOut),
107
 
108
  .slaveSOFRxedIntOut(),
109
  .slaveResetEventIntOut(),
110
  .slaveResumeIntOut(),
111
  .slaveTransDoneIntOut(),
112
  .slaveNAKSentIntOut(),
113
  .slaveVBusDetIntOut(),
114
 
115
  .USBWireDataIn(hostUSBWireDataIn),
116
  .USBWireDataInTick(USBWireDataInTick),
117
  .USBWireDataOut(hostUSBWireDataOut),
118
  .USBWireDataOutTick(USBWireDataOutTick),
119
  .USBWireCtrlOut(hostUSBWireCtrlOut),
120
  .USBFullSpeed(USBFullSpeed),
121
  .USBDPlusPullup(),
122
  .USBDMinusPullup(),
123
  .vBusDetect(1'b1)
124
 
125
 
126
);
127
 
128
 
129
 
130
//Parameters declaration: 
131
defparam u_usbSlave.HOST_FIFO_DEPTH = 64;
132
parameter HOST_FIFO_DEPTH = 64;
133
defparam u_usbSlave.HOST_FIFO_ADDR_WIDTH = 6;
134
parameter HOST_FIFO_ADDR_WIDTH = 6;
135
defparam u_usbSlave.EP0_FIFO_DEPTH = 64;
136
parameter EP0_FIFO_DEPTH = 64;
137
defparam u_usbSlave.EP0_FIFO_ADDR_WIDTH = 6;
138
parameter EP0_FIFO_ADDR_WIDTH = 6;
139
defparam u_usbSlave.EP1_FIFO_DEPTH = 64;
140
parameter EP1_FIFO_DEPTH = 64;
141
defparam u_usbSlave.EP1_FIFO_ADDR_WIDTH = 6;
142
parameter EP1_FIFO_ADDR_WIDTH = 6;
143
defparam u_usbSlave.EP2_FIFO_DEPTH = 64;
144
parameter EP2_FIFO_DEPTH = 64;
145
defparam u_usbSlave.EP2_FIFO_ADDR_WIDTH = 6;
146
parameter EP2_FIFO_ADDR_WIDTH = 6;
147
defparam u_usbSlave.EP3_FIFO_DEPTH = 64;
148
parameter EP3_FIFO_DEPTH = 64;
149
defparam u_usbSlave.EP3_FIFO_ADDR_WIDTH = 6;
150
parameter EP3_FIFO_ADDR_WIDTH = 6;
151
usbHostSlave u_usbSlave (
152
  .clk_i(clk),
153
  .rst_i(rst),
154
  .address_i(adr[7:0]),
155
  .data_i(masterDout),
156
  .data_o(usbSlaveDout),
157
  .we_i(we),
158
  .strobe_i(slave_stb),
159
  .ack_o(ack),
160
  .usbClk(usbClk),
161
 
162
  .hostSOFSentIntOut(),
163
  .hostConnEventIntOut(),
164
  .hostResumeIntOut(),
165
  .hostTransDoneIntOut(),
166
 
167
  .slaveSOFRxedIntOut(slaveSOFRxedIntOut),
168
  .slaveResetEventIntOut(slaveResetEventIntOut),
169
  .slaveResumeIntOut(slaveResumeIntOut),
170
  .slaveTransDoneIntOut(slaveTransDoneIntOut),
171
  .slaveNAKSentIntOut(slaveNAKSentIntOut),
172
  .slaveVBusDetIntOut(slaveVBusDetIntOut),
173
 
174
  .USBWireDataIn(slaveUSBWireDataIn),
175
  .USBWireDataInTick(USBWireDataInTick),
176
  .USBWireDataOut(slaveUSBWireDataOut),
177
  .USBWireDataOutTick(USBWireDataOutTick),
178
  .USBWireCtrlOut(slaveUSBWireCtrlOut),
179
  .USBFullSpeed(USBFullSpeed),
180
  .USBDPlusPullup(USBDPlusPullup),
181
  .USBDMinusPullup(USBDMinusPullup),
182
  .vBusDetect(1'b1)
183
);
184
 
185
 
186
 
187
 
188
wb_master_model #(.dwidth(8), .awidth(9)) u_wb_master_model (
189
  .clk(clk),
190
  .rst(rst),
191
  .adr(adr),
192
  .din(masterDin),
193
  .dout(masterDout),
194
  .cyc(),
195
  .stb(stb),
196
  .we(we),
197
  .sel(),
198
  .ack(ack),
199
  .err(1'b0),
200
  .rty(1'b0)
201
);
202
 
203
 
204
//--------------- reset ---------------
205
initial begin
206
  @(posedge clk);
207
  @(posedge clk);
208
  @(posedge clk);
209
  @(posedge clk);
210
  @(posedge clk);
211
  @(posedge clk);
212
  @(posedge clk);
213
  @(posedge clk);
214
  rst <= 1'b1;
215
  @(posedge clk);
216
  rst <= 1'b0;
217
  @(posedge clk);
218
end
219
 
220
// ******************************  Clock section  ******************************
221
`define CLK_50MHZ_HALF_PERIOD 10
222
`define CLK_25MHZ_HALF_PERIOD 20
223
 
224
always begin
225
  #`CLK_25MHZ_HALF_PERIOD clk <= 1'b0;
226
  #`CLK_25MHZ_HALF_PERIOD clk <= 1'b1;
227
end
228
 
229
always begin
230
  #`CLK_50MHZ_HALF_PERIOD usbClk <= 1'b0;
231
  #`CLK_50MHZ_HALF_PERIOD usbClk <= 1'b1;
232
end
233
 
234
 
235
 
236
 
237
endmodule
238
 

powered by: WebSVN 2.1.0

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