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

Subversion Repositories usbhostslave

[/] [usbhostslave/] [trunk/] [bench/] [sepHostSlaveTestHarness.v] - Blame information for rev 37

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
usbHost u_usbHost (
78
  .clk_i(clk),
79
  .rst_i(rst),
80
  .address_i(adr[7:0]),
81
  .data_i(masterDout),
82
  .data_o(usbHostDout),
83
  .we_i(we),
84
  .strobe_i(host_stb),
85
  .ack_o(ack),
86
  .usbClk(usbClk),
87
  .hostSOFSentIntOut(hostSOFSentIntOut),
88
  .hostConnEventIntOut(hostConnEventIntOut),
89
  .hostResumeIntOut(hostResumeIntOut),
90
  .hostTransDoneIntOut(hostTransDoneIntOut),
91
  .USBWireDataIn(hostUSBWireDataIn),
92
  .USBWireDataInTick(USBWireDataInTick),
93
  .USBWireDataOut(hostUSBWireDataOut),
94
  .USBWireDataOutTick(USBWireDataOutTick),
95
  .USBWireCtrlOut(hostUSBWireCtrlOut),
96
  .USBFullSpeed(USBFullSpeed)
97
 
98
 
99
);
100
 
101
 
102
 
103
//Parameters declaration: 
104
defparam u_usbSlave.EP0_FIFO_DEPTH = 64;
105
parameter EP0_FIFO_DEPTH = 64;
106
defparam u_usbSlave.EP0_FIFO_ADDR_WIDTH = 6;
107
parameter EP0_FIFO_ADDR_WIDTH = 6;
108
defparam u_usbSlave.EP1_FIFO_DEPTH = 64;
109
parameter EP1_FIFO_DEPTH = 64;
110
defparam u_usbSlave.EP1_FIFO_ADDR_WIDTH = 6;
111
parameter EP1_FIFO_ADDR_WIDTH = 6;
112
defparam u_usbSlave.EP2_FIFO_DEPTH = 64;
113
parameter EP2_FIFO_DEPTH = 64;
114
defparam u_usbSlave.EP2_FIFO_ADDR_WIDTH = 6;
115
parameter EP2_FIFO_ADDR_WIDTH = 6;
116
defparam u_usbSlave.EP3_FIFO_DEPTH = 64;
117
parameter EP3_FIFO_DEPTH = 64;
118
defparam u_usbSlave.EP3_FIFO_ADDR_WIDTH = 6;
119
parameter EP3_FIFO_ADDR_WIDTH = 6;
120
usbSlave u_usbSlave (
121
  .clk_i(clk),
122
  .rst_i(rst),
123
  .address_i(adr[7:0]),
124
  .data_i(masterDout),
125
  .data_o(usbSlaveDout),
126
  .we_i(we),
127
  .strobe_i(slave_stb),
128
  .ack_o(ack),
129
  .usbClk(usbClk),
130
  .slaveSOFRxedIntOut(slaveSOFRxedIntOut),
131
  .slaveResetEventIntOut(slaveResetEventIntOut),
132
  .slaveResumeIntOut(slaveResumeIntOut),
133
  .slaveTransDoneIntOut(slaveTransDoneIntOut),
134
  .slaveNAKSentIntOut(slaveNAKSentIntOut),
135
  .slaveVBusDetIntOut(slaveVBusDetIntOut),
136
  .USBWireDataIn(slaveUSBWireDataIn),
137
  .USBWireDataInTick(USBWireDataInTick),
138
  .USBWireDataOut(slaveUSBWireDataOut),
139
  .USBWireDataOutTick(USBWireDataOutTick),
140
  .USBWireCtrlOut(slaveUSBWireCtrlOut),
141
  .USBFullSpeed(USBFullSpeed),
142
  .USBDPlusPullup(USBDPlusPullup),
143
  .USBDMinusPullup(USBDMinusPullup),
144
  .vBusDetect(1'b1)
145
);
146
 
147
 
148
 
149
 
150
wb_master_model #(.dwidth(8), .awidth(9)) u_wb_master_model (
151
  .clk(clk),
152
  .rst(rst),
153
  .adr(adr),
154
  .din(masterDin),
155
  .dout(masterDout),
156
  .cyc(),
157
  .stb(stb),
158
  .we(we),
159
  .sel(),
160
  .ack(ack),
161
  .err(1'b0),
162
  .rty(1'b0)
163
);
164
 
165
 
166
//--------------- reset ---------------
167
initial begin
168
  @(posedge clk);
169
  @(posedge clk);
170
  @(posedge clk);
171
  @(posedge clk);
172
  @(posedge clk);
173
  @(posedge clk);
174
  @(posedge clk);
175
  @(posedge clk);
176
  rst <= 1'b1;
177
  @(posedge clk);
178
  rst <= 1'b0;
179
  @(posedge clk);
180
end
181
 
182
// ******************************  Clock section  ******************************
183
`define CLK_50MHZ_HALF_PERIOD 10
184
`define CLK_25MHZ_HALF_PERIOD 20
185
 
186
always begin
187
  #`CLK_25MHZ_HALF_PERIOD clk <= 1'b0;
188
  #`CLK_25MHZ_HALF_PERIOD clk <= 1'b1;
189
end
190
 
191
always begin
192
  #`CLK_50MHZ_HALF_PERIOD usbClk <= 1'b0;
193
  #`CLK_50MHZ_HALF_PERIOD usbClk <= 1'b1;
194
end
195
 
196
 
197
 
198
 
199
endmodule
200
 

powered by: WebSVN 2.1.0

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