4 Programming the FPGA Board in iMPACT
David Banks edited this page 2020-01-29 11:01:27 +00:00

Download the latest release ZIP package from:

https://github.com/hoglet67/AtomBusMon/releases

The directory structure of the release ZIP package is: $BOARD/$CPU

The $BOARD folder represents the target FPGA board being used:

  • lx9_dave for the xc6slx9 based "EEPIZZA" board using Dave's CPU-Specific adapter board
  • lx9_jason for the xc6slx9 based "EEPIZZA" board using Jason's generic level shifter board
  • lx9_jason for the xc6slx9 based "EEPIZZA" board using Jason's generic level shifter board (rotated 180 degrees)
  • godil_250 for the small xc3s250e based GODIL
  • godil_500 for the large xc3s500e based GODIL

The $CPU folder selects the CPU being used:

  • ice6502 - for the NMOS 6502 CPU
  • ice65c02 - for the CMOS 65C02 CPU
  • ice6809 - for the 6809E CPU
  • icez80 - for the Z80 CPU
  • icemulti - contains all of the above with a multiboot loader

Inside the $CPU folder are two files:

  • a .bit file
  • a .mcs file - this is the only file needed when programming into EEPROM on the FPGA board

Prepare the GODIL for Programming

This section can be skipped if you have the "EEPIZZA" board

One consideration when changing designs in the GODIL is that the power supply pins need to change. The safest way to do this is by programming an intermediate "blank" design that configures all pins as inputs.

In outline, the process is

  • Plug GODIL into a breadboard
  • Configure the GODIL jumpers appropriately to power the design that's currently programmed
  • Apply power to via these pins
  • Flash the .mcs file for the "blank" design using iMPact
  • Remove power
  • Configure the GODIL jumpers appropriately to power the new design
  • Apply power to via these pins
  • Flash the .mcs file for the new design using iMPact
  • Remove power
  • Unplug GODIL into a breadboard
  • Plug GODIL into target system

By following these steps, you avoid ever accidentally shorting an output to power or ground, as the pin assignments change.

The blank.mcs images are here: https://github.com/hoglet67/AtomBusMon/blob/master/releases/250/Blank.mcs https://github.com/hoglet67/AtomBusMon/blob/master/releases/500/Blank.mcs

Prepare the "EEPIZZA" board for Programming

  • Plug the Xilinx programmer into your PC/Laptop.
  • At this point the LED on the programmer should light up red. If it doesn't, your Xilinx software is not correctly installed.
  • Remove any CPU adapter boards from the FPGA board.
  • Connect the 6-pin programming cable from the programmer to the FPGA board (making the orientation is such that VREF on the Programmer is connected to 3V3 on the FPGA board). Double check this!
  • Apply power to the FPGA board via the USB socket (from a PC or from a suitable 1A USB Power Supply)
  • At this point the LED on the programmer should change to green. If it doesn't, your Xilinx software is not correctly installed.

Programming with iMPACT

Start iMPACT.

On Linux, run:

source /opt/Xilinx/14.7/ISE_DS/settings32.sh;
impact

On Windows, start iMPACT by running the "Configure Device (iMPACT)" process from ISE, or from the Windows Start menu.

In the iMPACT GUI:

  • Hit cancel to abort the "New iMPACT Project" wizard
  • Double click on "Boundary Scan"
  • Right click then select "Initialize Chain"
  • Click OK to close the "Device Programming Properties" dialog
  • Double click on the little box above the Green Xilinx Chip that is labelled SPI/BPI
  • Browse the releases folder and select the .mcs file you want to program
    • the multiboot version for the "EEPIZZA" board is lx9_dave/icemulti/icemulti.mcs
  • You should then get a "Select Attached SPI/BPI Dialog"
  • Select SPI PROM
    • M25P16 for the small xc3s250e based GODIL
    • M25P32 for the large xc3s500e based GODIL
    • W25Q32BV for the xc6slx9 based "EEPIZZA" board
  • Single click on the SPI/BPI box - it should turn green, and on the left you should now see the following options:
    • Program
    • Verify
    • Erase
    • Blank Check
    • Readback
    • Get Device Checksum
    • Read Device Status
  • Double click on Program
  • Click OK in the "Device Programming Properties" dialogue (the defaults are fine)
  • You should now see a progress dialogue, and programming should take about 1 minute (5 minutes for icemulti)
  • At the end you should get a "Program Successful" message