.. _l05-uart:


==================================
Laboratorium 5: implementacja UART
==================================

Data: 17.11.2020

.. toctree::

.. contents::


UART
====

Plik: :download:`uart.py`

Uwagi konstrukcyjne:

1. W układzie nadawczym używamy maszyny stanów z dwoma stanami: ``IDLE``
   i ``DATA``, traktując bity startu i stopu jako dodatkowe bity danych.
   Można zrobić wersję z osobnymi stanami ``START`` i ``STOP``, lecz
   powoduje to niepotrzebne zwiększenie powierzchni.

2. W układzie odbiorczym mamy natomiast cztery stany — można by próbować
   zredukować ich liczbę, lecz są nieco mniej podobne niż w układzie nadawczym
   (``START`` i ``STOP`` wymagają sprawdzania błędów) i zysk z tego nie będzie
   aĹź taki duĹźy.

3. Układ odbiorczy uważa bajt za zakończony i odebrany w połowie jego bitu stopu
   — nie jest to błąd; co więcej, jest to konieczne by układ działał przy drobnych
   różnicach szybkości przesyłu między nadawcą a odbiorcą.

4. Układ odbiorczy zgłasza błąd, jeśli odbierze nowy bajt przed przeczytaniem
   poprzedniego przez uĹźytkownika.  W przypadku, gdy uĹźytkownik moĹźe przez
   dłuższy czas nie być w stanie przeczytać odebranych bajtów, można na wyjściu
   tego układu wstawić kolejkę FIFO (jako osobny moduł).