Digitaltechnik Praktikum Versuch 2 - Kombinatorische Schaltung / Hierarchische Schaltung
Das Ziel dieses Versuchs ist die Beschreibung von kombinatorischen Schaltungen mit Hilfe von
- Booleschen Ausdr眉cken
- Conditional Signal Assignments
- with select Beschreibung
sowie die hierarchische Beschreibung von Schaltungen in VHDL. Als praktisches Beispiel werden Sie eine Schaltung entwerfen, die jeweils vier SW Schalter bin盲r interpretiert als Ziffer an einer Siebensegmentanzeige anzeigt. Die Eing盲nge der Schaltung werden mit den Schaltern verbunden und die Ausg盲nge werden mit der Siebensegmentanzeige und den roten LED's verbunden. Wenn beispielsweise die Schalter SW3..SW0 auf 鈥�0101鈥� stehen, dann soll die Ziffer 鈥�5鈥� an der Siebensegmentanzeige angezeigt werden.
Projekt aktualisieren
Um ihre lokalen Projektdateien mit eventuellen neuen Dateien auf dem git Server zu aktualisieren k枚nnen sie im Verzeichnis 鈥渄igitaltechnikpraktikum鈥�
git pull
eingeben. Dann werden neue oder ge盲nderte Daten vom git server geladen. Wenn auf dem Server 脛nderungen an Dateien vorgenommen wurden f眉r die Sie auch 脛nderungen vorgenommen haben, dann wird die pull Aktion abgebrochen. In diesem Fall m眉ssen die Dateien zusammengef眉hrt werden, allerdings k枚nnen Sie auch ihre 脛nderungen verwerfen. Sie k枚nnen ihre 脛nderungen verwerfen und den letzten Stand wiederherstellen mit
cd cd digitaltechnikpraktikum/src git checkout . cd ..
Danach sollte die pull Aktion funktionieren.
Beispiel ledcomb_rtl.vhd
Im Projektverzeichnis finden Sie als Beispiel f眉r die Darstellung von kombinatorischen Schaltungen die Datei . Dazu passend gibt es das Syntheseverzeichnis 鈥減nr/ledcomb鈥�.
Die Schaltung ledcomb hat als Eing盲nge die Schalter 鈥淪W鈥�. Die Ausg盲nge sind die roten LEDs 鈥淟EDR鈥� und die gr眉nen LEDs 鈥淟EDG鈥�. Die roten LEDs zeigen den Zustand der Schalter an. An den gr眉nen LEDs werden verschiedene boolesche Funktionen dargestellt. In der Schaltung ledcomb gibt es weiterhin drei Signale s0, s1 und s2. Die Signale k枚nnen wie Netze in einem Schaltplan verstanden werden.
- Skizzieren Sie die Schaltungen f眉r die Ausg盲nge LEDG(0), LEDG(1), LEDG(2), LEDG(3)
- F眉r welche Schalterkombinationen leuchtet der Ausgang LEDG(0)?
- F眉r welche Schalterkombinationen leuchtet der Ausgang LEDG(1)?
- F眉r welche Schalterkombinationen leuchtet der Ausgang LEDG(2)?
- F眉r welche Schalterkombinationen leuchtet der Ausgang LEDG(3)?
- F眉r welche Schalterkombinationen leuchtet der Ausgang LEDG(4)?
- Skizzieren Sie die Schaltung f眉r den Ausgang LEDG(4)
- Erl盲utern Sie wie die Ausg盲nge LEDG(7..5) von den Eing盲ngen SW(9..6) abh盲ngen.
Wechseln Sie jetzt in das Verzeichnis 鈥減nr/ledcomb鈥�, starten Sie die Schaltungssynthese und laden Sie das Design auf das FPGA Board.
- Zeigen Sie, dass die gr眉nen LEDs LEDG(7..5) die Anzahl der eingeschalteten Schalter SW(9..6) als Bin盲rzahl anzeigt.
- Wie und Warum unterscheiden sich die Dateien und ?
Analyse des Syntheseergebnisses
Die Quartussoftware erlaubt eine Analyse des Syntheseergebnisses. In Figure 2-1 im ist die Chipstruktur des FPGA dargestellt. Ein Gro脽teil des FPGA besteht aus Logikelementen (LE), die konfigurierbar miteinander verbunden werden k枚nnen. Ein Logikelement ist in Figure 2-3 im Datenblatt dargestellt. Mit der 鈥淔our-Input LUT鈥� (eine Lookuptabelle mit 4 Eing盲ngen) kann jede boolesche Funktion mit 4 Eing盲ngen und einem Ausgang dargestellt werden. Im Logikelement befindet sich zus盲tzlich noch ein Flipflop, das in diesem Versuch nicht benutzt wird. Insgesamt befinden sich auf dem FPGA auf dem Board 18752 Logikelemente. Bei der Synthese m眉ssen die Logikelemente konfiguriert werden, d.h. die boolesche Funktion der 鈥淔our-Input LUT鈥� wird festgelegt, und die Logikelemente m眉ssen miteinander verbunden werden.
Wechseln Sie in das Syntheseverzeichnis, starten Sie die Synthese und starten Sie die Quartus GUI.
cd cd digitaltechnikpraktikum/pnr/ledcomb make compile make quartus
Starten Sie mit 鈥淭ools 鈫� Netlist Viewers 鈫� RTL Viewer鈥� die graphische Darstellung Ihres VHDL Codes.
Sie k枚nnen f眉r die Ausg盲nge LEDG(0), LEDG(1), LEDG(2) und LEDG(3) die graphische Darstellung der booleschen Gleichung sehen. Sie k枚nnen die zusammengefassten Ports wie SW(9..0) auch als einzelne Ports darstellen. W盲hlen Sie dazu den Port aus, klicken Sie dann auf die rechte Maustaste und w盲hlen Sie 鈥淯ngroup Selected Nodes鈥�. Der Code aus den 鈥渨ith 鈥� select鈥� Anweisungen wird als Multiplexer mit konstanten Dateneing盲ngen dargestellt.
Starten Sie mit 鈥淭ools 鈫� Chip Planner鈥� die Gesamtansicht des FPGA Chips.
Die hellblauen Felder sind die Felder mit leeren Logikelementen. Zoomen Sie in den Bereich mit den dunkelblauen Feldern. Die belegten Logikelemente sind blau markiert.
Mit einem Doppelklick auf ein Logikelement k枚nnen Sie den Inhalt und die Belegung des Logikelementes darstellen.
Starten Sie mit 鈥淭ools 鈫� Netlist Viewers 鈫� Technology Map Viewer (Post Fitting)鈥� eine Schaltplananzeige mit der Verschaltung der einzelnen Logikelemente nach der Synthese.
Mit einem Doppelklick auf die Logikelemente wird die Konfiguration der Lookuptabelle als Schaltplan mit Logikgattern dargestellt.
- Weisen Sie nach, dass die Eing盲nge des Logikelementes, dessen Ausgang an LEDG(3) angeschlossen ist, die Eing盲nge SW(0) und SW(1) sind.
- Warum hat dieses Logikelement vor LEDG(3) eine ODER Funktion mit den Eing盲ngen SW(0) und SW(1)?
- Warum wird die Funktion f眉r LEDG(0) nicht mit einem, sondern mit zwei Logikelementen berechnet?
- Warum ist das Logikelement an LEDG(7) als UND Gatter konfiguriert?
Beispiel hierarchisches Design
In der Datei finden Sie eine Schaltungsbeschreibung f眉r eine Schaltung, die die Anzahl der Einsen an den vier Eing盲ngen z盲hlt.
Diese Einserz盲hlschaltung soll jetzt genutzt werden um die Anzahl der Einsen an den SW(3..0) und SW(9..6) zu z盲hlen. Das Ergebnis f眉r SW(3..0) soll an LEDG(2..0) und f眉r SW(9..6) an LEDG(7..5) dargestellt werden.
In der Datei finden Sie die Schaltungsbeschreibung, die die Schaltung cntones zweimal instantiiert und mit den entsprechenden Eing盲ngen und Ausg盲ngen verbindet. Dazu gibt es das Syntheseverzeichnis 鈥減nr/de1_ledcntsw鈥�.
- An welcher Stelle ist festgelegt, dass jetzt die zwei VHDL Dateien de1_ledcntsw_rtl.vhd und cntones_rtl.vhd notwendig sind?
- Synthetisieren Sie die Schaltung.
- Stellen Sie mit dem RTL Viewer die Struktur der Schaltung dar.
- 脺berlegen Sie wieviele Logikelemente sie f眉r die Schaltung verbrauchen und begr眉nden Sie dies.
- Stellen Sie mit dem Technology Map Viewer das Ergebnis der Synthese dar und vergleichen Sie die Anzahl der ben枚tigten Logikelemente mit Ihren 脺berlegungen.
Aufgabe Siebensegmentanzeige
Sie sollen eine Schaltung mit einer hierarchischen Schaltungsbeschreibung entwerfen, mit der die Schalter SW(3..0) als Bin盲rdarstellung interpretiert als Hexadezimalzahl an HEX0 angezeigt wird. Weiterhin sollen die Schalter SW(9..6) als Hexdezimalzahl an HEX1 angezeigt werden.
- Erstellen Sie hierzu zun盲chst eine neue Datei bin2seg_rtl.vhd. Diese Schaltung bin2seg soll 4 Eing盲nge bin_i(3..0) und sieben Ausg盲nge seg_o(6..0) haben. Diese Schaltung berechnet die 脺bersetzung von Bin盲rdarstellung in die Siebensegmentansteuerung.
In der Datei de1_bin2seg_rtl.vhd soll das Design de1_bin2seg auf Basis der bin2seg Schaltung enthalten sein. Dort werden die Schalter und HEX0 und HEX1 Anschl眉sse vom FPGA Board mit der bin2seg Schaltung verbunden. Sie m眉ssen dazu die Schaltung bin2seg mehrfach instantiieren - analog wie bei der cntsw Schaltung.
- Erstellen Sie die Datei de1_bin2seg_rtl.vhd
- Erstellen Sie ein Syntheseverzeichnis 鈥減nr/de1_bin2seg鈥� mit den zugeh枚rigen Synthesedateien
- Synthetisieren Sie die Schaltung und laden Sie das Design auf das Board.
- 脺berpr眉fen Sie die gew眉nschte Funktion auf dem Board
Sie m眉ssen hierf眉r einige VHDL Dateien und das Syntheseprojekt neu anlegen. In How to setup a new Module wird das Anlegen eines neuen Moduls Schritt f眉r Schritt beschrieben.
Abgabe Versuchsbericht
Geben Sie einen Untersuchungsbericht zur 鈥淪iebensegmentanzeige鈥� mit den Ergebnissen Ihrer Analysen als Bericht im Moodlekurs Digitaltechnik ab.
Orientieren Sie sich inhaltlich an folgenden Punkten:
- Skizzieren Sie die Designhierarchie
- Kopieren Sie den von Ihnen geschriebenen VHDL Code in den Bericht und erl盲utern Sie die Funktion
- Zeigen Sie die Schaltung im RTL Viewer
- Dokumentieren Sie die Anzahl der ben枚tigten Logikelemente f眉r die Schaltung
- Dokumentieren Sie die Funktion der Schaltung auf dem Board
Bitte belegen Sie alle Aussagen im Bericht mit Nachweisen. Belegen Sie beispielsweise die Anzahl der ben枚tigten Logikelemente f眉r eine Schaltung mit einem geeigneten Screenshot von der Synthesesoftware.
Form
Alle Abbildungen im Bericht m眉ssen fortlaufend numeriert und untertitelt sein. Tabellen m眉ssen auch numeriert und mit einer 脺berschrift versehen sein. F眉r jede Abbildung und jede Tabelle muss im Text eine Erl盲uterung zu finden sein was in der Abbildung dargestellt ist. Ein Beispiel f眉r die Form mit Titel, Abstract, Abbildung, Tabelle und Literaturverzeichnis ist die .