Serial Port JTAG Programmer

If you’re planning to do some hacking with CPLD or FPGA chips you’ll need a way to program them. JTAG is one of the options and here’s a cheap method that uses the serial port (translated).

This method requires only four signals (TDI, TMS, TCK and TDO) plus ground. But the problem is that an RS232 serial port operates with 12V logic levels and the JTAG side of the programmer needs to operate with the logic levels native to the device you’re programming. Commercial programmers use a level convert IC to take care of this for you, but that doesn’t mesh with the cheap goal of this project. Instead, [Nicholas] uses Zener diodes and voltage dividers to make the conversion. There is also an LED for each data signal to give some feedback if you’re having trouble.

You can use this along with a programming application that [Nicholas] whipped up using Visual Studio. It works well via the serial port, but he did try programming with a USB-to-Serial dongle. He found that this method slows the process down to an unbearable 5-minutes. Take a look, maybe you can help to get that sloth-like programming up to a manageable speed.

[Thanks Alex]

9 thoughts on “Serial Port JTAG Programmer

  1. I’ve done a very similar programmer to a dev. kit that i developed and sell, the problems and suggestions and differences on my project are:
    -The programmer only works with a real serial, possibly can’t run on some of these cheap chinese usb-serial adapters, because of the lack of some signals except RXD and TXD.
    -The TDO line doesn’t have the RS-232 level for VoL, it could be a huge problem on some PC’s
    -Five minutes is so much time! I’ve the same problem on my project and understand that SVF are very large files, on mine, the board have an ATTINY2313 that do some unpack on the data and the process is done on 1 minute
    -Another problem is about the data corruption on serial port, a CRC is very welcome, but can’t exist on this type of design without processing on the JTAG side.
    -To me isn’t important, but people really do care about a graphical interface

  2. i used to have to use somthing like this ALLLL the time for ARM programming

    i finally got my self a nice (overpriced) TI JTAG USB programmer and debugger!

    than NXP sent me one for free for that “destroy your 8 bit microcontroller” thing like 2 months after spending $400 on one XD

  3. Small note, while RS232 should be 12V, some ports go as low as 3.3V. So you are better off with a MAX232, which isn’t that expensive.

    The USB-Serial is a ‘problem’ with the USB-Serial drivers. Some drivers are configurable in latency. (we had problems with slow round trip times, solved it with driver configuration)

  4. MAX3232 if your target operates at 3.3V.

    It is not an expensive part by any means and has been a hobby mainstay for years.

    When you consider the price of the target you are connecting to / devboard, it is worth spending the $1 USD to do it properly…

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.