Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




TRANSMISIE ASINCRON_ REALIZAT_ CU CIRCUITE SIO Z80 sau I 8250

Informatica


Lucrare de laborator nr.1



TRANSMISIE ASINCRON_ REALIZAT_ CU CIRCUITE SIO-Z80 sau I 8250

Scopul lucr_rii

Lucrarea are ca scop cunoa_terea facilit__ilor pentru comunica_ie _i exersarea transmisiei asincrone între dou_ calculatoare, pe linie serial_, cu ajutorul circuitelor SIO- Z80 sau I 8250.

Considera_ii teoretice

Folosirea circuitului SIO-Z80

Func_ia pricipal_ a circuitului este transformarea serie-paralel, paralel-serie _i comanda transferului de date. Având func_ii multiple programabile, circuitul se poate adapta la cele mai variate moduri de transmisiuni seriale.

Circuitul SIO-Z80 poate realiza transfer asincron sau sincron pe dou_ canale complet independente.

Cele mai importante caracteristici ale circuitului sunt:

-capsula DIP cu 40 de pini;

-alimentare cu o singur_ tensiune +5Vcc;

-ceas cu o singur_ faz_ de 5V tensiune de vârf;

-toate intr_rile _i ie_irile sunt compatibile TTL;

-are doua canale full duplex total independente;

-viteza 0-550 Kbps la ceas de 2.5 MHz;

-registru de intrare cu tampon de 4 caractere;

-registru de ie_ire cu tampon de 2 caractere;

-caracteristici pentru transmisia asincron_:

-caractere de 5,6,7sau 8 bi_i;

-1, 11/2 sau 2 bi_i de STOP;

-paritate par_, impar_ sau f_r_ paritate;

-detectare erori de paritate, de cadru sau dep__ire;

-detectare _i generare de pauz_;

Fuc_ionare în regim asincron

Înainte de a începe un transfer asincron cu SIO-Z80, acest circuit trebuie programat cu parametrii transferului:

-lungime caracter;

-numar bi_i de stop;

-paritate;

-mod întreruper 111m126b e;

-regim de lucru emisie/recep_ie;

Programarea se face prin înscrierea regi_trilor de parametrii (regi_tri de scriere). De re_inut c_ WR4 trebuie înscris înainte de WR1, WR3 _i WR5.

Dac_ datele sosesc prin modem sau interfa_a RS-232C, bitul de validare a transmisiei (TE) trebuie trimis împreuna cu semnalele -RTS _i -DTR. Transferul nu are loc pân_ nu se înscrie bitul de validare a transmisiei. (- înseamn_ c_ semnalul este activ pe 0).

Validarea automat_ a SIO-Z80 permite programatorului s_ transmit_ primul caracter f_r_ s_ a_tepte semnalul -CTS. Dac_ bitul de validare automat_ D5 în WR3 e pe 1 înainte de a începe transferul, SIO-Z80 a_teapt_ ca -CTS s_ treac_ în 0. Semnalele - CTS, -DCD _i -SYNC se pot folosi - pe lâng_ func_iile obi_nuite - _i ca semnale de I/E. (-CTS se poate folosi numai dac_ bitul de validare automat_ e pe 0).

Formatul caracterului asincron este urmatorul:

START

D0

D1

. . .

Dn

P

STOP

STOP 1, 1˝ sau 2 bi_i

n=5,6,7sau 8

P(bit paritate) prezent sau nu

Registrele WR3-WR5 se încarc_ cu parametrii transmisiei. WR2 con_ine vectorul de întreruperi numai pentru canalul B iar WR1 stabile_te modurile de întreruperi _i de transfer. În modul asincron WR6 _i WR7 nu se folosesc.

Se prezint_ în continuare o secven__ tipic_ de program pentru a stabili emisie/recep_ie full duplex pe un canal:

1) STABILIRE CONDI_II INI_IALE

Se execut_ ac_iunile de înscriere:

-în WR0 -_TERGERE CANAL (RESET SIO-Z80)

-în WR0 -POINTER 2 (URMEAZ_ WR2)

-în WR2 -VECTOR DE ÎNTRERUPERE (NUMAI CANAL B)

-în WR0 -POINTER 4 _I RESET ÎNTRERUPERE EXTERN_

-în WR4 -PARAMETRII (mod asincron, paritate, rat_, etc.)

-în WR0 -POINTER 3

-în WR3 -PARAMETRII RECEP_IE

-în WR0 -POINTER 5

-în WR5 -PARAMETRII EMISIE ; aici parametrii emisiei _i recep_iei sunt stabili_i, validarea automat_ a emisiei se face cu -CTS iar a recep_iei cu -DCD

-în WR0 -POINTER 1 _i _tergere întreruperi externe

-în WR1 -validare întreruperi la fiecare caracter recep_ionat, la emisia fiec_rui caracter, validare întreruperi externe; înhibare WAIT/READY; modificare stare vector de întrerupere

OBSERVA_IE: S-a selectat regim de lucru pe baz_ de întreruperi la recep_ie _i emisie. Cu întrerupere extern_ generat_ de intr_rile -CTS, -DCD, -SYNC sau secven_a Break. Modificarea vectorului de întreruperi se refer_ numai la canalul B

-transmisie la SIO-Z80 a primului caracter (altfel nu va fi întrerupere la emisie)

STARE DE A_TEPTARE

;se execut_ orice program care va fi întrerupt de SIO-Z80, vectorul de întrerupere arat_ cauza întreruperii

3a)  RUTINA RECEP_IE CARACTER

-la întrerupere se încarc_ RR2 în UCP (aici se g_se_te vectorul de întreruperi )

-citire caracter din SIO-Z80

-refacere parametrii _i pointeri

-întoarcere din întrerupere RTI

3b)  RUTINA DE ÎNTRERUPERE "BUFFER EMISIE GOL"

-transmisie caracter la SIO-Z80

-refacere parametrii _i pointeri

-RTI

3c)  RUTINA DE ÎNTRERUPERE EXTERN_/STARE

-citire RR0 în UCP

-execu_ie rutin_ eroare corespunz_toare

-RTI

3d)  RUTINA DE ÎNTRERUPERE EXTERN_/STARE

-citire RR1 în UCP

-execu_ie rutin_ eroare corespunzatoare

-RTI

TERMINARE

-redefinire mod întreruperi emisie/recep_ie, dac_ s-a terminat emisia sau recep_ia

-înhibare mod emisie _i recep_ie

-stabilire ie_iri modem (la emisie bitul "all sent status" arat_ sfâr_itul transmisiei)

OBSERVA_II PRIVIND TRANSMISIA ASINCRON_

-ie_irea emi__torului în repaus este în '1'; se poate for_a în '0' cu Break (WR5-D4)

-SIO-Z80 adaug_ automat la caracterul de emis primit de la UCP bi_ii START STOP _i de paritate!

-datele seriale apar la ie_irea TxD cu frecven_a 1/1, 1/16, 1/32 sau 1/64 din frecven_a semnalului TxC; datele apar pe frontul c_z_tor al TxC

-la validarea întreruperii externe semnalele -DCD, -CTS _i -SYNC pot cere întrerupere (daca sunt active un anumit timp); La emisie aceast_ proprietate a SIO-Z80 se folose_te pentru verificarea semnalului -CTS al modemului.

OBSERVA_II PRIVIND RECEPTIA ASINCRON_

- recep_ia începe cu pozi_ionarea bitului de validare a recep_iei; dac_ s-a programat validare automat_ e necesar ca _i -DCD s_ fie pe '0'

- pe intrarea RxD nivelul '0' înseamn_ bitul de START care trebuie s_ fie pe '0' 11/2 perioade de ceas

- la ceas de 1/1 sincronizarea trebuie facut_ din exterior

- receptorul testeaz_ linia RxD pe frontul cresc_tor al TxC

- registrul de deplasare de recep_ie are în continuare 3 regi_trii astfel ca UCP s_ aibe suficient timp pentru servirea întreruperii; bi_ii de control _i de eroare se memoreaz_ la fel în 4 regi_trii consecutivi.

- eroarea de paritate se produce (RR1-D4) dac_ paritatea caracterului intrat nu coincide cu paritatea programat_ la receptor.

- se produce eroare de ritm/cadru (framing) (RR1-D6) dac_ caracterul sose_te f_r_ bi_i de stop; aceast_ eroare nu se memoreaz_!

- se produce eroare de suprapunere (overrun) (RR1-D5) daca receptorul prime_te mai mult de 3 caractere _i UCP n-a citit nici un caracter; aceast_ eroare ca _i eroarea de paritate se poate _terge numai prin RESET; la aceast_ eroare penultimul caracter se pierde

- se recomand_ ca în rutinele de servire a diferitelor întreruperi s_ se citeasc_ mai întâi registrul de stare _i apoi datele!

- la modul de transfer programat între SIO-Z80 _i UCP, UCP verific_ bitul 'caracter recep_ionat disponibil' (RR0-D0); dup_ citirea efectiv_ de UCP a acestui caracter, acest bit se _terge automat.

PROGRAMAREA CIRCUITULUI DE COMUNICA_IE

SERIAL_ UART 8250

Circuitele de tip UART (Universal Asynchronous Receiver Transmiter) si de tip USART(Universal Synchronous Asynchronous Receiver Transmiter) îndeplinesc urm_toarele sarcini principale în procesul comunic_rii între calculatoare:

- conversia semnalelor paralele de la unitatea central_ a calculatorului în semnale seriale pentru transmisia spre exterior _i invers

- ad_ugarea la emisie a bi_ilor de START, STOP _i paritate precum _i eliminarea lor la recep_ie

- transmiterea fiec_rui bit la viteza setat_, calculul bitului de paritate dac_ e necesar _i raportarea erorilor generate în timpul comunica_iei

- generarea semnalelor de control a comunica_iei conform protocolului dorit precum _i testarea st_rii lor

Principalii pini de conectare ai unui circuit de tip UART sunt: pinii pentru transferul datelor paralele (în num_r de opt), doi pini pentru recep_ia _i emisia datelor seriale, pini pentru semnalele de ceas dup_ care se calculeaz_ viteza de comunica_ie, pini pentru semnalele de comand_ sau de stare, pini pentru semnale de întrerupere, pin pentru selec_ia circuitului _i pini pentru semnalele de tip 'hand- shake' de sincronizare cu exteriorul.

Circuitul posed_ trei tipuri de registre:

- registre de control

- registre de stare

- registre tampon pentru date

Registrele de control

Exist_ patru registre de control folosite pentru a primi comenzi de la unitatea central_ _i anume: registrul de control al liniei, registrul de control al modemului, registrul pentru întreruperi _i registrele pentru stabilirea vitezei de comunica_ie.

Registrul de control al liniei este folosit pentru stabilirea parametrilor comunica_iei; are urmatoarea specifica_ie:

bi_ii 0 _i 1 sunt folosi_i pentru stabilirea lungimii caracterului astfel:

Bit 0 Bit 1 Lungime caracter (bi_i)

0 0 5

0 1 6

1 0 7

1 1 8

bitul 2 stabile_te num_rul de bi_i de STOP folosi_i, astfel:

bit 2=0 implic_ folosirea unui bit de STOP

bit 2=1 implic_ folosirea a doi bi_i de STOP cu excep_ia cazului în care lungimea caracterului este de 5 bi_i _i când specific_ folosirea a un bit _i jumatate de STOP.

bitul 3 permite folosirea parit__ii, astfel:

bit 3=0 implic_ nefolosirea parit__ii

bit 3=1 implic_ folosirea parit__ii

bitul 4 selecteaz_ tipul parit__ii folosite, astfel:

bit 4=0 selecteaz_ paritate par_

bit 4=1 selecteaz_ paritate impar_

(el este folosit în conjunc_ie cu bitul 3).

bitul 5 este folosit la setarea bitului de paritate, astfel:

bit 5=0 seteaz_ bitul de paritate la 1 logic

bit 5=1 seteaz_ bitul de paritate la 0 logic

bitul 6 este folosit la generarea comenzii de break, respectiv la trecerea ie_irii în zero logic (starea SPACE) cât timp bitul este setat

bitul 7 numit _i 'bit de acces la registrul divizor' are semnifica_ia:

bit 7=0 implic_ ca o opera_ie de citire/scriere s_ acceseze registrele de emisie/recep_ie sau de întreruperi

bit 7=1 implic_ ca o opera_ie de citire/scriere s_ acceseze registrul divizor ce fixeaz_ rata de transmisie

Registrul de control al modemului

Specifica_ia bi_ilor acestui registru este urmatoarea:

bit 0 dac_ este setat la 1 logic pune ie_irea DTR (Data Terminal Ready) la 0 logic permi_ându-se astfel unui dispozitiv extern s_ emit_ c_tre calculatorul a c_rui circuit 8250 îl program_m

bit 1 dac_ este setat la 1 logic opereaz_ în acela_i mod asupra semnalului RTS (Request to Send)

bi_ii 2 _i 3 opereaz_ asupra unor ie_iri definite de utilizator numite OUT1 _i OUT2; pot fi folosi_i pentru controlul semnalelor CD _i RI (Carrier Detect _i Ring Indicator), dar la IBM-PC bitul 3 trebuie s_ fie setat pentru a permite folosirea întreruperilor

bit 4 activeaz_ modul de lucru de test _i diagnostic

bi_ii 5-7 sunt permanent zero

Registrul de permisiune a întreruperilor

Este folosit pentru specificarea cauzei generarii întreruperii:

bit 0 seteaz_ ca _i condi_ie de întrerupere existen_a datelor

bit 1 seteaz_ condi_ia de 'registru de transmisie gol'

bit 2 seteaz_ ca _i condi_ie starea liniei de recep_ie

bit 3 propune modemul ca _i generator de întrerupere

bi_ii 4-7 sunt men_inuti la zero logic

Regi_trii divizori ai ratei de transmisie

Rata de transmisie (baud rate) se stabile_te prin divizarea ceasului (1,84MHz) cu un num_r setat în ace_ti doi regi_tri, rezultând o frecven_a de 16 ori rata de transmisie. Tabelul de mai jos d_ valorile înscrise în registre pentru ob_inerea celor mai uzuale rate:

Baud rate LSB MSB

300 1h 80h

1200 0 60h

2400 0 30h

4800 0 18h

9600 0 0Ch

Registrele de stare

Registrul de stare al liniei

Este folosit pentru ob_inerea de informa_ii asupra corectitudinii emisiei sau recep_iei datelor. Semnifica_ia bi_ilor este urmatoarea:

bit 0 -Data ready-specific_ dac_ este 1 logic ca un caracter a fost recep_ionat _i plasat în registrul de recep_ie

bit 1 -Overrun error-specific_ dac_ este setat ca un caracter a fost recep_ionat înainte ca anteriorul s_ fi fost procesat

bit 2 -Parity error-dac_ este setat indic_ faptul c_ ultimul caracter recep_ionat are bitul de paritate eronat

bit 3-Framing error-dac_ e setat indic_ faptul c_ ultimul bit sosit are bit de stop eronat

bit 4-Break interrupt-indic_ recep_ia unui 'break', adic_ linia de recep_ie a fost _inut_ la zero un timp mai mare decât durata unui caracter

bit 5-Transmitter holding register empty- indic_ faptul c_ circuitul UART este preg_tit s_ primeasc_ un nou caracter pentru a-l emite

bit 6-Transmitter shift register empty-indic_ c_ UART-ul nu este în procesul de emisie a unui caracter; starea acestui bit nu e testat_ de programele de comunica_ie

bit 7- bit _inut la zero

Registrul de stare modem

Con_ine informa_ii despre starea liniilor de comunica_ie cu modemul (cu exteriorul).

bit 0 specific_ dac_ a avut loc o modificare a semnalului CTS

bit 1 se refer_ la modificarea semnalului DSR

bit 2 indic_ trecerea din starea ON în starea OFF a lui RI

bit 3 indic_ schimbare pe linia de recep_ie

bit 4 indic_ starea HIGH pentru linia CTS

bit 5 indic_ starea HIGH pentru linia DSR

bit 6 indic_ starea HIGH pentru linia RI

bit 7 indic_ starea HIGH pentru linia de recep_ie

O parte a bi_ilor (bi_ii 0,1,3)indic_ schimbarea st_rii liniilor respective , lucru folosit la generarea întreruperilor de stare modem.Al_i bi_i (de la 4 la 7) indic_ prin valoarea lor starea liniei :bit=1 indic_ stare HIGH a liniei corespunz_toare, lucru folosit la programarea circuitului în modul interogare (polling).

Registrul de identificare a întreruperii

Registrul de identificare a întreruperii d_ informa_ii despre starea întreruperilor în a_teptare.

bit 0=1 semnific_ neexisten_a întreruperilor în a_teptare

bit 0=0 indic_ întreruperi în a_teptare , tipul ei fiind dat de bi_ii 1 _i 2 conform urm_torului tabel:

bit 2 bit1 tip întrerupere

1 1 stare linie

1 0 data recep_ionat_

0 1 registru de transmisie gol

0 0 stare modem

Bi_ii 3-7 sunt seta_i zero.

Registrele tampon

Circuitul are dou_ registre tampon : unul de recep_ie-care p_streaz_ ultimul caracter recep_ionat, _i unul de emisie - care p_streaz_ urm_torul caracter ce va fi transmis.

Programarea circuitului

1. Folosirea metodei interog_rii (polling)

Dac_ se folose_te metoda interog_rii _i nu se folose_te de loc metoda întreruperilor, primul pas este de inactivare a lor prin setarea la zero a registrului de permisiune a întreruperilor. Dac_ se dore_te transmisia unei secven_e, programul va consta într-o bucla ce va dura cât timp sunt caractere de transmis. În cadrul ei se va citi periodic registrul de stare a liniei _i registrul de stare a modemului. Când registrul tampon de emisie este gol _i semnalele de modem sunt active poate avea loc transmisia caracterului.

Procesul de recep_ie este similar în sensul c_ întâi se activeaz_ semnalele de modem pentru preg_tirea liniei de comunica_ie, apoi se intr_ în bucla în care se testeaz_ registrul de stare linie- bitul ce indic_ recep_ia unui caracter- dup_ care se preia caracterul din registrul buffer de recep_ie.

2. Folosirea metodei întreruperilor

Pentru programarea UART pentru transfer prin întreruperi, pe lânga opera_iile uzuale, este nevoie de una suplimentar_ ce se datoreaz_ unui defect de proiectare în calculatorul IBM-PC. Este vorba de secven_a:

mov dx,3fch ;registrul control modem

mov al,8

out dx,al

care are ca efect pozi_ionarea ie_irii OUT2 a UART pe 1 _i ca atare validarea liniei IRQ4 pe care e conectat UART( ca COM1, c_ci COM2 e legat la IRQ3) . În mod normal OUT2 n-ar trebui s_ influen_eze programarea UART în întreruperi.

E necesara resetarea UART înainte de programare; ea se face prin citiri sau scrieri în registre, astfel:

mov dx,3f9h; registru validare întreruperi

mov al,0

out dx,al

mov dx,3fdh; registru stare linii date

in al,dx

mov dx,3feh; registru stare modem

in al,dx

mov dx,3f8h; registru transmisie/recep_ie

in al,dx

mov dx,3fah; registru identificare întreruperi

in al,dx

Se remarc_ faptul c_ adresele porturilor de intrare / ie_ire pentru comunica_ia serial_ la calculatoarele compatibile PC constituie o serie ce începe de la adresa 3F8H pentru primul adaptor (COM1) _i 2F8H pentru al doilea, la care se adaug_ un offset corespunz_tor pentru adresarea fiec_rui registru UART, dup_ cum se arat_ în tabela urm_toare:

offset adr.COM1 adr.COM2 registru selectat

0 3F8 2F8 TX buffer

0 3F8 2F8 RX buff.

0 3F8 2F8 octet divizor LSB

1 3F9 2F9 octet divizor MSB

1 3F9 2F9 valid. întreruperi

2 3FA 2FA identif. întrerupere

3 3FB 2FB control linii

4 3FC 2FC control modem

5 3FD 2FD stare linii

6 3FE 2FE stare modem

Priorit__ile interne în cadrul sistemului de întreruperi sunt fixe, ele având urmatoarea ordine descresc_toare: stare linie recep_ie, date recep_ie, registru emisie gol, stare modem.

Exemplu de programare:

mov dx,3fbh;registru control linii

in al,dx

mov bl,al

mov al,80h

out dx,al;pozi_ionare registru divizor

mov dx,3f8h;octet divizor inferior

mov al,5;fixare rata de transmisie(23040bd)

out dx,al

mov dx,3f9h;octet divizor superior

xor al,al

out dx,al

mov al,bl;refacere

and al,7bh

or al,1bh ;control linii

mov dx,3fbh

out dx,al

in al,dx

and al,7fh

out dx,al ;validare întreruperi

mov al,1

mov dx, 3f9h

out dx,al

Mersul lucr_rii

1. Se studiaz_ rutinele de programare oferite, încercând în_elegerea lor.

2. Pe baza scheletului prezentat s_ se scrie rutinele pentru 2 calculatoare FELIX-PC (având interfa_a serial_ cu) care s_ transfere un bloc de date de lungime fix_ (de ex. 128 octe_i). Adresele porturilor se vor lua din documenta_ia calculatorului.

3. Se vor compara programele scrise cu cele din laborator, observând _i explicând diferen_ele.

4. Se va r_spunde la urmatoarele întreb_ri :

- cum se stabile_te viteza de transmisie

- ce erori se pot produce _i cum se elimin_ ele

Probleme suplimentare:

5. Completa_i rutinele scrise pentru func_ionare fullduplex

6. Completa_i rutinele scrise pentru a realiza transferul unui fi_ier cu sau f_r_ verificare!


Document Info


Accesari: 1354
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )