Sie sind auf Seite 1von 18

Hochschule Augsburg

Digitaltechnik Praktikum SS 2021

Versuch 2 – Kombinatorische Schaltung /


Hierarchische Schaltung

Gruppe T1-A

22. März 2021

Zusammenfassung

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.
Aufgaben Teil 1:

Im Projektverzeichnis finden Sie als Beispiel für die Darstellung von kombinatorischen
Schaltungen die Datei ledcomb_rtl.vhd. Dazu passend gibt es das Syntheseverzeichnis
“pnr/ledcomb”.
Die Schaltung ledcomb hat als Eingänge die Schalter “SW”. Die Ausgänge sind die roten LEDs
“LEDR” und die grünen LEDs “LEDG”. 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.
1. Skizzieren Sie die Schaltungen für die Ausgänge LEDG(0), LEDG(1), LEDG(2), LEDG(3)
2. Für welche Schalterkombinationen leuchtet der Ausgang LEDG(0)?
3. Für welche Schalterkombinationen leuchtet der Ausgang LEDG(1)?
4. Für welche Schalterkombinationen leuchtet der Ausgang LEDG(2)?
5. Für welche Schalterkombinationen leuchtet der Ausgang LEDG(3)?
6. Für welche Schalterkombinationen leuchtet der Ausgang LEDG(4)?
7. Skizzieren Sie die Schaltung für den Ausgang LEDG(4)
8. Erläutern Sie wie die Ausgänge LEDG(7..5) von den Eingängen SW(9..6) abhängen.
Aufgabe 1 - Skizzieren Sie die Schaltungen für die Ausgänge LEDG(0 bis 3)
LEDG(0)
Auf dem Bild 1. ist eine Schaltung zu sehen mit einem AND-Gate mit 5 Eingängen (SW0
bis SW4). Zwei von den Eingengen sind Negiert, dass kann man erkennen an dem kleinen Kreisen
am AND-Gate.

Bild 1: Skizze von der Schaltung LEDG(0)

LEDG(1)
Die LEDG1 soll nur leuchten wenn ein Eingang von den Zwei (SW0 und SW1) aktiv ist. Im
Bild 2. kann man sehen dass es mit einem XOR-Gate erreicht worden ist.

Bild 2: Skizze von der Schaltung LEDG(1)


LEDG(2)
Für die LEDG2 benötigen wir auch die zwei Eingänge SW0 und SW1 (Bild 3), wie auch für
die LEDG1. Die Diode leuchtet nur wenn Beide Schalter angeschaltet sind.

Bild 3: Skizze von der Schaltung LEDG(2)

LEDG(3)
Das nächste Beispiel sieht ein bisschen komplizierter aus. Es besteht aus dem zwei
vorherigen Schaltungen (LEDG1 und LEDG2) die miteinander mit einem OR-Gate verknüpft sind.
(Bild 4.)

Bild 4: Skizze von der Schaltung LEDG(3)


Aufgabe 2 - Für welche Schalterkombinationen leuchtet der Ausgang LEDG(0)?

Die LEDG(0) leuchtet nur für eine Schalterkombination, und zwar wenn SW1 bis SW3
eingeschaltet sind und SW0 und SW4 ausgeschaltet sind. Alle Schalterkombinationen sind in der
Tabelle 1. dargestellt.

Tabelle 1: Schalterkombinationen der LEDG(0)


SW0 SW1 SW2 SW3 SW4 LEDG0
0 0 0 0 0 0
0 0 0 0 1 0
0 0 0 1 0 0
0 0 0 1 1 0
0 0 1 0 0 0
0 0 1 0 1 0
0 0 1 1 0 0
0 0 1 1 1 0
0 1 0 0 0 0
0 1 0 0 1 0
0 1 0 1 0 0
0 1 0 1 1 0
0 1 1 0 0 0
0 1 1 0 1 0
0 1 1 1 0 1
0 1 1 1 1 0
1 0 0 0 0 0
1 0 0 0 1 0
1 0 0 1 0 0
1 0 0 1 1 0
1 0 1 0 0 0
1 0 1 0 1 0
1 0 1 1 0 0
1 0 1 1 1 0
1 1 0 0 0 0
1 1 0 0 1 0
1 1 0 1 0 0
1 1 0 1 1 0
1 1 1 0 0 0
1 1 1 0 1 0
1 1 1 1 0 0
1 1 1 1 1 0
Aufgabe 3 - Für welche Schalterkombinationen leuchtet der Ausgang LEDG(1)?

Der nächster Schaltkreis benutzt zwei Schalter, was der maximalen wert von vier
Kombinationen entspricht. Die Schaltung entspricht einem Exclusive-OR Gate, d.h. die LEDG1
leuchtet nur wen die zwei Eingaben (SW0, SW1) verschieden sind. Das Verhaltensmuster ist
sichtbar in der Tabelle 2.
Tabelle 2: Schalterkombinationen von LEDG(1)
SW0 SW1 LEDG1
0 0 0
0 1 1
1 0 1
1 1 0

Aufgabe 4 - Für welche Schalterkombinationen leuchtet der Ausgang LEDG(2)?

Genau wie das vorheriger Beispiel, beeinflussen zwei Schalter (SW0, SW1) die Ausgabe
der LEDG(2). Die Diode leuchtet nur wen beide Eingaben wahr sind. Der Schaltkreis ist mit der
Wahrheitstabelle (Tabelle 3.) dargestellt. Die Schaltung kann man mit einem AND-Gate bauen.

Tabelle 3: Schalterkombinationen von LEDG(2)


SW0 SW1 LEDG2
0 0 0
0 1 0
1 0 0
1 1 1
Aufgabe 5 - Für welche Schalterkombinationen leuchtet der Ausgang LEDG(3)?

Auf dem ersten Blick sieht der Schaltkreis komplizierter aus als er in der Wahrheit ist. Man
könnte den Schaltkreis mit Hilfe der vorherigen Beispiele (LEDG1, LEDG2) nachbauen, in dem
man die zwei Schaltkreise mit einem OR-Gate verbinden wurde.
Das Ergebnis ist ein OR-Gate (mit zwei Eingengen), auf welches wir die Signale S0 und S1
anbringen. Aus der Wahrheitstabelle (Tabelle 4) kann man das Verhalten der Diode mit einem
einfacharen OR-Gate nachmachen. (SW0, SW1) .

Tabelle 4: Schalterkombinationen von LEDG(3)


SW0 SW1 S0 S1 LEDG3
0 0 0 0 0
0 1 1 0 1
1 0 1 0 1
1 1 0 1 1
Aufgabe 6 - Für welche Schalterkombinationen leuchtet der Ausgang LEDG(4)?

In diesem Beispiel leuchtet die LEDG4 nur in vier Fällen:


SW9 bis SW5: 00000, 01010, 10101, 11111. Für alle andere Fälle hat die LEDG4 den Wert 0 (siehe
Tabelle 5)
Tabelle 5: Schalterkombinationen von LEDG(4)
SW9 SW8 SW7 SW6 SW5 LEDG4
0 0 0 0 0 1
0 0 0 0 1 0
0 0 0 1 0 0
0 0 0 1 1 0
0 0 1 0 0 0
0 0 1 0 1 0
0 0 1 1 0 0
0 0 1 1 1 0
0 1 0 0 0 0
0 1 0 0 1 0
0 1 0 1 0 1
0 1 0 1 1 0
0 1 1 0 0 0
0 1 1 0 1 0
0 1 1 1 0 0
0 1 1 1 1 0
1 0 0 0 0 0
1 0 0 0 1 0
1 0 0 1 0 0
1 0 0 1 1 0
1 0 1 0 0 0
1 0 1 0 1 1
1 0 1 1 0 0
1 0 1 1 1 0
1 1 0 0 0 0
1 1 0 0 1 0
1 1 0 1 0 0
1 1 0 1 1 0
1 1 1 0 0 0
1 1 1 0 1 0
1 1 1 1 0 0
1 1 1 1 1 1
Aufgabe 7 - Skizzieren Sie die Schaltung für den Ausgang LEDG(4)
Aufgabe 8 - Erläutern Sie wie die Ausgänge LEDG(7..5) von den Eingängen SW(9..6) abhängen.
Die Ausgänge LEDG(7 bis 5) stellen eine 3-Bit Zahl dar. Die LEDG’s geben die Nummer
von den umgedrehten Schalter her. Weil wir maximal vier Eingänge haben zeigen wir nur die
Zahlen von 0 bis 4 auf den LEDG(7 bis 5). Die Darstellung aller Kombinationen ist mit der Tabelle
6. gegeben.

Tabelle 6: Alle Kombinationen von den SW(6 bis 9)


SW9 SW8 SW7 SW6 LEDG7 LEDG6 LEDG5
0 0 0 0 0 0 0
0 0 0 1 0 0 1
0 0 1 0 0 0 1
0 0 1 1 0 1 0
0 1 0 0 0 0 1
0 1 0 1 0 1 0
0 1 1 0 0 1 0
0 1 1 1 0 1 1
1 0 0 0 0 0 1
1 0 0 1 0 1 0
1 0 1 0 0 1 0
1 0 1 1 0 1 1
1 1 0 0 0 1 0
1 1 0 1 0 1 1
1 1 1 0 0 1 1
1 1 1 1 1 0 0
Aufgaben Teil 2

Wechseln Sie jetzt in das Verzeichnis “pnr/ledcomb”, starten Sie die Schaltungssynthese und laden
Sie das Design auf das FPGA Board.
1. Zeigen Sie, dass die grünen LEDs LEDG(7..5) die Anzahl der eingeschalteten Schalter
SW(9..6) als Binärzahl anzeigt.?
2. Wie und Warum unterscheiden sich die Dateien ledcomb_pins.tcl und ledsw_pins.tcl?

Aufgabe 1 - Zeigen Sie, dass die grünen LEDs LEDG(7..5) die Anzahl der eingeschalteten Schalter
SW(9..6) als Binärzahl anzeigt.
Aufgabe 2 - Wie und Warum unterscheiden sich die Dateien ledcomb_pins.tcl und ledsw_pins.tcl?

Die zwei Dateien unterscheiden sich im Inhalt. Die Datei ledcomb_pins.tcl hat noch
zusätzlich die Pin Konfiguration für die grünen Dioden (Code 1.). Weil das zweite Projekt die
grünen Dioden nicht verwendet, wurden die Pin Einstellungen ausgelassen (Code 2.).

# Pin Configuration # Pin Configuration


# Schalter 0 bis 9 # Schalter 0 bis 9
set_location_assignment PIN_L22 -to SW[0] set_location_assignment PIN_L22 -to SW[0]
set_location_assignment PIN_L21 -to SW[1] set_location_assignment PIN_L21 -to SW[1]
set_location_assignment PIN_M22 -to SW[2] set_location_assignment PIN_M22 -to SW[2]
set_location_assignment PIN_V12 -to SW[3] set_location_assignment PIN_V12 -to SW[3]
set_location_assignment PIN_W12 -to SW[4] set_location_assignment PIN_W12 -to SW[4]
set_location_assignment PIN_U12 -to SW[5] set_location_assignment PIN_U12 -to SW[5]
set_location_assignment PIN_U11 -to SW[6] set_location_assignment PIN_U11 -to SW[6]
set_location_assignment PIN_M2 -to SW[7] set_location_assignment PIN_M2 -to SW[7]
set_location_assignment PIN_M1 -to SW[8] set_location_assignment PIN_M1 -to SW[8]
set_location_assignment PIN_L2 -to SW[9] set_location_assignment PIN_L2 -to SW[9]
# Rote Diode 0 bis 9 # Rote Diode 0 bis 9
set_location_assignment PIN_R20 -to LEDR[0] set_location_assignment PIN_R20 -to LEDR[0]
set_location_assignment PIN_R19 -to LEDR[1] set_location_assignment PIN_R19 -to LEDR[1]
set_location_assignment PIN_U19 -to LEDR[2] set_location_assignment PIN_U19 -to LEDR[2]
set_location_assignment PIN_Y19 -to LEDR[3] set_location_assignment PIN_Y19 -to LEDR[3]
set_location_assignment PIN_T18 -to LEDR[4] set_location_assignment PIN_T18 -to LEDR[4]
set_location_assignment PIN_V19 -to LEDR[5] set_location_assignment PIN_V19 -to LEDR[5]
set_location_assignment PIN_Y18 -to LEDR[6] set_location_assignment PIN_Y18 -to LEDR[6]
set_location_assignment PIN_U18 -to LEDR[7] set_location_assignment PIN_U18 -to LEDR[7]
set_location_assignment PIN_R18 -to LEDR[8] set_location_assignment PIN_R18 -to LEDR[8]
set_location_assignment PIN_R17 -to LEDR[9] set_location_assignment PIN_R17 -to LEDR[9]
# Gruene Diode 0 bis 7
set_location_assignment PIN_U22 -to LEDG[0] Code 2: ledsw_pins.tcl
set_location_assignment PIN_U21 -to LEDG[1]
set_location_assignment PIN_V22 -to LEDG[2]
set_location_assignment PIN_V21 -to LEDG[3]
set_location_assignment PIN_W22 -to LEDG[4]
set_location_assignment PIN_W21 -to LEDG[5]
set_location_assignment PIN_Y22 -to LEDG[6]
set_location_assignment PIN_Y21 -to LEDG[7]

Code 1: ledcomb_pins.tcl
Aufgaben Teil 3 - Analyse des Syntheseergebnisses

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.
1. Warum hat dieses Logikelement vor LEDG(3) eine ODER Funktion mit den Eingängen
SW(0) und SW(1)?
2. Warum wird die Funktion für LEDG(0) nicht mit einem, sondern mit zwei Logikelementen
berechnet?
3. Warum ist das Logikelement an LEDG(7) als UND Gatter konfiguriert?

Aufgabe 1 - Warum hat dieses Logikelement vor LEDG(3) eine ODER Funktion mit den
Eingängen SW(0) und SW(1)?
Aus der Tabelle 4. kann man die Disjunktive Normalform der Funktion schreiben:

f = A ¬B+¬ AB+ AB / x+ x =x
f = A ¬B+¬ AB+ AB + AB / xy + z=x ( y + z )
f = A (¬B+ B)+ B(¬ A+ A) / ¬x + x=1
f =1 A +1 B / 1 x=x
f = A+ B

Aufgabe 2 - Warum wird die Funktion für LEDG(0) nicht mit einem, sondern mit zwei
Logikelementen berechnet?
Weil die logischen Elemente (Logic_cell_comb) aus maximal 4 Eingängen bestehen, aber
für die LEDG(0) brauchen wir 5 Eingänge . Deswegen besteht das Logiknetz aus zwei
Logikelementen.
Aufgabe 3 - Warum ist das Logikelement an LEDG(7) als UND Gatter konfiguriert?
Weil die Funktion von der LEDG(7) nur dann Wahr ist wenn alle Eingänge aktiv sind. Fur
das Logiknetz konnen wir ein Logikelement wervenden dass vier Eingänge hat.
Aufgaben Teil 4 - Hierarchisches Design

An welcher Stelle ist festgelegt, dass jetzt die zwei VHDL Dateien de1_ledcntsw_rtl.vhd und
cntones_rtl.vhd notwendig sind?
1. Synthetisieren Sie die Schaltung.
2. Stellen Sie mit dem RTL Viewer die Struktur der Schaltung dar.
3. Überlegen Sie wieviele Logikelemente sie für die Schaltung verbrauchen und begründen Sie
dies.
4. Stellen Sie mit dem Technology Map Viewer das Ergebnis der Synthese dar und vergleichen
Sie die Anzahl der benötigten Logikelemente mit Ihren Überlegungen.
Aufgaben Teil 5 – 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 Hexadezimalzahl 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 “pnr/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
Aufgabe
Um das Projekt zu Bauen brauchen wir eine Modul Datei die die die Übersetzung von
Binärdarstellung in die Siebensegmentansteuerung berechnet (bin2seg_rtl.vhd Bild 6). Die Datei
besteht aus drei Teile. Am Anfang is die einbezihung von Bibliotheken, danach kommt die
Definition des Entithats, und zum Schluss Arhitektur des Programmes. In der Arhitektur ist das
Verhalten der einigen Logikelemente deffiniert.

Bild 6: Erstellung von bin2seg_rtl.vhd

Um die Schaltung hierarhisch zu gestalten, erstellen wir eine neue Datei


(de1_bin2seg_rtl.vhd Bild 7). In dieser Datei instantiieren wir zwei Instanzen mit Hilfe der
kodierten Schaltung aus der bin2_seg_rtl.vhd Datei.

Bild 7: Erstellung von de1_bin2seg_rtl.vhd


Anschließlich um das Projekt zu gestalten muss man die Dateien verknüpfen. Die Verknupfung
fuhrt man mit „makefile“ Skript durch (Bild 8). In der Zeile 5 ist der Name des Projekts angegeben,
und unter der Zeile schreibt man die Adressen von den restlichen Dateien die gebraucht sind. Die
zwie „*.vhd“ Dateien beschreiben das Verhalten der Schaltung, und befinden sich im „../../src“
Ordner. Die makefile Skript wird zusammen mit der de1_bin2seg_pins.tcl Datei (Bild 9.) in den
Projekt Ordner „../../pnr/de1_bin2seg“. Die Datei „de1_bin2seg_pins“ enthaelt die notwendigen
Einstellungen fur die Pins die wir in unserem Projekt nutzen werden.

Bild 8: Erstellung von makefile

Bild 9: Erstellung von de1_bin2seg_pins.tcl


Noch zu machen
Teil 1 Aufgabe 7
Teil 2 Aufgabe 1
Teil 4 Aufgabe 1 bis 4