1 / 21

Wag siklusse Seriële Poorte RS232 Spesifikasie PC- seriële poort PC UART (8250) Modems

Wag siklusse Seriële Poorte RS232 Spesifikasie PC- seriële poort PC UART (8250) Modems Pariteit en foutkorreksie Programvoorbeeld. WAGSIKLUSSE "Wait states" [Hoofstuk 9.5]. T1. T2. T3. T4. TCLCL. TCLAV. TCLDX. TDVCL. FLOAT. ADR. DATA IN. /RD. TCLRL. TRLDV ?.

shania
Télécharger la présentation

Wag siklusse Seriële Poorte RS232 Spesifikasie PC- seriële poort PC UART (8250) Modems

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Wag siklusse • Seriële Poorte • RS232 Spesifikasie • PC- seriële poort • PC UART (8250) • Modems • Pariteit en foutkorreksie • Programvoorbeeld RS245-2003-Lesing 20

  2. WAGSIKLUSSE "Wait states" [Hoofstuk 9.5] T1 T2 T3 T4 TCLCL TCLAV TCLDX TDVCL FLOAT ADR DATA IN /RD TCLRL TRLDV ? DATA moet hier gereed wees sodat die 8086 dit hier kan lees TAVDV ? TAVDV = 3TCLCL -TCLAVmax -TDVCLmin "Memory access time" RS245-2003-Lesing 20

  3. Indien die geheue (of poort) te stadig is, kan wagsiklusse bygevoeg word. Ekstra kloksiklusse word tussen T3 en T4 ingevoeg indien READY = 0. Die READY ingang moet aan die volgende voldoen: Ekstra klok tussen T3 en T4 (Tye vir 8086-1) T4 T3 TW Data een kloksiklus later gelees READY [10MHz 8086] TRYLCL =10 ns TCHRYX = 20 ns Ready moet vroeg genoeg laag gaan en lank genoeg laag bly om TW te genereer, maar as jy dit te lank laag hou genereer jy meer as een wagsiklus: TRYLCL en TCHRYX. RS245-2003-Lesing 20

  4. 'n Gebufferde minimummodus 8086 stelsel (uit Lesing 10) Gebruik oopkollektor aandrywing om die 8284se READY1 of READY2 laag te trek. RS245-2003-Lesing 20

  5. Seriële Poorte [11-6] Seriële poorte dra data serieel in tyd oor. Sinchronisasie moet dus op een of ander manier bewerkstellig word sodat die ontvanger weet watter bis van 'n greep dit besig is om te ontvang. Asinchrone seriële kommunikasie maak van 'n begin ("start") en 'n stop bis gebruik om sinchronisasie te verseker. 1 1 0 1 1 1 1 0 stop bisse stop bisse 3.33 ms begin ("start") bis Die mins belangrike bis word eerste gestuur. Bostaande stel dus die getal 7BH voor. Indien een bis 3.33 ms lank is, kan 300 bisse per sekonde gestuur word. Dit gee 'n bistepo van 300 baud. RS245-2003-Lesing 20

  6. Hoe lank neem dit om een greep te stuur as een begin en twee stopbisse gebruik word? 11*3.33 ms = 36.63 ms (27.3 grepe per sekonde) Dit is vinnig genoeg vir data wat byvoorbeeld op 'n sleutelbord ingetik word, maar heeltemal te stadig vir die ander toepassings. Spoed is die grootste probleem by seriële kommunikasie. Die grootste voordeel is dat dit baie minder geleiers benodig as wanneer data parallel oorgedra word en die enigste praktiese manier is om data oor telefoonlyne oor te dra. Aangesien die bandwydte van telefoonlyne beperk is (ongeveer 300 tot 3300 Hz), moet spesiale modulasietegnieke (modems) gebruik word om die data oor te dra. RS245-2003-Lesing 20

  7. Die bistempo waarteen een rekenaar data versend en die bistempo wat die ontvanger verwag moet dieselfde wees. Die ontvanger kyk na die spanningsvlak van die ontvangde sein in die (verwagte) middel van elke bis. 'n Fout van ongeveer 6% is die maksimum wat hanteer kan word. "start" 6% te lank Die ontvanger monster die laaste bis baie na aan die flank Die ontvanger verwag die middel van die eerste bis hier Met kwarts kristal ossillators is die toleransie maklik bereikbaar. RS245-2003-Lesing 20

  8. 'n Eenvoudige hardeware implementering sal wag vir 'n afgaande flank (A). Die stelsel wag dan 1.5 biswydtes en klok die eerste bis (B) van die opeenvolgende 8 bisse in 'n skuiregister. parallelle data seriële data Skuifregister Beheerlogika "gereed" Ossillator Frekwensie = 16x bistempo (sê) A B 1.5 /bistempo (= 24 periodes van die ossillator) RS245-2003-Lesing 20

  9. RS232 Spesifikasie (p 490 (karig)) Die Seriële poort van die PC voldoen aan die RS232C spesifikasie: RS232C SPESIFIKASIE: UITTREESPANNING: Logiese 1 : - 5 V tot -15 V Logiese 0 : + 5 V tot +15V INTREESPANNING: Logiese 1 : -3 V tot -25 V Logiese 0 : + 3 V tot +25 V Die ruisspeling is dus 2 V. Vergelyk dit met gewone 5 V TTL : "1" Uitgang:2.4 V; Ingang 2.0V "0" Uitgang:0.4V; Ingang 0.8V Speling dus slegs 0.4 V Die PC het 'n +12V en -12V spanningsbron vir die RS232 poort. Die uittreespannings val dus binne die gespesifiseerde spannings. RS245-2003-Lesing 20

  10. PC-seriepoort (Sien fig 11-24 vir 25 pen poort) Die PC sok is normaalweg 'n D-tipe met 9 penne. 2 : RX Receive (Nota: 2 en 3 omgekeer vir 25 pen poort!) 3 : TX Transmit 4 : DTR Data terminal ready 5 : GND Ground (Grond op pen 7 vir 25 pen poort ) 6 : DSR Data set ready 7 : RTS Request to send 8 : CTS Clear to send 1 : DCD (data carrier detect) en 9 : RI (Ring indicator) word vir modem verbindings gebruik. Indien jy nie die CTS lyn en DSR lyn gaan monitor nie is dit slegs nodig om TX aan RX (en RX aan TX) en die twee rekenaars se grondlyne te verbind. Verbind CTS aan RTS en DSR aan DTR as wil handskud (byvoorbeeld as jy vir die sender wil sê dat die data te vinnig kom stel jy DTR "not ready") RS245-2003-Lesing 20

  11. PC UART (8250 of ekwivalent) [11-6] Die PC16550D wat in Brey beskryf word het 'n interne Fifo van 16 bisse. (Ons ignoreer vir eers die Fifo.) 8250 Inligting vir COM1 : (Gebruik 2F8H ens vir die COM2 poort) Port addres Register 3F8H * transmitter holding register 3F8H * receiver data register 3F8H ~ baud-rate divisor (LSB) 115200/baud-rate 3F9H ~ baud-rate divisor (MSB) 3F9H * Interrupt-enable register 3FAH Interrupt identification register 3FBH Line-control register 3FCH modem-control register 3FDH line-status register 3FEH modem-status register * Bit 7 of the line control register = 0 ~ Bit 7 of the line control register = 1 RS245-2003-Lesing 20

  12. Line-control register 3FBH of 2FBH: 7 6 5 4 3 2 1 0 Character length 0 0 = 5 bits 0 1 = 6 bits 1 0 = 7 bits 1 1 = 8 bits 0 : Normal value 1 : address baud-rate divisors Stop bits : 0 = 1 1 = 1.5 if character length = 5 1 = 2 if character length > 5 Parity 0 0 No parity 1 0 No parity 0 1 Odd parity 1 1 Even parity 0 : Disabled 1 : set break. Serial data out = 0 regardless 0 : No effect 1 : If bit 3 = 1 and bit 4 = 0 then parity bit allways = 1 If bit 3 =1 and bit 4 = 1 then parity bit allways = 0 If bit 3 = 0 then no parity bit. RS245-2003-Lesing 20

  13. Modem-control register 3FCH of 2FCH: 7 6 5 4 3 2 1 0 0 0 0 1 = DTR active 1 = RTS active x 0 = disable interrupts 1 = UART is looped back. Nota: Wek blykbaar nie onderbreking op nie RS245-2003-Lesing 20

  14. Interrupt-enable register 3F9H of 2F9H : 7 6 5 4 3 2 1 0 0 0 0 0 1 = enable RX data ready interrupt 1 = enable TX holding register empty interrupt 1 = enable received character error or received break condition interrupt 1 = enable a change in modem status interrupt Nota: Bis 7 van Line control register = 0 RS245-2003-Lesing 20

  15. Interrupt identification register 3FAH of 2FAH: 7 6 5 4 3 2 1 0 0 0 0 0 0 0 = interrupt pending 1 = no interrupts pending 0 0 = modem 0 1 = TX 1 0 = RX 1 1 = error or break condition RS245-2003-Lesing 20

  16. Line status register 3FDH of 2FDH: 7 6 5 4 3 2 1 0 Status exists if bit = 1 rx ready overrun error parity error framing error break detect tx holding register empty transmit shift register empty RS245-2003-Lesing 20

  17. Modem status register 3FEH of 2FEH: 7 6 5 4 3 2 1 0 Status exists if bit = 1 Delta CTS Delta DSR Delta RI Delta DCD CTS DSR RI DCD RS245-2003-Lesing 20

  18. MODEMS ("modulator-demodulator") Die gewone telefoonlyn het laag en hoog afsnyfrekwensies van ongeveer 300 Hz en 3300 Hz. Data kan dus nie direk versend word nie. Daar word dus van modulators en demodulators gebruik gemaak. Een frekwensie (tussen 300 en 3300 hz) kan byvoorbeeld vir 0'e en 'n ander frekwensie vir 1'e gebruik word. In moderne hoëspoed modems word beide die amplitude en fase van die sein gemoduleer. Met 2 amplitudes en 8 fases kan 4 bisse gelyktydig versend word. Die bistempo is dus hoër as die "baudrate" (aantal veranderings per sekonde). RS245-2003-Lesing 20

  19. Pariteit en foutkorreksie 'n Pariteitsbis kan by die data gevoeg word om (beperkte) foutdeteksie te doen. Vir ewe pariteit word die pariteitsbis gestel om 'n ewe aantal ene te gee. Bv. Vir die ASCII "A" (41H) is die pariteitsbis 0 vir ewe pariteit. Die pariteitsbis kan slegs enkelbis foute uitwys en kan nie gebruik word om foutkorreksie te doen nie. Deur addisionele bisse by te voeg kan beide foutdeteksie en korreksie gedoen word - in ander kursusse behandel. RS245-2003-Lesing 20

  20. setup_: ;Voorbeeld seriepoort opstelling push ax push dx mov dx,2FBH ; line-control register mov al,80H out dx,al ; Line control reg MSB =1 to set Baud rate mov dx,2F8H ;Baud Rate register LSB mov al,00H out dx,al ; baud rate divisor LSB 4800 baud mov dx,2F9H ; Baud Rate register MSB mov al,18H out dx,al ;baud rate divisor MSB 4800 baud mov dx,2FBH ; line control register mov al,07H out dx,al ; 8 bit data, no parity, 2 stop bits mov dx,2FCH ; modem control register mov al,07H out dx,al ; disable interrupts mov dx,2F9H ; interrupt enable register mov al,00H out dx,al ; no interrupts enabled pop dx pop ax ret 0 RS245-2003-Lesing 20

  21. Holding reg Serial data clk ; xmit function xmit_: push dx push ax ; byte to transmit passed in al mov dx,2FDH ; line status register wait: in al ,dx ; get status and al,20H ; test if transmit holding register empty jz wait mov dx,2F8H ; transmit holding register pop ax ; get byte to send out dx,al ; send the byte pop dx ret 0 Shift reg RS245-2003-Lesing 20

More Related