Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| dtpr_versuch_5 [2014/04/14 18:55] – Abstimmungschaltung beckmanf | dtpr_versuch_5 [2021/03/20 08:21] (current) – [Additionsschaltung mit VHDL] removed sim beckmanf | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ===== Digitaltechnikpraktikum Versuch | + | ===== Digitaltechnikpraktikum Versuch |
| In diesem Versuch | In diesem Versuch | ||
| * analysieren Sie die Schaltung zur Addition von Binärzahlen | * analysieren Sie die Schaltung zur Addition von Binärzahlen | ||
| - | * entwerfen eine Schaltung mit dem das Additionsergebnis auf dem FPGA angezeigt wird | + | * entwerfen |
| - | * entwerfen die Abstimmungsschaltung für 10 Schalter | + | * entwerfen |
| - | * messen die Verzögerungszeit der Abstimmungsschaltung | + | * messen |
| ==== Projektaktualisierung ==== | ==== Projektaktualisierung ==== | ||
| Line 14: | Line 14: | ||
| ==== Additionsschaltung mit VHDL ==== | ==== Additionsschaltung mit VHDL ==== | ||
| - | In der Datei [[https://git.etech.fh-augsburg.de/ | + | In der Datei [[https://gitlab.elektrotechnik.hs-augsburg.de/ |
| - | - Wechseln | + | Sie verwenden diese Schaltung um auf dem FPGA zwei Zahlen zu addieren. Die beiden Summanden sollen an den Schaltern SW(3..0) |
| - | Sie verwenden diese Schaltung um auf dem FPGA zwei Zahlen zu addieren. Die beiden Summanden sollen an den Schaltern SW(3..0) und SW(9..6) als Binärzahl vorliegen. Der Zustand der Schalter soll an den roten LEDs angezeigt werden. Gleichzeitig soll ein Summand an HEX0 und der andere Summand an HEX1 als Ziffer dargestellt werden. Das Ergebnis der Addition soll an den grünen LEDs LEDG(3..0) binär und an HEX2 als Ziffer dargestellt werden. Diese Schaltung soll den Namen de1_add4 haben. In der Datei [[https:// | + | |
| - | + | - Ergänzen Sie den VHDL Code in der Datei [[https://gitlab.elektrotechnik.hs-augsburg.de/ | |
| - | - Wechseln Sie in das Simulationsverzeichnis [[https:// | + | |
| - | - Ergänzen Sie den VHDL Code in der Datei [[https://git.etech.fh-augsburg.de/ | + | |
| - | - Wenn im Simulator alles gut aussieht, wechseln Sie in das Syntheseverzeichnis [[https:// | + | |
| - Laden Sie das Design auf das FPGA und überprüfen Sie dort die Funktion | - Laden Sie das Design auf das FPGA und überprüfen Sie dort die Funktion | ||
| + | |||
| ==== Analyse der Additionsschaltung ==== | ==== Analyse der Additionsschaltung ==== | ||
| - | Jetzt geht es um die Analyse wie die Additonsschaltung intern auf dem FPGA mit den Logikelementen umgesetzt wird. Im [[https://www2.hs-augsburg.de/ | + | Jetzt geht es um die Analyse wie die Additonsschaltung intern auf dem FPGA mit den Logikelementen umgesetzt wird. Im [[https://www.hs-augsburg.de/ |
| - Starten Sie quartus mit der GUI im Syntheseverzeichnis " | - Starten Sie quartus mit der GUI im Syntheseverzeichnis " | ||
| Line 80: | Line 78: | ||
| * " | * " | ||
| - | * " | + | * " |
| - | * " | + | * " |
| * Allgemeine boolesche Ausdrücke und Wahrheitstabellen | * Allgemeine boolesche Ausdrücke und Wahrheitstabellen | ||
| Line 88: | Line 86: | ||
| * LEDG(7) soll leuchten, wenn mehr als fünf Schalter SW(9..0) eingeschaltet sind | * LEDG(7) soll leuchten, wenn mehr als fünf Schalter SW(9..0) eingeschaltet sind | ||
| * Der Zustand der Schalter SW(9..0) soll an LEDR angezeigt werden. | * Der Zustand der Schalter SW(9..0) soll an LEDR angezeigt werden. | ||
| - | * Verwenden Sie die HEX Anzeigen für die Darstellung von internen Werten nach Belieben. | + | * Verwenden Sie die HEX Anzeigen für die Darstellung von internen Werten nach Belieben. |
| + | |||
| + | Wenn Sie die Schaltung auf Papier skizziert haben, dann können Sie sich an die Umsetzung in VHDL machen. Für die Abstimmungsschaltung gibt es eine Testbench [[https:// | ||
| + | |||
| + | Für die Umsetzung in VHDL ist es eventuell notwendig, dass Sie mit Signalvektoren unterschiedlicher Länge arbeiten müssen. Dafür gibt es hier noch einige Tips. Sie haben bereits auf Teile aus einem Vektor zugegriffen, | ||
| + | |||
| + | <code vhdl> | ||
| + | cntones_i0 : cntones | ||
| + | port map ( | ||
| + | switches_i(1 downto 0) => SW(5 downto 4), | ||
| + | switches_i(3 downto 2) => " | ||
| + | cnt_o => cnt); | ||
| + | </ | ||
| + | |||
| + | Wenn Sie nur den einen Eingang switches_i(3) auf 0 setzen wollen und switches_i(2 downto 0) mit den Schaltern SW(2 downto 0) verbinden wollen, dann geht das so: | ||
| + | |||
| + | <code vhdl> | ||
| + | cntones_i0 : cntones | ||
| + | port map ( | ||
| + | switches_i(2 downto 0) => SW(2 downto 0), | ||
| + | switches_i(3) | ||
| + | cnt_o => cnt); | ||
| + | </ | ||
| + | |||
| + | - Entwerfen Sie die Abstimmungsschaltung auf Papier | ||
| + | - Entwerfen Sie die Abstimmungsschaltung in VHDL | ||
| + | - Simulieren Sie die Schaltung im Verzeichnis sim/ | ||
| + | - Sorgen Sie dafür, dass kein Ausgang bei der Simulation " | ||
| + | - Wenn die Schaltung funktioniert, | ||
| + | - Überprüfen Sie die Funktion auf dem FPGA. | ||
| + | |||
| + | ==== Messung der Verzögerungszeit der Schaltung ==== | ||
| + | |||
| + | Jetzt messen Sie die Verzögerungszeit der Schaltung auf dem FPGA. Dazu verwenden Sie den Expansionport " | ||
| + | |||
| + | - Überlegen Sie von welchem Schalter aus es die größte Verzögerungszeit zum Ausgang der Abstimmungsschaltung geben könnte. | ||
| + | - Fügen Sie einen Eingang CLOCK_50 zum Design hinzu | ||
| + | - Fügen Sie einen Ausgang CLOCK_50_OUT zum Design hinzu | ||
| + | - Fügen Sie einen Eingang CLK_IN zum Design hinzu | ||
| + | - Fügen Sie einen Ausgang MAJ zum Design hinzu | ||
| + | - Ersetzen Sie den Schaltereingang, | ||
| + | - Verbinden Sie neben LEDG(7) auch den Ausgang MAJ mit dem Ausgang der Abstimmungsschaltung | ||
| + | - Leiten Sie auf dem FPGA das 50 MHz Taktsignal, das am Eingang CLOCK_50 ankommt, zum Ausgang CLOCK_50_OUT. | ||
| + | |||
| + | Jetzt müssen Sie noch geeignete Pindefinitionen zum [[https:// | ||
| + | |||
| + | * CLOCK_50 mit dem 50 MHz Oszillator | ||
| + | * CLOCK_50_OUT mit dem Pin 1 auf dem Expansionport 1 (GPIO1) | ||
| + | * CLK_IN mit dem Pin 2 auf Expansionport 1 | ||
| + | * MAJ mit dem Pin 40 auf dem Expansionport 1 | ||
| + | |||
| + | zu verbinden. | ||
| + | |||
| + | Nach etwas Recherche im [[https:// | ||
| + | < | ||
| + | set_location_assignment PIN_L1 | ||
| + | set_location_assignment PIN_H12 -to CLOCK_50_OUT | ||
| + | set_location_assignment PIN_H13 -to CLK_IN | ||
| + | set_location_assignment PIN_P18 -to MAJ | ||
| + | </ | ||
| + | * Messen Sie die Verzögerungszeit durch das FPGA! | ||
| + | |||