[[dtlab_t4]]

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
dtlab_t4 [2024/03/11 15:16]
beckmanf Labor
dtlab_t4 [2024/04/09 19:43] (current)
beckmanf Schaltplan eingefügt
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 218: Line 220:
  
 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 ===== ===== Aufgaben =====
Line 237: Line 243:
 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.+^    ^D3 ^D2 ^ D1 ^ D0 ^ 
 +|P2  |x |x |   ​| ​  | 
 +|P2' |  |  |x  |x  | 
 +|P1  |x |  |x  |   | 
 +|P1' |  |x |   ​|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 ^ ^ 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 267:
 | 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 ===== ===== Labor =====
  • dtlab_t4.1710166608.txt.gz
  • Last modified: 2024/03/11 15:16
  • by beckmanf