Electronic – Programming (flashing) MachXO2 chips through JTAG

fpgalattice

I'm trying the MachXO2 7000HE Breakout Board — I could make a simple demo work (following this nice Youtube video).

Since I want to include one of these chips in my next design, I want to learn first how to flash them. Looking at the TinyFPGA schematics as well as this Breakout board schematics, it would seem like I only need to connect the pins TMS, TCK, TDI, TDO, 3.3V, and GND?

I have a TinyFPGA and its TinyFPGA programmer, and I had hoped that it would work with the 7000HE Breakout board. I know, its description says "JTAG programmer for the TinyFPGA boards" — but then, these TinyFPGA boards (as well as the Breakout board) seem to have nothing other than a MachXO2 chip with the JTAG lines connected.

In the Breakout board, I removed the 0-ohm resistors R5, R6, R7, R8 — it doesn't work. The TinyFPGA Programmer software tells me Cannot identify FPGA. Please ensure proper FPGA power and JTAG connection when I click on the Program FPGA button. I triple-checked the connections.

Is it just that the TinyFPGA programmer only recognizes the specific MachXO2 chips used in the TinyFPGAs?

Should it work with the Lattice Semiconductors programming cables? (e.g., the HW-USBN-2B?).

My bottom-line question is: when I place the MachXO2 chip on my board, do I just need to expose the four JTAG pins + GND + VDD, and I should be able to program the chip with the HW-USBN-2B?

Best Answer

Removing R5 to R8 and connecting an external FT2232H should actually work. Can you check the connections once again? Chances are that you are right and that the TinyFPGA programmer does not recognize the FPGA model.

I dont know how the MACHXO2 differs from the MACHXO3 in detail besides the generally lower density but the MACHXO3 is programable via JTAG, SPI and even I2C. The latter is slow but requires only 2 wires + VDD and GND which is nice if the number of pins is limited (but one has to make sure that the dual use pins are not driven by accident as this can hinder the programming via I2C).

Generally speaking the breakout boards typically feature a FTDI chip so one can simply use any cable/board which has a FTDI on it. E.g. I successfully used the ft2232h mini module to program my MACHXO3s and ICE40s. It is recognized as valid programmer by lattice diamond as well.