Scalable FPGA Board

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

'AT91SAM7 FPGA Board 'von Thorsten W.

Einleitung

Dieses Projekt soll dazu dienen, eine Basis für Projekte zu schaffen, bei denen ein Mikrocontroller und ein FPGA zum Einsatz kommen. Dabei soll der Mikrocontroller per USB mit dem PC kommunizieren. Der FPGA wird über den Mikroncontroller geladen. Auf Steck-Modulen sollen dann die eigentlichen Schnittstellen implementiert werden.

Eine Liste von Features:

  • 32-Bit Microcontroller mit USB
  • kleiner FPGA
  • FPGA und Microcontroller per SPI verbunden
  • zwei SD-Karten als Massenspeicher
  • Microcontroller lädt den FPGA

Projekt Status: Planung

Next: Spannungsversorgung planen

Todo:

  • Taktgewinnung für FPGA und MCU (48 MHz, wegen USB für MCU)
  • Debug- und Testmöglichkeiten vorsehen
  • Schnittstellen zwischen MCU und FPGA definieren
  • genutzte MCU-Schnittstellen
  • freie MCU-Schnittstellen auflisten
  • freie FPGA-Ports abschätzen
  • Partitionierung der vorhandenen Resourcen auf homogene Konnektoren
  • Erstellung Schaltplan
  • Testsoftware für FPGA schreiben und simulieren
  • MCU-Code zusammenstellen, der die FPGA-Schnittstellen nutzt. Testprogramm zur Inbetriebnahme, FPGA per MCU laden
  • Design von Erweiterungsplatinen: RS232, CAN, USB, Ethernet, LWL
  • Platine routen
  • Musteraufbau
  • Inbetriebname
  • Applikative SW

Motivation

Typische FPGA-Projekte implementieren die CPU im FPGA und verschwenden wertvolle universelle FPGA-Hardware. Einen zusätzlichen Chip zum Laden des FPGAs muss man so oder so investieren. Die einfache Lösung ist hier, einen FTDI-Chip zu verwenden. Dieses Projekt soll diesen Ansatz ein wenig erweitern, indem ein Microcontroller benutzt wird, um mit dem PC zu kommunizieren. Die Aufteilung, was im Microcontroller und was im FPGA implementiert wird, kann später verfeinert werden.

Hardware

Gesetzt sind, ein AT91SAM7S256 (oder pin-kompatibel) und XC3S50. Microcontroller und FPGA sind über SPI verbunden, so kann der Controller per DMA Daten aus dem FPGA lesen und schreiben. Diese Daten bilden ein memory mapped I/O Interface nach.

TODO: Alternativ wäre ein 8bit MMIO Interface denkbar, gibt es einen AT91 Pin kompatiblen Typen, der das kann?

Spannungsversorgung

Betrieben werden soll die Schaltung über USB: der Microcontroller meldet sich am BUS an und schaltet dann die Spannungen für den FPGA ein. Zustzlich soll eine externe Spannungsversorgung möglich sein, wenn die Schaltung (abhängig vom FPGA und den Erweiterungen) mehr als die erlaubten 500mA benötigt.

Spannungsregler:

- LM 1086 IT3,3 (1,5 A, etwa 1,10 EUR, 2,5 V 3,3 V
- LM 317        (LM 317-220, 0,43 EUR 
- LM 350        ( 0,85 EUR)

Schnittstellen

USB vom AT91. SPI an FPGA. Restliche I/O und Schnittstellen des Microcontroller werden per Stiftleiste heraus geführt.

An einem weiteren SPI des Microcontrollers soll eine SD-Karte angeschlossen werden, damit die MCU den FPGA autonom laden kann.

Für den FPGA sollte ein DDRAM-Chip und eine weitere SD-Karte eingeplant werden.

Software

Beschreibung der Software

Downloads

  • Sourcecode:

Siehe auch