Bus Blaster v3 design overview

From DP

Jump to: navigation , search

Bus-blaster-cover-shot3-over.jpg

You can get a Bus Blaster v3 for $34.95.

Bus Blaster v3 is an experimental, high-speed JTAG debugger for ARM processors, FPGAs, CPLDs, flash, and more. Thanks to a reprogrammable buffer, a simple USB update makes Bus Blaster v3 compatible with many different JTAG debugger types in the most popular open source software.

  • Based on FT2232H with high-speed USB 2.0
  • Buffered interface works with 3.3volt to 1.5volt targets
  • Reprogrammable buffer is compatible with multiple debugger types
  • Compatible with 'jtagkey', 'KT-link' programmer settings in OpenOCD, urJTAG, and more
  • Should support Serial Wire Debug when available
  • Mini-CPLD development board: self programmable, extra CPLD pins to header
  • Open source (CC-BY-SA)

Bus Blaster v3 is a minor update to v2. Functionality is nearly identical:

  • Fitted in a DP8049 (80x49 mm) standard PCB, case available here
  • Added series resistors to input and output pins to protect against damage and noise
  • Swapped FT2232 clock output to CPLD pin with global clock feature for potential logic analyzer mode

Bus Blaster v3 is available now for $34.95. Each unit is tested with a real JTAG target before it ships.

Read about the design below.

Contents

Overview

Project Summary
Name: Bus Blaster v3 design overview
Buy it: Get one for $35 at Seeed Studio
Price: $35
Status: Mature
Manufacturing: Shipping
Forum: Bus Blaster v3 design overview Forum
Busblasterv2.png

The Bus Blaster is used to program and debug devices with a JTAG interface like ARM processors, CPLDs, flash memory, and more. A FT2232H USB chip gives us two high-speed JTAG interfaces. The 16 pins of the primary interface are connected to a CoolRunner-II CPLD. The CPLD is a programmable buffer that translates between the FT2232H at 3.3volts, and a 1.5volt to 3.3volt target.

Many JTAG debuggers use the FT2232 chips, but they have slightly different buffers. The CPLD can be programmed to imitate many of them, so it works out of the box with our favorite open source debugging apps. Updates are done over USB using the second JTAG interface on the FT2232H.

This project was inspired by a forum post that linked to a Texas Instruments' XDS100 programmer. TI's design is essentially the same, but we moved the CPLD JTAG connection to the second JTAG interface for easier reprogramming. Bus Blaster v3 was developed in a public forum, and progress was documented on a wiki.

Parts Layout Guide

Busblasterv3-overview.png

Hardware

BusBlaster-v3c.sch-cct.png

Click for a full size schematic image. Schematic and PCB were designed with the freeware version of Cadsoft Eagle, download the latest project files from our Google Code project page.

FT2232H

Bus-blasterv3-ftdi.jpg

The FT2232H (IC1) is a powerful USB to serial communication chip. It has an MPSSE feature that provides a simple USB to JTAG converter (and UART, I2C, or SPI). Most DIY JTAG debuggers use this chip, as do many commercial models.

Bus Blaster v3 uses the 'H' version of the chip, the latest 3.3volt revision that supports JTAG adaptive clocking. The circuit is based on a reference design from the FT2232H datasheet.

Buffered interface

Bus-blasterv3-buffer.jpg


The buffer translates voltage levels between the FT2232H (3.3volts) and a JTAG device (1.5volts-3.3volts). The four main JTAG IO pins (TDI, TDO, TCK, TMS) are fixed on the FT2232, but the other reset and control pins vary among programmers.

Bus Blaster v3 is buffered by a programmable logic chip (CPLD) that can be updated to imitate many common buffer types. The CPLD programming pins are connected to the secondary JTAG interface on the FT2232, so uploading a new buffer type is done entirely from software over USB.

CPLD

Busblaster-v3c-buffer-a.png

An XC2C32A CoolRunner-II CPLD (IC4) is used for the buffer. These are the smallest available CPLDs from Xilinx, and they only cost around $1 in onesies.

The CPLD core requires a 1.8volt supply, which is conveniently available from the FT2232. The JTAG and IO pins are powered by a separate supply between 1.5 and 3.3volts. Each supply pin gets a 0.1uF capacitor.

This chip is perfect for voltage translation because the IO pins are divided into two groups that can operate from different power supplies. We connected one group to the FT2232 and the 3.3volt FT2232 power supply. The other group connects to the JTAG target, and operate from a 1.5volt to 3.3volt target supply.

You must connect the target power supply to the buffer The buffer is powered by the target, 1.5volts to 3.3volts only Put a header on "Target power"/JP4 to power the target from the programmer. 3.3volts max 200mA The buffer is NOT 5volt compatible.

The primary difference between Bus Blaster v3 and v2 is the connection of pins between the FT2232 chip and the CPLD. These pins were updated so the FT2232 clock output connects to a CPLD pin with global clock feature for potential logic analyzer mode. For this reason buffer logic for Bus Blaster v3 and Bus Blaster v2 ARE NOT COMPATIBLE!

Additionally, the IO pins on Bus Blaster v3 are buffered with 82ohm series resistors to reduce noise and prevent damage to the programmer.

We brought the extra CPLD pins to a header. The Bus Blaster v3 can also be used as a simple CoolRunner-II CPLD development board.

Buffer logic

New buffer logic is designed using simple schematic entry, Verilog, or VHDL, and the free ISE Webpack software from Xilinx.

Here are two examples of buffer logic to give you an idea how flexible the design can be.

Buffer logic for Bus Blaster v3 and Bus Blaster v2 ARE NOT COMPATIBLE!

JTAGkey compatible

Bbv2-jtagkey-cpld-v11.png

The JTAGkey is probably the most commonly used buffer configuration among DIY FT2232-based JTAG programmers. It is compatible with OpenOCD, urJTAG, and more.

Program the Bus Blaster with this buffer and it will work with most applications that support JTAGkey type debuggers.

KT-link compatible

Bbv2-ktlink-v1.png

OpenOCD and urJTAG will soon support new Serial Wire Debug and Serial Wire Viewer JTAG protocols via a KT-link type buffer.

Program the Bus Blaster with this buffer and it can support SWD in OpenOCD and urJTAG. Special thanks to the developers of libswd for help implementing this buffer on the Bus Blaster.

Pinout

Bus-blaster-v2-pinout.png

JTAG header pinout
Pin Fixed FT2232 pin Description Direction
VTGVoltage targetinput
TRST Reset outputoutput
TDIADBUS1 JTAG data in to targetoutput
TMS ADBUS3 JTAG state machine updateoutput
TCK ADBUS0 JTAG clock in to targetoutput
RTCKADBUS7 System return clock input
TDOADBUS2JTAG data out from target input
TSRST Bi-directional reset pin inout
DBGRQDebug request output
DBGACKDebug acknowledge input

9 CPLD pins are brought to the 20pin JTAG header. The pins are labeled, but the CPLD buffer makes placement totally arbitrary.

Not all pins are supported by all buffers and/or applications

The VTG pin should be connected to the power supply of the device under test. The JTAG pin outputs will then work at the same voltage.

The target must generally supply power to the VTG pin!

The JTAG pins can also operate from the 3.3volt on-board power supply by placing a jumper on header JP4. In this configuration the VTG pin can supply up to 100mA @ 3.3volts to the test device.

PCB

Bus-blaster-v3-pcb.jpg

We used the freeware version of Cadsoft Eagle to make the schematic and PCB. Download the latest designs and firmware from the project Google Code page.

Partslist

BusBlaster-v3-pcb-final-b.png

Click for a full size placement image.

Bus Blaster v3c
PartQuantityValuePackage
C1-C7,C13-C2116100nFC603
C813.3uFSMC_A
C9,C10227pFC603
C11,C12,C2234.7uFSMC_A
D11DO NOT POPULATESOD-123
IC11FT2232HLQFP64
IC2193LC46B EEPROMSOIC8
IC31LD1117-3.3 voltage regulatorSOT223
IC41XC2C32A CPLDVQ44
JP110.1" header1X06
JP210.1" header1X09
JP310.1" header1X05
JP410.1" header1X02
JTAG1Shrouded headerPINSHRD_PTH_2X10
L1,L22Ferrite beadFB603
LED1LEDLED-805
PB1Push buttonTACT_SWITCH_SMALL
PWR1LEDCHIPLED_0805
R1112KR603
R2,R10,R1132KR603
R612.2KR603
R7182RR603
R810RR1206
R12110KR603
RN1,RN2282RRN8P-4R-CRA06S
RN3110kRN8P-4R-CRA06S
USB1USB Mini BCONN_USB_MINI-B
X1112MHz crystalXTAL_4X6


The latest sources and distributors are in the master partlist. See something missing? Please let us know.

Taking it further

The reprogrammable buffer logic should future proof Bus Blaster v3. Already we were able to add Serial Wire Debug support by creating a new buffer implementation.

Bus Blaster v4 uses a 100pin CPLD to include support for SWV, another reduced pin-count JTAG protocol. Most people will never need this. Stick with v3 unless you absolutely need the SWV feature.

Get one!

Bus Blaster v3 is available now for $34.95. Each unit is tested with a real JTAG target before it ships.

Your purchases at Seeed Studio keep the open source project coming, we sincerely appreciate your support!

Links

License

Hardware license: CC-BY-SA