AXI4-Registerbänke nie wieder von Hand programmieren

| Autor / Redakteur: Guy Eschemann * / Sebastian Gerstl

Waveform eines AXI4-Interfaces beim Abgleich mit einer Verification IP. Die Generierung von Axi4-Registerbänken von Hand ist oft mühselig und birgt hihes Fehlerpotential. Einfacher ist es, sich den zugehörigen HDL-Code automatisch generieren zu lassen.
Waveform eines AXI4-Interfaces beim Abgleich mit einer Verification IP. Die Generierung von Axi4-Registerbänken von Hand ist oft mühselig und birgt hihes Fehlerpotential. Einfacher ist es, sich den zugehörigen HDL-Code automatisch generieren zu lassen. (Bild: Xilinx)

Fast jedes modernes FPGA-Design hat sie: Hardware/Software-Schnittstellen in Form von AXI4-Registerbänken. Diese von Hand anzulegen ist meist sehr aufwändig, doch der web-basierte Codegenerator airhdl bietet eine grafische Eingabe und automatische Register-Generierung.

Registerbänke bestehen aus Kontroll- und Statusregistern. Kontrollregister können von der Software aus geschrieben werden, und steuern oder konfigurieren die Hardware. Über Statusregister kann die Software den aktuellen Zustand der Hardware abfragen. Es gibt auch Interruptregister, welche von der Hardware gesetzt werden um bestimmte Ereignisse zu signalisieren, und von der Software zurückgesetzt werden, nachdem das Ereignis verarbeitet wurde.

Die einzigartige Stellung von Registerbänken, an der Schnittstelle zwischen Hardware und Software, macht diese zu besonders kritischen Elementen in jedem FPGA-Projekt. Nicht selten werden Hardware und Software von unterschiedlichen Personen entwickelt.

So kann es schnell passieren, dass der Hardwareentwickler ein Register an eine andere Adresse verlegt ohne das der Softwareentwickler es mitbekommt. Die Software liest dann den Registerinhalt von einer falschen Adressen, und man wundert sich, dass das System plötzlich nicht mehr funktioniert. Welcher Entwickler kennt diese Situation nicht?

Weil wir alle Besseres zu tun haben als Registerbänke von Hand zu programmieren, mühsam in Microsoft Word zu dokumentieren, und Inkonsistenzen zwischen Registerdefinitionen in Hardware und Software zu debuggen habe ich airhdl entwickelt. Airhdl ist ein webbasierter Codegenerator, mit dem sich Registerbänke komfortabel im Web-Browser beschreiben und generieren lassen. Da airhdl in der „Cloud“ läuft gibt es—anders als bei anderen EDA Tools—nichts zu installieren oder zu lizensieren.

Es ist denkbar einfach: airhdl.com besuchen, (kostenlos) registrieren, Registerbänke erstellen, den generierten Code herunterladen und in das Design integrieren.

Arbeiten mit airhdl

Die Registereingabe besteht in airhdl aus folgenden Schritten:

  • 1. Eine neue Registerbank erstellen
  • 2. Die Registerbank mit Kontroll-, Status- und Interruptregistern füllen
  • 3. Die Register mit (Bit-)Feldern füllen

Es können jederzeit folgende Dateien generiert und heruntergeladen werden:

  • C Header mit allen Registerdefinitionen (d.h. Registeradressen, Bit-Offsets der Felder innerhalb der Register, Bit-Masks für alle Felder usw.)
  • Synthetisierbare VHDL- und SystemVerilog Komponenten mit AXI4-Lite Schnittstelle
  • Registerdokumentation im HTML Format
  • Registerbeschreibung im XML (IP-XACT) und JSON Format

Da alle Dateien aus einer zentralen, in einer Datenbank abgelegten Registerdefinition generiert werden ist die Konsistenz zwischen C-Header, HDL-Dateien und Dokumentation automatisch sichergestellt. Zudem enthalten alle generierten Dateien eine Revision ID welche bei jeder Änderung der Registerbank automatisch hochgezählt wird. Anhand der Revision ID lässt sich sofort (und bei Bedarf sogar automatisch) prüfen, ob z.B. C-Header und HDL-Komponente zusammen passen.

Inhalt des Artikels:

Kommentar zu diesem Artikel abgeben

Schreiben Sie uns hier Ihre Meinung ...
(nicht registrierter User)

Kommentar abschicken
copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 45017592 / FPGA)