summaryrefslogtreecommitdiffstats
path: root/reverse-engineering/HWPROTOCOL
blob: a7c47b786c797ecb2a762cde124e0c3a81cef71c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
TOP2049 USB protocol (incomplete)



=== COMMANDS ===

00		>= NOP. No operation.

01		>= Read a byte from the FPGA into the status register.

10xx		>= Write a byte (xx) to the FPGA.

07		>= Read the status register.
		   The register is read by sending 07h via bulk out
		   and reading 64bytes via bulk in.

0Axxyy		>= Write data into the FPGA via the parallel uc->FPGA interface.
		   xx is the address (clocked via ALE).
		   yy is the data (clocked via WR).

0E110000	>= Put the device ID string into the status register.
		   String length is 16 bytes.

0E12xx00	>= Set VPP, where xx is the voltage.
		   xx is in centivolt.

0E13xx00	>= Set VCCX, where xx is the voltage.
		   xx is in centivolt.

0E14xx00	>= Load the ZIF socket VPP supply layout.
		   xx is the layout ID.
		   (Shift data into the 4 shiftregisters on the left side.
		    Sends 4 times 8 clock pulses and one strobe.)

0E15xx00	>= Load the ZIF socket VCCX supply layout.
		   xx is the layout ID.
		   (Shift data into the 3 shiftregisters on the right side.
		    Sends 3 times 8 clock pulses and one strobe.)

0E16xx00	>= Controls the digital input to the "H" and "L" chips.
		   These chips control the ZIF socket GND supply.
		   xx is the ZIF-socket pin that is pulled to GND.
		   It is calculated as follows:
		   xx = ZIF_pin_number - 4
		   Valid ZIF_pin_numbers are:
		   0,5,14-20,24,26-29,33-35
		   0 is a special value for not assigning GND to any pin.
		   If the pin number is 0 (=none), 4 is not subtracted.

0E210000	>= Initiate FPGA programming sequence.
		   Pulls the ~PROGRAM pin of the FPGA low.

0E220000...	>= Program the FPGA. 60bytes of data is appended.

1B		>= Flush (and/or commit) command
bues.ch cgit interface