Ziel des Projekts

Um Studenten den Einstieg in das PCB Design, sowie die Programmierung von FPGAs mit Verilog und VHDL zu erleichtern, entwickle ich zusammen mit einem Kommilitonen eine Platine, die als Lernplattform hierfür genutzt werden kann. Die Bauteile richten sich nach den Anforderungen des uns betreuenden Professors und können somit direkt mit den unterrichteten Inhalten verwendet werden. Die Dokumentation des Design Prozesses wird zudem den Mitgliedern des Hochschul Formula Student Teams zur Verfügung gestellt, damit diese schnell mit dem Entwickeln eigener Platinen beginnen können.

Diese erste Revision der Platine wird im April 2017 fertig.

Anforderungen

Da diese Platine einen Einsatz als Lernplattform findet, war das Ziel eine flexible Entwicklungsplattform zu erstellen, die möglichst viele Features inkoorperiert. Folgende Lerninhalte sollten durch die Entwicklung dieser Platine abgedeckt werden:

  • Bussysteme I2C und SPI
  • ADC und DAC um Signale zu analyisieren / generieren
  • Ansteuerung einer LED Matrix
  • Quad State Debug Leds (Dual Color)
  • Implementierung eines Soft Cores auf dem FGPA
  • JTAG
  • Sensor Daten auslesen und verarbeiten
  • Serielle Kommunikation mit dem FGPA über die USB Schnittstelle
  • Analyse und Verarbeitung externer Signale an Pin Header


  • Altium Designer
    Das fertige Design in 3D

    Altium Designer
    Das fertige Design in 2D (gedreht)

    PCB Design

    Form Faktor

    Die Größe der Platine entspricht der eines Raspberry Pi. Auch die Bohrlöcher wurden für entsprechende Cases vorgesehen. Auf Grund dieses doch sehr kleinen Formfaktors stellte das Routen eine große Herausforderung dar. Besonders das Verbinden der LED Matrix mit den entsprechenden Treibern war sehr fordernd.

    Layer Verteilung

    Wie bereits zuvor erwähnt, besteht das Board aus 4 Layern, die sich wie folgt aufteilen:


  • Top Signal Layer
  • Ground Layer
  • Supply Voltage Layer
  • Bottom Signal Layer

  • Die supply voltage Plane ist in ein 3,3V und ein 4,4V Netz aufgeteilt. Die 4,4V werden benötigt um die LED Matrix, sowie den UART2USB Controller zu versorgen. Die 3,3V versorgen die restlichen Komponenten. Die zwei Power Supplies befinden sich auf der jeweiligen Plane.


    FPGA

    Das Herz des Designs bildet der Intel MAX10 FPGA. Es handelt sich hierbei um den MAX10 10M16SAE144I7G. Die Details können der unteren Abbildung entnommen werden.

    Altium Designer
    Zusammensetzung der MAX10 Modellnummer


    Altium Designer
    Intel MAX10 10M16SAE144I7G

    Der Anschluss des FPGAs wurde in Einklang mit den "Intel Max 10 FPGA Device Family Pin Connection Guidelines" vorgenommen. Nachdem alle benötigen Kondensatoren, Widerstände und Spannungsversorgungen angeschlossen wurden, bleiben ca. 100 GPIO Pins übrig, die frei konfiguriert werden können. Die einzigen Beschränkungen hierbei sind JTAG und der interne ADC, da diese an vordefinierten Bänken liegen. Diese Flexibilität ermöglicht es die von Studenten genutzte Hardware an ergonomisch sinnvollen Orten zu platzieren. (Sofern dies bei einer Platine dieser Größe möglich ist... )



    Altium Designer
    Verteilung der Bänke
    Für die verwendeten Komponenten wurden folgende Bänke verwendet:

    Bank Komponenten
    1A /
    1B JTAG
    2 DSC1001 Clock
    3 SPI / Pin Header
    4 Pin Header
    5 I2C
    6 Taster (Debug und Steuerkreuz)
    7 RGB LEDs
    8 RGB LEDs / UART

    In der Tabelle ist zu erkennen, dass es manchmal notwendig war Komponenten über zwei Bänke zu verteilen. Bei den RGB LEDs war dies der Fall, da die Anzahl der voneinander unabhängig steuerbaren LEDs größer ist, als die Anzahl der verfügbaren Pins an der gegebenen Bank. Der Pin Header ist ebenfalls über zwei Bänke verteilt, auf Grund seiner Position auf der Platine. Neben den Bänken in der Tabelle gibt es noch die Power Banks und Ungrouped Pins. Der ADC befindet sich bei den Ungrouped Pins.

    Power Supply

    Altium Designer
    3,3V und 4,4V

    Das Board beinhaltet zwei Power Supply Units (PSU) , die 3,3V bzw. 4,4V liefern. Beide PSUs sind Step Down Converter. Die Eingangspannung kann somit zwischen 4,4 V und 25 V betragen. Es wurde sich für diese PSU entschieden, um eine Vielzahl von Eingangspannungen zu unterstützen, vor allem jedoch die des USB Standards (5V).

    Externe Clock

    Altium Designer
    DSC1001 AL5050 - 50MHz

    Der externe Oszillator DSC1001 liefert eine Frequenz von 50MHz mit einer Genauigkeit von +-10ppm. Da ein Wechsel der Lagen bei HF Signalen zu Problemen führen kann, wurde die Clock bewusst auf der Oberseite platziert. Hierbei wurde das größte Package gewählt (5mm x 7mm) um das manuelle Löten zu erleichtern.

    LED Leiste

    Altium Designer
    LED Leiste mit zugehörigen Tastern

    Für die LED Leiste wurden 8 LEDs gewählt um ein Byte mit diesen repräsentieren zu können. Da die LEDs zweifarbig sind können 4 Zustände (rot,grün,aus und orange) dargestellt werden. Die LEDs können auch unabhängig von den Tastern angesteuert werden. Die Positionierung der LEDs am Rand wurde so gewählt, um eine sichere Bedienung zu gewährleisten und um eventuelle Kurzschlüsse anderer Komponenten durch Berührung zu vermeiden.

    LED Matrix

    Altium Designer
    5x5 LED Matrix und Treiber

    Eine große Fläche der Platine wird durch die LED Matrix eingenommen. Dieses Layout wurde dennoch gewählt, da es eine Vielzahl an Möglichkeiten bietet um Daten zu visualisieren, sich mit RGB Werten auseinanderzusetzen und sogar kleine Spiele wie der Klassiker "Snake" so implementiert werden können. Eine LED Matrix zu programmieren ist zudem eine gute Übung um Schleifen Effizienz und Matrix Array Operationen zu lernen. Das Routen dieser Matrix stellte eine große Herausforderung dar und musste mehrmals revidiert werden. Letztendlich wurde sich gegen ein symmetrisches Design entschieden um die Anzahl der Lagen nicht erhöhen zu müssen. Die Matrix befindet sich auf einer getrennten 4,4V Lage. Zu Beginn teilten sich die Treiber einen Bus, jedoch wurde im Nachgang jedem Treiber eine eigene Datenleitung spendiert, um höhere Bildwiederholungsraten zu ermöglichen.

    Altium Designer
    Abgegrenzte 4,4V Plane

    Helligkeitssensor

    Altium Designer
    Helligkeitssensor APDS-9301

    Der hier verwendete Helligkeitssensor verwendet I2C als Kommunikationsstandard. Dies wurde bewusst gewählt um dieses Protokoll neben SPI, welches von der LED Matrix verwendet wird, zu verwenden. Die Analyse von Helligkeitswerten stellt einen weiteren interessanten Use Case dar, da die Helligekitswahrnehmung des menschlichen Auges nicht linear ist. Hier muss also ein passender Gradient gefunden werden.

    Feuchtigkeits- und Temperatursensor

    Altium Designer
    HDC1000

    Mit einem Feuchtigkeits - und Temperatursensor wird die Sensorik der Platine um ein weiteres I2C Bauteil erweitert. Anwendungen hierfür sind beispielsweise eine Betrachtung der Temperatur Hysteresekurve. Die Genauigkeit des Sensor kann zwischen 14 Bit und 8 Bit variiert werden, mit entsprechenden Wandlungszeiten von 6,5ms bzw. 2,5ms. Hierdurch kann je nach Anwendung eine geeignete Einstellung gewählt werden.

    UART2USB

    Altium Designer
    FTDI FT232R

    Der FTDI FT232R ist ein USB zu UART Interface. Hiermit können Daten vom/zum FGPA über USB gesendet bzw. empfangen werden. In einer späteren Iteration wird das Programmieren des FPGAs selbst auch möglich sein.

    Steuer Kreuz

    Altium Designer
    Steuerkreuz

    Diese Taster können intuitiv benutzt werden um eine 4-Wege Navigation für Spiele oder Messapplikationen zu ermöglichen. Da diese Taster frei programmierbar sind, können Sie natürlich auch für Single Shot Messungen etc. genutzt werden.

    Pin Header Eingänge

    Altium Designer
    Oberseite
    Altium Designer
    Unterseite

    Die Benutzung von beidseitig erreichbaren Eingängen ermöglicht die Benutzung von Erweiterungen wie es Sie für den Raspberry Pi gibt. Die Plattform kann also durch zukünftige Iterationen erweitert werden, oder andere Entwicklungen ergänzen. Zwischen FGPA und die Eingänge wurden 100 Ohm Widerstände platziert, die als Sicherung dienen sollen, um den FPGA vor Schaden zu bewahren.

    SMA Buchse mit DAC

    Altium Designer
    DAC Schaltkreis mit SMA Ausgang

    Die SMA Buchse ist im Gegensatz zu vielen anderen Komponenten nicht auf der Oberfläche befestigt, sondern nutzt THT(Through Hole Technology). Hierdurch soll die physikalische Stabilität gewährleistet werden. Der Analog Pfad wurde so kurz wie möglich geroutet und es wurden die empfohlenen Pi Filter verwendet. Ein Filter filtert die Eingangsspannung des DAC, sowie die 2,5V Referenzspannung, der andere Filter ist für das Ausgangssignal zuständig. Um ein Übersprechen vom parallel geführten SPI Bus und den JTAG Leitungen zu vermeiden, wurde die Ground Plane geschlitzt.

    Altium Designer
    Verschaltung des DAC

    SMA Buchse für MAX10 ADC

    Altium Designer
    SMA Buchse des integrierten ADCs

    Der ADC des MAX10 FPGAs ist vergleichbar mit externen Lösungen, jedoch einfacher in das Design zu inkorporieren. Pi Filter und Beads unterdrücken Interferenzen. Das Referenzpotential für den ADC ist vom Masse Potential der Ground Plane getrennt und wird manuell geroutet. Der Abstand zwischen den Analog Pfaden wurde möglichst groß gewählt, um das Übersprechen dieser zu minimieren. Bedingt durch die hohe Packdichte musste der Pi Filter direkt neben der SMA Buchse platziert werden. Dies filtert jedoch Interferenzen des Kabels sehr gut.

    Altium Designer
    Analog Pfad des ADC

    Mini USB Buchse

    Altium Designer
    Mini USB

    Die Mini USB Buchse verwendet ebenfalls eine THT Befestigung, um eine stabile und zuverlässige Bedienung zu ermöglichen. Beide PSUs sind mit dieser Buchse verbunden, da dies unsere primäre Spannungsquelle ist.

    Fazit

    Dieses Board soll Studenten helfen, die Grundlagen einer FPGA basierten Plattform bezüglich Software und Hardware, besser zu verstehen. Die Entwicklungszeit für diese Board betrug ca 6 Monate, da es neben dem regulären Studium durchgeführt wurde. Während dieser Zeit konnte ich eine Menge über den Entwicklungsprozess einer solchen Platine, sowie das verwendete Tool Altium Designer lernen. Aktuell befindet sich die Platine in der Fertigung und sollte in den kommenden Wochen bereit zum Bestücken sein.

    (09.04.2017)