Intel® Quartus® Prime Software
Intel® Quartus® Prime Design Software, Design Entry, Synthesis, Simulation, Verification, Timing Analysis, System Design (Platform Designer, formerly Qsys)
17264 Discussions

Programming external memory via FPGA using JTAG

Altera_Forum
Honored Contributor II
2,292 Views

Hi, 

 

I have a small serial memory device attached to a CycloneIII that I need to program during production - preferably via JTAG. 

 

Are there tools available to pass an image file (not created in Quartus) via the JTAG interface to the FPGA? 

 

Any hints or links to application notes would be greatly appreciated. 

 

Ian.
0 Kudos
8 Replies
Altera_Forum
Honored Contributor II
1,569 Views

I see basically two ways:  

- Programing the serial memory by programming logic included in your design, sending the data through any of the availiable virtual JTAG functions. I have a similar application, where the programming interface to a serial EEPROM controller is provided by a Source&Probe instance. Together with other test and debug functions, it's operated from a PC application. 

 

- Another option, that is often used for initial programming of flash memory through JTAG capable uP, is by generic boundary scan functions, that can control any FPGA pin. All you need is the FPGAs BSDL file and an universal JTAG tool. There are some projects on the internet and commercial tools as well. The method is rather slow, cause the full scan chain has to be shifted for a single bit toggle action.
0 Kudos
Altera_Forum
Honored Contributor II
1,569 Views

Hi FvM, 

 

Thanks for the suggestions. Since there are only a couple of bytes to program I have included a constant that can be accessed via the memory content editor, and a source/probe to do the job. 

 

Cheers 

Ian.
0 Kudos
Altera_Forum
Honored Contributor II
1,569 Views

There are some open source JTAG solutions like: 

http://openwince.sourceforge.net/jtag/ 

 

Also if anyone's interested, I have a solution for using a large parallel flash device to bootload an Altera (Stratix 3) using an EPM570. This uses the (not very well documented) EPM370's ability to direct part of its JTAG chain to the user programmable part of the array.
0 Kudos
Altera_Forum
Honored Contributor II
1,569 Views

We also use professional JTAG tools to do the task of programming external memories from XJTAG (and they make that process very easy), but that's $$

0 Kudos
Altera_Forum
Honored Contributor II
1,569 Views

NIOS processor.

0 Kudos
Altera_Forum
Honored Contributor II
1,569 Views

 

--- Quote Start ---  

Also if anyone's interested, I have a solution for using a large parallel flash device to bootload an Altera (Stratix 3) using an EPM570. This uses the (not very well documented) EPM370's ability to direct part of its JTAG chain to the user programmable part of the array. 

--- Quote End ---  

In which regard is your solution different from Altera MAX II PFL design (AN386)?
0 Kudos
Altera_Forum
Honored Contributor II
1,569 Views

It was based on AN386, yes, but: 

 

1) Figured out how to do the rtl as verilog rather than having to use the megawizard generated function so the code can be changed to implement any flash size and/or device type required (the original was rather limited) 

 

2) Added support for fast burst mode parallel flash to get over 50MB/sec aggregate bandwidth into the Stratix device (to meet PCI Express reset time to active requirements on a large device like an EP3SL340) during configuration 

 

3) Figured out how to do the JTAG commands to the device in order to be able to use a faster 3rd party JTAG tool to do the initial programming.
0 Kudos
Altera_Forum
Honored Contributor II
1,569 Views

Thank you for the detail information!

0 Kudos
Reply