Receptor-emițător asincron universal MICROCHIP Core16550

Introducere
Core16550 este un transmițător-receptor asincron universal (UART) standard care asigură compatibilitatea software cu dispozitivul 16550, utilizat pe scară largă. Acesta gestionează conversia datelor serial-paralel pentru intrările de la modemuri sau alte dispozitive seriale și efectuează conversia paralel-serială pentru datele trimise de la CPU la aceste dispozitive.
În timpul transmisiei, datele sunt scrise în paralel în bufferul FIFO (First-In, First-Out) al UART-ului. Datele sunt apoi serializate pentru ieșire. La recepție, UART-ul convertește datele seriale primite în date paralele și permite acces facil pentru procesor.
O aplicație tipică a UART-ului 16550 este ilustrată în figura următoare.
Figura 1. Aplicație tipică 16550
Tabelul 1. Rezumatul Core16550

Caracteristici cheie
Următoarele sunt caracteristicile cheie ale Core16550:
- Emițătorul și receptorul sunt fiecare bufferizate cu FIFO-uri de până la 16 octeți pentru a reduce numărul de întreruperi prezentate procesorului.
- Adaugă sau elimină biții standard de comunicare asincronă (Start, Stop și Parity).
- Întreruperi controlate independent pentru transmisie, recepție, stare linie și seturi de date
- Generator de baud programabil
- Funcții de control al modemului (CTSn, RTSn, DSRn, DTRn, RIn și DCDn).
- Interfață de registru Advanced Peripheral Bus (APB).
Funcții scoase din producție
Suportul pentru limbajul de descriere hardware (VHDL) pentru circuite integrate de mare viteză (VHSIC) va fi întrerupt începând cu această versiune.
Informații despre jurnalul de modificări Core16550
Această secțiune oferă o prezentare cuprinzătoareview a funcțiilor nou încorporate, începând cu cea mai recentă versiune.
| Versiune | Ce este nou |
| Core16550 v3.4 | Core16550 folosește cuvântul cheie „break” din sistemul Verilog ca nume de registru, ceea ce cauza erori de sintaxă. Cuvântul cheie este înlocuit cu un alt nume pentru a rezolva această problemă.
Adăugat suport pentru familia PolarFire® |
| Core16550 v3.3 | Adăugat suport pentru familia de FPGA tolerante la radiații (RTG4™) |
- Descrierea blocului funcțional (Pune o întrebare)
Această secțiune oferă o scurtă descriere pentru fiecare element al diagramei bloc interne, așa cum se arată în figura următoare.
Figura 1-1. Diagrama bloc Core16550

Elemente ale diagramei bloc interne (Pune o întrebare)
Următoarea secțiune oferă informații despre elementele diagramei bloc interne.
- RWControl (Pune o întrebare)
Blocul RWControl este responsabil pentru gestionarea comunicațiilor cu procesorul (partea paralelă) a sistemului. Toată scrierea și citirea registrelor interne se realizează prin intermediul acestui bloc. - UART_Reg (Pune o întrebare)
Blocul UART_Reg conține toate registrele interne ale dispozitivului. - RXBlock (Pune o întrebare)
Acesta este blocul receptorului. RXBlock primește cuvântul serial de intrare. Este programabil să recunoască lățimi de date, cum ar fi 5, 6, 7 sau 8 biți; diverse setări de paritate, cum ar fi par, impar sau fără paritate; și diferiți biți de stop, cum ar fi 1, 1½ și 2 biți. RXBlock verifică erorile în fluxul de date de intrare, cum ar fi erori de depășire, erori de cadru, erori de paritate și erori de întrerupere. Dacă cuvântul de intrare nu are probleme, acesta este plasat în FIFO-ul receptorului. - Controlul întreruperilor (Pune o întrebare)
Blocul de control al întreruperilor trimite un semnal de întrerupere înapoi către procesor, în funcție de starea FIFO și de datele sale recepționate și transmise. Registrul de identificare a întreruperilor furnizează nivelul întreruperii. Întreruperile sunt trimise pentru buffere de transmisie/recepție (sau FIFO) goale, o eroare la primirea unui caracter sau alte condiții care necesită atenția procesorului. - Generator de rată baud (Pune o întrebare)
Acest bloc preia intrarea PCLK și o împarte la o valoare programată (de la 1 la 216 – 1). Rezultatul este împărțit la 16 pentru a crea ceasul de transmisie (BAUDOUT). - TXBlock (Pune o întrebare)
Blocul Transmit gestionează transmiterea datelor scrise în FIFO-ul Transmit. Acesta adaugă biții de Start, Parity și Stop necesari la datele transmise, astfel încât dispozitivul receptor să poată efectua gestionarea corectă a erorilor și recepționarea.
Interfață software (Pune o întrebare)
Definițiile și mapările adreselor registrelor Core16550 sunt descrise în această secțiune. Tabelul următor prezintă rezumatul registrului Core16550.
| PADDR[4:0]
(Adresa) |
Bit de acces la zăvorul divizorului1
(DLAB) |
Nume | Simbol | Valoare implicită (resetare) | Număr de biți | Citiți/Scrieți |
| 00 | 0 | Registrul tampon al receptorului | RBR | XX | 8 | R |
| 00 | 0 | Registrul de menținere a transmițătorului | THR | XX | 8 | W |
| 00 | 1 | Blocaj divizor (LSB) | DLR | 01h | 8 | R/V |
| 04 | 1 | Blocaj divizor (MSB) | DMR | 00h | 8 | R/V |
| 04 | 0 | Întrerupe activare registru | IER | 00h | 8 | R/V |
| 08 | X | Registrul de identificare a întreruperilor | IIR | C1h | 8 | R |
| 08 | X | Registrul de control FIFO | FCR | 01h | 8 | W |
| 0C | X | Registrul de control al liniei | LCR | 00h | 8 | R/V |
| 10 | X | Registrul de control al modemului | MCR | 00h | 8 | R/V |
| 14 | X | Registru de stare a liniei | LSR | 60h | 8 | R |
| 18 | X | Registrul de stare al modemului | MSR | 00h | 8 | R |
| 1C | X | Registru zero | SR | 00h | 8 | R/V |
Important
DLAB este MSB-ul Registrului de Control al Liniei (bitul 7 al LCR).
Registrul tampon al receptorului (Pune o întrebare)
Registrul buffer al receptorului este definit în tabelul următor.
Tabelul 1-2. Registrul tampon al receptorului (doar citire) - Adresa 0 DLAB 0
| Biți | Nume | Stare implicită | Stări valide | Funcţie |
| 7..0 | RBR | XX | 0..FFh | Biți de date recepționați. Bitul 0 este LSB-ul și este primul bit recepționat. |
Registrul de menținere al transmițătorului (Pune o întrebare)
Registrul de menținere a transmițătorului este definit în tabelul următor.
Tabelul 1-3. Registrul de menținere a transmițătorului - Numai scriere
| Biți | Nume | Stare implicită | Stări valide | Funcţie |
| 7..0 | THR | XX | 0..FFh | Pentru a transmite biți de date. Bitul 0 este LSB-ul și este transmis primul. |
Registrul de control FIFO (Pune o întrebare)
Registrul de control FIFO este definit în tabelul următor.
| Biți (7:0) | Stare implicită | Stări valide | Funcţie |
| 0 | 1 | 0, 1 | Activează atât FIFO-urile transceiverului (Tx), cât și ale receptorului (Rx). Acest bit trebuie setat la 1 atunci când se scriu alți biți FCR, altfel nu vor fi programați.
0: Dezactivat 1: Activat |
| 1 | 0 | 0, 1 | Șterge toți octeții din FIFO-ul Rx și resetează logica contorului. Registrul de deplasare nu este șters.
0: Dezactivat 1: Activat |
| 2 | 0 | 0, 1 | Șterge toți octeții din Tx FIFO și resetează logica contorului. Registrul de deplasare nu este șters.
0: Dezactivat 1: Activat |
| 3 | 0 | 0, 1 | 0: Transfer unic DMA: Transfer efectuat între ciclurile magistralei CPU
1: DMA cu transfer multiplu: Transferuri efectuate până când FIFO-ul Rx este gol sau FIFO-ul de transmisie (XMIT) al Operatorului de Sistem de Transport (TSO). FCR[0] trebuie setat la 1 pentru a seta FCR[3] la 1. |
| 4, 5 | 0 | 0, 1 | Rezervat pentru utilizare ulterioară. |
| 6, 7 | 0 | 0, 1 | Acești biți sunt utilizați pentru a seta nivelul de declanșare pentru întreruperea Rx FIFO. 7 6 Nivel de declanșare Rx FIFO (octeți)
0 0 01 0 1 04 1 0 08 1 1 14 |
Registrele de control ale divizorului (Pune o întrebare)
Rata de transmisie (BR) este generată prin împărțirea ratei de intrare (PCLK) la 16 și valoarea divizorului.
Următorul tabel prezintă un exempluample de valori ale divizorului pentru BR dorit atunci când se utilizează un ceas de referință de 18.432 MHz.
Tabelul 1-5. Blocare divizor (LS și MS)
| Biți | Nume | Stare implicită | Stări valide | Funcţie |
| 7..0 | DLR | 01h | 01..FFh | LSB-ul valorii divizorului |
| 7..0 | DMR | 00h | 00..FFh | MSB-ul valorii divizorului |
Tabelul 1-6. Rate baud și valori ale divizorului pentru ceasul de referință de 18.432 MHz
| Baud Rate | Împărțitor zecimal (Valoarea împărțitorului) | Eroare procentuală |
| 50 | 23040 | 0.0000% |
| 75 | 15360 | 0.0000% |
| 110 | 10473 | –0.2865% |
| 134.5 | 8565 | 0.0876% |
| 150 | 7680 | 0.0000% |
| 300 | 3840 | 0.0000% |
| 600 | 1920 | 0.0000% |
| 1,200 | 920 | 4.3478% |
| 1,800 | 640 | 0.0000% |
| Baud Rate | Împărțitor zecimal (Valoarea împărțitorului) | Eroare procentuală |
| 2,000 | 576 | 0.0000% |
| 2,400 | 480 | 0.0000% |
| 3,600 | 320 | 0.0000% |
| 4,800 | 240 | 0.0000% |
| 7,200 | 160 | 0.0000% |
| 9,600 | 120 | 0.0000% |
| 19,200 | 60 | 0.0000% |
| 38,400 | 30 | 0.0000% |
| 56,000 | 21 | –2.0408% |
Registrul de activare a întreruperii (Pune o întrebare)
Registrul de activare a întreruperii este definit în tabelul următor.
Tabelul 1-7. Registrul de activare a întreruperii
| Biți | Nume | Stare implicită | Stare validă | Funcţie |
| 0 | ERBFI | 0 | 0, 1 | Activează „Întreruperea datelor recepționate disponibile” 0: Dezactivat
1: Activat |
| 1 | ETBEI | 0 | 0, 1 | Activează „Întreruperea registrului de stocare a transmițătorului gol” 0: Dezactivat
1: Activat |
| 2 | ELSI | 0 | 0, 1 | Activează „Întreruperea stării liniei receptorului” 0: Dezactivat
1: Activat |
| 3 | EDSSI | 0 | 0, 1 | Activează „Întreruperea stării modemului” 0: Dezactivat
1: Activat |
| 7..4 | Rezervat | 0 | 0 | Întotdeauna 0 |
Registru de identificare a întreruperilor (Pune o întrebare)
Registrul de identificare a întreruperilor este listat în tabelul următor. Tabelul 1-8. Registrul de identificare a întreruperilor
| Biți | Nume | Stare implicită | Stări valide | Funcţie |
| 3..0 | IIR | 1h | 0..Ch | Biți de identificare a întreruperii. |
| 5..4 | Rezervat | 00 | 00 | Întotdeauna 00 |
| 7..6 | Modul | 11 | 11 | 11: Mod FIFO |
Câmpul registrului de identificare a întreruperii este definit în tabelul următor.
Tabelul 1-9. Câmpul registrului de identificare a întreruperilor (IIR)
| Valoare IIR [3:0)] | Nivel de prioritate | Tip de întrerupere | Sursă de întrerupere | Controlul resetării prin întrerupere |
| 0110 | Cel mai înalt | Starea liniei receptorului | Eroare de depășire, eroare de paritate, eroare de încadrare sau întrerupere | Citirea registrului de stare a liniei |
| 0100 | Doilea | Datele primite sunt disponibile | Datele receptorului sunt disponibile | Citirea registrului tampon al receptorului sau a FIFO scade sub nivelul de declanșare |
| Masă 1-9. Câmpul Registrului de Identificare a Întreruperilor (IIR) (continuare) | ||||
| Valoare IIR [3:0)] | Nivel de prioritate | Tip de întrerupere | Sursă de întrerupere | Controlul resetării prin întrerupere |
| 1100 | Doilea | Indicație de expirare a caracterelor | Niciun caracter nu a fost citit din Rx FIFO în ultimele patru perioade de timp și a existat cel puțin un caracter în acesta în acest timp. | Citirea registrului tampon al receptorului |
| 0010 | Treilea | Registrul de menținere al transmițătorului este gol | Registrul de menținere al transmițătorului este gol | Citirea IIR sau scrierea în registrul de menținere a transmițătorului |
| 0000 | Patrulea | Stare modem | Trimitere gata, Set de date pregătit, Indicator sonerie sau Detectare purtător de date | Citirea registrului de stare modernă |
Registrul de control al liniei (Pune o întrebare)
Registrul de control al liniei este listat în tabelul următor. Tabelul 1-10. Registrul de control al liniei
| Biți | Nume | Stare implicită | Stări valide | Funcţie |
| 1..0 | WLS | 0 | 0..3h | Selectare lungime cuvânt 00: 5 biți
01: 6 biți 10: 7 biți 11: 8 biți |
| 2 | STB | 0 | 0, 1 | Număr de biți de stop 0: 1 Bit de stop
1: 1½ biți de stop când WLS = 00 2: Biți de stop în alte cazuri |
| 3 | STILOU | 0 | 0, 1 | Activare paritate 0: Dezactivat
1: Activat. Paritatea este adăugată în transmisie și verificată în recepție. |
| 4 | EPS | 0 | 0, 1 | Paritate pară Selectați 0: Paritate impară
1: Paritate uniformă |
| 5 | SP | 0 | 0, 1 | Paritate stick 0: Dezactivat
1: Activat Următoarele sunt detaliile parității, când paritatea stick-ului este activată: Biții 4..3 11: 0 va fi trimis ca bit de paritate și verificat la recepție. 01: 1 va fi trimis ca bit de paritate și verificat la recepție. |
| 6 | SB | 0 | 0, 1 | Setați Pauza 0: Dezactivat
1: Setează pauza. SOUT este forțat la 0. Acest lucru nu are niciun efect asupra logicii transmițătorului. Pauza este dezactivată prin setarea bitului la 0. |
| 7 | DLAB | 0 | 0, 1 | Bit de acces la zăvorul divizorului
0: Dezactivat. Modul de adresare normală este în uz. 1: Activat. Permite accesul la registrele Divisor Latch în timpul operațiunii de citire sau scriere la adresele 0 și 1. |
Registrul de control al modemului (Pune o întrebare)
Registrul de control al modemului este listat în tabelul următor.
| Biți | Nume | Stare implicită | Stări valide | Funcţie |
| 0 | DTR | 0 | 0, 1 | Controlează ieșirea Terminal de date pregătit (DTRn). 0: DTRn <= 1
1: DTRn <= 0 |
| 1 | RTS | 0 | 0, 1 | Controlează ieșirea Cererii de trimitere (RTSn). 0: RTSn <= 1
1: RTSn <= 0 |
| 2 | Out1 | 0 | 0, 1 | Controlează semnalul Output1 (OUT1n). 0: OUT1n <= 1
1: OUT1n <= 0 |
| 3 | Out2 | 0 | 0, 1 | Controlează semnalul Output2 (OUT2n). 0: OUT2n <= 1
1: OUT2n <= 0 |
| 4 | Buclă | 0 | 0, 1 | Bitul 0 de activare a buclei: Dezactivat
1: Activat. În modul Buclă se întâmplă următoarele: SOUT este setat la 1. Intrările SIN, DSRn, CTSn, RIn și DCDn sunt deconectate. Ieșirea registrului de deplasare al transmițătorului este reintrodusă în registrul de deplasare al receptorului. Ieșirile de control al modemului (DTRn, RTSn, OUT1n și OUT2n) sunt conectat intern la intrările de control al modemului, iar pinii de ieșire ai controlului modemului sunt setați la 1. În modul Loopback, datele transmise sunt recepționate imediat, permițând procesorului să verifice funcționarea UART-ului. Întreruperile funcționează în modul Loop. |
| 7..4 | Rezervat | 0h | 0 | Rezervat |
Registru de stare a liniei (Pune o întrebare)
Registrul de stare a liniei este definit în tabelul următor.
Tabelul 1-12. Registru de stare a liniei - Doar citire
| Biți | Nume | Stare implicită | Stări valide | Funcţie |
| 0 | DR | 0 | 0, 1 | Indicator Date pregătite
1 când un octet de date a fost recepționat și stocat în bufferul de recepție sau în FIFO. DR este resetat la 0 când CPU citește datele din bufferul de recepție sau din FIFO. |
| 1 | OE | 0 | 0, 1 | Indicator de eroare de depășire
Indică faptul că noul octet a fost primit înainte ca procesorul să citească octetul din bufferul de recepție și că octetul de date anterior este distrus. OE este șters atunci când procesorul citește registrul de stare a liniei. Dacă datele continuă să umple FIFO dincolo de nivelul de declanșare, apare o eroare de depășire odată ce FIFO este plin și următorul caracter a fost complet completat. recepționat în registrul de deplasare. Caracterul din registrul de deplasare este suprascris, dar nu este transferat în FIFO. |
| 2 | PE | 0 | 0, 1 | Indicator de eroare de paritate
Indică faptul că octetul recepționat a avut o eroare de paritate. PE este șters atunci când procesorul citește registrul de stare a liniei. Această eroare este dezvăluită procesorului atunci când caracterul asociat se află în partea de sus a FIFO-ului. |
| 3 | FE | 0 | 0, 1 | Indicator de eroare de încadrare
Indică faptul că octetul primit nu avea un bit de stop valid. FE este șters când CPU citește registrul Line Status. UART-ul va încerca să se resincronizeze după o eroare de încadrare. Pentru a face acest lucru, presupune că eroarea de încadrare a fost cauzată de următorul bit de start, deci...ampscrie acest bit de Start de două ori, apoi începe să primească datele. Această eroare este dezvăluită procesorului atunci când caracterul asociat se află în partea de sus a FIFO-ului. |
| Tabelul 1-12. Registru de stare a liniei - Doar citire (continuare) | ||||
| Biți | Nume | Stare implicită | Stări valide | Funcţie |
| 4 | BI | 0 | 0, 1 | Indicator de întrerupere a pauzei
Indică faptul că datele recepționate sunt la 0, mai lungi decât timpul de transmisie a unui cuvânt întreg (bitul de început + Biți de date + Paritate + Biți de stop). BI este șters când CPU citește registrul de stare a liniei. Această eroare este dezvăluită CPU-ului atunci când caracterul asociat se află în partea de sus a FIFO. Când apare o întrerupere, în FIFO se încarcă doar un caracter zero. |
| 5 | TREI | 1 | 0, 1 | Indicator registru de menținere gol al transmițătorului (THRE)
Indică faptul că UART-ul este gata să transmită un nou octet de date. THRE provoacă o întrerupere către CPU atunci când bitul 1 (ETBEI) din registrul de activare a întreruperii este 1. Acest bit este setat când FIFO-ul TX este gol. Este șters când cel puțin un octet este scris în FIFO-ul TX. |
| 6 | TEMT | 1 | 0, 1 | Indicator de emițător gol
Acest bit este setat la 1 când atât registrele FIFO, cât și registrele de deplasare ale transmițătorului sunt goale. |
| 7 | FIER | 0 | 1 | Acest bit este setat atunci când există cel puțin o eroare de paritate, o eroare de încadrare sau o indicație de întrerupere în FIFO. FIER este șters când CPU citește LSR-ul dacă nu există erori ulterioare în FIFO. |
Registru de stare a modemului (Pune o întrebare)
Registrul de stare a modemului este listat în tabelul următor.
Tabelul 1-13. Registru de stare a modemului - Doar citire
| Biți | Nume | Stare implicită | Stări valide | Funcţie |
| 0 | DCTS | 0 | 0, 1 | Indicator Delta Clear to Send.
Indică faptul că intrarea CTSn și-a schimbat starea de la ultima citire de către CPU. |
| 1 | DDSR | 0 | 0, 1 | Indicator Set de date Delta pregătit
Indică faptul că intrarea DSRn și-a schimbat starea de la ultima citire de către CPU. |
| 2 | TERI | 0 | 0, 1 | Detector indicator de marginea inferioară a inelului. Indică faptul că intrarea RI s-a modificat de la 0 la 1. |
| 3 | DDCD | 0 | 0, 1 | Indicatorul de detectare a purtătorului de date Delta indică faptul că intrarea DCD și-a schimbat starea.
Notă: Ori de câte ori bitul 0, 1, 2 sau 3 este setat la 1, se generează o întrerupere de stare a modemului. |
| 4 | CTS | 0 | 0, 1 | Ștergeți pentru a trimite
Complementul intrării CTSn. Când bitul 4 al Registrului de Control al Modemului (MCR) este setat la 1 (buclă), acest bit este echivalent cu DTR în MCR. |
| 5 | DSR | 0 | 0, 1 | Set de date gata
Complementul intrării DSR. Când bitul 4 al MCR este setat la 1 (buclă), acest bit este echivalent cu RTSn în MCR. |
| 6 | RI | 0 | 0, 1 | Indicator de apel
Complementul intrării RIn. Când bitul 4 al MCR este setat la 1 (buclă), acest bit este echivalent cu OUT1 în MCR. |
| 7 | DCD | 0 | 0, 1 | Detectare purtător de date
Complementul intrării DCDn. Când bitul 4 al MCR este setat la 1 (buclă), acest bit este echivalent cu OUT2 din MCR. |
Registru automat (Pune o întrebare)
Registrul Scratch este definit în tabelul următor.
| Biți | Nume | Stare implicită | Funcţie |
| 7..0 | SCR | 00h | Registr de citire/scriere pentru CPU. Fără efecte asupra funcționării UART. |
Fluxuri de instrumente (Pune o întrebare)
Această secțiune oferă detalii despre fluxurile de instrumente.
SmartDesign (Pune o întrebare)
Core16550 este disponibil pentru descărcare în mediul de proiectare a implementării IP SmartDesign. Nucleul este configurat utilizând interfața grafică de configurare din SmartDesign, consultați figura următoare.
Pentru informații despre cum se utilizează SmartDesign pentru a instanția, configura, conecta și genera nuclee, consultați Ghidul utilizatorului SmartDesign.
Figura 2-1. Configurația Core16550

Fluxuri de simulare (Pune o întrebare)
Bancul de testare pentru utilizatori pentru Core16550 este inclus în toate versiunile.
Pentru a rula simulări, selectați opțiunea Flux de testare utilizator din SmartDesign și faceți clic pe Generare proiectare din meniul SmartDesign. Testbench-ul utilizator este selectat prin intermediul interfeței grafice de configurare Core Testbench.
Când SmartDesign generează proiectul Libero SoC, instalează testbench-ul pentru utilizatori. files.
Pentru a rula testbench-ul utilizatorului, setați rădăcina de proiectare la instanțierea Core16550 în panoul Ierarhie de proiectare Libero SoC și faceți clic pe pictograma Simulare din fereastra Flux de proiectare SoC. Aceasta invocă ModelSim® și rulează automat simularea.
Sinteză în Libero SoC (Pune o întrebare)
Faceți clic pe pictograma Sinteză din Libero SoC. Apare fereastra Sinteză. Proiectul Synplify®. Setați Synplify să utilizeze standardul Verilog 2001 dacă se utilizează Verilog. Pentru a rula Sinteză, faceți clic pe pictograma Executare.
Plasare și rutare în Libero SoC (Pune o întrebare)
Pentru a seta ruta de proiectare în mod corespunzător și a rula Synthesis, faceți clic pe pictograma Layout din Libero SoC și apelați Designer. Core16550 nu necesită setări speciale de plasare și rută.
Core16550 (Pune o întrebare)
Această secțiune oferă informații despre parametrii utilizați în acest nucleu.
Parametri (Pune o întrebare)
Core16550 nu acceptă niciun parametru de nivel superior.
Interfețe principale (Pune o întrebare)
Această secțiune oferă un rezumat al intrărilor și ieșirilor.
Descrierea semnalului I/O (Pune o întrebare)
Următoarele sunt listate definițiile I/O pentru Core16550.
| Nume | Tip | Polaritate | Descriere |
| PRESETN | Intrare | Scăzut | Resetare generală |
| PCLK | Intrare | — | Ceas maestru
PCLK este împărțit la valoarea registrelor divizor. Rezultatul este apoi împărțit la 16 pentru a produce rata baud. Semnalul rezultat este semnalul BAUDOUT. Frontul ascendent al acestui pin este utilizat pentru a afișa stroboscop toate semnalele de intrare și ieșire. |
| PWRITE | Intrare | Ridicat | Activare scriere/citire APB, activ-înalt.
Când este HIGH (nivelul HIGH), datele sunt scrise la adresa specificată. Când este LOW (nivelul L), datele sunt citite de la adresa specificată. |
| PADDR[4:0] | Intrare | — | Adresă APB
Această magistrală oferă legătura dintre CPU și adresa registrului Core16550, din care se va citi sau scrie. |
| PSEL | Intrare | Ridicat | Selectare APB
Când este HIGH împreună cu PENABLE, citirea și scrierea pe Core16550 sunt activate. |
| PWDATA[7:0] | Intrare | — | magistrală de intrare a datelor
Datele de pe această magistrală vor fi scrise în registrul adresat în timpul unui ciclu de scriere. |
| PENIBIL | Intrare | Ridicat | Activare APB
Când acesta este HIGH împreună cu PSEL, citirea și scrierea pe Core16550 sunt activate. |
| PRDATA[7:0] | Ieșire | — | Magistrală de ieșire a datelor
Această magistrală reține valoarea registrului adresat în timpul unui ciclu de citire. |
| CTSn | Intrare | Scăzut | Ștergeți pentru a trimite
Acest semnal activ-scăzut este o intrare care arată când dispozitivul (modemul) conectat este gata să accepte date. Core16550 transmite aceste informații către CPU prin registrul de stare a modemului. Acest registru indică, de asemenea, că, dacă semnalul CTSn s-a modificat de ultima dată, registrul a fost citit. |
| DSRn | Intrare | Scăzut | Set de date gata
Acest semnal activ-scăzut este o intrare care indică momentul în care dispozitivul (modemul) conectat este gata să stabilească o legătură cu Core16550. Core16550 transmite aceste informații către CPU prin registrul de stare a modemului. Acest registru indică, de asemenea, dacă semnalul DSRn s-a modificat de la ultima citire a registrului. |
| DCDn | Intrare | Scăzut | Detectare purtător de date
Acest semnal activ-scăzut este o intrare care indică momentul în care dispozitivul conectat (modem) a detectat o purtătoare. Core16550 transmite aceste informații către procesor prin registrul de stare a modemului. Acest registru indică, de asemenea, dacă semnalul DCDn s-a modificat de la ultima citire a registrului. |
| PĂCAT | Intrare | — | Date de intrare seriale
Aceste date sunt transmise către Core16550. Sunt sincronizate cu pinul de intrare PCLK. |
| RIn | Intrare | Scăzut | Indicator de apel
Acest semnal activ-scăzut este o intrare care arată când dispozitivul conectat (modem) a detectat un semnal de apel pe linia telefonică. Core16550 transmite aceste informații către procesor prin registrul de stare a modemului. Acest registru indică, de asemenea, când a fost detectat frontul descendent RIn. |
| SUD | Ieșire | — | Date de ieșire serială
Aceste date sunt transmise de la Core16550. Sunt sincronizate cu pinul de ieșire BAUDOUT. |
| RTSn | Ieșire | Scăzut | Solicitare de trimitere
Acest semnal de ieșire activ-scăzut este utilizat pentru a informa dispozitivul atașat (modem-ul) că Core16550 este gata să trimită date. Este programat de CPU prin intermediul registrului Modem Control. |
| Tabelul 4-1. Rezumatul semnalului I/O (continuare) | |||
| Nume | Tip | Polaritate | Descriere |
| DTRn | Ieșire | Scăzut | Terminal de date gata
Acest semnal de ieșire activ-scăzut informează dispozitivul atașat (modem-ul) că Core16550 este gata să stabilească o legătură de comunicații. Este programat de CPU prin intermediul registrului Modem Control. |
| OUT1n | Ieșire | Scăzut | Rezultat 1
Această ieșire activ-scăzut este un semnal definit de utilizator. CPU-ul programează acest semnal prin registrul de control al modemului și este setat la valoarea opusă. |
| OUT2n | Ieșire | Scăzut | Rezultat 2
Acest semnal de ieșire activ-scăzut este un semnal definit de utilizator. Este programat de CPU prin registrul de control al modemului și este setat la valoarea opusă. programat. |
| INTR | Ieșire | Ridicat | Întrerupere în așteptare
Acest semnal de ieșire activ-înalt este semnalul de ieșire de întrerupere de la Core16550. Este programat să devină activ la anumite evenimente, informând procesorul că a avut loc un astfel de eveniment (pentru mai multe detalii, consultați Registrul de identificare a întreruperilor). Apoi, procesorul ia măsurile corespunzătoare. |
| BAUDOUTn | Ieșire | Scăzut | Baud ieșire
Acesta este un semnal de ceas de ieșire derivat din ceasul de intrare pentru sincronizarea fluxului de date de ieșire de la SOUT. |
| RXRDYN | Ieșire | Scăzut | Receptor gata să recepționeze transmisii.
CPU-ul este indicat prin acest semnal de ieșire activ-scăzut că secțiunea receptorului Core16550 este disponibilă pentru citirea datelor. |
| TXRDYN | Ieșire | Scăzut | Transmițătorul este gata să transmită date.
Acest semnal activ-scăzut indică procesorului că secțiunea transmițătorului Core16550 are spațiu pentru a scrie date pentru transmisie. |
| rxfifo_empty | Ieșire | Ridicat | Primește FIFO gol.
Acest semnal devine HIGH când FIFO-ul de recepție este gol. |
| rxfifo_full | Ieșire | Ridicat | Primește FIFO plin.
Acest semnal devine High când FIFO-ul de recepție este plin. |
Diagrame de sincronizare (Pune o întrebare)
Această secțiune prezintă diagrame de timp ale acestui nucleu.
Ciclul de scriere a datelor și ciclul de citire a datelor (Pune o întrebare)
Figura 5-1 și Figura 5-2 prezintă relațiile de temporizare ale ciclului de scriere și ale ciclului de citire în raport cu ceasul sistemului APB, PCLK.
Înregistrare Scriere (Pune o întrebare)
Următoarea figură arată că semnalele Adresă, Selectare și Activare sunt memorate și trebuie să fie valide înainte de frontul ascendent al PCLK. Scrierea are loc la frontul ascendent al semnalului PCLK.
Înregistrare Citire (Pune o întrebare)
Următoarea figură arată că semnalele Adresă, Selectare și Activare sunt memorate și trebuie să fie valide înainte de frontul ascendent al PCLK. Citirea are loc la frontul ascendent al semnalului PCLK.
Pentru mai multe detalii despre descrieri și formele de undă de temporizare, consultați specificația AMBA.
Sincronizarea receptorului (Pune o întrebare)
Când receptorul detectează o stare Low (Low) în fluxul de date primit, se sincronizează cu aceasta. După frontul de început, UART-ul așteaptă 1.5 × (lungimea normală a bitului). Acest lucru face ca fiecare bit ulterior să fie citit la mijlocul lățimii sale. Figura următoare ilustrează acest proces de sincronizare.
Figura 5-3. Sincronizarea receptorului
Operațiunea pe bancul de testare (Pune o întrebare)
Doar un singur banc de testare este furnizat cu Core16550: bancul de testare pentru utilizatori Verilog. Acesta este un banc de testare ușor de utilizat, scris în Verilog. Acest banc de testare este destinat modificărilor de către client.
Bench de testare pentru utilizatori (Pune o întrebare)
Următoarea figură prezintă schema bloc a exampdesignul utilizatorului și bancul de testare.
Figura 6-1. Bancul de testare pentru utilizatori Core16550
Bancul de testare pentru utilizatori include un exemplu simpluampun design care servește drept referință pentru utilizatorii care doresc să implementeze propriile designuri.
Bancul de testare, de exempluampAdică, designul utilizatorului implementează un subset al funcționalității testate în bancul de testare pentru verificare, pentru mai multe detalii, consultați Bancul de testare pentru utilizatori. Conceptual, așa cum se arată în Figura 6-1, instanțierea Core16550 este simulată folosind un microcontroler comportamental și o conexiune loopback simulată. De exempluampAdică, bancul de testare pentru utilizatori demonstrează transmisia și recepția de către aceeași unitate Core16550, astfel încât să puteți obține o înțelegere de bază a modului de utilizare a acestui nucleu.
Bancul de testare pentru utilizatori demonstrează configurarea de bază, operațiunile de transmisie și recepție ale Core16550. Bancul de testare pentru utilizatori efectuează următorii pași:
- Scrieți în registrele de control.
- Verificați datele primite.
- Activați transmisia și recepția.
- Citiți registrele de control.
- Transmite și primește un octet.
Utilizarea și performanța dispozitivului (Pune o întrebare)
Următorul tabel prezintă datele privind utilizarea și performanța Core16550. Tabelul 7-1. Utilizarea și performanța Core16550 PolarFire și PolarFire SoC
| Detalii despre dispozitiv | Resurse | RAM | |||
| Familial | Dispozitiv | 4LUT | DFF | Elemente logice | μSRAM |
| PolarFire® | MPF100T- FCSG325I | 752 | 284 | 753 | 2 |
| PolarFire®SoC | MPFS250TS-FCSG536I | 716 | 284 | 720 | 2 |
| RTG4™ | RT4G150-1CG1657M | 871 | 351 | 874 | 2 |
| IGLOO® 2 | M2GL050TFB GA896STD | 754 | 271 | 1021 | 2 |
| SmartFusion® 2 | M2S050TFBG A896STD | 754 | 271 | 1021 | 2 |
| SmartFusion® | A2F500M3G- STANDARD | 1163 | 243 | 1406 | 2 |
| IGLOO®/IGLOOE | AGL600- STANDARD/AGLE600 V2 | 1010 | 237 | 1247 | 2 |
| Fuziune | AFS600-STD | 1010 | 237 | 1247 | 2 |
| ProASIC® 3/E | A3P600-STD | 1010 | 237 | 1247 | 2 |
| ProASIC Plus® | APA075-STD | 1209 | 233 | 1442 | 2 |
| RTAX-S | RTAX250S- STD | 608 | 229 | 837 | 2 |
| Axcelerator® | AX125-STD | 608 | 229 | 837 | 2 |
Probleme rezolvate (Pune o întrebare)
Următorul tabel listează toate problemele rezolvate pentru diferitele versiuni Core16550.
Tabelul 8-1. Probleme rezolvate
| Versiune | Schimbări |
| v3.4 | Core16550 folosește cuvântul cheie „break” din System Verilog ca nume de registru, ceea ce cauza erori de sintaxă. Această problemă a fost remediată prin înlocuirea cuvântului cheie cu un alt nume. Adăugat suport pentru familia PolarFire® |
Istoricul revizuirilor (Pune o întrebare)
Istoricul revizuirilor descrie modificările care au fost implementate în document. Modificările sunt listate după revizuire, începând cu cea mai recentă publicație.

Suport FPGA pentru microcip
Grupul de produse Microchip FPGA își susține produsele cu diverse servicii de asistență, inclusiv Serviciul Clienți, Centrul de asistență tehnică pentru clienți, un website-ul web și birourile de vânzări la nivel mondial. Clienților li se recomandă să viziteze resursele online ale Microchip înainte de a contacta serviciul de asistență, deoarece este foarte probabil ca întrebările lor să fi primit deja răspuns.
Contactați Centrul de asistență tehnică prin intermediul website la www.microchip.com/support Menționați numărul piesei dispozitivului FPGA, selectați categoria de carcasă adecvată și încărcați designul files în timp ce creați un caz de asistență tehnică.
Contactați Serviciul Clienți pentru asistență non-tehnică pentru produse, cum ar fi prețul produselor, upgrade-uri ale produsului, informații de actualizare, starea comenzii și autorizare.
- Din America de Nord, sunați la 800.262.1060
- Din restul lumii, sunați la 650.318.4460
- Fax, de oriunde în lume, 650.318.8044
Informații despre microcip
Mărci comerciale
Numele și sigla „Microcip”, sigla „M” și alte nume, logo-uri și mărci sunt mărci comerciale înregistrate și neînregistrate ale Microchip Technology Incorporated sau ale afiliaților și/sau filialelor sale din Statele Unite și/sau alte țări („Microchip mărci comerciale”). Informații despre mărcile comerciale ale microcipului pot fi găsite la https://www.microchip.com/en-us/about/legal-information/microchip-trademarks
ISBN:
Aviz legal
- Această publicație și informațiile de aici pot fi utilizate numai cu produsele Microchip, inclusiv pentru a proiecta, testa și integra produsele Microchip cu aplicația dumneavoastră. Utilizarea acestor informații
în orice alt mod încalcă acești termeni. Informațiile referitoare la aplicațiile dispozitivului sunt furnizate numai pentru confortul dvs. și pot fi înlocuite de actualizări. Este responsabilitatea dumneavoastră să vă asigurați că aplicația dumneavoastră corespunde specificațiilor dumneavoastră. Contactați biroul local de vânzări Microchip pentru asistență suplimentară sau obțineți asistență suplimentară la www.microchip.com/en-us/support/design-help/client-support-services - ACESTE INFORMAȚII ESTE FURNIZATE DE MICROCHIP „CA AȘA ESTE”. MICROCHIP NU OFERĂ DECLARAȚII SAU GARANȚII DE NICIUN FEL, EXPRESE SAU IMPLICITE, SCRISE SAU ORALE, LEGALE SAU DE ALTE ALTE, LEGATE DE INFORMAȚII INCLUSIVĂ, DAR FĂRĂ A SE LIMITA LA NICIO GARANȚIE IMPLICITĂ DE NEÎNCĂLCARE, COMERCIALITATE ȘI PARTICIBILITATE, PENTRU O PUBLICABILITATE. GARANȚII LEGATE DE STARE, CALITATE SAU PERFORMANȚĂ.
- ÎN NICIO SITUAȚIE, MICROCHIP NU VA FI RĂSPUNDĂTOR PENTRU NICIO PIERDERE, DAUNĂ, COST SAU CHELTUIALĂ INDIRECTĂ, SPECIALĂ, PUNITIVĂ, INCIDENTALĂ SAU CONSECUTIVĂ DE ORICE FEL, LEGATĂ DE INFORMAȚII SAU DE UTILIZAREA ACESTORA, INDIFERENT DE CAUZA AR FI PROVOCATĂ, CHIAR DACĂ MICROCHIP A FOST INFORMAT DESPRE POSIBILITATE SAU DAUNELE SUNT PREVIZIBILE. ÎN MĂSURA MAXIMĂ PERMISĂ DE LEGE, RĂSPUNDEREA TOTALĂ A MICROCHIP PENTRU TOATE RECLAMAȚIILE LEGATE ÎN ORICE FEL DE INFORMAȚII SAU DE UTILIZAREA ACESTOASTA NU VA DEPĂȘI SUMA TAXELOR, DACĂ EXISTĂ, PE CARE LE-AȚI PLĂTIT DIRECT CĂTRE MICROCHIP PENTRU INFORMAȚII.
- Utilizarea dispozitivelor Microcip în aplicații de susținere a vieții și/sau de siguranță este în întregime pe riscul cumpărătorului, iar cumpărătorul este de acord să apere, să despăgubească și să țină inofensiv Microcipul de orice daune, pretenții, procese sau cheltuieli care rezultă dintr-o astfel de utilizare. Nicio licență nu este transmisă, implicit sau în alt mod, în baza niciunui drept de proprietate intelectuală Microchip, cu excepția cazului în care se specifică altfel.
Caracteristica de protecție a codului dispozitivelor cu microcip
Rețineți următoarele detalii despre caracteristica de protecție a codului de pe produsele Microcip:
- Produsele cu microcip îndeplinesc specificațiile conținute în fișa lor specială pentru microcip.
- Microchip consideră că familia sa de produse este sigură atunci când este utilizată în modul prevăzut, în cadrul specificațiilor de funcționare și în condiții normale.
- Microcipul apreciază și își protejează în mod agresiv drepturile de proprietate intelectuală. Încercările de a încălca funcțiile de protecție prin cod ale produselor Microchip sunt strict interzise și pot încălca Digital Millennium Copyright Act.
- Nici Microcip și nici alt producător de semiconductori nu poate garanta securitatea codului său. Protecția prin cod nu înseamnă că garantăm că produsul este „incasibil”. Protecția prin cod este în continuă evoluție. Microchip se angajează să îmbunătățească continuu caracteristicile de protecție prin cod ale produselor noastre.
Ghidul utilizatorului
© 2025 Microchip Technology Inc. și filialele sale
Documente/Resurse
![]() |
Receptor-emițător asincron universal MICROCHIP Core16550 [pdfGhid de utilizare v3.4, v3.3, Core16550 Transmițător Receptor Asincron Universal, Core16550, Transmițător Receptor Asincron Universal, Transmițător Receptor Asincron, Receptor Transmițător, Transmițător |
