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

Subversion Repositories usb11_sim_model

[/] [usb11_sim_model/] [trunk/] [usb_tc03.vhdl] - Blame information for rev 10

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 10 M_artin
--==========================================================================--
2
--                                                                          --
3
--  Copyright (C) 2011  by  Martin Neumann martin@neumanns-mail.de          --
4
--                                                                          --
5
--  File name   : usb_tc03.vhd                                              --
6
--  Author      : Martin Neumann  martin@neumanns-mail.de                   --
7
--  Description : Copy and rename this file to usb_stimuli.vhd              --
8
--                before running a new simulation!                          --
9
--                                                                          --
10
--==========================================================================--
11
--                                                                          --
12
-- Change history                                                           --
13
--                                                                          --
14
-- Version / date        Description                                        --
15
--                                                                          --
16
-- 01  15 Mar 2013 MN    Initial version                                    --
17
--                                                                          --
18
-- End change history                                                       --
19
--==========================================================================--
20
 
21
LIBRARY work, IEEE;
22
  USE IEEE.std_logic_1164.ALL;
23
  USE IEEE.std_logic_arith.ALL;
24
  USE work.usb_commands.ALL;
25
 
26
ENTITY USB_Stimuli IS PORT(
27
  -- Test Control Interface --
28
  USB             : OUT usb_action;
29
  rst_neg_ext     : OUT STD_LOGIC;
30
  t_no            : OUT NATURAL
31
);
32
END USB_Stimuli;
33
 
34
ARCHITECTURE sim OF usb_stimuli IS
35
 
36
BEGIN
37
--==========================================================================--
38
-- All outcommented procedure calls reflect the expected USB Slave response --
39
--==========================================================================--
40
  p_stimuli_data : PROCESS
41
  variable top : NATURAL;
42
  BEGIN
43
    list("**********************************");
44
    list("*                                *");
45
    list("*       Test USB FS SLAVE        *");
46
    list("* Init according to Win 7 driver *");
47
    list("*                                *");
48
    list("**********************************");
49
    rst_neg_ext <= '0';
50
    WAIT FOR 301 ns;
51
    rst_neg_ext <= '1';
52
    WAIT FOR 400 ns;
53
    --***************************************--
54
    list(T_No, 01);
55
    send_res(usb);
56
    sof_token(usb, X"55D");
57
    sof_token(usb, X"55E");
58
    sof_token(usb, X"55F");
59
    setup(usb, X"00",X"0"); -- GET_DESCRIPTOR
60
    send_D0   (usb, (X"80",X"06",X"00",X"01",X"00",X"00",X"40",X"00"));
61
    wait_slv  (usb);
62
--  recv_ACK  (usb);
63
    in_token(usb, X"00",X"0");
64
    wait_slv  (usb);
65
--  recv_D1   (usb, (X"12",X"01",X"10",X"01",X"02",X"00",X"00",X"40",
66
--                   X"9A",X"FB",X"9A",X"FB",X"20",X"00",X"00",X"00",
67
--                   X"00",X"01"));
68
    send_ACK  (usb);
69
    out_token(usb, X"00",X"0");
70
    send_D1   (usb);
71
    wait_slv  (usb);
72
--  recv_ACK  (usb);
73
    send_res(usb);
74
    list(T_No, 02);
75
    --***************************************--
76
    setup(usb, X"00",X"0"); -- SET_ADDRESS
77
    send_D0   (usb, (X"00",X"05",X"02",X"00",X"00",X"00",X"00",X"00"));
78
    wait_slv  (usb);
79
--  recv_ACK  (usb);
80
    in_token(usb, X"00",X"0");
81
    wait_slv  (usb);
82
--  recv_D1   (usb);
83
    send_ACK  (usb);
84
    list(T_No, 03);
85
    --***************************************--
86
    setup(usb, X"02",X"0"); -- GET_DESCRIPTOR 1
87
    send_D0   (usb, (X"80",X"06",X"00",X"01",X"00",X"00",X"12",X"00"));
88
    wait_slv  (usb);
89
--  recv_ACK  (usb);
90
    in_token(usb, X"02",X"0");
91
    wait_slv  (usb);
92
--  recv_D1   (usb, (X"12",X"01",X"10",X"01",X"02",X"00",X"00",X"40",
93
--                   X"9A",X"FB",X"9A",X"FB",X"20",X"00",X"00",X"00",
94
--                   X"00",X"01"));
95
    send_ACK  (usb);
96
    out_token(usb, X"02",X"0");
97
    send_D1   (usb);
98
    wait_slv  (usb);
99
--  recv_ACK  (usb);
100
    list(T_No, 04);
101
    --***************************************--
102
    setup(usb, X"02",X"0"); -- GET_DESCRIPTOR 2
103
    send_D0   (usb, (X"80",X"06",X"00",X"02",X"00",X"00",X"FF",X"00"));
104
    wait_slv  (usb);
105
--  recv_ACK  (usb);
106
    in_token(usb, X"02",X"0");
107
    wait_slv  (usb);
108
--  recv_D1   (usb, (X"09",X"02",X"43",X"00",X"02",X"01",X"00",X"80",
109
--                   X"FA",X"09",X"04",X"00",X"00",X"01",X"02",X"02",
110
--                   X"01",X"00",X"05",X"24",X"00",X"10",X"01",X"04",
111
--                   X"24",X"02",X"00",X"05",X"24",X"06",X"00",X"01",
112
--                   X"05",X"24",X"01",X"00",X"01",X"07",X"05",X"82",
113
--                   X"03",X"08",X"00",X"FF",X"09",X"04",X"01",X"00",
114
--                   X"02",X"0A",X"00",X"00",X"00",X"07",X"05",X"81",
115
--                   X"02",X"40",X"00",X"00",X"07",X"05",X"01",X"02"));
116
    send_ACK  (usb);
117
    in_token(usb, X"02",X"0");
118
    wait_slv  (usb);
119
--  recv_D0   (usb, (X"40",X"00",X"00"));
120
    send_ACK  (usb);
121
    out_token(usb, X"02",X"0");
122
    send_D1   (usb);
123
    wait_slv  (usb);
124
--  recv_ACK  (usb);
125
    list(T_No, 05);
126
    --***************************************--
127
    setup(usb, X"02",X"0"); -- GET_DESCRIPTOR 1
128
    send_D0   (usb, (X"80",X"06",X"00",X"01",X"00",X"00",X"12",X"00"));
129
    wait_slv  (usb);
130
--  recv_ACK  (usb);
131
    in_token(usb, X"02",X"0");
132
    wait_slv  (usb);
133
--  recv_D1   (usb, (X"12",X"01",X"10",X"01",X"02",X"00",X"00",X"40",
134
--                   X"9A",X"FB",X"9A",X"FB",X"20",X"00",X"00",X"00",
135
--                   X"00",X"01"));
136
    send_ACK  (usb);
137
    out_token(usb, X"02",X"0");
138
    send_D1   (usb);
139
    wait_slv  (usb);
140
--  recv_ACK  (usb);
141
    list(T_No, 06);
142
    --***************************************--
143
    setup(usb, X"02",X"0"); -- GET_DESCRIPTOR 2
144
    send_D0   (usb, (X"80",X"06",X"00",X"02",X"00",X"00",X"09",X"01"));
145
    wait_slv  (usb);
146
--  recv_ACK  (usb);
147
    in_token(usb, X"02",X"0");
148
    wait_slv  (usb);
149
--  recv_D1   (usb, (X"09",X"02",X"43",X"00",X"02",X"01",X"00",X"80",
150
--                   X"FA",X"09",X"04",X"00",X"00",X"01",X"02",X"02",
151
--                   X"01",X"00",X"05",X"24",X"00",X"10",X"01",X"04",
152
--                   X"24",X"02",X"00",X"05",X"24",X"06",X"00",X"01",
153
--                   X"05",X"24",X"01",X"00",X"01",X"07",X"05",X"82",
154
--                   X"03",X"08",X"00",X"FF",X"09",X"04",X"01",X"00",
155
--                   X"02",X"0A",X"00",X"00",X"00",X"07",X"05",X"81",
156
--                   X"02",X"40",X"00",X"00",X"07",X"05",X"01",X"02"));
157
    send_ACK  (usb);
158
    in_token(usb, X"02",X"0");
159
    wait_slv  (usb);
160
--  recv_D0   (usb, (X"40",X"00",X"00"));
161
    send_ACK  (usb);
162
    out_token(usb, X"02",X"0");
163
    send_D1   (usb);
164
    wait_slv  (usb);
165
--  recv_ACK  (usb);
166
    list(T_No, 07);
167
    --***************************************--
168
    setup(usb, X"02",X"0"); -- SET_CONFIGURATION
169
    send_D0   (usb, (X"00",X"09",X"01",X"00",X"00",X"00",X"00",X"00"));
170
    wait_slv  (usb);
171
--  recv_ACK  (usb);
172
    in_token(usb, X"02",X"0");
173
    wait_slv  (usb);
174
--  recv_D1   (usb);
175
    send_ACK  (usb);
176
    list(T_No, 08);
177
    --***************************************--
178
    setup(usb, X"02",X"0");
179
    send_D0   (usb, (X"A1",X"21",X"00",X"00",X"00",X"00",X"07",X"00"));
180
    wait_slv  (usb);
181
--  recv_ACK  (usb);
182
    in_token(usb, X"02",X"0");
183
    wait_slv  (usb);
184
--  recv_D1   (usb);
185
    send_ACK  (usb);
186
    out_token(usb, X"02",X"0");
187
    send_D1   (usb);
188
    wait_slv  (usb);
189
--  recv_ACK  (usb);
190
    list(T_No, 09);
191
    --***************************************--
192
    setup(usb, X"02",X"0");
193
    send_D0   (usb, (X"21",X"22",X"00",X"00",X"00",X"00",X"00",X"00"));
194
    wait_slv  (usb);
195
--  recv_ACK  (usb);
196
    in_token(usb, X"02",X"0");
197
    wait_slv  (usb);
198
--  recv_D1   (usb);
199
    send_ACK  (usb);
200
    list("write and read 3x 64 bytes to - from engine 1");
201
--==========================================================================--
202
--  Win 7 configuration sequence has been completed - applicatioon starting --
203
--  First engine 1 transfer after setup -> data toggle bit starts with 0 !! --
204
--==========================================================================--
205
    list(T_No, 10);
206
    out_token(usb, X"02",X"1");
207
    send_D0   (usb, (X"00",X"01",X"02",X"03",X"04",X"05",X"06",X"07",
208
                     X"08",X"09",X"0A",X"0B",X"0C",X"0D",X"0E",X"0F",
209
                     X"10",X"11",X"12",X"13",X"14",X"15",X"16",X"17",
210
                     X"18",X"19",X"1A",X"1B",X"1C",X"1D",X"1E",X"1F",
211
                     X"20",X"21",X"22",X"23",X"24",X"25",X"26",X"27",
212
                     X"28",X"29",X"2A",X"2B",X"2C",X"2D",X"2E",X"2F",
213
                     X"30",X"31",X"32",X"33",X"34",X"35",X"36",X"37",
214
                     X"38",X"39",X"3A",X"3B",X"3C",X"3D",X"3E",X"3F"));
215
    wait_slv  (usb);
216
--  recv_ACK  (usb);
217
    out_token(usb, X"02",X"1");
218
    send_D1   (usb, (X"40",X"41",X"42",X"43",X"44",X"45",X"46",X"47",
219
                     X"48",X"49",X"4A",X"4B",X"4C",X"4D",X"4E",X"4F",
220
                     X"50",X"51",X"52",X"53",X"54",X"55",X"56",X"57",
221
                     X"58",X"59",X"5A",X"5B",X"5C",X"5D",X"5E",X"5F",
222
                     X"60",X"61",X"62",X"63",X"64",X"65",X"66",X"67",
223
                     X"68",X"69",X"6A",X"6B",X"6C",X"6D",X"6E",X"6F",
224
                     X"70",X"71",X"72",X"73",X"74",X"75",X"76",X"77",
225
                     X"78",X"79",X"7A",X"7B",X"7C",X"7D",X"7E",X"7F"));
226
    wait_slv  (usb);
227
--  recv_ACK  (usb);
228
    out_token(usb, X"02",X"1");
229
    send_D0   (usb, (X"80",X"81",X"82",X"83",X"84",X"85",X"86",X"87",
230
                     X"88",X"89",X"8A",X"8B",X"8C",X"8D",X"8E",X"8F",
231
                     X"90",X"91",X"92",X"93",X"94",X"95",X"96",X"97",
232
                     X"98",X"99",X"9A",X"9B",X"9C",X"9D",X"9E",X"9F",
233
                     X"A0",X"A1",X"A2",X"A3",X"A4",X"A5",X"A6",X"A7",
234
                     X"A8",X"A9",X"AA",X"AB",X"AC",X"AD",X"AE",X"AF",
235
                     X"B0",X"B1",X"B2",X"B3",X"B4",X"B5",X"B6",X"B7",
236
                     X"B8",X"B9",X"BA",X"BB",X"BC",X"BD",X"BE",X"BF"));
237
    wait_slv  (usb);
238
--  recv_ACK  (usb);
239
    list(T_No, 11);
240
    list("read 1st 64 bytes");
241
    in_token(usb, X"02",X"1");
242
    wait_slv  (usb);
243
 -- recv_D0   (usb, (X"00",X"10",X"20",X"30",X"40",X"50",X"60",X"70",
244
 --                  X"80",X"90",X"A0",X"B0",X"C0",X"D0",X"E0",X"F0",
245
 --                  X"01",X"11",X"21",X"31",X"41",X"51",X"61",X"71",
246
 --                  X"81",X"91",X"A1",X"B1",X"C1",X"D1",X"E1",X"F1",
247
 --                  X"02",X"12",X"22",X"32",X"42",X"52",X"62",X"72",
248
 --                  X"82",X"92",X"A2",X"B2",X"C2",X"D2",X"E2",X"F2",
249
 --                  X"03",X"13",X"23",X"33",X"43",X"53",X"63",X"73",
250
 --                  X"83",X"93",X"A3",X"B3",X"C3",X"D3",X"E3",X"F3"));
251
    send_ACK  (usb);
252
    list("read 2nd 64 bytes");
253
    in_token(usb, X"02",X"1");
254
    wait_slv  (usb);
255
 -- recv_D1   (usb, (X"04",X"14",X"24",X"34",X"44",X"54",X"64",X"74",
256
 --                  X"84",X"94",X"A4",X"B4",X"C4",X"D4",X"E4",X"F4",
257
 --                  X"05",X"15",X"25",X"35",X"45",X"55",X"65",X"75",
258
 --                  X"85",X"95",X"A5",X"B5",X"C5",X"D5",X"E5",X"F5",
259
 --                  X"06",X"16",X"26",X"36",X"46",X"56",X"66",X"76",
260
 --                  X"86",X"96",X"A6",X"B6",X"C6",X"D6",X"E6",X"F6",
261
 --                  X"07",X"17",X"27",X"37",X"47",X"57",X"67",X"77",
262
 --                  X"87",X"97",X"A7",X"B7",X"C7",X"D7",X"E7",X"F7"));
263
    send_ACK  (usb);
264
    in_token(usb, X"02",X"1");
265
    wait_slv  (usb);
266
 -- recv_D0   (usb, (X"08",X"18",X"28",X"38",X"48",X"58",X"68",X"78",
267
 --                  X"88",X"98",X"A8",X"B8",X"C8",X"D8",X"E8",X"F8",
268
 --                  X"09",X"19",X"29",X"39",X"49",X"59",X"69",X"79",
269
 --                  X"89",X"99",X"A9",X"B9",X"C9",X"D9",X"E9",X"F9",
270
 --                  X"0A",X"1A",X"2A",X"3A",X"4A",X"5A",X"6A",X"7A",
271
 --                  X"8A",X"9A",X"AA",X"BA",X"CA",X"DA",X"EA",X"FA",
272
 --                  X"0B",X"1B",X"2B",X"3B",X"4B",X"5B",X"6B",X"7B",
273
 --                  X"8B",X"9B",X"AB",X"BB",X"CB",X"DB",X"EB",X"FB"));
274
    send_ACK  (usb);
275
    list("write and read 1x 64 bytes to - from engine 1");
276
    --**************************************************--
277
    list(T_No, 32);
278
    out_token(usb, X"02",X"1");
279
    send_D1   (usb, (X"C0",X"C1",X"C2",X"C3",X"C4",X"C5",X"C6",X"C7",
280
                     X"C8",X"C9",X"CA",X"CB",X"CC",X"CD",X"CE",X"CF",
281
                     X"D0",X"D1",X"D2",X"D3",X"D4",X"D5",X"D6",X"D7",
282
                     X"D8",X"D9",X"DA",X"DB",X"DC",X"DD",X"DE",X"DF",
283
                     X"E0",X"E1",X"E2",X"E3",X"E4",X"E5",X"E6",X"E7",
284
                     X"E8",X"E9",X"EA",X"EB",X"EC",X"ED",X"EE",X"EF",
285
                     X"F0",X"F1",X"F2",X"F3",X"F4",X"F5",X"F6",X"F7",
286
                     X"F8",X"F9",X"FA",X"FB",X"FC",X"FD",X"FE",X"FF"));
287
    wait_slv  (usb);
288
    list(T_No, 13);
289
    in_token(usb, X"02",X"1");
290
    wait_slv  (usb);
291
 -- recv_D1   (usb, (X"0C",X"1C",X"2C",X"3C",X"4C",X"5C",X"6C",X"7C",
292
 --                  X"8C",X"9C",X"AC",X"BC",X"CC",X"DC",X"EC",X"FC",
293
 --                  X"0D",X"1D",X"2D",X"3D",X"4D",X"5D",X"6D",X"7D",
294
 --                  X"8D",X"9D",X"AD",X"BD",X"CD",X"DD",X"ED",X"FD",
295
 --                  X"0E",X"1E",X"2E",X"3E",X"4E",X"5E",X"6E",X"7E",
296
 --                  X"8E",X"9E",X"AE",X"BE",X"CE",X"DE",X"EE",X"FE",
297
 --                  X"0F",X"1F",X"2F",X"3F",X"4F",X"5F",X"6F",X"7F",
298
 --                  X"8F",X"9F",X"AF",X"BF",X"CF",X"DF",X"EF",X"FF"));
299
    send_ACK  (usb);
300
    list(T_No, 14);
301
    list("test for more data - nothing");
302
    in_token(usb, X"02",X"1");
303
    wait_slv  (usb);
304
 -- recv_D0   (usb);
305
    send_ACK  (usb);
306
 
307
    ASSERT FALSE REPORT"End of Test" SEVERITY FAILURE;
308
  END PROCESS;
309
 
310
END sim;

powered by: WebSVN 2.1.0

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