The LOGI-Mark1 allows for drag and drop reprogramming on FPGA bitstream files and the onboard Cortex M3 LPC1343 firmware files. This tutorial will walk through the steps required to update the bitstreams for the FPGA or the firmware for the MCU.
The LOGI-MARK1 has a built in bootloader that allows for easy updating of new firmware to the LPC1343 M3 Microcontroller.The onboard microcontroller allows for a great deal of flexibility and versatility in how the board operates.The main purpose of having the onboard microcontroller is to allow for easy drag and drop programming of the FPGA, which eliminates the need for an expensive programming adapter.The microcontroller has master control of the some of the FPGA configuration pins, which allows it to directly program the FPGA through a slave serial programming interface.Optionally, peripheral boards including the Beaglebone or Raspberry Pi can gain direct programming access to the FPGA.Additionally the microcontroller adds onboard functionality including 10 bit ADC, peripherals including SPI, UART, I2C and USB.These features allow for the low cost addition of a wide array of complementary features of the onboard FPGA.
A bitstream programming file for the FPGA is created in theXilinx WebpackISE workspace.The FPGA project is synthesized and implemented and a bitstream file that can be loaded onto the FPGA is created.The General method of loading the bitstream file on to an FPGA is by using a JTAG programming adapter.The LOGI-MARK1 has eliminated the need for the JTAG programming adapter by using the onboard LPC1343 microcontroller as the bitstream loader.The microcontroller shows up as an MSD storage device on the PC that is being used to create the bitstream.The process for loading the bitstream onto the FPGA is as easy as dragging and dropping the renamed bitstream file onto the MSD storage device.The microcontroller then loads the bitstream in the flash memory for storage.The file is then loaded into the FPGA upon power cycles or resets of the microcontroller.Alternatively peripheral boards including the Beaglebone, Raspberry Pi and Arduino can send I2C commands to the microcontroller to reload the bitstream or to take over control of loading a bitstream into the FPGA.
Custom firmware to add system functionality can be written and updated to the microcontroller by using the LPC1343 built in bootloader.The bootloader is built into the silicon, so there is no need to worry about bricking or losing device by inadvertanlty loading incorrectly linked firmware.Firmware can be easily written using LPCXpresso which is NXP’s free IDE.It is important to note the code support for base system operation including loading the FPGA must be maintained if it is desire to write user customized firmware.
Process to load custom firmware into the LPC: