Open Source im professionellen Einsatz

© ktsdesign, 123RF.com

Hard- und Software-Simulation

So tun als ob Chip

Programmierbare Logikbausteine haben das Entwerfen digitaler Schaltungen dramatisch vereinfacht. Noch ohne Lötkolben können Profis und Hobbybastler ihr Werk gemeinsam mit der darauf laufenden Software testen. Hardwarebeschreibungs-Sprachen, freie Tools und Erweiterungen machen die Simulation möglich.

Elektronikbastler früherer Jahre, die nächtens die Chips der 7400er-TTL-Reihe verlöteten, bis der elektronische Würfel endlich lief, erinnern sich an die kleine Revolution, die mit dem Aufkommen zur programmierbaren Logik Einzug hielt: Ein GAL- (Generic Array Logic) oder PAL-Chip (Programmable Array Logic) sparte jede Menge Chips und deren elektrische Verbindungen untereinander ein.

Fast wichtiger noch war, dass beim Prototyping kleine Schaltungsänderungen kein Redesign der Leiterplatte mehr erforderlich machten – es reichte, den Chip umzuprogrammieren. Das Erstellen der Arrays passierte mit PC-Tools, oder der Elektroniker benutzte eine Sprache, mit der er die Logik bis zum Erschöpfen der Chip-Ressourcen frei programmierte.

Heute lächeln Entwickler darüber, weil sie mit CPLDs (Complex Programmable Logic Devices) oder FPGAs (Field Programmable Gate Array, siehe Kasten "Programmable Logic Devices (PLDs)") arbeiten, die das Entwerfen komplexer digitaler Hardware per Beschreibungssprache, der Hardware Description Language (HDL), ermöglichen. Zwei Sprachen dominieren: Verilog [1] und VHDL ([2], Very High Speed Integrated Circuit Hardware Description Language), wobei in Europa letztere den Vorzug genießt.

Des Herausragende an diesen Sprachen ist aber, dass sie fürs Simulieren konzipiert sind. Wer schon mit dem Qemu-Emulator eine andere Prozessorarchitektur wie ARM emuliert hat, kennt das Prinzip: Qemu bildet eine CPU auf dem Heimrechner inklusive Bildschirm und Datenspeicher nach. Das Gleiche tun VHDL und Verilog generisch: Die in der HDL beschriebene Hardware simuliert das entsprechende Tool takt- und zeitgenau virtuell und hilft die Funktion mit nachgeahmten externen Stimuli (die Testbench) auf ihre Funktion zu prüfen.

Programmable Logic Devices (PLDs)

Ein Complex Programmable Logic Device (CPLD) besteht aus Blöcken, die ein PLA, Ein- und Ausgangsblöcke sowie eine programmierbare Rückkopplung enthalten. Der Programmierer des Bausteins kann die Blöcke untereinander verbinden (Flashzellen). In der Regel sitzt hinter jedem I/O-Pin ein Flipflop.

Ein Field Programmable Gate Array (FPGA, Abbildung 1) besteht ähnlich wie ein CPLD aus untereinander vernetzten Blöcken, die komplexer als bei CPLDs ausfallen (Flipflops und Lookup-Tabellen). Die Blöcke untereinander sind gegenüber dem CPLD feinmaschiger und mit SRAM-Technik verschaltet. Viele FPGAs stellen für den Programmierer zudem fertige Funktionsblöcke wie RAM, PLLs oder CPU-Kerne bereit.

Abbildung 1: Ein FPGA-Chip der Firma Altera (Quelle: Wikipedia).

Abbildung 1: Ein FPGA-Chip der Firma Altera (Quelle: Wikipedia).

Ein- und Ausgabe simulieren

Ein elektronisches Element kann man zunächst von außen schematisch als Block mit Ein- und Ausgängen betrachten, wie es das Beispiel einer kleinen CPU in Abbildung 2 skizziert. Ein beinahe überall existierender Eingang ist der Clock-Pin, also der Takt-Eingang. Das typische synchrone Design arbeitet generell mit einem Masterclock. Ein asynchrones Design hingegen evaluiert beliebige Eingänge wie auch momentane interne Zustände und erzeugt davon abhängige Ausgangssignale. Synchrone Designs sind weniger fehleranfällig und besser zu handhaben. Für eine einfache Simulation bedarf es

  • einer Beschreibung des synchronen Masterclock-Signals »clk« und
  • einer dazu möglicherweise synchrone Signalfolge oder auch Wellenform (des Stimulus).

Die einfache Simulation liefert als Resultat logischerweise wiederum eine Wellenform. Was dem Elektroniker sein Oszilloskop oder Logikanalyzer, ist für den mit der Simulation beauftragten HDL-Programmierer schlichtweg die Software, die aus der Simulation generierten Wellenform Daten visualisiert. Die extern eingespeisten Signale, wie Clock, sind für die Simulation Teil der Testbench.

Abbildung 2: Das Blockschema einer einfachen CPU, die es zu simulieren gilt.

Abbildung 2: Das Blockschema einer einfachen CPU, die es zu simulieren gilt.

Einfach zusammenstöpseln

Die TTL-Digitalbausteine mit ihren Gattern früherer Epochen finden heute in einzelnen oder zu einer Entity gruppierten funktionalen HDL-Beschreibungen ihre Entsprechung. Komplexere Bauteile, oft als Cores bezeichnet, sind auf verschiedenen Webseiten wie Opencores.org frei verfügbar. Der Computerbastler, der einfach mal gerne mehr über die Materie lernen möchte, kann sich also die einzelnen Bausteine herunterladen, sie virtuell mit Hilfe der HDL zusammenstöpseln und die Funktion der Hardware mit Hilfe der Simulation verstehen lernen.

Sobald die funktioniert und auch das Vertrauen in die simulierte Umgebung vorherrscht, wächst die Begehrlichkeit das Design auch auf Hardware mit echten Signalen laufen zu lassen – sei es als einfache PWM-Steuerung für die Regenbogen-Sauna-Beleuchtung oder als eigenen Crypto-Beschleuniger. Dazu fehlen noch die eigentlichen Simulations- und Synthesewerkzeuge. Für den Linux-User existiert seit Jahren eine ordentliche Auswahl an kostenlosen oder freien Tools in beiden Sprachenwelten. Tabelle 1 zeigt die für Einsteiger und Kostenbewusste relevanten Softwarepakete.

Tabelle 1

Linux-Simulationswerkzeuge

Name

HDL-Sprachensupport

Lizenz

Internet

GHDL

VHDL

GPL

http://ghdl.free.fr

Freehdl

VHDL

GPL

http://freehdl.seul.org

Icarus

Verilog

Open Source

http://iverilog.icarus.com

Mentor Graphics Modelsim

VHDL, Verilog

proprietär

http://www.mentor.com/products/fv/modelsim

Xilinx Isim (Webpack)

VHDL, Verilog

proprietär

http://www.xilinx.com/tools/isim.htm

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 8 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Als digitales Abo

Als PDF im Abo bestellen

Ähnliche Artikel

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook