Bus Blaster buffer logic
From DP
Contents |
Overview
Bus Blaster v2+ is buffered by a reprogrammable CPLD instead of discrete logic chips. New buffer logic can be loaded so the Bus Blaster appears like many common JTAG programmer types. These are the currently available buffer clones:
Buffer logic for Bus Blaster v2/v3/v4 ARE NOT COMPATIBLE!
Buffers for Bus Blaster v3
joefitz published some working buffers for Bus Blaster v3 on the forums, along with useful advices on getting BBv3 to work.
jtagkey
The JTAGkey is probably the most commonly cloned buffer configuration among FT2232-based JTAG programmers. It is compatible with OpenOCD, urJTAG, and more.
Schematic
Issues
Crossworks: Cannot set debug register errors in OSX, Linux. Known to effect all JTAGKEY programmers. Works fine with "conservative" parameters:
- Adaptive clocking: No
- JTAG Clock Divider: 2
- nSRST/nTRST Open Drain: Yes
OpenOCD 0.5.0 and PandaBoard: PandaBoard debug with BusBlaster V2 with Windows fails. Do not use OpenOCD 0.5.0 from here it does not work correctly. A build of OpenOCD 0.5.0 under cygwin works fine. As seemingly does the 0.7.0 binary from the link above.
KT-link
The KT-link is the first FT2232 JTAG debugger with support for new SWD and SWV JTAG protocols. The libswd project is adding support for SWD to OpenOCD and urJTAG, and the KT-link will be the first supported programmer. Bus Blaster v2+ supports SWD only! Bus Blaster v2+ does not support SWV because one required pin is used to program the CPLD
Schematic
Issues
- Crossworks: this buffer may fail on Liunux
PicoTAP
PicoTAP is a the hardware for the goJTAG open source software with a friendly GUI. A PicoTAP-compatible buffer is available for the Bus Blaster v2+.
The PicoTAP dongle is based on the FT2232 and has simple connections:
- ADBUS0(16)->TCK
- ADBUS1(17)->TDO
- ADBUS2(18)<-TDI
- ADBUS3(19)->TMS
- ADBUS4(20)->nTRST
This buffer is written in Verilog. Latest source in Git.
Thanks roglio for the suggestion.
Programming
Bus Blaster v2+ can program the CPLD itself using urJTAG.
Our patches are included in the current urJTAG SVN source. Unfortunately there is no release that includes it yet. We have a patched .exe for Windows, or you can compile it yourself.
Download and install the drivers:
Download and install urJTAG:
Download the CPLD buffer bitstream (and patched urJTAG):
Patched urJTAG
The download includes a patched urJTAG.exe to allow the Bus Blaster v2+ to self-program. Follow these steps to setup:
- Download and install UrJTAG
- Copy the patched .exe file (urjtag-revXX.exe) to the install location (C:\Program Files\UrJTAG)
- Copy \bsdl and \svf to c:\, or see the notes section below.
Program
In this step we load the CPLD with the buffer logic.
First, start the patched urJTAG by running the patched exe file (urjtag-revXX.exe) and connect Bus Blaster v2+ USB to a computer.
jtag> cable ft2232 interface=1 Connected to libftd2xx driver. jtag>
Select the Bus Blaster programmer.
- The cable command connects to the FT2232 chip
- ft2232 programmer type
- interface 1 is the CPLD JTAG connection
jtag> bsdl path c:/bsdl jtag>
Copy the xc2c32a.bdsl file to a directory and tell urJTAG where to find it.
- bsdl path sets a directory to search for BDSL files.
- BSDL is a file format that describes the CPLD chip on Bus Blaster v2+. It tells urJTAG how to program the CPLD
jtag> detect IR length: 8 Chain length: 1 Device Id: 00000110111000011100000010010011 (0x06E1C093) Filename: c:/bsdl/xc2c32a_vq44.bsd jtag>
Enumerate the devices.
- The detect command searches for attached JTAG devices using a JTAG chain scan
- The device ID is displayed
- urJTAG searches its database and the BSDL path for a device that matches the ID
jtag> svf c:/svf/bbv2.svf progress stop Parsing 660/663 ( 99%) Scanned device output matched expected TDO values. jtag>
Copy the .SVF file to a directory. Run the Bus Blaster v2+ SVF file.
- svf command plays the .SVF file and programs the CPLD
- progress displays the percent complete
- stop ends programming if there is an error
Notes
- The cable type for the self-program connection is FT2232, option interface=1 targets the CPLD
- Our patched version of urJTAG requires path names with / instead of \
- Copy the bsdl file to c:\bsdl, or change the location in the bsdl path command
- Copy the bbv2.svf file to c:\svf, or change the path in the svf command
Buffer pin connections
FT2232 to CPLD connections
| FT2232 name | FT2232 pin | CPLD v2 | CPLD v3 | CPLD v4 |
|---|---|---|---|---|
| ADBUS0/TXD/TCK/SK | 16 | 16 | 12 | 60 |
| ADBUS1/RXD/TDI/DO | 17 | 14 | 13 | 58 |
| ADBUS2/RTS#/TDO/DI | 18 | 13 | 14 | 56 |
| ADBUS3/CTS#/TMS/CS | 19 | 12 | 16 | 55 |
| ADBUS4/DTR#/GPIOL0 | 21 | 8 | 39 | 53 |
| ADBUS5/DSR#/GPIOL1 | 22 | 6 | 40 | 52 |
| ADBUS6/DCD#/GPIOL2 | 23 | 5 | 41 | 50 |
| ADBUS7/RI#/GPIOL3 | 24 | 3 | 42 | 49 |
| ACBUS0/TXDEN/GPIOH0 | 26 | 2 | 43 | 43 |
| ACBUS1/GPIOH1 | 27 | 1 | 44 | 42 |
| ACBUS2/GPIOH2 | 28 | 44 | 2 | 41 |
| ACBUS3/RXLED#/GPIOH3 | 29 | 43 | 3 | 40 |
| ACBUS4/TXLED#/GPIOH4 | 30 | 42 | 5 | 39 |
| ACBUS5/GPIOH5 | 32 | 41 | 1 | 27 |
| ACBUS6/GPIOH6 | 33 | 40 | 6 | 37 |
| ACBUS7/GPIOH7 | 34 | 39 | 8 | 36 |
| BDBUS0/TXD/TCK/SK | 38 | 11 | 11 | 17 |
| BDBUS1/RXD/TDI/DO | 39 | 9 | 9 | 16 |
| BDBUS2/xxx/TDO/DI | 40 | 24 | 24 | 15 |
| BDBUS3/CTS#/TMS/CS | 41 | 10 | 10 | 14 |
| BDBUS4/DTR#/GPIOL0 | 43 | x | x | 35 |
| BDBUS5/DSR#/GPIOL1 | 44 | x | x | 34 |
| BDBUS6/DCD#/GPIOL2 | 45 | x | x | 33 |
| BDBUS7/RI#/GPIOL3 | 46 | x | x | 32 |
| BCBUS0/GPIOH1 | 48 | x | x | 30 |
| BCBUS1/GPIOH2 | 52 | x | x | 29 |
| BCBUS2 | 53 | x | x | 28 |
| BCBUS3/RXLED#/GPIOH3 | 54 | x | x | 24 |
| BCBUS4/TXLED#/GPIOH4 | 55 | x | x | 23 |
| BCBUS5/GPIOH5 | 57 | x | x | 22 |
| BCBUS6/GPIOH6 | 58 | x | x | 19 |
| BCBUS7/GPIOH7 | 59 | x | x | 18 |
v4 schematic
Click for larger sizes.
v3 schematic
Click for larger sizes.
v2 schematic
Click for larger sizes.
CPLD to JTAG header connections
| JTAG header | CPLD |
|---|---|
| TRST | 38 |
| TDI | 37 |
| TMS | 36 |
| TCK | 34 |
| RTCK | 33 |
| TDO | 32 |
| TSRST | 31 |
| DBGRQ | 30 |
| DBGACK | 29 |
| IO9 | 28 |
| IO10 | 27 |
| V_TARGET | 26 |
| BD2 | 24 |
| IO11 | 23 |
| IO12 | 22 |
| IO13 | 21 |
| IO14 | 20 |
| IO15 | 19 |
