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:53] beckmanf [uart_tx_shift] 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 "edge", "baudcnt" und "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. | ||