Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| dtlab_t4 [2024/03/08 22:08] – created beckmanf | dtlab_t4 [2025/04/10 16:19] (current) – quartus images in dokuwiki beckmanf | ||
|---|---|---|---|
| Line 4: | Line 4: | ||
| ===== Aufgabenstellung ===== | ===== Aufgabenstellung ===== | ||
| - | Mit dem [[altera_boards|Altera DE 1 Board]], der [[ubuntu_virtual_cae_system|CAD Software]] und dem [[https://gitlab.elektrotechnik.hs-augsburg.de/ | + | Mit dem [[altera_boards|Altera DE 1 Board]], der [[ubuntu_virtual_cae_system|CAD Software]] und dem [[https://caeis.etech.fh-augsburg.de/ |
| In der Vorbereitung installieren Sie die virtuelle Maschine und das Projektverzeichnis und nehmen eine Änderung am Code vor. | In der Vorbereitung installieren Sie die virtuelle Maschine und das Projektverzeichnis und nehmen eine Änderung am Code vor. | ||
| Line 61: | Line 61: | ||
| ==== Download des VHDL Projektverzeichnisses ==== | ==== Download des VHDL Projektverzeichnisses ==== | ||
| - | Die [[https://gitlab.elektrotechnik.hs-augsburg.de/ | + | Die [[https://caeis.etech.fh-augsburg.de/ |
| < | < | ||
| cd / | cd / | ||
| - | git clone https://gitlab.elektrotechnik.hs-augsburg.de/ | + | git clone https://caeis.etech.fh-augsburg.de/ |
| </ | </ | ||
| Line 111: | Line 111: | ||
| ==== VHDL Entity und Architecture ==== | ==== VHDL Entity und Architecture ==== | ||
| + | |||
| + | Nach einer [[dt-code|Einführung zu dem Konzept von Entity und Architecture]] dann die Entity und Architecture für " | ||
| === VHDL Entity === | === VHDL Entity === | ||
| - | Die VHDL Datei [[https://gitlab.elektrotechnik.hs-augsburg.de/ | + | Die VHDL Datei [[https://caeis.etech.fh-augsburg.de/ |
| <code vhdl> | <code vhdl> | ||
| Line 133: | Line 135: | ||
| Die beiden Ausgangsports LEDG und LEDR haben 8 und 10 Leitungen. Man kann die Entity als Schaltungsmodul mit Ein- und Ausgängen auffassen. So eine grafische Darstellung ist in Abbildung 1 dargestellt. | Die beiden Ausgangsports LEDG und LEDR haben 8 und 10 Leitungen. Man kann die Entity als Schaltungsmodul mit Ein- und Ausgängen auffassen. So eine grafische Darstellung ist in Abbildung 1 dargestellt. | ||
| - | < | + | {{ : |
| - | <img src=" | + | |
| - | </ | + | |
| Abb. 1: Entity top_simple mit dem Eingang SW und den Ausgängen LEDG und LEDR | Abb. 1: Entity top_simple mit dem Eingang SW und den Ausgängen LEDG und LEDR | ||
| Line 155: | Line 155: | ||
| In diesem Beispiel wird festgelegt, dass die 10 Ausgänge LEDR den Wert von den 10 Eingängen SW bekommen sollen. Dem Ausgangsport LEDG(1) wird das Ergebnis der UND Verknüpfung von SW(0) und SW(1) zugewiesen. Hier wird also die Funktion eines UND Gatters gebaut! | In diesem Beispiel wird festgelegt, dass die 10 Ausgänge LEDR den Wert von den 10 Eingängen SW bekommen sollen. Dem Ausgangsport LEDG(1) wird das Ergebnis der UND Verknüpfung von SW(0) und SW(1) zugewiesen. Hier wird also die Funktion eines UND Gatters gebaut! | ||
| - | ==== Altera Quartus | + | ==== Altera Quartus |
| - | Die VHDL Beschreibung für das erste Projekt besteht nur aus der VHDL Datei " | + | Der RTL Viewer in der Quartus Software |
| - | + | ||
| - | === Start der Altera Quartus Software / RTL Viewer === | + | |
| - | + | ||
| - | Der RTL Viewer in der Quartus Software | + | |
| < | < | ||
| Line 170: | Line 166: | ||
| Sie sollten dann die Quartus Software sehen | Sie sollten dann die Quartus Software sehen | ||
| - | {{ http:// | + | {{ :public: |
| Öffnen Sie dann den "RTL Viewer" | Öffnen Sie dann den "RTL Viewer" | ||
| - | {{ http:// | + | {{ :public: |
| Sie sehen eine grafische Darstellung des VHDL Codes von " | Sie sehen eine grafische Darstellung des VHDL Codes von " | ||
| - | ==== Quartus Synthese und Download auf das FPGA ==== | + | ==== Altera |
| - | === Anschluss des Boards an den Rechner === | + | === Anschluss des Boards an den Rechner |
| - | Um die Konfiguration auf das FPGA zu laden, müssen Sie das Altera Board über das USB Kabel an den Rechner anschliessen. Wenn Sie das mit der virtuellen Maschine machen, müssen Sie bei VirtualBox das USB Interface vom Hostsystem in die virtuelle Maschine weiterleiten. Das müssen Sie machen, nachdem das Board mit dem USB Kabel an den Rechner angeschlossen wurde. Achten Sie auch darauf, dass das Board eingeschaltet | + | |
| + | Um die Konfiguration auf das FPGA zu laden, müssen Sie das Altera Board mit dem USB Kabel an den Rechner anschliessen. Wenn Sie das mit der virtuellen Maschine machen, müssen Sie bei VirtualBox das USB Interface vom Hostsystem in die virtuelle Maschine weiterleiten. Das müssen Sie machen, nachdem das Board mit dem USB Kabel an den Rechner angeschlossen wurde. Achten Sie auch darauf, dass das Board eingeschaltet | ||
| < | < | ||
| Line 196: | Line 193: | ||
| </ | </ | ||
| - | Die Quartus Synthesesoftware stellt den Zusammenhang zwischen den Portnamen in der Entity " | + | Die Quartus Synthesesoftware stellt den Zusammenhang zwischen den Portnamen in der Entity " |
| ==== VHDL Code ändern ==== | ==== VHDL Code ändern ==== | ||
| Line 222: | Line 219: | ||
| Im RTL Viewer sollte dann ein XOR Gatter zu sehen sein und auf dem Board hat sich die Funktion an LEDG1 geändert. | Im RTL Viewer sollte dann ein XOR Gatter zu sehen sein und auf dem Board hat sich die Funktion an LEDG1 geändert. | ||
| + | ==== Schaltplan zeichnen ==== | ||
| + | Zeichnen Sie auf Papier (oder elektronischem Papier) einen Schaltplan, der das FPGA mit der Schaltung von top_simple darstellt. Bringen Sie den Schaltplan mit in das Labor. | ||
| + | |||
| + | ===== Aufgaben ===== | ||
| + | |||
| + | Ändern Sie den VHDL Code von top_simple.vhd so ab, dass die grünen LEDs folgende Funktion haben | ||
| + | |||
| + | ==== LEDG7 ==== | ||
| + | |||
| + | soll leuchten, wenn mindestens ein Schalter eingeschaltet ist. | ||
| + | |||
| + | ==== LEDG6 ==== | ||
| + | |||
| + | soll leuchten, wenn die Schalter 9..5 die gleiche Schalterstellung haben wie die Schalter 4..0. | ||
| + | |||
| + | ==== LEDG5..0 ECC ==== | ||
| + | |||
| + | Flashspeicher und auch RAM Speicher werden häufig mit zusätzlichen [[https:// | ||
| + | |||
| + | Auf Seite 3 "ECC Code Generation Example" | ||
| + | |||
| + | Verwenden Sie dieses Vorgehen analog für die Berechnung der Prüfbits (P2´, P1´, P2 , P1) für ein 4 Bit Datenwort. Geben Sie die Prüfbits (P2´, P1´, P2 , P1) für die Berechnung der Daten auf den grünen LEDs LEDG[3..0] aus. Das Datenwort D[3..0] = " | ||
| + | |||
| + | ^ ^D3 ^D2 ^ D1 ^ D0 ^ | ||
| + | |P2 |x |x | | ||
| + | |P2' | | |x |x | | ||
| + | |P1 |x | |x | | | ||
| + | |P1' | |x | | ||
| + | |||
| + | Simulieren Sie jetzt einen Lesezugriff auf ein 4 Bit Datenwort mit den zugehörigen 4 Prüfbits mit den Schaltern. Die Datenbits sollen auf SW[3..0] und die gelesenen Prüfbits (P2´, P1´, P2 , P1) auf SW[7..4] sein. Durch Vergleich der aus den Daten SW[3..0] berechneten neuen Prüfbits mit den gelesenen Prüfbits an SW[7..4] kann man verschiedene Fehlersituationen bei der Annahme von einem Bitfehler unterscheiden. | ||
| + | |||
| + | ^ Situation ^ Erkennung ^ | ||
| + | | Kein Fehler | Die neu berechneten Prüfbits sind gleich den gelesenen an SW[7..4] | | ||
| + | | Korrigierbarer Fehler | Es unterscheiden sich genau zwei Prüfbits und es ändern sich nicht gleichzeitig P1 und P1´ oder P2 und P2´. | | ||
| + | | ECC Fehler (Ein Bit) | Genau ein Prüfbit unterscheidet sich | | ||
| + | | Nicht korrigierbar | Alles andere | | ||
| + | |||
| + | Signalisieren Sie das an LEDG[5..4]. | ||
| + | |||
| + | ^ LEDG[5..4] ^ Bedeutung ^ | ||
| + | | 00 | Kein Fehler | | ||
| + | | 01 | Korrigierbarer Fehler | | ||
| + | | 10 | ECC Fehler | | ||
| + | | 11 | Nicht korrigierbarer Fehler | | ||
| + | |||
| + | Geben Sie an LEDR[7..4] das ggf. korrigierte Datenwort aus. | ||
| + | |||
| + | ==== Hinweise VHDL ==== | ||
| + | |||
| + | In top_simple.vhd gibt es nur Ausdrücke, die LEDR oder LEDG direkt aus SW berechnen. Sie können jedoch auch Zwischensignale einführen. | ||
| + | |||
| + | === Signale === | ||
| + | <code vhdl> | ||
| + | architecture rtl_new of top_simple is | ||
| + | signal one_is_on : std_ulogic; | ||
| + | begin | ||
| + | one_is_on <= SW(0) xor SW(1); | ||
| + | LEDR(0) <= one_is_on; | ||
| + | end architecture; | ||
| + | </ | ||
| + | |||
| + | === selected signal assignment === | ||
| + | Mit einem " | ||
| + | |||
| + | <code vhdl> | ||
| + | architecture rtl_new of top_simple is | ||
| + | signal one_is_on : std_ulogic; | ||
| + | begin | ||
| + | with SW(2 downto 0) select | ||
| + | one_is_on <= ' | ||
| + | ' | ||
| + | LEDG(0) <= one_is_on; | ||
| + | end architecture; | ||
| + | </ | ||
| Line 229: | Line 300: | ||
| - | |||
| + | ===== Labor ===== | ||
| + | Stellen Sie Ihre Lösungen im Labor vor. | ||