Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
dtlab_t4 [2024/03/11 15:09] beckmanf Aufgaben |
dtlab_t4 [2024/03/12 00:10] beckmanf [VHDL Entity und Architecture] |
||
---|---|---|---|
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 "top_simple". | ||
=== VHDL Entity === | === VHDL Entity === | ||
Line 237: | Line 239: | ||
Auf Seite 3 "ECC Code Generation Example" wird das Verfahren für die Berechnung von sechs Prüfbits (P4´, P2´, P1´, P4, P2 , P1) für ein Datenwort mit acht Bit beschrieben. | Auf Seite 3 "ECC Code Generation Example" wird das Verfahren für die Berechnung von sechs Prüfbits (P4´, P2´, P1´, P4, P2 , P1) für ein Datenwort mit acht Bit beschrieben. | ||
- | Verwenden Sie analog dieses Vorgehen 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 an SW[7..4] auf den grünen LEDs LEDG[3..0] aus. Das Datenwort D[3..0] = "1011" sollte dann (P2´, P1´, P2 , P1) = "0111" ergeben. Mit P2´=D1 xor D0, P1`= D2 xor D0, P2=D3 xor D2 und P1 = D3 xor D1. | + | 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] = "1011" sollte dann (P2´, P1´, P2 , P1) = "0110" ergeben. Mit P2´=D1 xor D0, P1´= D2 xor D0, P2=D3 xor D2 und P1 = D3 xor D1. |
- | 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[7..4] und die gelesenen Prüfbits (P2´, P1´, P2 , P1) auf SW[3..0] sein. Durch Vergleich der aus den Daten SW[7..4] berechneten neuen Prüfbits mit den gelesenen Prüfbits an SW[3..0] kann man verschiedene Fehlersituationen bei der Annahme von einem Bitfehler unterscheiden. | + | 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 ^ | ^ Situation ^ Erkennung ^ | ||
- | | Kein Fehler | Die neu berechneten Prüfbits sind gleich den gelesenen an SW[3..0] | | + | | Kein Fehler | Die neu berechneten Prüfbits sind gleich den gelesenen an SW[7..4] | |
- | | Korrigierbarer Fehler | Es unterscheiden sich genau zwei Prüfbits | | + | | 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 | | | ECC Fehler (Ein Bit) | Genau ein Prüfbit unterscheidet sich | | ||
- | | Nicht korrigierbar | Mehr als ein Prüfbit unterscheidet sich | | + | | Nicht korrigierbar | Alles andere | |
Signalisieren Sie das an LEDG[5..4]. | Signalisieren Sie das an LEDG[5..4]. | ||
Line 255: | Line 257: | ||
| 11 | Nicht korrigierbarer Fehler | | | 11 | Nicht korrigierbarer Fehler | | ||
- | Geben Sie an LEDR[7..5] das ggf. korrigierte Datenwort aus. | + | 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; | ||
+ | </code> | ||
+ | |||
+ | === selected signal assignment === | ||
+ | Mit einem "selected signal assignment" kann man einem Signal oder einem Ausgangsport einen Wert in Abhängigkeit von einem anderen Signal oder Eingangsport zuweisen. | ||
+ | |||
+ | <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 <= '1' when "001"|"010"|"100", | ||
+ | '0' when others; | ||
+ | LEDG(0) <= one_is_on; | ||
+ | end architecture; | ||
+ | </code> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Labor ===== | ||
+ | |||
+ | Stellen Sie Ihre Lösungen im Labor vor. | ||