[[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/08 22:17]
beckmanf headings
dtlab_t4 [2024/04/09 19:43]
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 219: Line 221:
 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://​de.wikipedia.org/​wiki/​Fehlerkorrekturverfahren|Fehlerkorrekturverfahren]] (englisch: ECC: Error Correcting Code oder Error Checking and Correction) betrieben. Dazu werden Prüfsummen von den Daten berechnet, die dann zusammen mit den Daten abgespeichert werden. In {{ ::​samsung_ecc_algorithm_for_256b.pdf |Samsung, NAND Flash ECC Algorithm, June 2004}} wird ein solches Verfahren erläutert.
 +
 +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 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.
 +
 +^    ^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 ^
 +| 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;​
 +</​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>​
  
  
Line 226: Line 302:
  
  
-  
  
  
 +===== Labor =====
  
 +Stellen Sie Ihre Lösungen im Labor vor.
  
  
  • dtlab_t4.txt
  • Last modified: 2024/04/09 19:43
  • by beckmanf