FPGA_VIVADO_SI_VHDL_Mihael_Cristian_Ignat

(Cristian I.K_ntXI) #1
39

5.8. Recepția pe UART


Componenta de recepție pe UART face exact opusul componentei de transmisie, și anume, în funcție de
baud rate, datele care vin în mod serial pe pinul RX vor fi memorate, iar la finalul transmisiei, aceste date se
vor găsi în format paralel pe pinii “data_RX[7:0]”. Ca pin de intrare va trebui să mai existe și “clk”, iar ca pin
de ieșire va trebui să mai existe încă cel puțin un pin, “done”, prin care componenta ce are nevoie de
informațiile de la pinul “data_RX[7:0]” va ști când poate să folosească această dată.


În componenta UART_RX.vhd din anexă nu este implementată recepția bitului de paritate. Dacă aceasta
ar fi fost implementată, ar fi trebuit să existe încă un port de ieșire ce ar indica o eroare în cazul în care
paritatea nu se respectă.


Componenta dată ca exemplu are 3 procese, și anume:


  1. Primul reține perioada în care recepționarea este activă prin semnalul “en_rx”.

  2. Al doilea realizează baud rate-ul la jumătatea valorii reale, astfel citirea datei se poate
    face chiar la jumătatea timpului de transmisie. De exemplu, la baud rate de 9600,
    timpul de transmisie / recepție pentru fiecare bit este de 104 us, dar noi vrem ca
    valoarea bitului respectiv să fie citit la mijlocul acestui interval. Aceasta înseamnă că
    primul bit este citit la timpul 52, următorul la 104 + 52 = 156, următorul la 156 + 104 =
    260 și așa mai departe.

  3. Al treilea realizează citirea bitului de RX la timpii potriviți, așa cum este exemplificat mai
    sus.


În componenta dată ca exemplu în anexă, se utilizează ca parametri generici baud rate-ul și frecvența
clock-ului ca aceasta să poată fi folosită la orice baud rate fără a fi nevoiți să schimbăm efectiv codul.

Free download pdf