Bus Blaster v1 buffer overview
From DP
Contents |
JTAG pin connections
The four main JTAG IO pins (TDI, TDO, TCK, TMS) are fixed on the FT2232, but the other control pins vary among programmers. We wanted the Bus Blaster to work 'out of the box', so we made the buffer compatible with the Amontec JTAGkey.
We reverse engineered the JTAGkey connections from the OpenOCD source code and the Openmoko debug board v3 schematics.
Outputs
| pin | FT2232 pin | description | Enable pin | notes |
|---|---|---|---|---|
| TDI | ADBUS1 | Data in to target | JTAG_BUF_EN | Shared output enable |
| TCK | ADBUS0 | Clock | JTAG_BUF_EN | Shared output enable |
| TMS | ADBUS3 | Machine state | JTAG_BUF_EN | Shared output enable |
| TSRST | ACBUS1 | TSRST_BUF_EN | Individual output enable, connected to TSRST input | |
| TRST | ACBUS0 | TRST_BUF_EN | Individual output enable | |
| DGBRQ | ACBUS4 | Debug request |
This buffer is difficult to choose because it requires three different output enables. A chip like the 74LVC8T245 (1.6volt to 5volts) has a single output enable for 8bits - we'd need three and 19 pins would be wasted.
The 74xx4T245 commonly used on other FT2232D programmers to give 1.6-5volt output won't work for us because the new FT2232H is 3.3volts instead of 5volts.
We used the SN74AVC4T245, which gives 1.2volt-3.6volt output range. Ideally, a 5volt part can be found in the future.
- 1.2-3.6volt output with SN74AVC4T245
Inputs
| pin | FT2232 pin | description | notes |
|---|---|---|---|
| TDO | ADBUS2 | Data out from target | |
| TSRST | ADBUS6 | Connected to TSRST output | |
| RTCK | ADBUS7 | Return clock | For adaptive clocking |
| DGBACK | ACBUS5 | Debug acknowledge | |
| VTG | ADBUS5 | Voltage target detect | Simple transistor with pullup resistor, inverts signal |
Two interchangable buffers:
- 1.2-3.6 volt range with SN74AVC2T45
- 1.6-5.0 volt range with SN74LVC2T45
Pin connection compatibility
| JTAG signal | Direction | Bus Blaster | Amontec JTAGkey | Openmoko debug | OpenOCDLink |
|---|---|---|---|---|---|
| TDI | out | ADBUS1 | ADBUS1 | ADBUS1 | |
| TMS | out | ADBUS3 | ADBUS3 | ADBUS3 | |
| TCK | out | ADBUS0 | ADBUS0 | ADBUS0 | |
| TDO | in | ADBUS2 | ADBUS2 | ADBUS2 | |
| JTAG BUF EN | out | ADBUS4 | ADBUS4 | n/a | |
| nTRST | out | ACBUS0 | ACBUS0 | ACBUS1 | |
| nTRST_BUF_EN | out | ACBUS2 | ACBUS2 | ACBUS0 | |
| nSRST | out | ACBUS1 | ACBUS1 | ACBUS3 | |
| nSRST_BUF_EN | out | ACBUS3 | ACBUS3 | ACBUS2 | |
| nSRST | in | ADBUS6 | ADBUS6 | n/a | |
| RTCK | in | ADBUS7 | n/a (ADBUS7 reserved input) | connected to JTAG pin 13 | |
| DBGACK | in | ACBUS5 | n/a | n/a | |
| DBGRQ | out | ACBUS4 | n/a | n/a | |
| Target present(inverted) | in | ADBUS5 | ADBUS5 | n/a |
BOLD signals are fixed FT2232 pins.
JTAGkey buffer connections:
- nTRST = 0x01; (ACBUS0)
- nTRSTnOE = 0x4; (ACBUS2)
- nSRST = 0x02; (ACBUS1)
- nSRSTnOE = 0x08; (ACBUS3)
