[[dtpr_v6]]

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
dtpr_v6 [2014/05/21 18:19]
beckmanf [Entwurf Blinklicht] -- vhdl eingef眉gt
dtpr_v6 [2021/04/26 07:02] (current)
soeren fix: gitlab links
Line 1: Line 1:
-===== Digitaltechnik Praktikum Versuch ​- Flipflops =====+===== Digitaltechnik Praktikum Versuch ​- Flipflops =====
  
 In diesem Versuch werden Flipflops und darauf aufbauend sequentielle Schaltungen entworfen. ​ In diesem Versuch werden Flipflops und darauf aufbauend sequentielle Schaltungen entworfen. ​
Line 15: Line 15:
 ==== Analyse der Flipflopschaltung ==== ==== Analyse der Flipflopschaltung ====
  
-Analysieren Sie die Schaltung in der Datei [[https://git.etech.fh-augsburg.de/​friedrich.beckmann/​digitaltechnikpraktikum/​blob/​master/​src/​de1_flipflop_rtl.vhd|de1_flipflop_rtl.vhd]]. ​+Analysieren Sie die Schaltung in der Datei [[https://gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​digitaltechnikpraktikum/-/​blob/​master/​src/​de1_flipflop_rtl.vhd|de1_flipflop_rtl.vhd]]. Beispiele f眉r die VHDL Beschreibung von Flipflops finden Sie hier [[dt-code-sequ]].
  
   - Zeichnen Sie die Schaltung auf Papier anhand der VHDL Beschreibung   - Zeichnen Sie die Schaltung auf Papier anhand der VHDL Beschreibung
Line 23: Line 23:
   - Geben Sie dazu die Zustandsfolgetabelle und die Ausgangstabelle an.    - Geben Sie dazu die Zustandsfolgetabelle und die Ausgangstabelle an. 
  
-Zu dieser Schaltung gibt es eine passende Testbench [[https://git.etech.fh-augsburg.de/​friedrich.beckmann/​digitaltechnikpraktikum/​blob/​master/​src/​t_de1_flipflop.vhd|t_de1_flipflop.vhd]] f眉r die Simulation der Schaltung. ​+Zu dieser Schaltung gibt es eine passende Testbench [[https://gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​digitaltechnikpraktikum/-/​blob/​master/​src/​t_de1_flipflop.vhd|t_de1_flipflop.vhd]] f眉r die Simulation der Schaltung. ​
  
   - Starten Sie die Simulation im Verzeichnis "​sim/​de1_flipflop"​ und schauen Sie sich die Waveform an.    - Starten Sie die Simulation im Verzeichnis "​sim/​de1_flipflop"​ und schauen Sie sich die Waveform an. 
Line 58: Line 58:
   - Geben Sie die Zustands眉bergangslogik als boolesche Ausdr眉cke an.    - Geben Sie die Zustands眉bergangslogik als boolesche Ausdr眉cke an. 
  
-F眉r den VHDL Entwurf des Blinklichtautomaten gibt es eine vorbereitete Datei [[https://git.etech.fh-augsburg.de/​friedrich.beckmann/​digitaltechnikpraktikum/​blob/​master/​src/​de1_blinklicht_rtl.vhd|de1_blinklicht_rtl.vhd]] und eine zugeh枚rige Testbench [[https://git.etech.fh-augsburg.de/​friedrich.beckmann/​digitaltechnikpraktikum/​blob/​master/​src/​t_de1_blinklicht.vhd|t_de1_blinklicht.vhd]]. Dort k枚nnen Sie die Erg盲nzungen direkt vornehmen. Das Verzeichnis "​pnr/​de1_blinklicht"​ f眉r die Synthese und das Verzeichnis "​sim/​de1_blinklicht"​ f眉r die Simulation sind mit den makefiles schon vorbereitet. ​+F眉r den VHDL Entwurf des Blinklichtautomaten gibt es eine vorbereitete Datei [[https://gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​digitaltechnikpraktikum/-/​blob/​master/​src/​de1_blinklicht_rtl.vhd|de1_blinklicht_rtl.vhd]] und eine zugeh枚rige Testbench [[https://gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​digitaltechnikpraktikum/-/​blob/​master/​src/​t_de1_blinklicht.vhd|t_de1_blinklicht.vhd]]. Dort k枚nnen Sie die Erg盲nzungen direkt vornehmen. Das Verzeichnis "​pnr/​de1_blinklicht"​ f眉r die Synthese und das Verzeichnis "​sim/​de1_blinklicht"​ f眉r die Simulation sind mit den makefiles schon vorbereitet. ​
  
   - Entwerfen Sie den Automaten in VHDL    - Entwerfen Sie den Automaten in VHDL 
Line 64: Line 64:
   - Synthetisieren Sie die Schaltung und probieren Sie den Automaten auf dem FPGA Board aus.  ​   - Synthetisieren Sie die Schaltung und probieren Sie den Automaten auf dem FPGA Board aus.  ​
  
 +==== Entwurf Z盲hler ====
 +
 +In der Vorlesung haben Sie einen Z盲hler kennengelernt,​ der mit einem Ladesignal auf den Wert 5 gesetzt wird und dann runterz盲hlt. Wenn der Z盲hlerstand 0 ist, dann h枚rt der Z盲hler auf zu z盲hlen. Um genau diesen Z盲hler in VHDL zu beschreiben ben枚tigt man einen Datentypen mit dem eine Gruppe von Signalen als Zahl interpretiert werden kann. Dann sind auch Operationen wie eine Addition oder ein Vergleich m枚glich. Ein solcher Datentyp ist "​signed"​ oder "​unsigned"​. Eine Darstellung der verschiedenen Operationen finden Sie hier [[dt-code-vecnum]]. ​
 +
 +Der folgende Code beschreibt ein Register mit 16 Bit Breite. Mit jedem Takt werden die 16 Bit Daten am Eingang in das Register 眉bernommen. Der Datentyp des Registers ist "​unsigned"​ damit man im folgenden mit den Werten rechnen kann.  ​
 +
 +<code vhdl>
 +library ieee;
 +use ieee.std_logic_1164.all; ​
 +use ieee.numeric_std.all; ​
 +
 +entity example is
 +port(
 +  clk   : in std_ulogic;
 +  res_n : in std_ulogic;
 +  d_i   : std_ulogic_vector(15 downto 0)); 
 +end entity; ​
 +
 +architecture rtl of example is
 +
 +  signal cnt : unsigned(15 downto 0); --Zahlen von 0 bis 65535
 +  ​
 +begin
 +
 +  cnt <= "​0000000000000000"​ when res_n = '​0'​ else unsigned(d_i) when rising_edge(clk); ​
 +
 +end architecture rtl; 
 +</​code>​
 +
 +F眉r den Z盲hler ben枚tigen Sie dann noch einen Multiplexer,​ der wie hier [[dt-code]] beschrieben am einfachsten mit einem conditional signal assignment beschrieben wird. 
 +
 +<code vhdl>
 +y <= a_i when sel_i = '​0'​ else b_i; 
 +</​code>​
 +
 +Den Zahlenvergleich k枚nnen Sie bei einem "​unsigned"​ Typen direkt so machen: ​
 +
 +<code vhdl>
 +architecture rtl of example is
 +  signal x                   : unsigned(7 downto 0); -- Zahlen von 0 bis 255
 +  signal x_is_greater_than_5 : std_ulogic; ​
 +begin
 +x_is_greater_than_5 <= '​1'​ when x > 5 else '​0'; ​
 +end architecture;  ​
 +</​code>​
 +
 +Bei diesem Vergleich wird das Signal "​x_is_greater_than_5"​ auf '​1'​ gesetzt, wenn die Zahl x gr枚脽er ist als 5. Ansonsten ist der Wert '​0'​. ​
 +
 +F眉r den folgenden Entwurf ist eine Datei [[https://​gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​digitaltechnikpraktikum/​-/​blob/​master/​src/​cnt15_rtl.vhd|cnt15_rtl.vhd]] vorbereitet. Diese Datei soll den Z盲hler enthalten. Der Z盲hler soll die folgenden Eigenschaften haben:
 +
 +  * Der Z盲hler ist ladbar. Beim Laden soll der Z盲hler auf den Startwert 13 gesetzt werden.
 +  * Wenn der Z盲hler den Wert 0 erreicht hat, dann soll der Z盲hler auf 0 stehen bleiben.
 +  * Bei einem asynchronen Reset, soll der Z盲hler den Wert 0 haben. ​
 +
 +Gehen Sie dazu so vor:
 +
 +  - Zeichnen Sie eine Architektur auf Papier bestehend aus Register, Addierer, Vergleicher und Multiplexer. ​
 +  - Beschreiben Sie den Z盲hler in der Datei [[https://​gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​digitaltechnikpraktikum/​-/​blob/​master/​src/​cnt15_rtl.vhd|cnt15_rtl.vhd]] in VHDL. 
 +
 +Dieser Z盲hler wird in der Datei [[https://​gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​digitaltechnikpraktikum/​-/​blob/​master/​src/​de1_cnt15_rtl.vhd|de1_cnt15_rtl.vhd]] mit den Ein- und Ausg盲ngen auf dem FPGA verbunden. Zus盲tzliche wird der Z盲hlerstand auf der HEX0 Anzeige ausgegeben. F眉r diese Schaltung ist eine Testbench vorbereitet in der Datei [[https://​gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​digitaltechnikpraktikum/​-/​blob/​master/​src/​t_de1_cnt15.vhd|t_de1_cnt15.vhd]]. ​
 +
 +  - Zeichnen Sie die Schaltung, die in [[https://​gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​digitaltechnikpraktikum/​-/​blob/​master/​src/​de1_cnt15_rtl.vhd|de1_cnt15_rtl.vhd]] beschrieben ist auf Papier. ​
 +  - Simulieren Sie die Gesamtschaltung im Verzeichnis "​sim/​de1_cnt15" ​
 +  - Synthetisieren Sie die Schaltung im Verzeichnis "​pnr/​de1_cnt15"​ und probieren Sie die Schaltung auf dem FPGA aus.
 +
 +==== Vermessung des Z盲hlers ====
 +
 +Bislang wird der Z盲hler mit der Taster KEY(1) getaktet. Jetzt soll die Z盲hlschaltung so ver盲ndert werden, dass der 50 MHz Taktoszillator verwendet wird und die Funktion des Z盲hlers am Logikanalysator vermessen werden kann.
 +
 +  - Erg盲nzen Sie die Schaltung [[https://​gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​digitaltechnikpraktikum/​-/​blob/​master/​src/​de1_cnt15_rtl.vhd|de1_cnt15_rtl.vhd]],​ damit das Signal done_o, cnt_o, ld_i, der Takt und der asynchrone Reset auf dem Expansion Port 1 zug盲nglich wird.
 +  - 脛ndern Sie den Takteingang,​ damit die Schaltung mit dem 50 MHz Taktoszillator CLOCK_50 betrieben wird.
 +  - Erg盲nzen Sie das [[https://​gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​digitaltechnikpraktikum/​-/​blob/​master/​pnr/​de1_cnt15/​de1_cnt15_pins.tcl|Pindefinitionsfile]],​ damit die zus盲tzlichen Ein- und Ausg盲nge bei der Synthese ber眉cksichtigt werden. Die Pins auf dem FPGA und auf dem Board k枚nnen Sie im [[https://​www.hs-augsburg.de/​~beckmanf/​restricted/​DE1_V.1.0.1_CDROM/​DE1_user_manual/​DE1_UserManual_v1.2.1.pdf|Altera DE1 Usermanual]] finden. Eine Liste mit allen Pins finden Sie in [[https://​gitlab.elektrotechnik.hs-augsburg.de/​beckmanf/​digitaltechnikpraktikum/​-/​blob/​master/​scripts/​de1_pin_assignments_minimumio.tcl|scripts/​de1_pins_assignments_minimumio.tcl]]
 +  - Stellen Sie die Funktion des Z盲hlers am Logikanalysator dar. Benutzen Sie zum Anschluss der Digitaltastk枚pfe an die GPIO Pins die Klemmen. Dabei soll der Takt, der Load Eingang ld_i, der asynchrone Reset, der Z盲hlerstand und der Ausgang done_o sichtbar sein.
  • dtpr_v6.1400689159.txt.gz
  • Last modified: 2014/05/21 18:19
  • by beckmanf