s100projects / T35_FPGA_MODULE

S100Computers T35 FPGA Module Design

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

T35_FPGA_MODULE

S100Computers T35 FPGA Module Design

NOTE: See Important Wire Mod needed for Version 1b details at the end of page!

Table of Contents:

Project Overview

This is a custom T35 FPGA project module for S100Computers. This module was designed to augment the EP4CE10 based FPGA originally in use on the various FPGA S-100 Boards in the S100Computers inventory.

The module pictured below is in the same basic footprint as the original, but with added pins (shown in white-filled rectanges surroundng the new pins).

Added features in comparison to the original EP4CE10 module include:

  • 50 Additional GPIO Pins for a total of 214 I/Os (Module is shipped with pins unmounted for added flexibility)
  • 3x the Logic Elements (31,680 vs 10,320)
  • 3.5x the Embedded FPGA RAM (180K vs 51K)
  • Adds in LVDS Capability (up to 800Mbps)
  • Adds 128MByte DDR3 SDRAM
  • Up to four configuration images (jumper selectable)
  • Seven Segment LED Display for custom status or diagnostic output

T35 FPGA Module Image

picture alt

T35 FPGA Module Features Diagram

picture alt

Toolchain

The FPGA Tool-chain used for this project is the EfinityIDE from Efinix Inc.

The Efinity IDE Toolchain is currently available with the purchase of an approved Efinity Development Board (see Efinix website for more details).

Project Organization

Projects for this board are generally stored on the root of the host system hard drive in the \S100Projects\ directory (e.g. - C:\S100Projects). The user does not need to replicate this directory structure, but there may be some project specific links that will need to be adjusted to move a project to a different directory organization.

JTAG Programming Adapters

The T35 FPGA Module uses a mini 5x2 JTAG Header with 0.05" (1.27mm) pin spacing. Mating cables and a JTAG Adapter PCB are available from Olimex that can be adapted for use in programming the T35 FPGA Module. The parts needed to implement this JTAG Programmer are available from Digikey and Mouser:

Digikey Part No Description Manf Manf Part No
1188-1016-ND JTAG Adapter Olimex ARM-JTAG-20-10
769-1106 USB Adapter FTDI C232HM-DDHSL-0
S2021EC-10-ND Male to Male Header Sullins PRPC010DABN-RC
Mouser Part No Description Manf Manf Part No
909-ARM-JTAG-20-10 JTAG Adapter Olimex ARM-JTAG-20-10
895-C232HM-DDHSL-0 USB Adapter FTDI C232HM-DDHSL-0
649-77313-198-20LF Male to Male Header Amphenol 77313-198-20LF

USB Adapter Supply Noise Fix

The Olimex JTAG Adapter will need to be modified to fix a supply noise issue on the FTDI USB Adapter (where up to 700mV of noise is present on the FTDI 3.3V supply pin), and also to allow for the use of the Olimex JTAG Adapter with the T35 JTAG pinout.

To fix the supply noise issue, a 100uF electrolytic cap must be added between pins 2 and 6 on the 20-pin female header:

picture alt

Olimex JTAG Adapter Wire Mods

R2 on the Olimex JTAG Adapter (which is actually implemented as a trace/short) needs to be removed to avoid interfering with the Chip Select signal of the configuration flash on the T35 FPGA Module (pin 9 on the 10-pin Olimex header). See the Olimex JTAG Schematic.

picture alt

FTDI USB Adapter to Olimex JTAG Header Connections

To connect the USB Adapter to the Olimex JTAG, first plug in the 20-pin male to male header into the Olimex Female 20-pin header. Next plug the USB Adapter pin header cables into the following pins. When done you should have a color sequence of wires as shown above.

JTAG Adapter Pin No Color Signal Name T35 JTAG Pin No
Pin 2 RED +3.3V Supply Pin 1
Pin 5 YELLOW JTAG TDI Pin 8
Pin 6 BLACK GROUND Pins 3 and 5
Pin 7 BROWN JTAG TMS Pin 2
Pin 9 ORANGE JTAG TCK Pin 4
Pin 11 (Optional) PURPLE QSPI_CSN Pin 9
Pin 13 GREEN JTAG TDO Pin 6
Pin 15 GREY CRESET Pin 10

Installing the FTDI Zadig USB Drivers

Installing the Linux USB Driver:

(from Efinix AN006) The following instructions explain how to install a USB driver for Linux operating systems.

  1. Disconnect your board from your computer.
  2. In a terminal, use these commands:
    > sudo <installation directory>/bin/install_usb_driver.sh
    > sudo udevadm control --reload-rules

Note: If your USB JTAG Adapter was connected to your computer before you executed these commands, you need to disconnect and re-connect it.

Installing the Windows USB Driver

  1. Download Zadig from zadig.akeo.ie
  2. Copy the Zadig application from the 'Downloads' to a working directory.
  3. Right click the Zadig application and select "Run as Administrator".

NOTE:Zadig can have problems identifying the C232HM-DDHSL-0 when other FTDI based USB devices are plugged in. Efinix recommends unplugging other FTDI devices while configuring the C232HM-DDHSL-0, after which you should be able to plug the other devices back in.

picture alt

  1. Choose Options->List All Devices and turn off Options->Ignore Hubs or Composite Parents.

picture alt

  1. Select C232HM-DDHSL-0 from the drop down list.

picture alt

  1. Select libusbK from the drop down list.

picture alt

  1. Click Reinstall Driver or Replace Driver.

Proceed to the Quick Start section below to verify correct operation of the JTAG Programmer.

Quick Start

(After toolset and driver install).

Quick Start Prep

  1. Create a new directory called T35seg7 under the C:/S100Projects/ directory (e.g. - C:/S100Projects/T35seg7/ ).

  2. Download (Clone) the T35seg7 Test Project to the C:/S100Projects/T35seg7/ directory. This is a good initial project to use on existing S100Computers S-100 FPGA Boards as it does not drive any of the legacy WaveShare GPIOs; it only drives the GPIOs associated with the seven segment display (GPIOL_72 to GPIOL_81). This avoids any signal conflicts with exisiting designs. The purpose of this FPGA project is to count and display the numbers from 0 to 'F' (hexadecimal) on the seven segment display on one second boundaries.

  3. Start the Efinity toolchain and load the C:/S100Projects/T35seg7.xml project.

  4. Compile the T35seg7 project by clicking on the picture alt icon. (Wait for completion)

  5. Prepare for SPI FLash Programming by downloading and copying the jtag_spi_flash_loader.bit file into the /outflow/ directory. Doing this will allow the Efinity Programmer to find the JTAG Bridge bitstream file automatically when performing SPI Programming.

  6. Connect the JTAG Adapter to the T35 JTAG port and plug the cable into a USB port. (NOTE: No other connections are necessary as the T35 FPGA Module can derive its power from either the module interface pins or the JTAG Cable). Be careful to align the red stripe of the JTAG cable to the left and make sure that the JTAG pins are properly aligned (it is possible to plug this connector in being one row off). When done the JTAG cable should hang straight down to the Olimex JTAG Adapter without looping (if looped, you may have the cable ends reversed).

picture alt

  1. Open the Efinity Programmer by clicking on the picture alt icon.

There are two types of programming that can be done with the T35 FPGA Module:

  • JTAG Programming (this targets the FPGA configuration RAM directly, but does not save it in Flash).
  • SPI Flash Programming (this targets the SPI Configuration Flash for confiuration auto-load on power on).

JTAG Programming

  1. Click the "File Select" Button picture alt and select the T35seg7.bit configuration bitstream from the open file dialog box.
  2. Under "Programming Mode" select "JTAG" from the drop-down menu.
  3. Click the "Program Button" picture alt to program the T35 via JTAG.

picture alt

Once programmed, you should see the T35 transition into User mode:

picture alt

SPI Flash Programming

  1. Click the "File Select" Button picture alt and select the T35seg7.hex configuration bitstream from the open file dialog box.
  2. Under "Programming Mode" select "SPI Active using JTAG Bridge" from the drop-down menu.
  3. Use the "File Select" button in the "Auto configure JTAG Bridge Image" to select the downloaded jtag_spi_flash_loader.bit in the outflow directory. (Efinity should have already recognized the bridge image in the outflow directory, but if it doesn't, make sure to select it before proceeding).
  4. Click the "Program Button" picture alt to program the T35 via JTAG. The programmer will now erase and then program the T35seg7 bitstream image into the flash.

picture alt

After programming, you should see a "Flash verify Successful!" message when done:

picture alt

NOTE: Since the jtag_spi_flash_loader.bit bitstream is still loaded into the T35's configuration RAM after programming, you will need to press the reset button on the module to have the T35 load the new configuration from the flash.

Design Files

Schematic

T35 FPGA Module Schematic

Pin Assignment Spreadsheet

T35 FPGA Module Pin Assignments (with special thanks to Terry Fox!)

Jumper Assignments

Jumper Ref Des Function Default Setting
J1 - OSC DIS On Board Oscillator Disable Open (Osc Enabled)
J3 - CBSEL1 Config Binary Select: Open (Image 0)
J4 - CBSEL0 [00, 01, 10, 11] Open (Image 0)
J7 - QSPI/SPI QSPI vs SPI I/F Config Open (QSPI)
J10 - 5V-3V EN 5V to 3V SMPS Enable Open (5V-3V Disabled)
J11 - JTAG JTAG Connector for Programming N/A

NOTE: J7 is only used for initial manufacturing board qualification and testing of new Configuration Flash Devices. Leave OPEN for normal module use.

Jumper Intended Use

  • J1 - Allows for disabling the on-board oscillator to allow for the use of an external oscillator on J6 pin 23.
  • J3/J4 - Allows for programming and selection (at boot) of multiple configuration binary images.
  • J7 - Used for qualifciation of new configuration flashes (not normally used by users - leave open)
  • J10 - Allows for enabling the on-board 5V to 3.3V DC-DC Converter (SMPS) for hosts that DO NOT SUPPLY 3.3V to the T35 Module.
  • J11 - 10 pin 0.050" Mini JTAG Header for programming and configuration.

Important Wire Mod needed for Version 1b

There is an important single wire modification needed for complete compatibility with the WaveShare pinout due to a missing PCB net on DC1D pin 148 (please see schematic above for details).

picture alt

About

S100Computers T35 FPGA Module Design