Wenn Ingenieurkraft gebraucht wird, kann ich gerne ein Angebot unterbreiten. Mein Spektrum geht von Konzipierung, Schaltbilderstellung, Layoutunterstützung, Inbetriebnahme, Hardware-Programmierung, Mikrocontroller-Programmierung, Typprüfung, EMV. Baugruppen-Stückprüfung, Schulung und Verkauf.
Nach 15 Jahren Erfahrung in der Hardware-Entwicklung, dem Konzipieren und Verwirklichen eigener Produkte, dem selbstständigen Anbieten, bietet das Ingenieurbüro in enger Zusammenarbeit mit Firmen, mit der wir seit Jahren im partnerschaftlichen Verhältnis zusammenwirken eine breite Palette von Dienstleitungen.
Als Schwerpunkt kann Messtechnik, Aktorik von Kleinmotoren, digitale Ein- und Ausgänge und Rechenaufgaben, die wir gerne von leistungsfähigen Single-Cores oder FPGAs machen lassen. Scheuen Sie keine Angebotanfrage. Gerade für Kleinprojekte lohnt sich die Kontaktaufnahme.
Wenn man FPGAs erstellt, stellt jede Implementierung eine Dateninsel dar. Um dem aus dem Wege zu gehen, sollten FPGA die gleichen Sourcen benutzen. Gleiche Sourcen sorgen für gesteigerte Qualität, weil Lerneffekte aus verschiedenen Quellen zusammenfliesen. Aus diesem Grund wurde ein Framework erstellt, um Sourcen zeitgerecht zu pflegen. Bei Einsatz des FPGA-Framework können Varianten und Release mit massiver Zeitersparnis erstellt werden.
Vorteile des Frameworks
Integration von svn
Durch die Übereinanderlegung von Sourcen ist es einfach, die Quellen fachgerecht einzuordnen. Jedes Top-Entity enthält sein eigenes Verzeichnis. Die Build-Dateien wie pinning und constraints werden zu den Implementierungen zugeordnet. So ergibt sich ein sauberes Verzeichnisbild.
Automatische Erstellung vom Projektfile
FPGAs die aus vielen Sourcen bestehen sind schwer zu klonen. Die Sourcen liegen in verschiedenen Verzeichnissen und sind schwer zu fassen. Die Abhängigkeiten zwischen ihnen können nur manuell durch Trial-und-Error bestimmt werden. Das Framework bindet alle erforderlichen Quellen einer Technologie automatisch ein und bildet ein Projekt-File. So dass Lattice Diamond sie einfach öffnen kann.
Screenshot von Lattice-Diamond aufgerufen vom FPGA-Framework
Einfache Erstellung von Varianten
Oft werden Varianten von FPGAs erstellt, manchmal ist es ein veränderter Zuschnitt der Leiterplatte, manchmal ein Redesign der Leiterkarte oder eine Teilbestückung. Mittels einfacher Variablen lässt sich der FPGA mit einfachen Mitteln konfigurieren. In XML-Dateien stehen leserlich Beschreibungen der Konfiguration. Somit können Sie in den FPGA top in die testbench sowie in die Beschreibung fehlerlos einfliessen. Dadurch dass die Konfiguration nur an einer Stelle steht erhält man die Qualität eines Single-Source-Designs.
Alle erforderlichen Aufrufe über einfache Kommandozeilenbefehle
Es gibt unterschiedliche Aufgaben während der Entwicklung eines FPGA. Der wohl wichtigste Schritt ist die Synthese. Davor kommt die Simulation und die Dokumentation. Der Ablauf ist der folgende, man legt eine Variante fest. Dann ruft man den erforderlichen Schritt auf. Die Entwicklungsumgebung Diamond, Active-HDL, die Synthesewerkzeuge werden automatisch aufgerufen. Der letzte Schritt ist das Release. Hierbei können alle gewünschten Daten automatisch an die erforderlichen Stellen kopiert werden. Das Tool erstellt auch die Programmierdateien an unterschiedlichen Dateiorten.
Automatische Erstellung
der Dokumentation
Während bei der konventionellen Entwicklung die Dokumentation parallel erstellt werden muss, erstellt sie das Framework zeitgleich. Dabei fliessen Konfiguration ein, Build-Reports. Die Struktur des FPGA kann durch Beschreibung in der Dokumentensprache DITA nachvollzogen werden, so dass ein hierarchisch gegliedertes HTML-Dokument entsteht, dass die Hierarchie des Designs entspricht. Zeitgleich entsteht auch ein PDF zum schnellen Nachschlagen für die Programmierer.
Aufbau des Frameworks
Grundstruktur im Dateisystem
Dateisystem im FPGA-Framework zum kollaborativen Arbeiten
Das System ist wie folgt gegliedert: In src/ liegen Ihre Entwicklungsdateien. Darin enthalten sind commons/: Das sind allgemeine Dateien, die in mehreren Dateien verwendet werden. In functions/ können funktionorientiert strukturierte Sourcen liegen, das hat den Vorteil, dass man eine bessere Übersicht über implementierte Funktionen bekommen. In specifics/ liegen alle spezifischen Dateien für ein Design wie das top und das testbench.
In cmd/ liegen alle Dateien die das Framework betreffen. Diese Dateien werden geliefert und bedienen das Framework.
In beds/ sind alle Implementierungen nach Artikelnummer der Leiterplatte geordnet. In beds/ bekommt jedes Design sein eigenes Verzeichnis. Dort laufen die Synthese- und Simulationsprogramme ab. Die Endausgabedateien und die Dokumentation wird hierin abgelegt sein.
Andere Verzeichnisse werden nur auf Wunsch im Release-Schritt beschrieben.
Auszeichnungsdateien in XML
Die Magie des Frameworks ist auf die XML-Technolgie zurückzuführen. Durch XML-Dateien wird die Struktur der Sourcen beschrieben. Es kann zu jeder Source bzw. zu jeder Funktion eine eigene Datei erstellt werden. In dieser Datei ist folgendes beschrieben:
Name der Source und der evtl. vorhandenen Testbench
Konfigurationskonstanten. Diese Konstanten werden im HDL eingebunden und sind auch in der Dokumentation beschrieben.
Es können Register beschrieben werden. Z.B. bei RAM Architekturen. Für jedes Register können Adressen und Daten beschrieben werden. Die Daten können 8-64 Bit breit sein. Es können Bitserien und einfache Bits beschrieben werden. Im HDL werden diese Einzelheiten mit vielerlei Konstanten zugänglich gemacht.
register.xml – Beschreibungsdatei für den kollaborativen Framework für FPGA
Aufruf des Frameworks
Im Verzeichnis cmd/ liegt eine Verknüpfung zu einer DOS-Kommandozeile. Dort wählt man als erstes die zu erstellende Variante aus. Dies funktioniert mit einem einfachen set Befehl. Als nächstes startet man die Arbeit mit einem chore Befehle. Z.B. chore compile synth release. Die Befehle lassen sich nacheinander ausführen, damit zeit-intensive Schritte automatisch nacheinander ausgeführt werden.
Integration des Frameworks
Das Framework ist durchweg dokomentiert. Es ist einfach es zu implementieren. Man beginnt mit dem Erstellen des Dateisystems. Die verwendeten Sourcen müssen alle in src/ eingepflegt werden. Es empfiehlt sich die src nach obigen Schema ordnerorientiert abzulegen. Es gibt funktionsorientierte Sourcen und systemorientierte.
Als nächstes wird eine XML-Struktur eingepflegt, hier werden die Sourcen erfasst und es werden Namen festgelegt, mit denen man sie instanzieren kann.
In specifics/ kommt eine Sonderrolle zu tragen. Jedes top instanziert seine Subfunktionen. Des Weiteren werden hier Dateinamen, Spezialverzeichnisse und sonstige Designspezifische Daten eingetragen.
Bei Fragen zum Framework können Sie sich jederzeit im Kontaktformular eintragen. Ich berate Sie dann gerne individuell und lasse Ihnen ein maßgeschneidertes Angebot zu kommen.
Einer der kostengünstigsten erhältlichen FPGA ist der MachXO2 von Lattice. Hier der Link zum MachXO2 vom Hersteller. Obwohl schon in die Jahre gekommen, ist er weiterhin erhältlich. Er besitzt mehrere RAM-Blöcke die als ROM, Single-Port-RAM oder Dual-Port-RAM benutzt werden können. Der Dual-Port-RAM hat den Vorteil, dass er Daten zwischen Einheiten mit unterschiedlicher Taktquelle verbinden kann.
Der 640er ist um die 5$ erhältlich und eignet sich für verschiedene Anwendungen. Der Vorteil einen FPGA auf der Hardware einzusetzen ergibt sich aus folgendem Grund: Man kann Hardware anbinden und in Echtzeit ansteueren. Anders als bei einem Mikroprozessor kann sich der FPGA auf jede Peripherie zeitlich voll und ganz konzentrieren. Während eine Mikroprozessor nur eine Sache nach der anderen machen kann und dafür mit Interrupts oder Zeitquellen gesteuert werden muss, kommen im FPGA parallele Einheiten zum Werk die zeitgleich arbeiten. Ein anderer Vorteil ist die Flexibilität. Im Gegensatz zu Hardware kann der FPGA jederzeit umprogrammiert werden.
Zum Programmieren bietet sich die JTAG-Schnittstelle an. Man führt 4 Signale auf einen Stecker und kann dan mit einem Programmieradapter von Lattice den FPGA programmieren oder auslesen.
Der MachXO2 verfügt noch über eine andere bemerkenswerte Qualität. Über ein einziges Signal lässt sich der gesamte RAM-Inhalt in einen Flash speichern, so dass er beim nächsten Starten zur Verfügung steht. So gelingen beispielsweise Kalibrierung von analogen Eingängen.
Zur Anbindung an einen Mikroprozessor kann man sich mehrerer verschiedener Schnittstellen bedienen. Die SPI und der I2C ist fest im Chip integriert, damit man mit wenig Aufwand einen internen Wishbone-Bus anbinden kann. Es gibt auch mehrere andere propriotäre Möglichkeiten einen Chip anzusprechen oder als Slave Daten zu liefern. Zum Beispiel eine parallele Schnittstelle oder einen irgendwie gearteten seriellen Bus.
Eine FPGA-Programmierung wird in den Sprachen verilog oder VHDL ausgeführt. Beide Sprachen haben Vor- und Nachteile. Ich empfehle die Beauftragung eines Spezialisten, denn im FPGA sind neben Pinning auch Timings zu beachten. Wenn Sie näheres Interesse haben, erstelle ich Ihnen gerne ein individuelles Angebot.