Version 17 (modified by damo22, 13 years ago) |
---|
Digidesign 003 Rack
This page is to help develop support for the Digidesign 003 Rack.
I have identified the registers below:
#define R003_BASE_ADDR 0xffff00000000ULL #define R003_STREAMS_W_REG 0xe0000004 #define R003_STREAMS_R_REG 0xe0000000 #define R003_STREAMS_OFF 0x00000000 #define R003_STREAMS_ON 0x00000001 #define R003_STREAMS_INIT 0x00000002 #define R003_STREAMS_SHUTDOWN 0x00000003 #define R003_SAMPLERATE_REG 0xe0000110 #define R003_SAMPLERATE_44100 0x00000000 #define R003_SAMPLERATE_48000 0x00000001 #define R003_SAMPLERATE_88200 0x00000002 #define R003_SAMPLERATE_96000 0x00000003 #define R003_CLOCKSOURCE_REG 0xe0000118 #define R003_CLOCK_INTERNAL 0x00000000 #define R003_CLOCK_SPDIF 0x00000001 #define R003_CLOCK_ADAT 0x00000002 #define R003_CLOCK_WORDCLOCK 0x00000003
ISO Channels used: 2
0x0 (recv)
0x1 (send)
To initialise the device it seems you need to do the following:
Write: R003_BASE_ADDR + R003_STREAMS_W_REG, R003_STREAMS_INIT
Wait until:
Read: R003_BASE_ADDR + R003_STREAMS_R_REG
returns
R003_STREAMS_OFF
Once this is done, the 1394 link light starts flashing on the device.
Then set the samplerate and clock source, eg 48000/internal clock
Write: R003_BASE_ADDR + R003_SAMPLERATE_REG, R003_SAMPLERATE_48000 Write: R003_BASE_ADDR + R003_CLOCKSOURCE_REG, R003_CLOCK_INTERNAL
Then activate the streams:
Write: R003_BASE_ADDR + R003_STREAMS_W_REG, R003_STREAMS_ON
Wait until:
Read: R003_BASE_ADDR + R003_STREAMS_R_REG
returns
R003_STREAMS_ON
But I have not yet been able to observe iso data on the bus after this is done.
Iso packets from the device are supposed to look like this:
418922 data_length=0x01d0, tag=0x1, channel=0x00, iso_data, sy=0x0, crc=0xd3082841, data=[00130090 90020000 80000000 40ffffab 4000002b 40fffd57 40ffff3f 40fffff0 40000006 40ffffef 40fffff1 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 80000000 40ffffeb 40ffffdb 4000015a 40ffffae 40ffffee 40fffff8 40fffff5 40fffffe 40000000 40000000 (336 more bytes)], crc=0x8ccc5134, no ack 419029 data_length=0x021c, tag=0x1, channel=0x01, iso_data, sy=0x0, crc=0xf2bcef97, data=[001300bb 90020000 80000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 80000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 (412 more bytes)], crc=0x8414747c, no ack 419045 data_length=0x01d0, tag=0x1, channel=0x00, iso_data, sy=0x0, crc=0xd3082841, data=[00130096 90020000 80000000 40ffffc0 40000048 400005c2 40ffff86 40fffffd 4000000a 40ffffe3 40fffff7 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 80000000 40000073 4000002b 40fffda7 40ffff78 40ffffe5 40ffffe4 40000014 40ffffe9 40000000 40000000 (336 more bytes)], crc=0x24851d3c, no ack 419154 data_length=0x021c, tag=0x1, channel=0x01, iso_data, sy=0x0, crc=0xf2bcef97, data=[001300c2 90020000 80000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 80000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 40000000 (412 more bytes)], crc=0x498d307d, no ack
I have a feeling that the "13" in the iso packets refers to 0x13 = 19 total channels, ie 16 audio channels + 3 midi channels, but this is a blind guess.
I believe the iso packets are decoded as below:
0013 00xx 900x 0000 x000 0000 x0XX XXXX CH ?? ? ? ? AU DIO
where XXXXXX is a 3 byte (24 bit) subpacket of audio, or midi bytes.
I added the init packets to /src/tests/dumpiso_mod.cpp and tried to dump the iso streams 0-1 but it segfaulted:
$ ./dumpiso_mod -p0 -c0-1 file.dump port: 0 channels: 0x00000000000003 file: file.dump Segmentation fault $ $ hexdump -C file.dump 00000000 31 33 39 34 20 69 73 6f 64 75 6d 70 20 76 33 00 |1394 isodump v3.| 00000010 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 00 |................| 00000020
When I run it on a single channel instead it hangs and still has a similar output:
$ ./dumpiso_mod -p0 -c0 file.dump port: 0 channels: 0x00000000000001 file: file.dump $ hexdump -C file.dump 00000000 31 33 39 34 20 69 73 6f 64 75 6d 70 20 76 33 00 |1394 isodump v3.| 00000010 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 |................| 00000020
Damo
Attachments
- 003_Rack__31371_zoom.jpg (43.2 kB) -
003rack
, added by damo22 on 02/26/11 06:29:00. - 96khz-24bit-1ch.log (27.5 kB) -
dump of data blocks at 96kHz, 24bit, 1ch
, added by mocchi on 03/15/15 08:09:35. - 44khz-24bit-1ch.log (49.8 kB) -
dump of data blocks at 44.1kHz, 24bit, 1ch
, added by mocchi on 03/15/15 08:17:12. - 44khz-24bit-2ch.log (49.8 kB) -
dump of data blocks at 44.1kHz, 24bit, 2ch
, added by mocchi on 03/15/15 08:17:42.