[[dtlab_t4]]

Differences

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

Link to this comparison view

Next revision
Previous revision
Last revision Both sides next revision
dtlab_t4 [2024/03/08 22:08]
beckmanf created
dtlab_t4 [2024/03/18 17:45]
beckmanf [LEDG5..0 ECC] Tabelle mit P2..P1
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 155: Line 157:
 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 ​Synthesesoftware ​====+==== Altera Quartus ​Software / RTL Viewer ​====
  
-Die VHDL Beschreibung für das erste Projekt besteht nur aus der VHDL Datei "​top_simple.vhd"​. Mit der Synthesesoftware wird die VHDL Beschreibung in eine Konfiguration für das FPGA übersetzt. Zusätzliche kann man mit der Synthesesoftware auch einen grafischen Schaltplan vom VHDL Code darstellen lassen. +Der RTL Viewer in der Quartus Software ​erzeugt einen grafischen ​Schaltplan ​der die Struktur und die Funktion ​des VHDL Codes repräsentiert. Wechseln Sie in den Ordner für die Synthese von "​top_simple"​. Starten sie dort die Quartussoftware für den RTL View.
- +
-=== Start der Altera Quartus Software / RTL Viewer === +
- +
-Der RTL Viewer in der Quartus Software ​stellt eine grafische Beschreibung wie ein Schaltplan des VHDL Codes dar. Wechseln Sie in den Ordner für die Synthese von "​top_simple"​. Starten sie dort die Quartussoftware für den RTL View.+
  
 <​code>​ <​code>​
Line 178: Line 176:
 Sie sehen eine grafische Darstellung des VHDL Codes von "​top_simple"​. U.a. ist das UND Gatter zu sehen. Sie sehen eine grafische Darstellung des VHDL Codes von "​top_simple"​. U.a. ist das UND Gatter zu sehen.
  
-==== Quartus Synthese und Download auf das FPGA ====+==== Altera ​Quartus Synthese und Download auf das FPGA ====
  
-=== Anschluss des Boards an den Rechner === +=== Anschluss des Boards an den Rechner ​/ USB === 
-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 ​wurde. Üblicherweise leuchten einige LEDs. Leiten Sie dann das USB Interface in die virtuelle Maschine über das Menü von VirtualBox:+ 
 +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 ​ist. Üblicherweise leuchten einige LEDs. Leiten Sie dann das USB Interface in die virtuelle Maschine über das Menü von VirtualBox:
  
 <​code>​ <​code>​
Line 222: 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.
  
 +===== 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 229: Line 298:
  
  
-  
  
  
 +===== Labor =====
  
 +Stellen Sie Ihre Lösungen im Labor vor.
  
  
  • dtlab_t4.txt
  • Last modified: 2024/04/09 19:43
  • by beckmanf