Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
dtlab_t8 [2024/05/15 06:57] beckmanf [Die UART] add gitlab link |
dtlab_t8 [2025/03/14 20:49] (current) beckmanf switch code server |
||
|---|---|---|---|
| Line 17: | Line 17: | ||
| ==== VHDL toplevel top_uart ==== | ==== VHDL toplevel top_uart ==== | ||
| - | Die Datei [[https://gitlab.elektrotechnik.hs-augsburg.de/beckmanf/dtlab/-/blob/master/src/top_uart.vhd|top_uart.vhd]] beschreibt das Modul "top_uart". "top_uart" stellt den toplevel auf dem FPGA dar. | + | Die Datei [[https://caeis.etech.fh-augsburg.de/beckmanf/dtlab.git/tree/src/top_uart.vhd|top_uart.vhd]] beschreibt das Modul "top_uart". "top_uart" stellt den toplevel auf dem FPGA dar. |
| ==== Die UART ==== | ==== Die UART ==== | ||
| Line 29: | Line 29: | ||
| Die Architektur ist in Abbildung 1 dargestellt. | Die Architektur ist in Abbildung 1 dargestellt. | ||
| - | <html> | + | {{ :public:praktikum_digitaltechnik:dt-uart-tx-simple.svg |UART Transmitter}} |
| - | <img src="http://breakout.hs-augsburg.de/dwimg/uart-tx-simple.svg" width=1024 /> | + | |
| - | </html> | + | {{ :public:praktikum_digitaltechnik:dt-uart-tx-simple.svg?linkonly |Abbildung 1}}: UART Transmitter Architektur auf dem FPGA |
| - | Abbildung 1: UART Transmitter Architektur auf dem FPGA | + | |
| Wenn man auf den KEY1 drückt, dann sollen die Daten an den Schaltern SW[7..0] über die UART seriell übertragen werden. Die Übertragungsgeschwindigkeit wird mit dem "baudcnt" Modul gesteuert. | Wenn man auf den KEY1 drückt, dann sollen die Daten an den Schaltern SW[7..0] über die UART seriell übertragen werden. Die Übertragungsgeschwindigkeit wird mit dem "baudcnt" Modul gesteuert. | ||
| - | <html> | + | {{ :public:praktikum_digitaltechnik:dt-uart-tx-timing.svg |}} |
| - | <img src="http://breakout.hs-augsburg.de/dwimg/uart-tx-timing.svg" width=1024 /> | + | |
| - | </html> | + | |
| - | Abbildung 2: UART Transmitter Timing | + | {{ :public:praktikum_digitaltechnik:dt-uart-tx-timing.svg?linkonly |Abbildung 2}}: UART Transmitter Timing |
| - | In Abbildung 2 ist das Timing der Schaltung für ein Bitdauer von drei Systemtakten dargestellt. Das wäre eine Baudrate von 16,6 MBit/s bei einer Systemtaktfrequenz von 50 MHz. Das wäre also viel zu schnell. So kann aber das Zusammenspiel der Komponenten "baudcnt" und "uart_tx_shift" einfacher dargestellt werden. | + | In Abbildung 2 ist das Timing der Schaltung für eine Bitdauer von drei Systemtakten dargestellt. Das wäre eine Baudrate von 16,6 MBit/s bei einer Systemtaktfrequenz von 50 MHz. Das wäre also viel zu schnell. So kann aber das Zusammenspiel der Komponenten "baudcnt" und "uart_tx_shift" einfacher dargestellt werden. |
| - | * Die Komponenten [[https://gitlab.elektrotechnik.hs-augsburg.de/beckmanf/dtlab/-/blob/master/src/edge.vhd|"edge"]], [[https://gitlab.elektrotechnik.hs-augsburg.de/beckmanf/dtlab/-/blob/master/src/baudcnt.vhd|"baudcnt"]] und [[https://gitlab.elektrotechnik.hs-augsburg.de/beckmanf/dtlab/-/blob/master/src/uart_tx_shift.vhd|"uart_tx_shift"]] sind als leere Architectures schon im Projekt vorhanden | + | * Die Komponenten [[https://caeis.etech.fh-augsburg.de/beckmanf/dtlab.git/tree/src/baudcnt.vhd|"baudcnt"]] und [[https://caeis.etech.fh-augsburg.de/beckmanf/dtlab.git/tree/src/uart_tx_shift.vhd|"uart_tx_shift"]] sind als leere Architectures schon im Projekt vorhanden |
| - | * Die "edge" Komponente enthält den Flankendetektor aus den vorherigen Projekten | + | * Die [[https://caeis.etech.fh-augsburg.de/beckmanf/dtlab.git/tree/src/edge.vhd|"edge"]] Komponente enthält den Flankendetektor aus den vorherigen Projekten |
| * Instantiieren Sie die Komponenten "baudcnt" und "uart_tx_shift" in "top_uart" und verbinden Sie die Komponenten gemäß Abbildung 1 | * Instantiieren Sie die Komponenten "baudcnt" und "uart_tx_shift" in "top_uart" und verbinden Sie die Komponenten gemäß Abbildung 1 | ||
| * Überprüfen Sie die Struktur mit dem RTL Viewer aus der Synthese | * Überprüfen Sie die Struktur mit dem RTL Viewer aus der Synthese | ||
| - | Die Testbench "t_top_uart" dient zur Simulation von "top_uart". | + | Die Testbench [[https://caeis.etech.fh-augsburg.de/beckmanf/dtlab.git/tree/src/t_top_uart.vhd|"t_top_uart"]] dient zur Simulation von "top_uart". |
| * Stellen Sie im Simulator sicher, dass das Signal "start" bei einem simulierten Tastendruck an KEY1 korrekt erzeugt wird | * Stellen Sie im Simulator sicher, dass das Signal "start" bei einem simulierten Tastendruck an KEY1 korrekt erzeugt wird | ||
| Line 55: | Line 52: | ||
| ==== baudcnt ==== | ==== baudcnt ==== | ||
| - | Das Modul [[https://gitlab.elektrotechnik.hs-augsburg.de/beckmanf/dtlab/-/blob/master/src/baudcnt.vhd|"baudcnt"]] steuert die Übertragungsrate wie in Abbildung 2 dargestellt. Das Enablesignal sorgt im "uart_tx_shift" Modul dafür, dass das nächste Bit ausgegeben wird. | + | Das Modul [[https://caeis.etech.fh-augsburg.de/beckmanf/dtlab.git/tree/src/baudcnt.vhd|"baudcnt"]] steuert die Übertragungsrate wie in Abbildung 2 dargestellt. Das Enablesignal sorgt im "uart_tx_shift" Modul dafür, dass das nächste Bit ausgegeben wird. |
| * Entwerfen Sie eine Architektur für "baudcnt", die das Enablesignal wie in Abbildung 2 dargestellt erzeugt. | * Entwerfen Sie eine Architektur für "baudcnt", die das Enablesignal wie in Abbildung 2 dargestellt erzeugt. | ||
| Line 65: | Line 62: | ||
| ==== uart_tx_shift ==== | ==== uart_tx_shift ==== | ||
| - | Das Modul [[https://gitlab.elektrotechnik.hs-augsburg.de/beckmanf/dtlab/-/blob/master/src/uart_tx_shift.vhd|"uart_tx_shift"]] dient zur Serialisierung des 8 Bit Datenwortes, das von den Schaltern SW[7..0] kommt. | + | Das Modul [[https://caeis.etech.fh-augsburg.de/beckmanf/dtlab.git/tree/src/uart_tx_shift.vhd|"uart_tx_shift"]] dient zur Serialisierung des 8 Bit Datenwortes, das von den Schaltern SW[7..0] kommt. |
| * Entwerfen Sie eine Architektur für das Modul "uart_tx_shift", mit der die Daten serialisiert werden | * Entwerfen Sie eine Architektur für das Modul "uart_tx_shift", mit der die Daten serialisiert werden | ||
| Line 81: | Line 78: | ||
| ==== Software auf dem Rechner ==== | ==== Software auf dem Rechner ==== | ||
| - | Auf dem Rechner wird ein Terminalprogramm benötigt, mit dem die Daten von der seriellen Schnittstelle angezeigt werden können. Auf Linux oder MacOS ist das "screen" und auf Windows [[https://www.putty.org|putty]]. | + | Nach dem Einstecken des Modems erscheint unter /dev/ttyXXXXXXX ein neues Device. Unter Linux ist dies /dev/ttyUSB0, unter MacOS ist dies /dev/tty.usbserial-DM000IKG |
| - | * Unter Linux oder MacOS kann man "screen" als terminal verwenden | + | Auf dem Rechner wird ein Terminalprogramm benötigt, mit dem die Daten von der seriellen Schnittstelle angezeigt werden können. |
| - | * Nach dem Einstecken des Modems erscheint unter /dev/ttyXXXXXXX ein neues Device. Unter Linux ist dies /dev/ttyUSB0, unter MacOS ist dies /dev/tty.usbserial-DM000IKG | + | |
| - | * Unter Linux muss man das terminal als root starten und die Baudrate von 57600 Baud angeben. | + | * Unter MacOS ist ''screen'' vorinstalliert und kann so verwendet werden: |
| <code> | <code> | ||
| Line 91: | Line 88: | ||
| </code> | </code> | ||
| - | * Unter MacOS ist kein sudo notwendig | + | * Unter MS Windows kann [[https://www.putty.org|putty]] installiert und genutzt werden. |
| + | |||
| + | * Unter Linux ist bei unseren virtuellen Maschinen ''gtkterm'' installiert und kann direkt so gestartet werden: | ||
| + | |||
| + | <code> | ||
| + | gtkterm --port /dev/ttyUSB0 --speed 57600 --echo | ||
| + | </code> | ||
| Stellen Sie auf dem FPGA Board über die Schalter verschiedende Zeichen ein und übertragen Sie das Zeichen an den Rechner. | Stellen Sie auf dem FPGA Board über die Schalter verschiedende Zeichen ein und übertragen Sie das Zeichen an den Rechner. | ||
| + | Die [[https://de.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange#Zusammensetzung|ASCII Tabelle]] zeigt die Codes für die verschiedenen Buchstaben. | ||