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 [2016/06/29 14:39] witflori [Messung der Verzögerungszeit der Schaltung] pdf link |
dtpr_versuch_5 [2021/03/20 08:21] (current) beckmanf [Additionsschaltung mit VHDL] removed sim |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== Digitaltechnikpraktikum Versuch 5 - Arithmetische Schaltung ===== | + | ===== Digitaltechnikpraktikum Versuch 3 - Arithmetische Schaltung ===== |
In diesem Versuch | In diesem Versuch | ||
Line 14: | Line 14: | ||
==== Additionsschaltung mit VHDL ==== | ==== Additionsschaltung mit VHDL ==== | ||
- | In der Datei [[https://git.etech.fh-augsburg.de/friedrich.beckmann/digitaltechnikpraktikum/blob/master/src/add4_rtl.vhd|add4_rtl.vhd]] ist eine Schaltung zur Addition von zwei 4 Bit BinÀrzahlen mit einem 4 Bit Ergebnis in VHDL beschrieben. Die zugehörige Testbench ist [[https://git.etech.fh-augsburg.de/friedrich.beckmann/digitaltechnikpraktikum/blob/master/src/t_add4.vhd|t_add4.vhd]]. | + | In der Datei [[https://gitlab.elektrotechnik.hs-augsburg.de/beckmanf/digitaltechnikpraktikum/blob/master/src/add4_rtl.vhd|add4_rtl.vhd]] ist eine Schaltung zur Addition von zwei 4 Bit BinÀrzahlen mit einem 4 Bit Ergebnis in VHDL beschrieben. |
- | - Wechseln Sie in das Simulationsverzeichnis "sim/add4" und simulieren Sie die Additionsschaltung | + | 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. Es ist auch schon eine unvollstĂ€ndige VHDL Datei [[https://gitlab.elektrotechnik.hs-augsburg.de/beckmanf/digitaltechnikpraktikum/blob/master/src/de1_add4_rtl.vhd|de1_add4_rtl.vhd]] vorhanden, die Sie noch ergĂ€nzen mĂŒssen. Das Syntheseverzeichnis [[https://gitlab.elektrotechnik.hs-augsburg.de/beckmanf/digitaltechnikpraktikum/tree/master/pnr/de1_add4|pnr/de1_add4]] ist schon fertig vorbereitet. |
- | 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://git.etech.fh-augsburg.de/friedrich.beckmann/digitaltechnikpraktikum/blob/master/src/t_de1_add4.vhd|t_de1_add4]] gibt es schon eine fertige Testbench fĂŒr die Schaltung. Es ist auch schon eine unvollstĂ€ndige VHDL Datei [[https://git.etech.fh-augsburg.de/friedrich.beckmann/digitaltechnikpraktikum/blob/master/src/de1_add4_rtl.vhd|de1_add4_rtl.vhd]] vorhanden, die Sie noch ergĂ€nzen mĂŒssen. Das Simulationsverzeichnis [[https://git.etech.fh-augsburg.de/friedrich.beckmann/digitaltechnikpraktikum/tree/master/sim/de1_add4|sim/de1_add4]] und das Syntheseverzeichnis [[https://git.etech.fh-augsburg.de/friedrich.beckmann/digitaltechnikpraktikum/tree/master/pnr/de1_add4|pnr/de1_add4]] ist schon fertig vorbereitet. Ìę | + | - Wechseln Sie in das Syntheseverzeichnis [[https://gitlab.elektrotechnik.hs-augsburg.de/beckmanf/digitaltechnikpraktikum/tree/master/pnr/de1_add4|pnr/de1_add4]] und starten Sie Quartus mit der grafischen OberflĂ€che.Ìę |
- | Ìę | + | - ErgĂ€nzen Sie den VHDL Code in der Datei [[https://gitlab.elektrotechnik.hs-augsburg.de/beckmanf/digitaltechnikpraktikum/blob/master/src/de1_add4_rtl.vhd|de1_add4_rtl.vhd]] |
- | - Wechseln Sie in das Simulationsverzeichnis [[https://git.etech.fh-augsburg.de/friedrich.beckmann/digitaltechnikpraktikum/tree/master/sim/de1_add4|sim/de1_add4]] und starten Sie die Simulation. Ìę | + | |
- | - ErgĂ€nzen Sie den VHDL Code in der Datei [[https://git.etech.fh-augsburg.de/friedrich.beckmann/digitaltechnikpraktikum/blob/master/src/de1_add4_rtl.vhd|de1_add4_rtl.vhd]] und ĂŒberprĂŒfen Sie Ihren Entwurf im Simulator. Ìę | + | |
- | - Wenn im Simulator alles gut aussieht, wechseln Sie in das Syntheseverzeichnis [[https://git.etech.fh-augsburg.de/friedrich.beckmann/digitaltechnikpraktikum/tree/master/pnr/de1_add4|pnr/de1_add4]] und synthetisieren Sie die Schaltung | + | |
- 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 ==== | ||
Line 90: | Line 88: | ||
* 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://git.etech.fh-augsburg.de/friedrich.beckmann/digitaltechnikpraktikum/blob/master/src/t_de1_majority.vhd|t_de1_majority.vhd]] und eine angefangene Datei [[https://git.etech.fh-augsburg.de/friedrich.beckmann/digitaltechnikpraktikum/blob/master/src/de1_majority_rtl.vhd|de1_majority.vhd]] fĂŒr das Design. Das Simulationsverzeichnis [[https://git.etech.fh-augsburg.de/friedrich.beckmann/digitaltechnikpraktikum/tree/master/sim/de1_majority|sim/de1_majority]] und das Syntheseverzeichnis [[https://git.etech.fh-augsburg.de/friedrich.beckmann/digitaltechnikpraktikum/tree/master/pnr/de1_majority|pnr/de1_majority]] sind fertig. | + | 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://gitlab.elektrotechnik.hs-augsburg.de/beckmanf/digitaltechnikpraktikum/blob/master/src/t_de1_majority.vhd|t_de1_majority.vhd]] und eine angefangene Datei [[https://gitlab.elektrotechnik.hs-augsburg.de/beckmanf/digitaltechnikpraktikum/blob/master/src/de1_majority_rtl.vhd|de1_majority.vhd]] fĂŒr das Design. Das Simulationsverzeichnis [[https://gitlab.elektrotechnik.hs-augsburg.de/beckmanf/digitaltechnikpraktikum/tree/master/sim/de1_majority|sim/de1_majority]] und das Syntheseverzeichnis [[https://gitlab.elektrotechnik.hs-augsburg.de/beckmanf/digitaltechnikpraktikum/tree/master/pnr/de1_majority|pnr/de1_majority]] sind fertig. |
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, z.B. mit SW(3 downto 0) um einen vier Bit langen Vektor zu erhalten. Der Eingang switches_i der cntones Schaltung hat eine LĂ€nge von vier Bit. Wenn Sie die EingĂ€nge switches_i(1 downto 0) mit SW(5 downto 4) verbinden wollen und switches_i(3 downto 2) auf 0 setzen wollen geht das so: | 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, z.B. mit SW(3 downto 0) um einen vier Bit langen Vektor zu erhalten. Der Eingang switches_i der cntones Schaltung hat eine LĂ€nge von vier Bit. Wenn Sie die EingĂ€nge switches_i(1 downto 0) mit SW(5 downto 4) verbinden wollen und switches_i(3 downto 2) auf 0 setzen wollen geht das so: | ||
Line 132: | Line 130: | ||
- Leiten Sie auf dem FPGA das 50 MHz Taktsignal, das am Eingang CLOCK_50 ankommt, zum Ausgang CLOCK_50_OUT. | - 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://git.etech.fh-augsburg.de/friedrich.beckmann/digitaltechnikpraktikum/blob/master/pnr/de1_majority/de1_majority_pins.tcl|Pindefinitionsfile]] hinzufĂŒgen um | + | Jetzt mĂŒssen Sie noch geeignete Pindefinitionen zum [[https://gitlab.elektrotechnik.hs-augsburg.de/beckmanf/digitaltechnikpraktikum/blob/master/pnr/de1_majority/de1_majority_pins.tcl|Pindefinitionsfile]] hinzufĂŒgen um |
* CLOCK_50 mit dem 50 MHz Oszillator | * CLOCK_50 mit dem 50 MHz Oszillator |