openocd/src/jtag/drivers/usb_blaster
Antonio Borneo 96202cda19 openocd: build: add SPDX tag
Add the SPDX tag to makefiles, configuration scripts and tcl files
present in the folders under src/

Change-Id: I1e4552aafe46ef4893d510da9d732c5f181784a4
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/7051
Tested-by: jenkins
2022-07-23 13:06:38 +00:00
..
Makefile.am openocd: build: add SPDX tag 2022-07-23 13:06:38 +00:00
README.CheapClone jtag: fix minor typos 2020-07-26 20:14:37 +01:00
ublast2_access_libusb.c drivers: call adapter_get_required_serial() in jtag_libusb_open() 2021-11-28 11:01:32 +00:00
ublast_access.h Remove remaining references to FTD2XX driver 2021-11-05 22:44:19 +00:00
ublast_access_ftdi.c Remove FSF address from GPL notices 2016-05-24 22:30:01 +01:00
usb_blaster.c Remove remaining references to FTD2XX driver 2021-11-05 22:44:19 +00:00

README.CheapClone

USB Blaster Cheap Clone
=======================

The Altera USB Blaster has a cheap clone, based on :
 - a Cypress CY7C68013A-56PVXC as the main chip
 - a 74HC244D as the output latch
 - a 24 MHz quartz
 - a EEPROM 24C64BN

The schematics (cut down to essential) is :

                           /-----------------+----------------------\
     +--------------+      |                 |                      |
USB--|  CY7C68013A  |      |  +----------+   |                      |
     |              |      |  | 74HC244D |   |                      |
     .              .      |  |          |   |                      |
     .              .      \--o 1     20 o   |     10 pins header   |
     |           47 o-- TCK --o 2     19 o---/        +-------+     |
     |           46 o-- TDO --o 3     18 o-- TCK -----o 1   2 o     |
     |           45 o-- TMS --o 4     17 o-- TDO -----o 3   4 o     |
     |           44 o         o 5     16 o-- TMS -----o 5   6 o     |
     |           43 o--       o 6     15 o            o 7   8 o     |
     |           42 o--       o 7     14 o         +--o 9  10 o     |
     |           41 o-- TDI --o 8     13 o-- ?     |  +-------+     |
     .           40 o-- nOE \ o 9     12 o-- TDI --+                |
     .              .       | o 10    11 o                          |
     o 28        29 o       | |          |                          |
     |              |       | +----------+                          |
     +--------------+       \                                       |
                             ---------------------------------------/

From this one can deduce that :
 - the cypress emulates the Altera chip
 - as the cypress pins used are 41-47, all output/input are controlled by 8051
   PortA.
 - as the 8051 is clocked at 24Mhz, and because each USB byte is handled by the
   8051, assuming a 40 instruction cycles per USB packet, the maximum throughput
   would be around 500 kHz.

Pinout
======
 Port A.0: nOE (output enable of 74HC244D)
 Port A.1: TDI
 Port A.5: TMS
 Port A.6: TDO
 Port A.7: TCK

Throughput considerations
=========================
Measurements on a scope reveal that :
 - for bitbang mode, the throughput is 56.5 kbits/s
   (as each clock transition is measured at 17.7us)
 - for byteshift mode, the throughput is 107.7 kbits/s
   (as 63 bits TDI transmission is measured in 585 us)

Let's suppose that to upload a 32 bits value, it is necessary to :
 - move from IDLE to DR-SHIFT : 3 bitbang (3 TMS transitions)
 - input the 32 bits of data : 1 byteshift (24 bits) + 8 bitbang (8 bits)
 - move from DR-SHIFT to IDLE : 5 bitbang (5 TMS transitions)
So for this 32 bits of data, the time would be :
   3 * 17.7us + 1 * 585us/63*24 + 5 * 17.7us
 = 53.1us + 222us + 88.5us
 = 363us

Throughput in bit/s: 32 * (1 / 363E-6) = 88000 bits/s
Throughput in bytes/s: 11kBytes/s

Conclusion
==========
Contrary to the original USB Blaster, the cheap clone will never reach high
transfer speeds over JTAG.