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

Subversion Repositories w11

[/] [w11/] [tags/] [w11a_V0.6/] [rtl/] [vlib/] [rlink/] [tb/] [tb_rlink_stim.dat] - Blame information for rev 24

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 16 wfjm
# $Id: tb_rlink_stim.dat 442 2011-12-23 10:03:28Z mueller $
2 9 wfjm
#
3
#  Revision History:
4
# Date         Rev Version  Comment
5 16 wfjm
# 2011-12-22   442   3.0.7  adapt for rlink_sp1c (some .iowt 10->20)
6 9 wfjm
# 2010-12-29   351   3.0.6  use new rbd_tester addr 111100xx (from 111101xx)
7
# 2010-12-28   350   3.3.2  adapt for cdinit=0 in tbd/tbu(some .iowt 10->20)
8
# 2010-12-25   348   3.3.1  Test 3b moved to tb_rlink_serport_stim.dat
9
# 2010-12-22   346   3.3    Test 7: check dcrc sends nak and ends in s_error
10
#                           Test 20: check that '111' ends in s_error
11
#                           Test 21*: now covers eop aborts of all commands
12
# 2010-12-21   345   3.2    rename .[rt]x... -> [rt]x...; use .[rt]x(idle|attn)
13
# 2010-12-12   344   3.1    now almost complete test coverage
14
# 2010-12-05   343   3.0    re-write for usage with tbd_tester
15
# 2010-06-06   302   2.0    use sop/eop framing instead of soc+chaining
16
# 2007-11-24    98   1.2    adapt to new internal init handling
17
# 2007-11-04    95   1.1    add .iowt's in Test 15 to get serport timing right
18
# 2007-06-17    58   1.0    Initial version
19
#
20
#---------------------------------------
21
# test coverage table
22
#   rlink_core
23
#     command function and attribute matrix
24
#        cmd  function  rberr  rbnak- rbnak- rbnak- busy  cerr  derr  idle  eop
25
#                              nak    dnak   time
26
#       rreg  2,3a      4a     8a     12a    10     10    6a    n/a   18a   21b
27
#       wreg  1,3a      4b     8a     12a    10     10    6b    n/a   18a   21a
28
#       rblk  4a        4b,7   8b     12b    11     11    6c    n/a   18b   21d
29
#       wblk  4a        4b     8b     12b    11     11    6c    7     18b   21c
30
#       stat  5,6*,7    n/a    n/a    n/a    n/a    n/a   6c    n/a   18c   21e
31
#       attn  13*       n/a    n/a    n/a    n/a    n/a   16    n/a   18c   21f
32
#       init  9,15a     n/a    n/a    n/a    n/a    n/a   16    n/a   18c   21g
33
#
34
#     cmd rreg
35
#     cmd wreg
36
#     cmd rblk
37
#     cmd wblk
38
#     cmd stat
39
#       returns last command status     -> 5
40
#       returns cerr error flag         -> 6a,6b
41
#       returns derr error flag         -> 7
42
#     cmd attn
43
#     cmd init
44
#       generates external init         -> 9
45
#       generates internal init         -> 15a
46
#     drop cmd after ccrc               -> 6b
47
#     attn poll                         -> 14
48
#     attn notification                 -> 15a,15b
49
#     idle timeout                      -> 17
50
#     idle insertion at any state       -> 18a,18b,18c
51
#     sop-eop framing                   -> 19
52
#     unused command code 111 gives nak -> 20
53
#     eop aborts (all commands)         -> 21*
54
#     nak aborts (only wreg)            -> 21
55
#
56
#   tbd_tester
57
#     reg cntl
58
#       nofifo: read/write, disable fifo-> 8a,8b
59
#       nofifo: clear fifo on 1->0      -> 8a
60
#       stat: write and RB_STAT connect -> 3
61
#       stat: read                      -> 3
62
#       nbusy: controls # of busy cycles-> 10
63
#       cleared by init (..001)         -> 9
64
#     reg data
65
#       write                           -> 1,3,5
66
#       read                            -> 2,3,5
67
#       cleared by init (..010)         -> 9
68
#     reg fifo
69
#       write/read normal               -> 4a
70
#       read: rberr on EMPTY            -> 4a,4b,8a
71
#       write: rberr on FULL            -> 4b
72
#       cleared by nofifo 1->0          -> 8a
73
#       cleared by init (..100)         -> 9
74
#     reg attn
75
#       returns cycle length on read    -> 10
76
#       write tickles RB_LAM            -> 13b
77
#
78
#---------------------------------------
79
# rbus address mapping
80
#   11110000   rbd_tester cntl
81
#   11110001   rbd_tester data
82
#   11110010   rbd_tester fifo
83
#   11110011   rbd_tester attn
84
#
85
.rlmon 0
86
.rbmon 0
87
#
88
.wait 5
89
C some non frame data first
90
tx8   00000000
91
.wait 5
92
tx8   00000001
93
.wait 5
94
tx8   00000010
95
#
96
.iowt 10
97
#
98
C -----------------------------------------------------------------------------
99
C Test 1: wreg(data)
100
C   data := 0011001111001100
101
C   ==> shows that rlink can write a register
102
C
103
C wreg: tx: sop - cmd(00001,010) addr(0001) dl dh ccrc - eop
104
C       rx: sop - cmd(010) stat crc - eop
105
#
106
rxsop
107
rxcs   00001010 00000000
108
rxeop
109
#
110
txsop
111
txcad  00001010 11110001 0011001111001100
112
txeop
113
#
114
.iowt 10
115
#
116
C -----------------------------------------------------------------------------
117
C Test 2: rreg(data)
118
C   data -> 0011001111001100
119
C   ==> shows that rlink can read back a register
120
C
121
C rreg: tx: sop - cmd(00001,000) addr(0001) ccrc - eop
122
C       rx: sop - cmd(000) dl dh stat crc - eop
123
#
124
rxsop
125
rxcds  00001000          0011001111001100 00000000
126
rxeop
127
#
128
txsop
129
txca   00001000 11110001
130
txeop
131
#
132
.iowt 10
133
#
134
C -----------------------------------------------------------------------------
135
C Test 3: chained wreg(cntl) - wreg(data) - rreg(cntl) - rreg(data)
136
C   cntl := 0111000000000000  (nf=0,stat=111,nbusy=0)
137
C   data := 1100110000110011                            --> stat=111 !
138
C   cntl -> 0111000000000000                            --> stat=111 !
139
C   data -> 1100110000110011                            --> stat=111 !
140
C   ==> shows that rlink can properly address two registers
141
C   ==> shows that tbd_tester cntl can set RB_STAT
142
C
143
C wreg: tx: sop - cmd(00001,010) addr(0000) dl dh ccrc
144
C wreg: tx:     - cmd(00010,010) addr(0001) dl dh ccrc
145
C rreg: tx:     - cmd(00011,000) addr(0000) ccrc
146
C rreg: tx:     - cmd(00100,000) addr(0001) ccrc
147
C       tx:     - eop
148
C       rx: sop - cmd(010) stat crc
149
C       rx:     - cmd(010) stat crc
150
C       rx:     - cmd(000) dl dh stat crc
151
C       rx:     - cmd(000) dl dh stat crc
152
C       rx:     - eop
153
#
154
rxsop
155
rxcs   00001010 00000000
156
rxcs   00010010 11100000
157
rxcds  00011000          0111000000000000 11100000
158
rxcds  00100000          1100110000110011 11100000
159
rxeop
160
#
161
txsop
162
txcad  00001010 11110000 0111000000000000
163
txcad  00010010 11110001 1100110000110011
164
txca   00011000 11110000
165
txca   00100000 11110001
166
txeop
167
#
168
.iowt 10
169
#
170
C -----------------------------------------------------------------------------
171
C Test 4a: wblk - rblk (normal)
172
C   write 8 words to fifo with wblk
173
C   read back 8 words from fifo with rblk
174
C   read back 9'th word from fifo with rreg (fails with err)
175
C   ==> shows that block write/read work
176
C   ==> shows that RB_SRES.err works with rreg
177
C
178
C wblk: tx: sop - cmd(10110,011) addr(0010) cnt(8->111) ccrc dl dh .. dcrc
179
C       tx:     - eop
180
C       rx: sop - cmd(011) stat crc
181
C       rx:     - eop
182
#
183
rxsop
184
rxcs   10110011 11100000
185
rxeop
186
#
187
txsop
188
txcac  10110011 11110010 00000111
189
tx16   0000000001000000
190
tx16   0000000001000001
191
tx16   0000000001000010
192
tx16   0000000001000011
193
tx16   0000000001000100
194
tx16   0000000001000101
195
tx16   0000000001000110
196
tx16   0000000001000111
197
txcrc
198
txeop
199
#
200
.iowt 10
201
#
202
C rblk: tx: sop - cmd(10111,001) addr(0010) cnt(8->111) ccrc - eop
203
C       rx: sop - cmd(001) cnt dl dh ... stat crc - eop
204
#
205
rxsop
206
rx8    10111001
207
rx8    00000111
208
rx16   0000000001000000
209
rx16   0000000001000001
210
rx16   0000000001000010
211
rx16   0000000001000011
212
rx16   0000000001000100
213
rx16   0000000001000101
214
rx16   0000000001000110
215
rx16   0000000001000111
216
rx8    11100000
217
rxcrc
218
rxeop
219
#
220
txsop
221
txcac  10111001 11110010 00000111
222
txeop
223
#
224
.iowt 10
225
#
226
C rreg: tx: sop - cmd(11000,000) addr(0010) ccrc - eop
227
C       rx: sop - cmd(000) dl dh stat crc - eop
228
C
229
C     stat: stat(111),attn(0),cerr(0),derr(0),rbnak(0),rberr(1) -> 11100001
230
C     Note: returns 0101... empty pattern
231
#
232
rxsop
233
rxcds  11000000          0101010101010101 11100001
234
rxeop
235
#
236
txsop
237
txca   11000000 11110010
238
txeop
239
#
240
.iowt 10
241
#
242
C -----------------------------------------------------------------------------
243
C Test 4b: wblk - rblk (rberr response)
244
C   write 17 words to fifo with wblk
245
C   write 18'th word to fifo with wreg
246
C   read back 17 words from fifo with rblk
247
C   ==> shows that RB_SRES.err works with wblk,wreg,rblk
248
C
249
C wblk: tx: sop - cmd(00001,011) addr(0010) cnt(17->10000) ccrc dl dh .. dcrc
250
C wreg: tx:     - cmd(00010,010) addr(0010) dl dh ccrc
251
C rblk: tx:     - cmd(00011,001) addr(0010) cnt(18->10001) ccrc
252
C       tx:     - eop
253
C       rx: sop - cmd(011) stat crc
254
C       rx:     - cmd(010) stat crc
255
C       rx:     - cmd(001) cnt dl dh ... stat crc
256
C       rx:     - eop
257
C
258
C     stat: stat(111),attn(0),cerr(0),derr(0),rbnak(0),rberr(1) -> 11100001
259
#
260
rxsop
261
rxcs   00001011 11100001
262
rxcs   00010010 11100001
263
rx8    00011001
264
rx8    00010001
265
rx16   0000001111000000
266
rx16   0000001111000001
267
rx16   0000001111000010
268
rx16   0000001111000011
269
rx16   0000001111000100
270
rx16   0000001111000101
271
rx16   0000001111000110
272
rx16   0000001111000111
273
rx16   0000001111001000
274
rx16   0000001111001001
275
rx16   0000001111001010
276
rx16   0000001111001011
277
rx16   0000001111001100
278
rx16   0000001111001101
279
rx16   0000001111001110
280
rx16   0000001111001111
281
rx16   0101010101010101
282
rx16   0101010101010101
283
rx8    11100001
284
rxcrc
285
rxeop
286
#
287
txsop
288
txcac  00001011 11110010 00010000
289
tx16   0000001111000000
290
tx16   0000001111000001
291
tx16   0000001111000010
292
tx16   0000001111000011
293
tx16   0000001111000100
294
tx16   0000001111000101
295
tx16   0000001111000110
296
tx16   0000001111000111
297
tx16   0000001111001000
298
tx16   0000001111001001
299
tx16   0000001111001010
300
tx16   0000001111001011
301
tx16   0000001111001100
302
tx16   0000001111001101
303
tx16   0000001111001110
304
tx16   0000001111001111
305
tx16   0000001111010000
306
txcrc
307
txcad  00010010 11110010 0000001111010001
308
txcac  00011001 11110010 00010001
309
txeop
310
#
311
.iowt 10
312
#
313
C -----------------------------------------------------------------------------
314
C Test 5: stat (in non-error case) re-read last cmd twice, shouldn't change
315
C   cntl := 0000000000000000  (nf=0,stat=000,nbusy=0)   --> stat=111
316
C   data := 1010101010101010                            --> stat=000
317
C   cntl -> 0000000000000000                            --> stat=000
318
C   data -> 1010101010101010                            --> stat=000
319
C   use 'stat' twice, should give cmd and data of last 'read data'
320
C   ==> shows that stat command works properly
321
C
322
C wreg: tx: sop - cmd(00001,010) addr(0000) dl dh ccrc
323
C wreg: tx:     - cmd(00010,010) addr(0001) dl dh ccrc
324
C rreg: tx:     - cmd(00011,000) addr(0000) ccrc
325
C rreg: tx:     - cmd(00100,000) addr(0001) ccrc
326
C stat: tx:     - cmd(00101,100) ccrc
327
C stat: tx:     - cmd(00110,100) ccrc
328
C       tx:     - eop
329
C       rx: sop - cmd(010) stat crc
330
C       rx:     - cmd(010) stat crc
331
C       rx:     - cmd(000) dl dh stat crc
332
C       rx:     - cmd(000) dl dh stat crc
333
C       rx:     - cmd(100) ccmd(000) dl dh stat crc
334
C       rx:     - cmd(100) ccmd(000) dl dh stat crc
335
C       rx:     - eop
336
#
337
rxsop
338
rxcs   00001010 11100000
339
rxcs   00010010 00000000
340
rxcds  00011000          0000000000000000 00000000
341
rxcds  00100000          1010101010101010 00000000
342
rxccd  00101100 00100000 1010101010101010 00000000
343
rxccd  00110100 00100000 1010101010101010 00000000
344
rxeop
345
#
346
txsop
347
txcad  00001010 11110000 0000000000000000
348
txcad  00010010 11110001 1010101010101010
349
txca   00011000 11110000
350
txca   00100000 11110001
351
txc    00101100
352
txc    00110100
353
txeop
354
#
355
.iowt 10
356
#
357
C -----------------------------------------------------------------------------
358
C Test 6a: ccrc error abort for rreg, last command in packet fails
359
C   cntl := 0101000000000000  (nf=0,stat=101,nbusy=0)   --> stat=000
360
C   data := 1100110011001100                            --> stat=101
361
C   cntl -> 0101000000000000                            --> stat=101
362
C   data -> 1100110011001100   *send with bad CCRC*, will fail
363
C   ==> shows command ccrc check works properly
364
C
365
C wreg: tx: sop - cmd(00001,010) addr(0000) dl dh ccrc
366
C wreg: tx:     - cmd(00010,010) addr(0001) dl dh ccrc
367
C rreg: tx:     - cmd(00011,000) addr(0000) ccrc
368
C rreg: tx:     - cmd(00100,000) addr(0001) *BAD CCRC*
369
C       tx:     - eop
370
C       rx: sop - cmd(010) stat crc
371
C       rx:     - cmd(010) stat crc
372
C       rx:     - cmd(000) dl dh stat crc
373
C       rx:     - nak  *ABORT*
374
C       rx:     - eop
375
#
376
rxsop
377
rxcs   00001010 00000000
378
rxcs   00010010 10100000
379
rxcds  00011000          0101000000000000 10100000
380
rxnak
381
rxeop
382
#
383
txsop
384
txcad  00001010 11110000 0101000000000000
385
txcad  00010010 11110001 1100110011001100
386
txca   00011000 11110000
387
tx8    00100000
388
tx8    11110001
389
txbad
390
txeop
391
#
392
.iowt 10
393
#
394
C
395
C now check that stat reflects last successfull rreg; re-read cerr=1 sticks !
396
C   ==> shows command stat allows to deterine last successful (non-stat) command
397
C
398
C stat: tx: sop - cmd(00101,100) ccrc
399
C stat: tx:     - cmd(00110,100) ccrc
400
C       tx:     - eop
401
C       rx:     - cmd(100) ccmd(000) dl dh stat crc
402
C       rx:     - cmd(100) ccmd(000) dl dh stat crc
403
C       rx:     - eop
404
C
405
C     stat: stat(101),attn(0),cerr(1),derr(0),rbnak(0),rberr(0) -> 10101000
406
rxsop
407
rxccd  00101100 00011000 0101000000000000 10101000
408
rxccd  00110100 00011000 0101000000000000 10101000
409
rxeop
410
#
411
txsop
412
txc    00101100
413
txc    00110100
414
txeop
415
#
416
.iowt 10
417
#
418
C -----------------------------------------------------------------------------
419
C Test 6b: ccrc error abort for wreg, failure inside packet
420
C   cntl := 0000000000000000  (nf=0,stat=000,nbusy=0)
421
C   cntl := 0111000000000000  (nf=0,stat=111,nbusy=0) *send with bad CCRC*
422
C   data := 0011001100110011                          *will be ignored*
423
C   ==> shows commands after a ccrc fail are ignored
424
C
425
C wreg: tx: sop - cmd(00001,010) addr(0000) dl dh ccrc
426
C wreg: tx:     - cmd(00010,010) addr(0000) dl dh *BAD CCRC*
427
C wreg: tx:     - cmd(00011,010) addr(0001) dl dh ccrc
428
C       tx:     - eop
429
C       rx: sop - cmd(010) stat crc
430
C       rx:     - nak  *ABORT*
431
C       rx:     - eop
432
C
433
rxsop
434
rxcs   00001010 10100000
435
rxnak
436
rxeop
437
#
438
txsop
439
txcad  00001010 11110000 0000000000000000
440
tx8    00010010
441
tx8    11110000
442
tx8    00000000
443
tx8    01110000
444
txbad
445
txcad  00011010 11110001 0011001100110011
446
txeop
447
#
448 16 wfjm
.iowt 20
449 9 wfjm
#
450
C
451
C now check that stat reflects first successfull wreg; re-read cerr=1 sticks !
452
C   ==> shows command stat allows to deterine last successful (non-stat) command
453
C
454
C stat: tx: sop - cmd(00101,100) ccrc
455
C stat: tx:     - cmd(00110,100) ccrc
456
C       tx:     - eop
457
C       rx:     - cmd(100) ccmd (000) dl dh stat crc
458
C       rx:     - cmd(100) ccmd (000) dl dh stat crc
459
C       rx:     - eop
460
C
461
C     stat: stat(101),attn(0),cerr(1),derr(0),rbnak(0),rberr(0) -> 10101000
462
rxsop
463
rxccd  00101100 00001010 0101000000000000 10101000
464
rxccd  00110100 00001010 0101000000000000 10101000
465
rxeop
466
#
467
txsop
468
txc    00101100
469
txc    00110100
470
txeop
471
#
472
.iowt 10
473
#
474
C
475
C finally check that cntl register was really written by first wreg
476
C   cntl -> 0000000000000000
477
C
478
C rreg: tx: sop - cmd(01000,000) addr(0000) ccrc - eop
479
C       rx: sop - cmd(000) dl dh stat crc - eop
480
#
481
rxsop
482
rxcds  01000000          0000000000000000 00000000
483
rxeop
484
#
485
txsop
486
txca   01000000 11110000
487
txeop
488
#
489
.iowt 10
490
#
491
C -----------------------------------------------------------------------------
492
C Test 6c: ccrc error abort for wblk,rblk and stat
493
C   write 2 words to fifo with bad CCRC   -> nak
494
C   read 2 words from fifo with bad CCRC  -> nak
495
C   cmd stat with bad CCRC                -> nak
496
C   finally stat, will return last successfull read from Test 6b
497
C
498
C wblk: tx: sop - cmd(00001,011) addr(0010) cnt(2->001) *BAD CCRC* dl dh .. dcrc
499
C               - eop
500
C       rx: sop - nak - eop
501
C
502
rxsop
503
rxnak
504
rxeop
505
#
506
txsop
507
tx8    00001011
508
tx8    11110010
509
tx8    00000001
510
txbad
511
tx16   1010101010101010
512
tx16   0101010101010101
513
txcrc
514
txeop
515
#
516 16 wfjm
.iowt 20
517 9 wfjm
#
518
C
519
C rblk: tx: sop - cmd(00010,001) addr(0010) cnt(2->001) *BAD CCRC* - eop
520
C       rx: sop - nak - eop
521
C
522
rxsop
523
rxnak
524
rxeop
525
#
526
txsop
527
tx8    00010001
528
tx8    11110010
529
tx8    00000001
530
txbad
531
txeop
532
#
533
.iowt 10
534
#
535
C
536
C stat: tx: sop - cmd(00011,100) *BAD CCRC* - eop
537
C       rx: sop - nak - eop
538
C
539
rxsop
540
rxnak
541
rxeop
542
#
543
txsop
544
tx8    00011100
545
txbad
546
txeop
547
#
548
.iowt 10
549
#
550
C
551
C stat: tx: sop - cmd(00100,100) ccrc - eop
552
C       rx: sop - cmd(100) ccmd (000) dl dh stat crc - eop
553
C
554
C     stat: stat(000),attn(0),cerr(1),derr(0),rbnak(0),rberr(0) -> 00001000
555
C
556
rxsop
557
rxccd  00100100 01000000 0000000000000000 00001000
558
rxeop
559
#
560
txsop
561
txc    00100100
562
txeop
563
#
564
.iowt 10
565
#
566
C -----------------------------------------------------------------------------
567
C Test 7: dcrc error condition in wblk
568
C   write 4 words to fifo with wblk and bad DCRC, will cause a dcrc fail
569
C   ==> shows that data dcrc works in wblk, aborts with 
570
C   ==> shows that commands after a dcrc failed wblk are discarded
571
C
572
C wblk: tx: sop - cmd(00001,011) addr(0010) cnt(4->011) ccrc dl dh ..
573
C                 *BAD DCRC*
574
C                 cmd(00010,000) addr(0001) ccrc
575
C               - eop
576
C       rx: sop - cmd(011) stat crc
577
C       rx:     - nak eop
578
C
579
C     stat: stat(000),attn(0),cerr(0),derr(1),rbnak(0),rberr(0) -> 00000100
580
#
581
rxsop
582
rxcs   00001011 00000100
583
rxnak
584
rxeop
585
#
586
txsop
587
txcac  00001011 11110010 00000011
588
tx16   0001000001000000
589
tx16   0001000001000001
590
tx16   0001000001000010
591
tx16   0001000001000011
592
txbad
593
txca   00010000 11110001
594
txeop
595
#
596 16 wfjm
.iowt 20
597 9 wfjm
#
598
C
599
C now check that stat reflects bad dcrc: re-read derr=1 sticks !
600
C stat: tx: sop - cmd(00011,100) ccrc
601
C stat: tx:     - cmd(00100,100) ccrc
602
C       tx:     - eop
603
C       rx:     - cmd(100) ccmd (000) dl dh stat crc
604
C       rx:     - cmd(100) ccmd (000) dl dh stat crc
605
C       rx:     - eop
606
C
607
C     stat: stat(000),attn(0),cerr(0),derr(1),rbnak(0),rberr(0) -> 00000100
608
C     Note: dl,dh still the last read of Test 6 !!
609
rxsop
610
rxccd  00011100 00001011 0000000000000000 00000100
611
rxccd  00100100 00001011 0000000000000000 00000100
612
rxeop
613
#
614
txsop
615
txc    00011100
616
txc    00100100
617
txeop
618
#
619
.iowt 10
620
#
621
C
622
C now read 6 words from fifo: first 4 previous data, 2 empty reads and err=1
623
C rblk: tx: sop - cmd(00101,001) addr(0010) cnt(6->101) ccrc - eop
624
C       rx: sop - cmd(001) cnt dl dh ... stat crc - eop
625
C
626
C     stat: stat(000),attn(0),cerr(0),derr(0),rbnak(0),rberr(1) -> 00000001
627
#
628
rxsop
629
rx8   00101001
630
rx8   00000101
631
rx16  0001000001000000
632
rx16  0001000001000001
633
rx16  0001000001000010
634
rx16  0001000001000011
635
rx16  0101010101010101
636
rx16  0101010101010101
637
rx8   00000001
638
rxcrc
639
rxeop
640
#
641
txsop
642
txcac  00101001 11110010 00000101
643
txeop
644
#
645
.iowt 10
646
#
647
C -----------------------------------------------------------------------------
648
C Test 8a: rbnak(no ack) condition (rreg/wreg)
649
C   fifo := 1111111100000000     -> rbnak=0
650
C   cntl := 1000000000000000  (nf=1,stat=000,nbusy=0) --> disable fifo
651
C   fifo := 1111111100001111     -> rbnak=1
652
C   fifo -> 0101010101010101     -> rbnak=1
653
C   cntl := 0000000000000000  (nf=0,stat=000,nbusy=0) --> enable and clear fifo
654
C   fifo := 0000000001010101     -> rbnak=0
655
C   fifo -> 0000000001010101     -> rbnak=0
656
C   fifo -> 0101010101010101     -> rberr=1 (first fifo write data cleared...)
657
C   ==> shows that missing ack is handled properly and rbnak flag set
658
C
659
C wreg: tx: sop - cmd(00001,010) addr(0010) dl dh ccrc
660
C wreg: tx:     - cmd(00010,010) addr(0000) dl dh ccrc
661
C wreg: tx:     - cmd(00011,010) addr(0010) dl dh ccrc
662
C rreg: tx:     - cmd(00100,000) addr(0010) ccrc
663
C wreg: tx:     - cmd(00101,010) addr(0000) dl dh ccrc
664
C wreg: tx:     - cmd(00110,010) addr(0010) dl dh ccrc
665
C rreg: tx:     - cmd(00111,000) addr(0010) ccrc
666
C rreg: tx:     - cmd(01000,000) addr(0010) ccrc
667
C       tx:     - eop
668
C       rx: sop - cmd(010) stat crc
669
C       rx:     - cmd(010) stat crc
670
C       rx:     - cmd(010) stat crc
671
C       rx:     - cmd(000) dl dh stat crc
672
C       rx:     - cmd(010) stat crc
673
C       rx:     - cmd(010) stat crc
674
C       rx:     - cmd(000) dl dh stat crc
675
C       rx:     - cmd(000) dl dh stat crc
676
C       rx:     - eop
677
C
678
C   stat-3: stat(000),attn(0),cerr(0),derr(0),rbnak(1),rberr(0) -> 00000010
679
C   stat-8: stat(000),attn(0),cerr(0),derr(0),rbnak(0),rberr(1) -> 00000001
680
C     Note: fifo will nak when nofifo flag set in cntl
681
C     Note: tb returns 0000000000000000 for access to bad addresses
682
#
683
rxsop
684
rxcs   00001010 00000000
685
rxcs   00010010 00000000
686
rxcs   00011010 00000010
687
rxcds  00100000          0000000000000000 00000010
688
rxcs   00101010 00000000
689
rxcs   00110010 00000000
690
rxcds  00111000          0000000010101010 00000000
691
rxcds  01000000          0101010101010101 00000001
692
rxeop
693
#
694
txsop
695
txcad  00001010 11110010 1111111100000000
696
txcad  00010010 11110000 1000000000000000
697
txcad  00011010 11110010 1111111100001111
698
txca   00100000 11110010
699
txcad  00101010 11110000 0000000000000000
700
txcad  00110010 11110010 0000000010101010
701
txca   00111000 11110010
702
txca   01000000 11110010
703
txeop
704
#
705
.iowt 10
706
#
707
C -----------------------------------------------------------------------------
708
C Test 8b: rbnak(no ack) condition (rblk/wblk)
709
C   cntl := 1000000000000000  (nf=1,stat=000,nbusy=0) --> disable fifo
710
C   write 2 words to fifo    -> rbnak=1
711
C   read 2 words from fifo   -> rbnak=1
712
C   cntl := 0000000000000000  (nf=0,stat=000,nbusy=0) --> enable and clear fifo
713
C   ==> shows that missing ack is handled properly and rbnak flag set
714
C
715
C wreg: tx: sop - cmd(00001,010) addr(0000) dl dh ccrc
716
C wblk: tx:     - cmd(00010,011) addr(0010) cnt(2->001) ccrc dl dh .. dcrc
717
C rblk: tx:     - cmd(00011,001) addr(0010) cnt(2->001) ccrc
718
C wreg: tx:     - cmd(00100,010) addr(0000) dl dh ccrc
719
C       tx:     - eop
720
C       rx: sop - cmd(010) stat crc
721
C       rx:     - cmd(011) stat crc
722
C       rx:     - cmd(001) cnt dl dh ... stat crc - eop
723
C       rx:     - cmd(010) stat crc
724
C       rx:     - eop
725
C
726
C     stat: stat(000),attn(0),cerr(0),derr(0),rbnak(1),rberr(0) -> 00000010
727
C     Note: fifo will nak when nofifo flag set in cntl
728
C     Note: tb returns 0000000000000000 for access to bad addresses
729
#
730
rxsop
731
rxcs   00001010 00000000
732
rxcs   00010011 00000010
733
rx8    00011001
734
rx8    00000001
735
rx16   0000000000000000
736
rx16   0000000000000000
737
rx8    00000010
738
rxcrc
739
rxcs   00100010 00000000
740
rxeop
741
#
742
txsop
743
txcad  00001010 11110000 1000000000000000
744
txcac  00010011 11110010 00000001
745
tx16   0011110000000000
746
tx16   0011110000000001
747
txcrc
748
txcac  00011001 11110010 00000001
749
txcad  00100010 11110000 0000000000000000
750
txeop
751
#
752
.iowt 10
753
#
754
C -----------------------------------------------------------------------------
755
C Test 9: init
756
C   cntl := 0010000000000000  (nf=0,stat=010,nbusy=0)
757
C   data := 1100110000000000
758
C   fifo := 1100110011000000
759
C   fifo := 1100110011000001
760
C   fifo := 1100110011000010
761
C   fifo := 1100110011000011
762
C   init (11110000:0000000000000000)  noop
763
C   cntl -> 0010000000000000
764
C   data -> 1100110000000000
765
C   fifo -> 1100110011000000
766
C   init (11110000:0000000000000001)  clear cntl
767
C   cntl -> 0000000000000000
768
C   data -> 1100110000000000
769
C   fifo -> 1100110011000001
770
C   init (11110000:0000000000000010)  clear data
771
C   data -> 0000000000000000
772
C   fifo -> 1100110011000010
773
C   init (11110000:0000000000000100)  clear fifo
774
C   fifo -> 0101010101010101 ierr=1
775
C   ==> shows that init is issued and properly decoded
776
C
777
C wreg: tx: sop - cmd(00001,010) addr(0000) dl dh ccrc
778
C wreg: tx:     - cmd(00010,010) addr(0001) dl dh ccrc
779
C wreg: tx:     - cmd(00011,010) addr(0010) dl dh ccrc
780
C wreg: tx:     - cmd(00100,010) addr(0010) dl dh ccrc
781
C wreg: tx:     - cmd(00101,010) addr(0010) dl dh ccrc
782
C wreg: tx:     - cmd(00110,010) addr(0010) dl dh ccrc
783
C init: tx:     - cmd(00111,110) addr(0000) dl dh ccrc
784
C rreg: tx:     - cmd(01000,000) addr(0000) ccrc
785
C rreg: tx:     - cmd(01001,000) addr(0001) ccrc
786
C rreg: tx:     - cmd(01010,000) addr(0010) ccrc
787
C init: tx:     - cmd(01011,110) addr(0000) dl dh ccrc
788
C rreg: tx:     - cmd(01100,000) addr(0000) ccrc
789
C rreg: tx:     - cmd(01101,000) addr(0001) ccrc
790
C rreg: tx:     - cmd(01110,000) addr(0010) ccrc
791
C init: tx:     - cmd(01111,110) addr(0000) dl dh ccrc
792
C rreg: tx:     - cmd(10000,000) addr(0001) ccrc
793
C rreg: tx:     - cmd(10001,000) addr(0010) ccrc
794
C init: tx:     - cmd(10010,110) addr(0000) dl dh ccrc
795
C rreg: tx:     - cmd(10011,000) addr(0010) ccrc
796
C       tx:     - eop
797
C       rx: sop - cmd(010) stat crc
798
C       rx:     - cmd(010) stat crc
799
C       rx:     - cmd(010) stat crc
800
C       rx:     - cmd(010) stat crc
801
C       rx:     - cmd(010) stat crc
802
C       rx:     - cmd(010) stat crc
803
C       rx:     - cmd(110) stat crc
804
C       rx:     - cmd(000) dl dh stat crc
805
C       rx:     - cmd(000) dl dh stat crc
806
C       rx:     - cmd(000) dl dh stat crc
807
C       rx:     - cmd(110) stat crc
808
C       rx:     - cmd(000) dl dh stat crc
809
C       rx:     - cmd(000) dl dh stat crc
810
C       rx:     - cmd(000) dl dh stat crc
811
C       rx:     - cmd(110) stat crc
812
C       rx:     - cmd(000) dl dh stat crc
813
C       rx:     - cmd(000) dl dh stat crc
814
C       rx:     - cmd(110) stat crc
815
C       rx:     - cmd(000) dl dh stat crc
816
C       rx:     - eop
817
C
818
#
819
rxsop
820
rxcs   00001010 00000000
821
rxcs   00010010 01000000
822
rxcs   00011010 01000000
823
rxcs   00100010 01000000
824
rxcs   00101010 01000000
825
rxcs   00110010 01000000
826
rxcs   00111110 01000000
827
rxcds  01000000          0010000000000000 01000000
828
rxcds  01001000          1100110000000000 01000000
829
rxcds  01010000          1100110011000000 01000000
830
rxcs   01011110 01000000
831
rxcds  01100000          0000000000000000 00000000
832
rxcds  01101000          1100110000000000 00000000
833
rxcds  01110000          1100110011000001 00000000
834
rxcs   01111110 00000000
835
rxcds  10000000          0000000000000000 00000000
836
rxcds  10001000          1100110011000010 00000000
837
rxcs   10010110 00000000
838
rxcds  10011000          0101010101010101 00000001
839
rxeop
840
#
841
txsop
842
txcad  00001010 11110000 0010000000000000
843
txcad  00010010 11110001 1100110000000000
844
txcad  00011010 11110010 1100110011000000
845
txcad  00100010 11110010 1100110011000001
846
txcad  00101010 11110010 1100110011000010
847
txcad  00110010 11110010 1100110011000011
848
txcad  00111110 11110000 0000000000000000
849
txca   01000000 11110000
850
txca   01001000 11110001
851
txca   01010000 11110010
852
txcad  01011110 11110000 0000000000000001
853
txca   01100000 11110000
854
txca   01101000 11110001
855
txca   01110000 11110010
856
txcad  01111110 11110000 0000000000000010
857
txca   10000000 11110001
858
txca   10001000 11110010
859
txcad  10010110 11110000 0000000000000100
860
txca   10011000 11110010
861
txeop
862
#
863
.iowt 10
864
#
865
C
866
C   cntl := 1111001111111111  (nf=1,stat=111,nbusy=1023)
867
C   cntl -> 1111001111111111
868
C   init (11110000:0000000000000001)  clear cntl
869
C   cntl -> 0000000000000000
870
C   ==> shows that init completely clears cntl
871
C
872
C wreg: tx: sop - cmd(00001,010) addr(0000) dl dh ccrc
873
C rreg: tx:     - cmd(00010,000) addr(0000) ccrc
874
C init: tx:     - cmd(00011,110) addr(0000) dl dh ccrc
875
C rreg: tx:     - cmd(00100,000) addr(0000) ccrc
876
C       tx:     - eop
877
C       rx: sop - cmd(010) stat crc
878
C       rx:     - cmd(000) dl dh stat crc
879
C       rx:     - cmd(110) stat crc
880
C       rx:     - cmd(000) dl dh stat crc
881
C       rx:     - eop
882
#
883
rxsop
884
rxcs   00001010 00000000
885
rxcds  00010000          1111001111111111 11100000
886
rxcs   00011110 11100000
887
rxcds  00100000          0000000000000000 00000000
888
rxeop
889
#
890
txsop
891
txcad  00001010 11110000 1111001111111111
892
txca   00010000 11110000
893
txcad  00011110 11110000 0000000000000001
894
txca   00100000 11110000
895
txeop
896
#
897
.iowt 10
898
#
899
C -----------------------------------------------------------------------------
900
C Test 10: rbus busy handling (wreg/rreg via data)
901
C   cntl := 0000000000000000  (nf=0,stat=000,nbusy=0)
902
C   cntl -> 0000000000000000
903
C   data := 0011001100000000  -> ncyc=1
904
C   attn -> 0000000000000001
905
C   data -> 0011001100000000  -> ncyc=1
906
C   attn -> 0000000000000001
907
C   ==> shows that reading register attn returns proper ncyc if no busy
908
C
909
C wreg: tx: sop - cmd(00001,010) addr(0000) dl dh ccrc
910
C rreg: tx:     - cmd(00010,000) addr(0000) ccrc
911
C wreg: tx:     - cmd(00011,010) addr(0001) dl dh ccrc
912
C rreg: tx:     - cmd(00100,000) addr(0011) ccrc
913
C rreg: tx:     - cmd(00101,000) addr(0001) ccrc
914
C rreg: tx:     - cmd(00110,000) addr(0011) ccrc
915
C       tx:     - eop
916
C       rx: sop - cmd(010) stat crc
917
C       rx:     - cmd(000) dl dh stat crc
918
C       rx:     - cmd(010) stat crc
919
C       rx:     - cmd(000) dl dh stat crc
920
C       rx:     - cmd(000) dl dh stat crc
921
C       rx:     - cmd(000) dl dh stat crc
922
C       rx:     - eop
923
C
924
#
925
rxsop
926
rxcs   00001010 00000000
927
rxcds  00010000          0000000000000000 00000000
928
rxcs   00011010 00000000
929
rxcds  00100000          0000000000000001 00000000
930
rxcds  00101000          0011001100000000 00000000
931
rxcds  00110000          0000000000000001 00000000
932
rxeop
933
#
934
txsop
935
txcad  00001010 11110000 0000000000000000
936
txca   00010000 11110000
937
txcad  00011010 11110001 0011001100000000
938
txca   00100000 11110011
939
txca   00101000 11110001
940
txca   00110000 11110011
941
txeop
942
#
943
.iowt 10
944
#
945
C
946
C - now with nbusy=1
947
C   cntl := 0000000000000001  (nf=0,stat=000,nbusy=1)
948
C   cntl -> 0000000000000001
949
C   data := 0011001100000001  -> ncyc=2
950
C   attn -> 0000000000000010
951
C   data -> 0011001100000001  -> ncyc=2
952
C   attn -> 0000000000000010
953
C   ==> shows that wreg/rreg strech cycle; attn returns proper ncyc
954
C
955
#
956
rxsop
957
rxcs   00001010 00000000
958
rxcds  00010000          0000000000000001 00000000
959
rxcs   00011010 00000000
960
rxcds  00100000          0000000000000010 00000000
961
rxcds  00101000          0011001100000001 00000000
962
rxcds  00110000          0000000000000010 00000000
963
rxeop
964
#
965
txsop
966
txcad  00001010 11110000 0000000000000001
967
txca   00010000 11110000
968
txcad  00011010 11110001 0011001100000001
969
txca   00100000 11110011
970
txca   00101000 11110001
971
txca   00110000 11110011
972
txeop
973
#
974
.iowt 10
975
#
976
C
977
C - now with nbusy=2
978
C   cntl := 0000000000000010  (nf=0,stat=000,nbusy=2)
979
C   cntl -> 0000000000000010
980
C   data := 0011001100000010  -> ncyc=3
981
C   attn -> 0000000000000011
982
C   data -> 0011001100000010  -> ncyc=3
983
C   attn -> 0000000000000011
984
C
985
#
986
rxsop
987
rxcs   00001010 00000000
988
rxcds  00010000          0000000000000010 00000000
989
rxcs   00011010 00000000
990
rxcds  00100000          0000000000000011 00000000
991
rxcds  00101000          0011001100000010 00000000
992
rxcds  00110000          0000000000000011 00000000
993
rxeop
994
#
995
txsop
996
txcad  00001010 11110000 0000000000000010
997
txca   00010000 11110000
998
txcad  00011010 11110001 0011001100000010
999
txca   00100000 11110011
1000
txca   00101000 11110001
1001
txca   00110000 11110011
1002
txeop
1003
#
1004
.iowt 10
1005
#
1006
C
1007
C - now with nbusy=31 (still succeeds)
1008
C   cntl := 0000000000011111  (nf=0,stat=000,nbusy=31)
1009
C   cntl -> 0000000000011111
1010
C   data := 0011001100011111  -> ncyc=32
1011
C   attn -> 0000000000100000
1012
C   data -> 0011001100011111  -> ncyc=32
1013
C   attn -> 0000000000100000
1014
C
1015
#
1016
rxsop
1017
rxcs   00001010 00000000
1018
rxcds  00010000          0000000000011111 00000000
1019
rxcs   00011010 00000000
1020
rxcds  00100000          0000000000100000 00000000
1021
rxcds  00101000          0011001100011111 00000000
1022
rxcds  00110000          0000000000100000 00000000
1023
rxeop
1024
#
1025
txsop
1026
txcad  00001010 11110000 0000000000011111
1027
txca   00010000 11110000
1028
txcad  00011010 11110001 0011001100011111
1029
txca   00100000 11110011
1030
txca   00101000 11110001
1031
txca   00110000 11110011
1032
txeop
1033
#
1034
.iowt 20
1035
#
1036
C
1037
C - now with nbusy=32  (fails with rbnak=1)
1038
C   cntl := 0000000000100000  (nf=0,stat=000,nbusy=32)
1039
C   cntl -> 0000000000100000
1040
C   data := 0011001100100000  -> ncyc=32, rbnak=1
1041
C   attn -> 0000000000100000
1042
C   data -> 0011001100100000  -> ncyc=32, rbnak=1
1043
C   attn -> 0000000000100000
1044
C
1045
C     stat: stat(000),attn(0),cerr(0),derr(0),rbnak(1),rberr(0) -> 00000010
1046
C   ==> shows that timeout abort works
1047
C
1048
#
1049
rxsop
1050
rxcs   00001010 00000000
1051
rxcds  00010000          0000000000100000 00000000
1052
rxcs   00011010 00000010
1053
rxcds  00100000          0000000000100000 00000000
1054
rxcds  00101000          0101010101010101 00000010
1055
rxcds  00110000          0000000000100000 00000000
1056
rxeop
1057
#
1058
txsop
1059
txcad  00001010 11110000 0000000000100000
1060
txca   00010000 11110000
1061
txcad  00011010 11110001 0011001100100000
1062
txca   00100000 11110011
1063
txca   00101000 11110001
1064
txca   00110000 11110011
1065
txeop
1066
#
1067
.iowt 20
1068
#
1069
C
1070
C - now with nbusy=1023
1071
C   cntl := 0000001111111111  (nf=0,stat=000,nbusy=1023)
1072
C   cntl -> 0000001111111111
1073
C   data := 0011001111111111  -> ncyc=32,rbnak=1
1074
C   attn -> 0000000000100000
1075
C   data -> 0101010101010101  -> ncyc=32,rbnak=1
1076
C   attn -> 0000000000100000
1077
C
1078
C     stat: stat(000),attn(0),cerr(0),derr(0),rbnak(1),rberr(0) -> 00000010
1079
C
1080
#
1081
rxsop
1082
rxcs   00001010 00000000
1083
rxcds  00010000          0000001111111111 00000000
1084
rxcs   00011010 00000010
1085
rxcds  00100000          0000000000100000 00000000
1086
rxcds  00101000          0101010101010101 00000010
1087
rxcds  00110000          0000000000100000 00000000
1088
rxeop
1089
#
1090
txsop
1091
txcad  00001010 11110000 0000001111111111
1092
txca   00010000 11110000
1093
txcad  00011010 11110001 0011001111111111
1094
txca   00100000 11110011
1095
txca   00101000 11110001
1096
txca   00110000 11110011
1097
txeop
1098
#
1099
.iowt 20
1100
#
1101
C -----------------------------------------------------------------------------
1102
C Test 11: rbus busy handling (wblk/rblk via fifo)
1103
C   cntl := 0000000000000000  (nf=0,stat=000,nbusy=0)
1104
C   cntl -> 0000000000000000
1105
C   write 2 words to fifo     -> ncyc=1
1106
C   attn -> 0000000000000001
1107
C   read  2 words from fifo   -> ncyc=1
1108
C   attn -> 0000000000000001
1109
C
1110
C wreg: tx: sop - cmd(00001,010) addr(0000) dl dh ccrc
1111
C rreg: tx:     - cmd(00010,000) addr(0000) ccrc
1112
C wblk: tx:     - cmd(00011,011) addr(0010) cnt(2->001) ccrc dl dh .. dcrc
1113
C rreg: tx:     - cmd(00100,000) addr(0011) ccrc
1114
C rblk: tx:     - cmd(00101,001) addr(0010) cnt(2->001) ccrc
1115
C rreg: tx:     - cmd(00110,000) addr(0011) ccrc
1116
C       tx:     - eop
1117
C       rx: sop - cmd(010) stat crc
1118
C       rx:     - cmd(000) dl dh stat crc
1119
C       rx:     - cmd(011) stat crc
1120
C       rx:     - cmd(000) dl dh stat crc
1121
C       rx:     - cmd(001) cnt dl dh ... stat crc
1122
C       rx:     - cmd(000) dl dh stat crc
1123
C       rx:     - eop
1124
C
1125
rxsop
1126
rxcs   00001010 00000000
1127
rxcds  00010000          0000000000000000 00000000
1128
rxcs   00011011 00000000
1129
rxcds  00100000          0000000000000001 00000000
1130
rx8    00101001
1131
rx8    00000001
1132
rx16   0011001100000000
1133
rx16   0011001100000001
1134
rx8    00000000
1135
rxcrc
1136
rxcds  00110000          0000000000000001 00000000
1137
rxeop
1138
#
1139
txsop
1140
txcad  00001010 11110000 0000000000000000
1141
txca   00010000 11110000
1142
txcac  00011011 11110010 00000001
1143
tx16   0011001100000000
1144
tx16   0011001100000001
1145
txcrc
1146
txca   00100000 11110011
1147
txcac  00101001 11110010 00000001
1148
txca   00110000 11110011
1149
txeop
1150
#
1151
.iowt 10
1152
#
1153
C
1154
C - now with nbusy=1
1155
C   cntl := 0000000000000001  (nf=0,stat=000,nbusy=1)
1156
C   cntl -> 0000000000000001
1157
C   write 2 words to fifo     -> ncyc=2
1158
C   attn -> 0000000000000010
1159
C   read  2 words from fifo   -> ncyc=2
1160
C   attn -> 0000000000000010
1161
C
1162
rxsop
1163
rxcs   00001010 00000000
1164
rxcds  00010000          0000000000000001 00000000
1165
rxcs   00011011 00000000
1166
rxcds  00100000          0000000000000010 00000000
1167
rx8    00101001
1168
rx8    00000001
1169
rx16   0011001100000000
1170
rx16   0011001100000001
1171
rx8    00000000
1172
rxcrc
1173
rxcds  00110000          0000000000000010 00000000
1174
rxeop
1175
#
1176
txsop
1177
txcad  00001010 11110000 0000000000000001
1178
txca   00010000 11110000
1179
txcac  00011011 11110010 00000001
1180
tx16   0011001100000000
1181
tx16   0011001100000001
1182
txcrc
1183
txca   00100000 11110011
1184
txcac  00101001 11110010 00000001
1185
txca   00110000 11110011
1186
txeop
1187
#
1188
.iowt 10
1189
#
1190
C
1191
C - now with nbusy=31 (still succeeds)
1192
C   cntl := 0000000000011111  (nf=0,stat=000,nbusy=31)
1193
C   cntl -> 0000000000011111
1194
C   write 2 words to fifo     -> ncyc=32
1195
C   attn -> 0000000000100000
1196
C   read  2 words from fifo   -> ncyc=32
1197
C   attn -> 0000000000100000
1198
C
1199
rxsop
1200
rxcs   00001010 00000000
1201
rxcds  00010000          0000000000011111 00000000
1202
rxcs   00011011 00000000
1203
rxcds  00100000          0000000000100000 00000000
1204
rx8    00101001
1205
rx8    00000001
1206
rx16   0011001100000000
1207
rx16   0011001100000001
1208
rx8    00000000
1209
rxcrc
1210
rxcds  00110000          0000000000100000 00000000
1211
rxeop
1212
#
1213
txsop
1214
txcad  00001010 11110000 0000000000011111
1215
txca   00010000 11110000
1216
txcac  00011011 11110010 00000001
1217
tx16   0011001100000000
1218
tx16   0011001100000001
1219
txcrc
1220
txca   00100000 11110011
1221
txcac  00101001 11110010 00000001
1222
txca   00110000 11110011
1223
txeop
1224
#
1225
.iowt 20
1226
#
1227
C
1228
C - now with nbusy=32  (fails with rbnak=1)
1229
C   cntl := 0000000000100000  (nf=0,stat=000,nbusy=32)
1230
C   cntl -> 0000000000100000
1231
C   write 2 words to fifo     -> ncyc=32,rbnak=1
1232
C   attn -> 0000000000100000
1233
C   read  2 words from fifo   -> ncyc=32,rbnak=1
1234
C   attn -> 0000000000100000
1235
C
1236
C     stat: stat(000),attn(0),cerr(0),derr(0),rbnak(1),rberr(0) -> 00000010
1237
C
1238
rxsop
1239
rxcs   00001010 00000000
1240
rxcds  00010000          0000000000100000 00000000
1241
rxcs   00011011 00000010
1242
rxcds  00100000          0000000000100000 00000000
1243
rx8    00101001
1244
rx8    00000001
1245
rx16   0101010101010101
1246
rx16   0101010101010101
1247
rx8    00000010
1248
rxcrc
1249
rxcds  00110000          0000000000100000 00000000
1250
rxeop
1251
#
1252
txsop
1253
txcad  00001010 11110000 0000000000100000
1254
txca   00010000 11110000
1255
txcac  00011011 11110010 00000001
1256
tx16   0011001100000000
1257
tx16   0011001100000001
1258
txcrc
1259
txca   00100000 11110011
1260
txcac  00101001 11110010 00000001
1261
txca   00110000 11110011
1262
txeop
1263
#
1264
.iowt 20
1265
#
1266
C -----------------------------------------------------------------------------
1267
C Test 12a: rbus delay non-ack handling (wreg/rreg via disabled fifo)
1268
C   cntl := 1000000000000011  (nf=1,stat=000,nbusy=3)
1269
C   cntl -> 1000000000000011
1270
C   data := 1111000000000011  -> ncyc=4,rbnak=1
1271
C   attn -> 0000000000000100
1272
C   data -> 0000000000000000  -> ncyc=4,rbnak=1
1273
C   attn -> 0000000000000100
1274
C   init (11110000:0000000000000111)   clear all
1275
C
1276
C     stat: stat(000),attn(0),cerr(0),derr(0),rbnak(1),rberr(0) -> 00000010
1277
C   ==> shows that cycle can be first stretched and than aborted
1278
C
1279
C wreg: tx: sop - cmd(00001,010) addr(0000) dl dh ccrc
1280
C rreg: tx:     - cmd(00010,000) addr(0000) ccrc
1281
C wreg: tx:     - cmd(00011,010) addr(0010) dl dh ccrc
1282
C rreg: tx:     - cmd(00100,000) addr(0011) ccrc
1283
C rreg: tx:     - cmd(00101,000) addr(0010) ccrc
1284
C rreg: tx:     - cmd(00110,000) addr(0011) ccrc
1285
C init: tx:     - cmd(00111,110) addr(0000) dl dh ccrc
1286
C       tx:     - eop
1287
C       rx: sop - cmd(010) stat crc
1288
C       rx:     - cmd(000) dl dh stat crc
1289
C       rx:     - cmd(010) stat crc
1290
C       rx:     - cmd(000) dl dh stat crc
1291
C       rx:     - cmd(000) dl dh stat crc
1292
C       rx:     - cmd(000) dl dh stat crc
1293
C       rx:     - cmd(110) stat crc
1294
C       rx:     - eop
1295
C
1296
#
1297
rxsop
1298
rxcs   00001010 00000000
1299
rxcds  00010000          1000000000000011 00000000
1300
rxcs   00011010 00000010
1301
rxcds  00100000          0000000000000100 00000000
1302
rxcds  00101000          0000000000000000 00000010
1303
rxcds  00110000          0000000000000100 00000000
1304
rxcs   00111110 00000000
1305
rxeop
1306
#
1307
txsop
1308
txcad  00001010 11110000 1000000000000011
1309
txca   00010000 11110000
1310
txcad  00011010 11110010 1111000000000011
1311
txca   00100000 11110011
1312
txca   00101000 11110010
1313
txca   00110000 11110011
1314
txcad  00111110 11110000 0000000000000111
1315
txeop
1316
#
1317
.iowt 10
1318
#
1319
C -----------------------------------------------------------------------------
1320
C Test 12b: rbus delay non-ack handling (wbk/rblk via disabled fifo)
1321
C   cntl := 1000000000000011  (nf=1,stat=000,nbusy=3)
1322
C   cntl -> 1000000000000011
1323
C   write 2 words to fifo     -> ncyc=3,rbnak=1
1324
C   attn -> 0000000000000100
1325
C   read  2 words from fifo   -> ncyc=3,rbnak=1
1326
C   attn -> 0000000000000100
1327
C   init (11110000:0000000000000111)   clear all
1328
C
1329
C wreg: tx: sop - cmd(00001,010) addr(0000) dl dh ccrc
1330
C rreg: tx:     - cmd(00010,000) addr(0000) ccrc
1331
C wblk: tx:     - cmd(00011,011) addr(0010) cnt(2->001) ccrc dl dh .. dcrc
1332
C rreg: tx:     - cmd(00100,000) addr(0011) ccrc
1333
C rblk: tx:     - cmd(00101,001) addr(0010) cnt(2->001) ccrc
1334
C rreg: tx:     - cmd(00110,000) addr(0011) ccrc
1335
C init: tx:     - cmd(00111,110) addr(0000) dl dh ccrc
1336
C       tx:     - eop
1337
C       rx: sop - cmd(010) stat crc
1338
C       rx:     - cmd(000) dl dh stat crc
1339
C       rx:     - cmd(011) stat crc
1340
C       rx:     - cmd(000) dl dh stat crc
1341
C       rx:     - cmd(001) cnt dl dh ... stat crc
1342
C       rx:     - cmd(000) dl dh stat crc
1343
C       rx:     - cmd(110) stat crc
1344
C       rx:     - eop
1345
C
1346
rxsop
1347
rxcs   00001010 00000000
1348
rxcds  00010000          1000000000000011 00000000
1349
rxcs   00011011 00000010
1350
rxcds  00100000          0000000000000100 00000000
1351
rx8    00101001
1352
rx8    00000001
1353
rx16   0000000000000000
1354
rx16   0000000000000000
1355
rx8    00000010
1356
rxcrc
1357
rxcds  00110000          0000000000000100 00000000
1358
rxcs   00111110 00000000
1359
rxeop
1360
#
1361
txsop
1362
txcad  00001010 11110000 1000000000000011
1363
txca   00010000 11110000
1364
txcac  00011011 11110010 00000001
1365
tx16   1111000000000000
1366
tx16   1111000000000001
1367
txcrc
1368
txca   00100000 11110011
1369
txcac  00101001 11110010 00000001
1370
txca   00110000 11110011
1371
txcad  00111110 11110000 0000000000000111
1372
txeop
1373
#
1374
.iowt 10
1375
#
1376
C -----------------------------------------------------------------------------
1377
C Test 13a: attention logic (via asynchronous LAM from test bench)
1378
C   .attn   0000000000000000
1379
C   cmd attn returns 0000000000000000, stat=00000000
1380
C   .attn   1000000000000000
1381
C   cmd attn returns 1000000000000000, stat=00000000
1382
C   cmd attn returns 0000000000000000, stat=00000000
1383
C   .attn   0100000000000000
1384
C   .attn   0010000000000000
1385
C   cmd attn returns 0110000000000000, stat=00000000
1386
C   cmd attn returns 0000000000000000, stat=00000000
1387
C
1388
C   ==> shows that attn command works properly
1389
C
1390
C       .attn 0000000000000000
1391
C attn: tx: sop - cmd(00001,101) ccrc - eop
1392
C       rx: sop - cmd(101) dl dh stat crc - eop
1393
#
1394
.attn  0000000000000000
1395
rxsop
1396
rxcds  00001101          0000000000000000 00000000
1397
rxeop
1398
txsop
1399
txc    00001101
1400
txeop
1401 16 wfjm
.iowt 10
1402 9 wfjm
C
1403
C       .attn 1000000000000000
1404
C attn: tx: sop - cmd(00010,101) ccrc
1405
C attn: tx:     - cmd(00011,101) ccrc - eop
1406
C       rx: sop - cmd(101) dl dh stat crc
1407
C       rx:     - cmd(101) dl dh stat crc - eop
1408
#
1409
.attn  1000000000000000
1410
rxsop
1411
rxcds  00010101          1000000000000000 00000000
1412
rxcds  00011101          0000000000000000 00000000
1413
rxeop
1414
txsop
1415
txc    00010101
1416
txc    00011101
1417
txeop
1418
.iowt  10
1419
C
1420
C       .attn 0100000000000000
1421
C       .attn 0110000000000000
1422
C attn: tx: sop - cmd(00100,101) ccrc
1423
C attn: tx:     - cmd(00101,101) ccrc - eop
1424
C       rx: sop - cmd(101) dl dh stat crc
1425
C       rx:     - cmd(101) dl dh stat crc - eop
1426
C
1427
#
1428
.attn  0100000000000000
1429
.attn  0010000000000000
1430
rxsop
1431
rxcds  00100101          0110000000000000 00000000
1432
rxcds  00101101          0000000000000000 00000000
1433
rxeop
1434
txsop
1435
txc    00100101
1436
txc    00101101
1437
txeop
1438
.iowt 10
1439
#
1440
C -----------------------------------------------------------------------------
1441
C Test 13b: attention logic (via synchronous LAM from rbd_tester)
1442
C   attn := 0000000000000000           stat=00000000
1443
C   cmd attn returns 0000000000000000, stat=00000000
1444
C   attn := 0000000000000001           stat=00010000
1445
C   cmd attn returns 0000000000000001, stat=00000000
1446
C   cmd attn returns 0000000000000000, stat=00000000
1447
C   attn := 0000000000000010           stat=00010000
1448
C   attn := 0000000000000100           stat=00010000
1449
C   cmd attn returns 0000000000000110, stat=00000000
1450
C   cmd attn returns 0000000000000000, stat=00000000
1451
C
1452
C     stat: stat(000),attn(1),cerr(0),derr(0),rbnak(0),rberr(0) -> 00010000
1453
C   ==> shows that attn command works properly
1454
C   ==> shows that attn register in tb_rlink triggers RB_LAM
1455
C
1456
C wreg: tx: sop - cmd(00001,010) addr(0011) dl dh ccrc
1457
C attn: tx:     - cmd(00010,101) ccrc
1458
C wreg: tx:     - cmd(00011,010) addr(0011) dl dh ccrc
1459
C attn: tx:     - cmd(00100,101) ccrc
1460
C attn: tx:     - cmd(00101,101) ccrc
1461
C wreg: tx:     - cmd(00110,010) addr(0011) dl dh ccrc
1462
C wreg: tx:     - cmd(00111,010) addr(0011) dl dh ccrc
1463
C attn: tx:     - cmd(01000,101) ccrc
1464
C attn: tx:     - cmd(01001,101) ccrc
1465
C       tx:     - eop
1466
C       rx: sop - cmd(010) stat crc
1467
C       rx:     - cmd(101) dl dh stat crc
1468
C       rx:     - cmd(010) stat crc
1469
C       rx:     - cmd(101) dl dh stat crc
1470
C       rx:     - cmd(101) dl dh stat crc
1471
C       rx:     - cmd(010) stat crc
1472
C       rx:     - cmd(010) stat crc
1473
C       rx:     - cmd(101) dl dh stat crc
1474
C       rx:     - cmd(101) dl dh stat crc
1475
C       rx:     - eop
1476
C
1477
#
1478
rxsop
1479
rxcs   00001010 00000000
1480
rxcds  00010101          0000000000000000 00000000
1481
rxcs   00011010 00010000
1482
rxcds  00100101          0000000000000001 00000000
1483
rxcds  00101101          0000000000000000 00000000
1484
rxcs   00110010 00010000
1485
rxcs   00111010 00010000
1486
rxcds  01000101          0000000000000110 00000000
1487
rxcds  01001101          0000000000000000 00000000
1488
rxeop
1489
#
1490
txsop
1491
txcad  00001010 11110011 0000000000000000
1492
txc    00010101
1493
txcad  00011010 11110011 0000000000000001
1494
txc    00100101
1495
txc    00101101
1496
txcad  00110010 11110011 0000000000000010
1497
txcad  00111010 11110011 0000000000000100
1498
txc    01000101
1499
txc    01001101
1500
txeop
1501
#
1502
.iowt 10
1503
#
1504
C -----------------------------------------------------------------------------
1505
C Test 14: attn poll
1506
C   send 2 attn commas, get 2 idle chars
1507
C   attn := 0000000000001000           stat=00010000
1508
C   send 2 attn commas, get 2 attn chars
1509
C   cmd attn returns 0000000000001000, stat=00010000
1510
C   send 2 attn commas, get 2 idle chars
1511
C
1512
C send 2 , expect two  back
1513
C
1514
C oof:  tx: attn - attn
1515
C       rx: idle - idle
1516
C
1517
rxidle
1518
rxidle
1519
txattn
1520
txattn
1521
.iowt 10
1522
C
1523
C write attn register, set attn bit and flag
1524
C
1525
C wreg: tx: sop  - cmd(00001,010) addr(0011) dl dh ccrc - eop
1526
C       rx: sop  - cmd(010) stat crc - eop
1527
C
1528
rxsop
1529
rxcs   00001010 00010000
1530
rxeop
1531
txsop
1532
txcad  00001010 11110011 0000000000001000
1533
txeop
1534
.iowt 10
1535
C
1536
C send 2 , expect two  back
1537
C
1538
C oof:  tx: attn - attn
1539
C       rx: attn - attn
1540
C
1541
rxattn
1542
rxattn
1543
txattn
1544
txattn
1545
.iowt 10
1546
C
1547
C send attn cmd, read and clear attn bits and flag
1548
C
1549
C attn: tx:      - cmd(00010,101) ccrc  - eop
1550
C       rx:      - cmd(101) dl dh stat crc - eop
1551
C
1552
rxsop
1553
rxcds  00010101          0000000000001000 00000000
1554
rxeop
1555
txsop
1556
txc    00010101
1557
txeop
1558
.iowt 10
1559
C
1560
C send 2 , expect two  back
1561
C
1562
C oof:  tx: attn - attn
1563
C       rx: idle - idle
1564
C
1565
rxidle
1566
rxidle
1567
txattn
1568
txattn
1569
.iowt 10
1570
#
1571
C -----------------------------------------------------------------------------
1572
C Test 15a: enable and test asynchronous attn notification (when idle)
1573
C   init (11111111:1000000000000000)  noop
1574
C      anena(1), itoena(0), ito(0)   -> 11111111,1000000000000000
1575
C   .attn   0001000000000000
1576
C      -->  will be send
1577
C   cmd attn returns 0001000000000000, stat=00000000
1578
C
1579
C   ==> shows that internal init works
1580
C   ==> shows asynchronous attn notification works
1581
C
1582
C init: tx: sob - cmd(00001,110) addr(11111111) dl dh ccrc - eop
1583
C       rx: sob - cmd(110) stat crc - eop
1584
C
1585
rxsop
1586
rxcs   00001110 00000000
1587
rxeop
1588
txsop
1589
txcad  00001110 11111111 1000000000000000
1590
txeop
1591
.iowt 10
1592
C
1593
C now ping an attention line, expect out-of-frame attn symbol
1594
C       .attn 0001000000000000
1595
C       rx: attn
1596
C
1597
.wait 20
1598
rxattn
1599
.attn  0001000000000000
1600
.wait 20
1601
.iowt 10
1602
C
1603
C attn: tx:     - cmd(00010,101) ccrc  - eop
1604
C       rx:     - cmd(101) dl dh stat crc - eop
1605
C
1606
rxsop
1607
rxcds  00010101          0001000000000000 00000000
1608
rxeop
1609
txsop
1610
txc    00010101
1611
txeop
1612
.iowt 10
1613
#
1614
C -----------------------------------------------------------------------------
1615
C Test 15b: enable and test asynchronous attn notification (when in packet)
1616
C   attn := 0000000000010000           stat=00010000
1617
C      -->  will be send after eop
1618
C   cmd attn returns 0000000000010000, stat=00000000
1619
C
1620
C   ==> shows asynchronous attn notification comes after eop
1621
C
1622
C write attn register, set attn bit and flag, expect  comma after 
1623
C
1624
C wreg: tx: sop - cmd(00001,010) addr(0011) dl dh ccrc - eop
1625
C       rx: sop - cmd(010) stat crc - eop
1626
C       rx: attn
1627
C
1628
rxsop
1629
rxcs   00001010 00010000
1630
rxeop
1631
rxattn
1632
txsop
1633
txcad  00001010 11110011 0000000000010000
1634
txeop
1635
.iowt 10
1636
C
1637
C send attn cmd, read and clear attn bits and flag
1638
C
1639
C attn: tx:     - cmd(00010,101) ccrc  - eop
1640
C       rx:     - cmd(101) dl dh stat crc - eop
1641
C
1642
rxsop
1643
rxcds  00010101          0000000000010000 00000000
1644
rxeop
1645
txsop
1646
txc    00010101
1647
txeop
1648
.iowt 10
1649
#
1650
C -----------------------------------------------------------------------------
1651
C Test 16: ccrc error abort for attn,init
1652
C
1653
C attn: tx: sop - cmd(00001,101) *BAD CRC - eop
1654
C       rx: sop - nak - eop
1655
C
1656
rxsop
1657
rxnak
1658
rxeop
1659
#
1660
txsop
1661
tx8    00001101
1662
txbad
1663
txeop
1664
#
1665
.iowt 10
1666
#
1667
C
1668
C init: tx:     - cmd(00010,110) addr(0000) dl dh ccrc
1669
C       rx: sop - nak - eop
1670
C
1671
rxsop
1672
rxnak
1673
rxeop
1674
#
1675
txsop
1676
tx8    00010110
1677
tx8    11110000
1678
tx8    00000000
1679
tx8    00000000
1680
txbad
1681
txeop
1682
#
1683
.iowt 10
1684
#
1685
C -----------------------------------------------------------------------------
1686
C Test 17: enable and test idle timeout
1687
C   init (11111111:1100000000001001)
1688
C      anena(1), itoena(1), ito(9)   -> 11111111,1100000000001001
1689
C      ito=9 --> divider=10; ce_xsec div is 1:20 --> total every 200 cycles
1690
C   --> send  every 200 cycles
1691
C   .attn   0000100000000000
1692
C   --> send  every 200 cycles
1693
C   cmd attn returns 0000100000000000, stat=00000000
1694
C   --> send  every 200 cycles
1695
C   init (11111111:0000000000000000)
1696
C
1697
C first init (11111111:1100000000001001) -> enable idle timeout
1698
C
1699
C init: tx: sob - cmd(00001,110) addr(00000011) dl dh ccrc - eop
1700
C       rx: sob - cmd(110) stat crc - eop
1701
C       rx: idle (every 200 cycles)
1702
C       .attn 0000100000000000
1703
C       rx: attn (every 200 cycles)
1704
C
1705
rxsop
1706
rxcs   00001110 00000000
1707
rxeop
1708
rxidle
1709
rxidle
1710
txsop
1711
txcad  00001110 11111111 1100000000001001
1712
txeop
1713
.iowt 10
1714
.wait 500
1715
C
1716
C set attn bits, now  send (1 prompt, 2 more every 200 cycles)
1717
C
1718
rxattn
1719
rxattn
1720
rxattn
1721
.attn  0000100000000000
1722
.wait 500
1723
C
1724
C send attn cmd, read and clear attn bits and flag
1725
C
1726
C attn: tx:     - cmd(00010,101) ccrc  - eop
1727
C       rx:     - cmd(101) dl dh stat crc - eop
1728
C       rx: idle (every 200 cycles)
1729
C
1730
rxsop
1731
rxcds  00010101          0000100000000000 00000000
1732
rxeop
1733
rxidle
1734
rxidle
1735
txsop
1736
txc    00010101
1737
txeop
1738
.iowt 10
1739
.wait 500
1740
C
1741
C second init (11111111:0000000000000000) -> disable idle timeout
1742
C
1743
C init: tx: sob - cmd(00011,110) addr(00000011) dl dh ccrc - eop
1744
C       rx: sob - cmd(110) stat crc - eop
1745
C
1746
rxsop
1747
rxcs   00001110 00000000
1748
rxeop
1749
txsop
1750
txcad  00001110 11111111 0000000000000000
1751
txeop
1752
.iowt 10
1753
C
1754
C wait to be sure there are no more  or  comming
1755
C
1756
.wait 300
1757
#
1758
C -----------------------------------------------------------------------------
1759
C Test 18a: verify that  commas are tolerated at any state: wreg/rreg
1760
C          do wreg+rreg, with  between all command bytes send
1761
C          use as data 1000000 and 10000001 to force escaping here
1762
C
1763
C wreg: tx: sop - cmd(00001,010) addr(0001) dl dh ccrc
1764
C rreg: tx:     - cmd(00010,000) addr(0001) ccrc
1765
C       tx:     - eop
1766
C       rx: sop - cmd(010) stat crc
1767
C       rx:     - cmd(000) dl dh stat crc
1768
C       rx:     - eop
1769
#
1770
rxsop
1771
rxcs   00001010 00000000
1772
rxcds  00010000          1000000010000001 00000000
1773
rxeop
1774
#
1775
txidle
1776
txsop
1777
txidle
1778
tx8    00001010
1779
txidle
1780
tx8    11110001
1781
txidle
1782
tx8    10000001
1783
txidle
1784
txidle
1785
tx8    10000000
1786
txidle
1787
txcrc
1788
txidle
1789
tx8    00010000
1790
txidle
1791
txidle
1792
txidle
1793
tx8    11110001
1794
txidle
1795
txcrc
1796
txeop
1797
#
1798
.iowt 10
1799
#
1800
C -----------------------------------------------------------------------------
1801
C Test 18b: verify that  commas are tolerated at any state: wblk/rblk
1802
C          do wblk+rblk, with  between all command bytes send
1803
C          use as data 1000000 to 10000011 to force escaping here
1804
C
1805
C wblk: tx: sop - cmd(00001,011) addr(0010) cnt(2->001) ccrc dl dh .. dcrc
1806
C rblk: tx:     - cmd(00010,001) addr(0010) cnt(2->001) ccrc
1807
C       tx:     - eop
1808
C       rx: sop - cmd(011) stat crc
1809
C       rx:     - cmd(001) cnt dl dh ... stat crc
1810
C       rx:     - eop
1811
#
1812
rxsop
1813
rxcs   00001011 00000000
1814
rx8    00010001
1815
rx8    00000001
1816
rx16   1000000010000001
1817
rx16   1000001010000011
1818
rx8    00000000
1819
rxcrc
1820
rxeop
1821
#
1822
# wblk
1823
txidle
1824
txsop
1825
txidle
1826
tx8    00001011
1827
txidle
1828
tx8    11110010
1829
txidle
1830
tx8    00000001
1831
txidle
1832
txcrc
1833
txidle
1834
tx8    10000001
1835
txidle
1836
tx8    10000000
1837
txidle
1838
tx8    10000011
1839
txidle
1840
tx8    10000010
1841
txidle
1842
txcrc
1843
# rblk
1844
txidle
1845
tx8    00010001
1846
txidle
1847
tx8    11110010
1848
txidle
1849
tx8    00000001
1850
txidle
1851
txcrc
1852
txidle
1853
txeop
1854
txidle
1855
#
1856
.iowt 10
1857
#
1858
C -----------------------------------------------------------------------------
1859
C Test 18c: verify that  commas are tolerated at any state: stat,attn,init
1860
C   cntl := 0000000000001111
1861
C   cntl -> 0000000000001111
1862
C   cmd stat
1863
C   cmd attn
1864
C   cmd init (11110000:0000000000000001)  clear cntl
1865
C   cntl -> 0000000000000000
1866
C
1867
C wreg: tx: sop - cmd(00001,010) addr(0000) dl dh ccrc
1868
C rreg: tx:     - cmd(00010,000) addr(0000) ccrc
1869
C stat: tx:     - cmd(00011,100) ccrc
1870
C attn: tx:     - cmd(00100,101) ccrc
1871
C init: tx:     - cmd(00101,110) addr(0000) dl dh ccrc
1872
C rreg: tx:     - cmd(00110,000) addr(0000) ccrc
1873
C       tx:     - eop
1874
C       rx: sop - cmd(010) stat crc
1875
C       rx:     - cmd(000) dl dh stat crc
1876
C       rx:     - cmd(100) ccmd(010) dl dh stat crc
1877
C       rx:     - cmd(101) dl dh stat crc
1878
C       rx:     - cmd(110) stat crc
1879
C       rx:     - cmd(000) dl dh stat crc
1880
C       rx:     - eop
1881
C
1882
#
1883
rxsop
1884
rxcs   00001010 00000000
1885
rxcds  00010000          0000000000001111 00000000
1886
rxccd  00011100 00010000 0000000000001111 00000000
1887
rxcds  00100101          0000000000000000 00000000
1888
rxcs   00101110 00000000
1889
rxcds  00110000          0000000000000000 00000000
1890
rxeop
1891
#
1892
txsop
1893
# wreg
1894
txidle
1895
txcad  00001010 11110000 0000000000001111
1896
# rreg
1897
txidle
1898
txca   00010000 11110000
1899
txidle
1900
# stat
1901
tx8    00011100
1902
txidle
1903
txcrc
1904
# attn
1905
txidle
1906
tx8    00100101
1907
txidle
1908
txcrc
1909
# init
1910
txidle
1911
tx8    00101110
1912
txidle
1913
tx8    11110000
1914
txidle
1915
tx8    00000001
1916
txidle
1917
tx8    00000000
1918
txidle
1919
txcrc
1920
# rreg
1921
txidle
1922
txca   00110000 11110000
1923
txidle
1924
txeop
1925
#
1926
.iowt 10
1927
#
1928
C -----------------------------------------------------------------------------
1929
C Test 19: sop - eop framing
1930
C   test all sequences of sop and eop and nak
1931
C
1932
C 1. sop-eop  ==> sop-eop  (empty packet)
1933
C       tx: sop - eop
1934
C       rx: sop - eop
1935
C
1936
rxsop
1937
rxeop
1938
#
1939
txsop
1940
txeop
1941
.iowt 10
1942
C
1943
C 2. eop  ==> nak-eop  (out-of-order eop, gives nak)
1944
C       tx: eop
1945
C       rx: nak - eop
1946
C       tx: sop - eop
1947
C       rx: sop - eop
1948
C
1949
rxnak
1950
rxeop
1951
txeop
1952
#
1953 16 wfjm
.iowt 20
1954 9 wfjm
rxsop
1955
rxeop
1956
txsop
1957
txeop
1958
.iowt 10
1959
C
1960
C 3. sop - sop - eop  ==> sop-nak-eop  (out-of-order sop, gives nak)
1961
C       tx: sop - sop - eop
1962
C       rx: sop - nak - eop
1963
C
1964
rxsop
1965
rxnak
1966
rxeop
1967
# (use txoof for 2nd sop to avoid the side effects of txsop )
1968
txsop
1969
txoof  100000001
1970
txeop
1971
.iowt 10
1972
C
1973
C 4. sop - nak - eop  ==> sop-nak-eop  (nak is echoed)
1974
C       tx: sop - nak - eop
1975
C       rx: sop - nak - eop
1976
C
1977
rxsop
1978
rxnak
1979
rxeop
1980
#
1981
txsop
1982
txoof  100000011
1983
txeop
1984
.iowt 10
1985
C
1986
C 5. nak  ==> {ignored}  (out-of-order nak is ignored)
1987
C       tx: nak
1988
C       tx: sop - eop
1989
C       rx: sop - eop
1990
C
1991
rxsop
1992
rxeop
1993
#
1994
txoof  100000011
1995
txsop
1996
txeop
1997
.iowt 10
1998
#
1999
C -----------------------------------------------------------------------------
2000
C Test 20: unused command code '111' gives a nak and transits to error state
2001
C   1. do '111' command (will abort with nak)
2002
C   2. do rreg command  (will be ignored)
2003
C
2004
C 111:  tx: sop - '111'
2005
C rreg: tx:     - cmd(00010,000) addr(0001) ccrc
2006
C       tx:     - eop
2007
C       rx: sop - nak
2008
C       rx:     - eop
2009
C
2010
rxsop
2011
rxnak
2012
rxeop
2013
#
2014
txsop
2015
tx8    00000111
2016
txca   00010000 11110001
2017
txeop
2018 16 wfjm
.iowt 20
2019 9 wfjm
#
2020
C -----------------------------------------------------------------------------
2021
C Test 21a: eop aborts of wreg
2022
C
2023
C 0. write all-1s to data register and read back to initialize context
2024
C wreg: tx: sop - cmd(11110,010) addr(0001) dl dh ccrc
2025
C rreg: tx:     - cmd(11111,000) addr(0001) ccrc
2026
C       tx:     - eop
2027
C       rx: sop - cmd(010) stat crc
2028
C       rx: sop - cmd(000) dl dh stat crc
2029
C       rx:     - eop
2030
#
2031
rxsop
2032
rxcs   11110010 00000000
2033
rxcds  11111000          1111111111111111 00000000
2034
rxeop
2035
#
2036
txsop
2037
txcad  11110010 11110001 1111111111111111
2038
txca   11111000 11110001
2039
txeop
2040
#
2041
.iowt 10
2042
#
2043
C
2044
C 1a. abort after cmd
2045
C wreg: tx: sop - cmd(00001,010) [[addr(0001) dl dh ccrc]] - eop
2046
C       rx: sop - nak - eop
2047
C
2048
#
2049
rxsop
2050
rxnak
2051
rxeop
2052
#
2053
txsop
2054
tx8    00100010
2055
txeop
2056 16 wfjm
.iowt 20
2057 9 wfjm
C
2058
C 1b. check stat
2059
C     stat: stat(000),attn(0),cerr(1),derr(0),rbnak(0),rberr(0) -> 00001000
2060
C stat: tx: sop - cmd(00110,100) ccrc - eop
2061
C       rx: sop - cmd(100) ccmd(000) dl dh stat crc - eop
2062
C
2063
#
2064
rxsop
2065
rxccd  00110100 11111000 1111111111111111 00001000
2066
rxeop
2067
txsop
2068
txc    00110100
2069
txeop
2070
.iowt 10
2071
C
2072
C 2a. abort after addr
2073
C wreg: tx: sop - cmd(00001,010) addr(0001) [[dl dh ccrc]] - eop
2074
C       rx: sop - nak - eop
2075
C
2076
#
2077
rxsop
2078
rxnak
2079
rxeop
2080
#
2081
txsop
2082
tx8    00001010
2083
tx8    11110001
2084
txeop
2085 16 wfjm
.iowt 20
2086 9 wfjm
C
2087
C 2b. check stat (stat as for 1a.)
2088
C
2089
#
2090
rxsop
2091
rxccd  00110100 11111000 1111111111111111 00001000
2092
rxeop
2093
txsop
2094
txc    00110100
2095
txeop
2096
.iowt 10
2097
C
2098
C 3a. abort after dl
2099
C wreg: tx: sop - cmd(00001,010) addr(0001) dl [[dh ccrc]] - eop
2100
C       rx: sop - nak - eop
2101
C
2102
#
2103
rxsop
2104
rxnak
2105
rxeop
2106
#
2107
txsop
2108
tx8    00001010
2109
tx8    11110001
2110
tx8    00000011
2111
txeop
2112 16 wfjm
.iowt 20
2113 9 wfjm
C
2114
C 3b. check stat (stat as for 1a.)
2115
C
2116
#
2117
rxsop
2118
rxccd  00110100 11111000 1111111111111111 00001000
2119
rxeop
2120
txsop
2121
txc    00110100
2122
txeop
2123
.iowt 10
2124
C
2125
C 4a. abort after dh
2126
C wreg: tx: sop - cmd(00001,010) addr(0001) dl dh [[ccrc]] - eop
2127
C       rx: sop - nak - eop
2128
C
2129
#
2130
rxsop
2131
rxnak
2132
rxeop
2133
#
2134
txsop
2135
tx8    00001010
2136
tx8    11110001
2137
tx8    00000011
2138
tx8    11000000
2139
txeop
2140 16 wfjm
.iowt 20
2141 9 wfjm
C
2142
C 4b. check stat (stat as for 1a.)
2143
C
2144
#
2145
rxsop
2146
rxccd  00110100 11111000 1111111111111111 00001000
2147
rxeop
2148
txsop
2149
txc    00110100
2150
txeop
2151
.iowt 10
2152
C
2153
C 5a. finally just normal wreg to data register
2154
C wreg: tx: sop - cmd(00001,010) addr(0001) dl dh ccrc - eop
2155
C       rx: sop - cmd(010) stat crc - eop
2156
C
2157
#
2158
rxsop
2159
rxcs   00001010 00000000
2160
rxeop
2161
#
2162
txsop
2163
tx8    00001010
2164
tx8    11110001
2165
tx8    00000011
2166
tx8    11000000
2167
txcrc
2168
txeop
2169
.iowt 10
2170
C
2171
C 5b. check stat (now cerr=0 again)
2172
C
2173
#
2174
rxsop
2175
rxccd  00110100 00001010 1111111111111111 00000000
2176
rxeop
2177
txsop
2178
txc    00110100
2179
txeop
2180
.iowt 10
2181
#
2182
C -----------------------------------------------------------------------------
2183
C Test 21b: eop aborts of rreg
2184
C
2185
C 1a. abort after cmd
2186
C rreg: tx: sop - cmd(00001,000) [[addr(0001) ccrc]] - eop
2187
C       rx: sop - nak - eop
2188
C
2189
#
2190
rxsop
2191
rxnak
2192
rxeop
2193
#
2194
txsop
2195
tx8    00001000
2196
txeop
2197 16 wfjm
.iowt 20
2198 9 wfjm
C
2199
C 1b. check stat (cerr=1, last successfull command in Test 21a/5a)
2200
C
2201
#
2202
rxsop
2203
rxccd  00110100 00001010 1111111111111111 00001000
2204
rxeop
2205
txsop
2206
txc    00110100
2207
txeop
2208
.iowt 10
2209
#
2210
C
2211
C 2a. abort after addr
2212
C rreg: tx: sop - cmd(00001,000) addr(0001) [[ccrc]] - eop
2213
C       rx: sop - nak - eop
2214
C
2215
#
2216
rxsop
2217
rxnak
2218
rxeop
2219
#
2220
txsop
2221
tx8    00001000
2222
tx8    11110001
2223
txeop
2224 16 wfjm
.iowt 20
2225 9 wfjm
C
2226
C 2b. check stat (cerr=1)
2227
C
2228
#
2229
rxsop
2230
rxccd  00110100 00001010 1111111111111111 00001000
2231
rxeop
2232
txsop
2233
txc    00110100
2234
txeop
2235
.iowt 10
2236
C
2237
C 3a. finally just normal rreg from data register
2238
C rreg: tx: sop - cmd(00001,000) addr(0001) ccrc - eop
2239
C       rx: sop - cmd(000) dl dh stat crc - eop
2240
C
2241
#
2242
rxsop
2243
rxcds  00001000          1100000000000011 00000000
2244
rxeop
2245
#
2246
txsop
2247
tx8    00001000
2248
tx8    11110001
2249
txcrc
2250
txeop
2251
.iowt 10
2252
C
2253
C 3b. check stat (cerr=0 again)
2254
C
2255
#
2256
rxsop
2257
rxccd  00110100 00001000 1100000000000011 00000000
2258
rxeop
2259
txsop
2260
txc    00110100
2261
txeop
2262
.iowt 10
2263
#
2264
C -----------------------------------------------------------------------------
2265
C Test 21c: eop aborts of wblk (with cnt=2)
2266
C
2267
C 1a. abort after cmd
2268
C wreg: tx: sop - cmd(00001,011) [[addr cnt(2->001) ccrc dl dh dl dh dcrc]] -eop
2269
C       rx: sop - nak - eop
2270
C
2271
#
2272
rxsop
2273
rxnak
2274
rxeop
2275
#
2276
txsop
2277
tx8    00001011
2278
txeop
2279 16 wfjm
.iowt 20
2280 9 wfjm
C
2281
C 1b. check stat (cerr=1)
2282
C     stat: stat(000),attn(0),cerr(1),derr(0),rbnak(0),rberr(0) -> 00001000
2283
C
2284
#
2285
rxsop
2286
rxccd  00110100 00001000 1100000000000011 00001000
2287
rxeop
2288
txsop
2289
txc    00110100
2290
txeop
2291
.iowt 10
2292
C
2293
C 2a. abort after addr
2294
C wreg: tx: sop - cmd(00001,011) addr [[cnt(2->001) ccrc dl dh dl dh dcrc]] -eop
2295
C       rx: sop - nak - eop
2296
C
2297
#
2298
rxsop
2299
rxnak
2300
rxeop
2301
#
2302
txsop
2303
tx8    00001011
2304
tx8    11110010
2305
txeop
2306 16 wfjm
.iowt 20
2307 9 wfjm
C
2308
C 2b. check stat (cerr=1)
2309
C
2310
#
2311
rxsop
2312
rxccd  11110100 00001000 1100000000000011 00001000
2313
rxeop
2314
txsop
2315
txc    11110100
2316
txeop
2317
.iowt 10
2318
C
2319
C 3a. abort after cnt
2320
C wreg: tx: sop - cmd(00001,011) addr cnt(2->001) [[ccrc dl dh dl dh dcrc]] -eop
2321
C       rx: sop - nak - eop
2322
C
2323
#
2324
rxsop
2325
rxnak
2326
rxeop
2327
#
2328
txsop
2329
tx8    00001011
2330
tx8    11110010
2331
tx8    00000001
2332
txeop
2333 16 wfjm
.iowt 20
2334 9 wfjm
C
2335
C 3b. check stat (cerr=1)
2336
C
2337
#
2338
rxsop
2339
rxccd  11110100 00001000 1100000000000011 00001000
2340
rxeop
2341
txsop
2342
txc    11110100
2343
txeop
2344
.iowt 10
2345
C
2346
C 4a. abort after ccrc
2347
C wreg: tx: sop - cmd(00001,011) addr cnt(2->001) ccrc [[dl dh dl dh dcrc]] -eop
2348
C       rx: sop - cmd(011) - nak - eop
2349
C
2350
#
2351
rxsop
2352
rx8    00001011
2353
rxnak
2354
rxeop
2355
#
2356
txsop
2357
tx8    00001011
2358
tx8    11110010
2359
tx8    00000001
2360
txcrc
2361
txeop
2362
.iowt 10
2363
C
2364
C 4b. check stat (ccmd is wblk now; cerr=0,derr=1)
2365
C     stat: stat(000),attn(0),cerr(0),derr(1),rbnak(0),rberr(0) -> 00000100
2366
C
2367
#
2368
rxsop
2369
rxccd  11110100 00001011 1100000000000011 00000100
2370
rxeop
2371
txsop
2372
txc    11110100
2373
txeop
2374
.iowt 10
2375
C
2376
C 5a. abort after 1st dl
2377
C wreg: tx: sop - cmd(00010,011) addr cnt(2->001) ccrc dl [[dh dl dh dcrc]] -eop
2378
C       rx: sop - cmd(011) - nak - eop
2379
C
2380
#
2381
rxsop
2382
rx8    00010011
2383
rxnak
2384
rxeop
2385
#
2386
txsop
2387
tx8    00010011
2388
tx8    11110010
2389
tx8    00000001
2390
txcrc
2391
tx8    00000001
2392
txeop
2393 16 wfjm
.iowt 20
2394 9 wfjm
C
2395
C 5b. check stat (ccmd is wblk now; cerr=0,derr=1)
2396
C
2397
#
2398
rxsop
2399
rxccd  11110100 00010011 1100000000000011 00000100
2400
rxeop
2401
txsop
2402
txc    11110100
2403
txeop
2404
.iowt 10
2405
C
2406
C 6a. abort after 1st dh
2407
C wreg: tx: sop - cmd(00011,011) addr cnt(2->001) ccrc dl dh [[dl dh dcrc]] -eop
2408
C       rx: sop - cmd(011) - nak - eop
2409
C
2410
#
2411
rxsop
2412
rx8    00011011
2413
rxnak
2414
rxeop
2415
#
2416
txsop
2417
tx8    00011011
2418
tx8    11110010
2419
tx8    00000001
2420
txcrc
2421
tx8    00000001
2422
tx8    00011011
2423
txeop
2424 16 wfjm
.iowt 20
2425 9 wfjm
C
2426
C 6b. check stat (ccmd is wblk now; cerr=0,derr=1)
2427
C
2428
#
2429
rxsop
2430
rxccd  11110100 00011011 1100000000000011 00000100
2431
rxeop
2432
txsop
2433
txc    11110100
2434
txeop
2435
.iowt 10
2436
C
2437
C 7a. abort after 2nd dl
2438
C wreg: tx: sop - cmd(00100,011) addr cnt(2->001) ccrc dl dh dl [[dh dcrc]] -eop
2439
C       rx: sop - cmd(011) - nak - eop
2440
C
2441
#
2442
rxsop
2443
rx8    00100011
2444
rxnak
2445
rxeop
2446
#
2447
txsop
2448
tx8    00100011
2449
tx8    11110010
2450
tx8    00000001
2451
txcrc
2452
tx8    00000001
2453
tx8    00100011
2454
tx8    00000010
2455
txeop
2456 16 wfjm
.iowt 20
2457 9 wfjm
C
2458
C 7b. check stat (ccmd is wblk now; cerr=0,derr=1)
2459
C
2460
#
2461
rxsop
2462
rxccd  11110100 00100011 1100000000000011 00000100
2463
rxeop
2464
txsop
2465
txc    11110100
2466
txeop
2467
.iowt 10
2468
C
2469
C 8a. abort after 2nd dh
2470
C wreg: tx: sop - cmd(00101,011) addr cnt(2->001) ccrc dl dh dl dh [[dcrc]] -eop
2471
C       rx: sop - cmd(011) - nak - eop
2472
C
2473
#
2474
rxsop
2475
rx8    00101011
2476
rxnak
2477
rxeop
2478
#
2479
txsop
2480
tx8    00101011
2481
tx8    11110010
2482
tx8    00000001
2483
txcrc
2484
tx8    00000001
2485
tx8    00101011
2486
tx8    00000010
2487
tx8    00101011
2488
txeop
2489 16 wfjm
.iowt 20
2490 9 wfjm
C
2491
C 8b. check stat (ccmd is wblk now; cerr=0,derr=1)
2492
C
2493
#
2494
rxsop
2495
rxccd  11110100 00101011 1100000000000011 00000100
2496
rxeop
2497
txsop
2498
txc    11110100
2499
txeop
2500
.iowt 10
2501
C
2502
C 9a. finally complete wblk without about, for a change
2503
C wreg: tx: sop - cmd(00110,011) addr cnt(2->001) ccrc dl dh dl dh dcrc - eop
2504
C       rx: sop - cmd(011) stat crc - eop
2505
C
2506
#
2507
rxsop
2508
rx8    00101011
2509
rx8    00000000
2510
rxcrc
2511
rxeop
2512
#
2513
txsop
2514
tx8    00101011
2515
tx8    11110010
2516
tx8    00000001
2517
txcrc
2518
tx8    00000001
2519
tx8    00110011
2520
tx8    00000010
2521
tx8    00110011
2522
txcrc
2523
txeop
2524
.iowt 10
2525
C
2526
C 10. now read back fifo, it will contain data from partially done wblk's
2527
C       6a:  00011011 00000001
2528
C       7a:  00100011 00000001
2529
C       8a:  00101011 00000001
2530
C            00101011 00000010
2531
C       9a:  00110011 00000001
2532
C            00110011 00000010
2533
C      --> read back 7 words, gives the above 6 plus '0101...' and a rberr=1
2534
C
2535
C rblk: tx: sop - cmd(00111,001) addr(0010) cnt(7->110) ccrc - eop
2536
C       rx: sop - cmd(001) cnt dl dh ... stat crc - eop
2537
C
2538
C     stat: stat(000),attn(0),cerr(0),derr(0),rbnak(0),rberr(1) -> 00000001
2539
C
2540
rxsop
2541
rx8    00111001
2542
rx8    00000110
2543
rx16   0001101100000001
2544
rx16   0010001100000001
2545
rx16   0010101100000001
2546
rx16   0010101100000010
2547
rx16   0011001100000001
2548
rx16   0011001100000010
2549
rx16   0101010101010101
2550
rx8    00000001
2551
rxcrc
2552
rxeop
2553
#
2554
txsop
2555
txcac  00111001 11110010 00000110
2556
txeop
2557
#
2558
.iowt 10
2559
#
2560
C -----------------------------------------------------------------------------
2561
C Test 21d: eop aborts of rblk (with cnt=2)
2562
C
2563
C 1. to prepare write 2 words into fifo
2564
C wreg: tx: sop - cmd(00001,011) addr cnt(2->001) ccrc dl dh dl dh dcrc - eop
2565
C       rx: sop - cmd(011) stat crc - eop
2566
C
2567
#
2568
rxsop
2569
rxcs   00001011 00000000
2570
rxeop
2571
#
2572
txsop
2573
txcac  00001011 11110010 00000001
2574
tx16   1111111100000000
2575
tx16   1111111100000001
2576
txcrc
2577
txeop
2578
.iowt 10
2579
#
2580
C
2581
C 2a. abort after cmd
2582
C rblk: tx: sop - cmd(00010,001) [[addr(0010) cnt(2->001) ccrc]] - eop
2583
C       rx: sop - nak - eop
2584
C
2585
rxsop
2586
rxnak
2587
rxeop
2588
#
2589
txsop
2590
tx8    00010001
2591
txeop
2592 16 wfjm
.iowt 20
2593 9 wfjm
#
2594
C
2595
C 2b. check stat (cerr=1)
2596
C
2597
#
2598
rxsop
2599
rxccd  11110100 00001011 0101010101010101 00001000
2600
rxeop
2601
txsop
2602
txc    11110100
2603
txeop
2604
.iowt 10
2605
#
2606
C
2607
C 3a. abort after addr
2608
C rblk: tx: sop - cmd(00011,001) addr(0010) [[cnt(2->001) ccrc]] - eop
2609
C       rx: sop - nak - eop
2610
C
2611
rxsop
2612
rxnak
2613
rxeop
2614
#
2615
txsop
2616
tx8    00011001
2617
tx8    11110010
2618
txeop
2619 16 wfjm
.iowt 20
2620 9 wfjm
#
2621
C
2622
C 3b. check stat (cerr=1)
2623
C
2624
#
2625
rxsop
2626
rxccd  11110100 00001011 0101010101010101 00001000
2627
rxeop
2628
txsop
2629
txc    11110100
2630
txeop
2631
.iowt 10
2632
C
2633
C 4a. abort after cnt
2634
C rblk: tx: sop - cmd(00100,001) addr(0010) cnt(2->001) [[ccrc]] - eop
2635
C       rx: sop - nak - eop
2636
C
2637
rxsop
2638
rxnak
2639
rxeop
2640
#
2641
txsop
2642
tx8    00100001
2643
tx8    11110010
2644
tx8    00000001
2645
txeop
2646 16 wfjm
.iowt 20
2647 9 wfjm
#
2648
C
2649
C 4b. check stat (cerr=1)
2650
C
2651
#
2652
rxsop
2653
rxccd  11110100 00001011 0101010101010101 00001000
2654
rxeop
2655
txsop
2656
txc    11110100
2657
txeop
2658
.iowt 10
2659
#
2660
C
2661
C 5a. finally do successful rblk
2662
C rblk: tx: sop - cmd(00101,001) addr(0010) cnt(2->001) ccrc - eop
2663
C       rx: sop - cmd(001) cnt dl dh ... stat crc - eop
2664
C
2665
rxsop
2666
rx8    00101001
2667
rx8    00000001
2668
rx16   1111111100000000
2669
rx16   1111111100000001
2670
rx8    00000000
2671
rxcrc
2672
rxeop
2673
#
2674
txsop
2675
tx8    00101001
2676
tx8    11110010
2677
tx8    00000001
2678
txcrc
2679
txeop
2680
.iowt 10
2681
#
2682
C
2683
C 5b. check stat (cerr=0)
2684
C
2685
#
2686
rxsop
2687
rxccd  11110100 00101001 1111111100000001 00000000
2688
rxeop
2689
txsop
2690
txc    11110100
2691
txeop
2692
.iowt 10
2693
#
2694
C -----------------------------------------------------------------------------
2695
C Test 21e: eop aborts of stat
2696
C
2697
C 1. abort after cmd
2698
C rblk: tx: sop - cmd(00001,100) [[ccrc]] - eop
2699
C       rx: sop - nak - eop
2700
C
2701
rxsop
2702
rxnak
2703
rxeop
2704
#
2705
txsop
2706
tx8    00001100
2707
txeop
2708 16 wfjm
.iowt 20
2709 9 wfjm
#
2710
C
2711
C 2. normal stat, finally
2712
C rblk: tx: sop - cmd(00010,100) [[ccrc]] - eop
2713
C       rx: sop - cmd(100) ccmd(001) dl dh stat crc
2714
C
2715
C     stat: stat(000),attn(0),cerr(0),derr(0),rbnak(0),rberr(0) -> 00000000
2716
C           --> Note: stat commands don't the status
2717
C           -->       no cerr bit set here, despite the failed stat above !!
2718
C
2719
rxsop
2720
rx8    00010100
2721
rx8    00101001
2722
rx16   1111111100000001
2723
rx8    00000000
2724
rxcrc
2725
rxeop
2726
#
2727
txsop
2728
tx8    00010100
2729
txcrc
2730
txeop
2731
.iowt 10
2732
#
2733
C -----------------------------------------------------------------------------
2734
C Test 21f: eop aborts of attn
2735
C
2736
C 0. prepare, set 1 attn flag
2737
C
2738
.attn  0000000100000000
2739
C
2740
C 1a. abort after cmd
2741
C rblk: tx: sop - cmd(00001,101) [[ccrc]] - eop
2742
C       rx: sop - nak - eop
2743
C
2744
rxsop
2745
rxnak
2746
rxeop
2747
#
2748
txsop
2749
tx8    00001101
2750
txeop
2751 16 wfjm
.iowt 20
2752 9 wfjm
C
2753
C 1b. check stat
2754
C     stat: stat(000),attn(1),cerr(1),derr(0),rbnak(0),rberr(0) -> 00011000
2755
C
2756
#
2757
rxsop
2758
rxccd  11110100 00101001 1111111100000001 00011000
2759
rxeop
2760
txsop
2761
txc    11110100
2762
txeop
2763
.iowt 10
2764
#
2765
C
2766
C 2. normal attn, finally
2767
C rblk: tx: sop - cmd(00001,101) ccrc - eop
2768
C       rx: sop - cmd(101) dl dh stat crc - eop
2769
C
2770
rxsop
2771
rx8    00001101
2772
rx16   0000000100000000
2773
rx8    00000000
2774
rxcrc
2775
rxeop
2776
#
2777
txsop
2778
tx8    00001101
2779
txcrc
2780
txeop
2781
.iowt 10
2782
#
2783
C -----------------------------------------------------------------------------
2784
C Test 21g: eop aborts of init
2785
C
2786
C 0. prepare, set data register
2787
C   data := 0000000000000001
2788
C
2789
rxsop
2790
rxcs   00001010 00000000
2791
rxeop
2792
txsop
2793
txcad  00001010 11110001 0000000000000001
2794
txeop
2795
.iowt 10
2796
#
2797
C
2798
C 1a. abort after cmd
2799
C rblk: tx: sop - cmd(00010,110) [[addr(0000) dl dh ccrc]] - eop
2800
C       rx: sop - nak - eop
2801
C
2802
rxsop
2803
rxnak
2804
rxeop
2805
#
2806
txsop
2807
tx8    00010110
2808
txeop
2809 16 wfjm
.iowt 20
2810 9 wfjm
C
2811
C 1b. check stat
2812
C     stat: stat(000),attn(0),cerr(1),derr(0),rbnak(0),rberr(0) -> 00001000
2813
C
2814
#
2815
rxsop
2816
rxccd  11110100 00001010 0000000100000000 00001000
2817
rxeop
2818
txsop
2819
txc    11110100
2820
txeop
2821
.iowt 10
2822
C
2823
C 2a. abort after addr
2824
C rblk: tx: sop - cmd(00010,110) addr(0000) [[dl dh ccrc]] - eop
2825
C       rx: sop - nak - eop
2826
C
2827
rxsop
2828
rxnak
2829
rxeop
2830
#
2831
txsop
2832
tx8    00010110
2833
tx8    11110000
2834
txeop
2835 16 wfjm
.iowt 20
2836 9 wfjm
C
2837
C 2b. check stat
2838
C
2839
#
2840
rxsop
2841
rxccd  11110100 00001010 0000000100000000 00001000
2842
rxeop
2843
txsop
2844
txc    11110100
2845
txeop
2846
.iowt 10
2847
C
2848
C 3a. abort after dl
2849
C rblk: tx: sop - cmd(00010,110) addr(0000) dl [[dh ccrc]] - eop
2850
C       rx: sop - nak - eop
2851
C
2852
rxsop
2853
rxnak
2854
rxeop
2855
#
2856
txsop
2857
tx8    00010110
2858
tx8    11110000
2859
tx8    00000010
2860
txeop
2861 16 wfjm
.iowt 20
2862 9 wfjm
C
2863
C 3b. check stat
2864
C
2865
#
2866
rxsop
2867
rxccd  11110100 00001010 0000000100000000 00001000
2868
rxeop
2869
txsop
2870
txc    11110100
2871
txeop
2872
.iowt 10
2873
C
2874
C 4a. abort after dh
2875
C rblk: tx: sop - cmd(00010,110) addr(0000) dl dh [[ccrc]] - eop
2876
C       rx: sop - nak - eop
2877
C
2878
rxsop
2879
rxnak
2880
rxeop
2881
#
2882
txsop
2883
tx8    00010110
2884
tx8    11110000
2885
tx8    00000010
2886
tx8    00000000
2887
txeop
2888 16 wfjm
.iowt 20
2889 9 wfjm
C
2890
C 4b. check stat
2891
C
2892
#
2893
rxsop
2894
rxccd  11110100 00001010 0000000100000000 00001000
2895
rxeop
2896
txsop
2897
txc    11110100
2898
txeop
2899
.iowt 10
2900
#
2901
C
2902
C 5a. normal init, finally
2903
C rblk: tx: sop - cmd(00010,110) addr(0000) dl dh ccrc - eop
2904
C       rx: sop - cmd(110) stat crc - eop
2905
C
2906
rxsop
2907
rx8    00010110
2908
rx8    00000000
2909
rxcrc
2910
rxeop
2911
#
2912
txsop
2913
tx8    00010110
2914
tx8    11110000
2915
tx8    00000010
2916
tx8    00000000
2917
txcrc
2918
txeop
2919
.iowt 10
2920
C
2921
C 5b. check that data register cleared
2922
C   data -> 0000000000000000
2923
C
2924
C rreg: tx: sop - cmd(00001,000) addr(0001) ccrc - eop
2925
C       rx: sop - cmd(000) dl dh stat crc - eop
2926
#
2927
rxsop
2928
rxcds  00001000          0000000000000000 00000000
2929
rxeop
2930
#
2931
txsop
2932
txca   00001000 11110001
2933
txeop
2934
#
2935
.iowt 10
2936
#
2937
C -----------------------------------------------------------------------------
2938
C Test 22: nak aborts of wreg
2939
C   Note: nak aborts only tested for wreg !
2940
C         sufficient because implementation is internally common for eop and
2941
C         nak aborts and all eop aborts are tested above in Test 21*.
2942
C
2943
C 0. write all-1s to data register and read back to initialize context
2944
C wreg: tx: sop - cmd(11110,010) addr(0001) dl dh ccrc
2945
C rreg: tx:     - cmd(11111,000) addr(0001) ccrc
2946
C       tx:     - eop
2947
C       rx: sop - cmd(010) stat crc
2948
C       rx: sop - cmd(000) dl dh stat crc
2949
C       rx:     - eop
2950
#
2951
rxsop
2952
rxcs   11110010 00000000
2953
rxcds  11111000          1111111111111111 00000000
2954
rxeop
2955
#
2956
txsop
2957
txcad  11110010 11110001 1111111111111111
2958
txca   11111000 11110001
2959
txeop
2960
#
2961
.iowt 10
2962
#
2963
C
2964
C 1a. abort after cmd
2965
C wreg: tx: sop - cmd(00001,010) nak - eop
2966
C       rx: sop - nak - eop
2967
C
2968
#
2969
rxsop
2970
rxnak
2971
rxeop
2972
#
2973
txsop
2974
tx8    00100010
2975
txnak
2976
txeop
2977
.iowt 10
2978
C
2979
C 1b. check stat
2980
C     stat: stat(000),attn(0),cerr(1),derr(0),rbnak(0),rberr(0) -> 00001000
2981
C stat: tx: sop - cmd(00110,100) ccrc - eop
2982
C       rx: sop - cmd(100) ccmd(000) dl dh stat crc - eop
2983
C
2984
#
2985
rxsop
2986
rxccd  00110100 11111000 1111111111111111 00001000
2987
rxeop
2988
txsop
2989
txc    00110100
2990
txeop
2991
.iowt 10
2992
C
2993
C 2a. abort after addr
2994
C wreg: tx: sop - cmd(00001,010) addr(0001) nak - eop
2995
C       rx: sop - nak - eop
2996
C
2997
#
2998
rxsop
2999
rxnak
3000
rxeop
3001
#
3002
txsop
3003
tx8    00001010
3004
tx8    11110001
3005
txnak
3006
txeop
3007
.iowt 10
3008
C
3009
C 2b. check stat (stat as for 1a.)
3010
C
3011
#
3012
rxsop
3013
rxccd  00110100 11111000 1111111111111111 00001000
3014
rxeop
3015
txsop
3016
txc    00110100
3017
txeop
3018
.iowt 10
3019
C
3020
C 3a. abort after dl
3021
C wreg: tx: sop - cmd(00001,010) addr(0001) dl nak - eop
3022
C       rx: sop - nak - eop
3023
C
3024
#
3025
rxsop
3026
rxnak
3027
rxeop
3028
#
3029
txsop
3030
tx8    00001010
3031
tx8    11110001
3032
tx8    00000011
3033
txnak
3034
txeop
3035
.iowt 10
3036
C
3037
C 3b. check stat (stat as for 1a.)
3038
C
3039
#
3040
rxsop
3041
rxccd  00110100 11111000 1111111111111111 00001000
3042
rxeop
3043
txsop
3044
txc    00110100
3045
txeop
3046
.iowt 10
3047
C
3048
C 4a. abort after dh
3049
C wreg: tx: sop - cmd(00001,010) addr(0001) dl dh nak - eop
3050
C       rx: sop - nak - eop
3051
C
3052
#
3053
rxsop
3054
rxnak
3055
rxeop
3056
#
3057
txsop
3058
tx8    00001010
3059
tx8    11110001
3060
tx8    00000011
3061
tx8    11000000
3062
txnak
3063
txeop
3064
.iowt 10
3065
C
3066
C 4b. check stat (stat as for 1a.)
3067
C
3068
#
3069
rxsop
3070
rxccd  00110100 11111000 1111111111111111 00001000
3071
rxeop
3072
txsop
3073
txc    00110100
3074
txeop
3075
.iowt 10
3076
C
3077
C 5a. finally just normal wreg to data register
3078
C wreg: tx: sop - cmd(00001,010) addr(0001) dl dh ccrc - eop
3079
C       rx: sop - cmd(010) stat crc - eop
3080
C
3081
#
3082
rxsop
3083
rxcs   00001010 00000000
3084
rxeop
3085
#
3086
txsop
3087
tx8    00001010
3088
tx8    11110001
3089
tx8    00000011
3090
tx8    11000000
3091
txcrc
3092
txeop
3093
.iowt 10
3094
C
3095
C 5b. check stat (now cerr=0 again)
3096
C
3097
#
3098
rxsop
3099
rxccd  00110100 00001010 1111111111111111 00000000
3100
rxeop
3101
txsop
3102
txc    00110100
3103
txeop
3104
.iowt 10
3105
#
3106
#==============================================================================
3107
#
3108
C -----------------------------------------------------------------------------
3109
C Run down and Finish
3110
.iowt 10
3111
.wait 10

powered by: WebSVN 2.1.0

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