SpiData Array

 

The below notes are part of a text file found on pastebin.com through a search engine without an attributed source, later a source was found on the freetronix forum published by Brissieboy labelled “dmd notes”. These notes saved much time in mapping out the placement of each shift register and the way in which the rows are multiplexed. Should the author find this page then please notify us to can be given attribution.

[code]
Mapping of the DMD hardware shift registers versus LED position:

0 1 2 3 4 5 6 7 8 9 10 15 23 31 column (x)
/- 74HC595-13-\ /- 74HC595-9 -\ /- 74HC595-5 -\ /- 74HC595-1 -\
H G F E D C B A H G F E D C B A H G F E D C B A H G F E D C B A Row 0 (y)

/- 74HC595-13-\ /- 74HC595-9 -\ /- 74HC595-5 -\ /- 74HC595-1 -\
H G F E D C B A H G F E D C B A H G F E D C B A H G F E D C B A Row 1

/- 74HC595-13-\ /- 74HC595-9 -\ /- 74HC595-5 -\ /- 74HC595-1 -\
H G F E D C B A H G F E D C B A H G F E D C B A H G F E D C B A Row 2

/- 74HC595-13-\ /- 74HC595-9 -\ /- 74HC595-5 -\ /- 74HC595-1 -\
H G F E D C B A H G F E D C B A H G F E D C B A H G F E D C B A Row 3

/- 74HC595-14-\ /- 74HC595-10-\ /- 74HC595-6 -\ /- 74HC595-2 -\
H G F E D C B A H G F E D C B A H G F E D C B A H G F E D C B A Row 4
|
|
|
/- 74HC595-15-\ /- 74HC595-11-\ /- 74HC595-7 -\ /- 74HC595-3 -\
H G F E D C B A H G F E D C B A H G F E D C B A H G F E D C B A Row 8
|
|
|
/- 74HC595-16-\ /- 74HC595-12-\ /- 74HC595-8 -\ /- 74HC595-4 -\
H G F E D C B A H G F E D C B A H G F E D C B A H G F E D C B A Row 12

/- 74HC595-16-\ /- 74HC595-12-\ /- 74HC595-8 -\ /- 74HC595-4 -\
H G F E D C B A H G F E D C B A H G F E D C B A H G F E D C B A Row 13

/- 74HC595-16-\ /- 74HC595-12-\ /- 74HC595-8 -\ /- 74HC595-4 -\
H G F E D C B A H G F E D C B A H G F E D C B A H G F E D C B A Row 14

/- 74HC595-16-\ /- 74HC595-12-\ /- 74HC595-8 -\ /- 74HC595-4 -\
H G F E D C B A H G F E D C B A H G F E D C B A H G F E D C B A Row 15
[/code]

Above contains a section of compiled notes by Brissieboy [2].

This information saved much time and, after confirming its validity, allowed for the below table to be drawn with the values of the multiplexing lines A & B shown on the left side.

shiftRegistersDMD

Since each shift register controls four rows of data and the data to be shifted out depends upon the value of the multiplexing lines, a sequence was developed to update the entire display when the multiplexing, latch and output enable lines are also toggled at the desired points in time.

Below shows the order in which each shift register is updated and has been broken into four sequences which need to be aligned with the correct multiplexing combination to be displayed on the correct rows.

[code]

64 Array SpiData

: SpiDataSetup
0 SpiData SpiDataAddr !
1 13 XY 0 SpiData !
1 9 XY 1 SpiData !
1 5 XY 2 SpiData !
1 1 XY 3 SpiData !
2 13 XY 4 SpiData !
2 9 XY 5 SpiData !
2 5 XY 6 SpiData !
2 1 XY 7 SpiData !
3 13 XY 8 SpiData !
3 9 XY 9 SpiData !
3 5 XY 10 SpiData !
3 1 XY 11 SpiData !
4 13 XY 12 SpiData !
4 9 XY 13 SpiData !
4 5 XY 14 SpiData !
4 1 XY 15 SpiData !

1 14 XY 16 SpiData !
1 10 XY 17 SpiData !
1 6 XY 18 SpiData !
1 2 XY 19 SpiData !
2 14 XY 20 SpiData !
2 10 XY 21 SpiData !
2 6 XY 22 SpiData !
2 2 XY 23 SpiData !
3 14 XY 24 SpiData !
3 10 XY 25 SpiData !
3 6 XY 26 SpiData !
3 2 XY 27 SpiData !
4 14 XY 28 SpiData !
4 10 XY 29 SpiData !
4 6 XY 30 SpiData !
4 2 XY 31 SpiData !

1 15 XY 32 SpiData !
1 11 XY 33 SpiData !
1 7 XY 34 SpiData !
1 3 XY 35 SpiData !
2 15 XY 36 SpiData !
2 11 XY 37 SpiData !
2 7 XY 38 SpiData !
2 3 XY 39 SpiData !
3 15 XY 40 SpiData !
3 11 XY 41 SpiData !
3 7 XY 42 SpiData !
3 3 XY 43 SpiData !
4 15 XY 44 SpiData !
4 11 XY 45 SpiData !
4 7 XY 46 SpiData !
4 3 XY 47 SpiData !

1 16 XY 48 SpiData !
1 12 XY 49 SpiData !
1 8 XY 50 SpiData !
1 4 XY 51 SpiData !
2 16 XY 52 SpiData !
2 12 XY 53 SpiData !
2 8 XY 54 SpiData !
2 4 XY 55 SpiData !
3 16 XY 56 SpiData !
3 12 XY 57 SpiData !
3 8 XY 58 SpiData !
3 4 XY 59 SpiData !
4 16 XY 60 SpiData !
4 12 XY 61 SpiData !
4 8 XY 62 SpiData !
4 4 XY 63 SpiData !
;

[/code]

More information on the update process can be found on the update process page.