1
\$\begingroup\$

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?

\$\endgroup\$
4
  • \$\begingroup\$ Please add breakout board schematics too if possible. \$\endgroup\$
    – User323693
    Commented Aug 24, 2019 at 20:35
  • \$\begingroup\$ The schematics are in the Breakout board User's guide (near the end, Appendix A) \$\endgroup\$
    – Cal-linux
    Commented Aug 24, 2019 at 21:01
  • \$\begingroup\$ any particular reason to favor the MACHXO2 over MACHXO3? Just curious. \$\endgroup\$ Commented Aug 25, 2019 at 8:42
  • \$\begingroup\$ I guess first and most important: the TinyFPGA. We just wanted to "start small" with the inclusion of external logic / simple sequencers/FSM. We discovered this TinyFPGA and it was like this big "Bingo! moment". I looked at the XO3 and it seemed overkill for what we need. Now that you asked the question, you made me go look again, and now I actually found the strongest reason against the XO3: BGA (as I see, they exclusively come in BGA packages) \$\endgroup\$
    – Cal-linux
    Commented Aug 25, 2019 at 12:47

2 Answers 2

2
\$\begingroup\$

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.

\$\endgroup\$
2
  • \$\begingroup\$ I just re-did (and re-checked) the connections. Looks like it is indeed an issue of each tool only dealing with its own stuff: the Lattice Diamond built-in programmer does not recognize the "cable" — the list only shows HW-USBN-2A, USBN-2B, and DLN-3C; if I click on "Detect Cable" it tells me that no Lattice Semiconductor cables were detected. And the TinyFPGA programmer tells me that it cannot identify the FPGA, asking me to check power and JTAG connections. I ordered the HW-USBN-2B, so hopefully that will solve the issue. \$\endgroup\$
    – Cal-linux
    Commented Aug 26, 2019 at 14:09
  • 1
    \$\begingroup\$ @Cal-linux well actually you can use the MACHXO breakout board itself as programmer or a ft2232h mini module or any other ft2232h which is way cheaper than the cable. E.g. here buildingelectronics.blogspot.com/2017/09/… it is shown how to use a MACHXO3 boards as I2C programmer for external devices but you can use the other modes as well. Just make the correct connections. \$\endgroup\$ Commented Aug 26, 2019 at 14:12
1
\$\begingroup\$

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?

Yes. Because, the MachX02 official product description page suggests the HE USBN-2B as one of the design resource for programming.

enter image description here

As per this table I have to say that ISPen should a role to play. Please ask them once.

\$\endgroup\$
7
  • \$\begingroup\$ "As per this table I have to say that ISPen should a role to play" — on the TinyFPGA board, there are two lines, JTAGENB and PROGRAMN, that sound ike they could be related; however, those two lines simply are connected to two of the pins of the MachXO2 chip — they are not used during programming. On the Breakout board, looks like those two lines just go from the MachXO2 (PROGRAMn and JTAGENB — pins 119 and 120) to header J2 (which I'm pretty sure is not used during programming). "Please ask them once" — you mean, ask the Lattice tech support people? \$\endgroup\$
    – Cal-linux
    Commented Aug 24, 2019 at 23:22
  • \$\begingroup\$ Yes I meant to write to lattice people \$\endgroup\$
    – User323693
    Commented Aug 25, 2019 at 2:33
  • \$\begingroup\$ good luck with the support. If you are non company they wont even talk with you since they closed the forum completely and later limited the ticketsystem to companies. \$\endgroup\$ Commented Aug 25, 2019 at 8:27
  • \$\begingroup\$ @ChristianB. Hmmm it's a pity. We are buying the tools and we cannot get a support for the most obvious simple seeming problems too \$\endgroup\$
    – User323693
    Commented Aug 25, 2019 at 9:19
  • \$\begingroup\$ Welp. Sometimes the anti correlation of product and support performance amazes me. At least we have here a platform to exchange. TBH I am always happy to exchange experience regarding this. E.g. I made the experience that using the multi purpose pin is tempting but has to be done with care. E.g. properly driving the JTAGENB becomes relevant if the JTAG port is disabled (switched to "facultative"). With sys pins enabled driving PROGRAMN actively low during Initialization will stall the boot process. An unprogrammed device can be none responsive if the SPI clk/cs is driven wrongly etc. \$\endgroup\$ Commented Aug 25, 2019 at 10:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.