14 bussar

14 bussar 14 bussar

da.isy.liu.se
from da.isy.liu.se More from this publisher
12.07.2015 Views

13. BussarFredag : gäst Niclas Andersson, NSCMåndag: en processor + avrundning* RS232* I2C* USB* ISA* PCI, PCI-e* Ethernet* Arbitrering* DMAEtt litet 68008-systemDTACK*AS*DRAM = A 19⋅A 18⋅A 17⋅A 16⋅AS= A 19+ A 18+A 17+ A 16+ ASVi slår ihop adressavkodningen,DRAM-ctrl+refreshräknaren ochkallar alltihop memory controller●●●●Ett litet 68008-systemAdresstroben as* startar en busscykel.DRAM-controllern känner av om as* = 1 (mellan 2 busscykler)och kör en refresh-cykel om det behövs.Har CPUn accessat DRAM måste den vänta(inga problem med asynkron buss).Har CPUn accessat PROM eller I/O borde refreshcykelnkunna ske parallellt med minnesaccessenParallella och seriella bussarEnhet 1Enhet 2Enhet 4Buss = gemensamma ledningarför kommunikation mellan enheter.Endast en överföring åt gången.Sändare/Mottagare = som det låterMaster/Slave = Master kan startaen överföring (mottagning/sändning)Enhet 5Arbitrering = skiljedom,behövs för flera masters0,5 usVi antar refreshtid 64 ms och antal radadresser=256 =>tid mellan refresher 250 usEnhet 3ArbitreringExempel på enheter:CPUMinneI/O – parallellportI/O med DMAOn chip -> multiplexerOff chip -> tristateDum Smart

13. BussarFredag : gäst Niclas Andersson, NSCMåndag: en processor + avrundning* RS232* I2C* USB* ISA* PCI, PCI-e* Ethernet* Arbitrering* DMAEtt litet 68008-systemDTACK*AS*DRAM = A 19⋅A 18⋅A 17⋅A 16⋅AS= A 19+ A 18+A 17+ A 16+ ASVi slår ihop adressavkodningen,DRAM-ctrl+refreshräknaren ochkallar alltihop memory controller●●●●Ett litet 68008-systemAdresstroben as* startar en busscykel.DRAM-controllern känner av om as* = 1 (mellan 2 busscykler)och kör en refresh-cykel om det behövs.Har CPUn accessat DRAM måste den vänta(inga problem med asynkron buss).Har CPUn accessat PROM eller I/O borde refreshcykelnkunna ske parallellt med minnesaccessenParallella och seriella <strong>bussar</strong>Enhet 1Enhet 2Enhet 4Buss = gemensamma ledningarför kommunikation mellan enheter.Endast en överföring åt gången.Sändare/Mottagare = som det låterMaster/Slave = Master kan startaen överföring (mottagning/sändning)Enhet 5Arbitrering = skiljedom,behövs för flera masters0,5 usVi antar refreshtid 64 ms och antal radadresser=256 =>tid mellan refresher 250 usEnhet 3ArbitreringExempel på enheter:CPUMinneI/O – parallellportI/O med DMAOn chip -> multiplexerOff chip -> tristateDum Smart


12.1.1 RS232universal asynchronuos receiver/transmitter12.1.1 RS232dataclk1UARTCTRLtxrxrxtxUARTCTRLdataclk21 0 0 0 00 1 0startstoppgndExempel: baud rate = 115200 b/s => T = 8,68 s12.1.2 RS 422/48512.1.3 I 2 CInter-integrated-circuit• StrykMaster/slaveMasterSlaveSerial data = SDASerial clock = SCL


I2C – Inter-integrated-circuit12.1.5 USB = universal serial bus1)Original signalKlockadata+5data+data-+-Original signalKlockagndmaster slave slaveI2CCTRLslave addressdata registerI2CCTRLslave address17data registerI2CCTRLslave address42data registerLow Speed – upp till 1,5 Mbit/sFull Speed – upp till 12 Mbit/sHi-Speed – upp till 480 Mbit/sSuperspeed - upp till 5 Gbit/s+10 kohmSDASCLUSB har bara dataledningar: data+ och data-.Sändare och mottagare måste synkroniseras.USBUSB2)3)clkOriginalManchesterkod0: upp1: nerNRZI = non returnto zero inverted0: ändra1: behållbitstuffingKommunikationen är paketbaseradExempel:Synk-byte 00000001 för synkroniseramottagarens klockaSyncSyncSyncPacketIDPacketIDPacket IDACKAddressEOPDataEndpointCRCCRCEOPEOP0-1024 byteshostdeviceRoot hubhubscanner scannerTVpinnedevice* 1 host, som sköter allt(=Master)* upp till 127 devices* enumeration:- device får adress- host laddar drivrutin* hub transparent- trafik neråt skickas utpå alla portar- trafik uppåt bara påupp-portenHi-speed → NRZI codingDet finns många sorters paket!device


USBHur ser det ut för drivrutinerna i hosten?* Varje device har en adress* Topologi obekant* Varje device erbjuder ett antal endpoints (fysiskt buffertminne)- isokron => garanterar bandbredd, tidsfördröjning, ej felkontroll- bulk => stora överföringar med felkontroll- control => kommando,status, konfiguration- interrupt => meddelanden* Hosten upplever att den har direktkontakt med endpoints (pipe)USBSlutligen: hosten delar in tiden i frames (hi-speed 125 us)SOFStart of frame - paket@5EP0Schemalagda isokrona transaktioner@6EP1@6EP2125 us = 60000 b = 7500 Bövriga transaktionerbulkpolla interruptControl TransferBulk IN TransferBulk OUT Transf erControl TransferInterrupt IN TransferDevice Address 3Ep0 Disk On KeyEp1Ep2DeviceAddress 4Ep0 MouseEp3TV-pinnen10 Mb/s =>1250 b/frame =157 B/frameHostControl TransferIso IN TransferIso OUT Transf erControl TransferInterrupt IN TransferDevice Address 5Ep0 IP PhoneEp1Ep2Device Address 2Ep0 HubEp1Logical PipeEnkel, parallell, synkron bussClkOlle Roos-datorn, enkla mikroprocessorertCKSid 227överstEnkel, parallell, asynkron busshandskakningssignaler används: stb/ackBusscykler kan ta olika tidAS*,DS*DTACK*Exempel: 68000, alla datorer Sid 228ARVi förutsätter att tacc < tCKWMed flera minnen:DfrånminnetfrånORmax(tacc ) < tCKtacctaccOR: Klocka in inåt registerMinne:Håll kvar


12.3.1 ISA-bussen• I/O-buss för PC på 80-90-talet• Clk = 8 MHz• 8/16-bitar data• Om en busscykel tar 4 clk,så 4 MB/sPCI = Peripheral Component Interconnect• Avsedd för I/O• bursts (”en adress många data”)– Disk, kamera, …• 33, 66 MHz• 32, 64 bitar• Adress/data multiplexade• Max 132 (528) MB/sMed denna signal kan en långsamI/O-enhet få CPUn att väntaInitiator = MasterTarget = SlavePCI busMaster& slaveMaster& slaveMaster& slaveSlaveSlaveSlaveAddr/Data32 (64)Ctrl


En titt på en PCItransaktionSignalen C/BE*Multiplexad1) Command2) Byte EnableIRDY = initiator readyTRDY = target readyExaminator: Andreas EhliarConfiguration SpaceEtt PCI-kort har en konfigureringsarea 256BPCI-XEn utvidgning av PCI64 bitar A/DUtökad funktionalitetEtt exempel på en avancerad transaktion:• Tillverkarnummer (16b)• Produktnummer (16b)• Korttyp (grafik-, ljud-, nätverkskort• Hur mycket utrymme kortet kräver• Ett grafikkort kräver kanske 256 MB• En serieport kanske bara 4 BMaster& slaveI want 128 words from you.OKMaster& slaveI can only give you 64 wordsright now and then I splitterminate this transaction.I memorize:requester ID, transaction IDand remaining nr of wordsHello, it’s me again!


BusshierarkiPCI Express - PCIeEn seriell version av PCI.Ingen skillnad för programmeraren.PCICtrlrPCIeCtrlrMinnesbussen: 400 MHz, PCI-bussen 33 MHz, ISA-bussen 8 MHzSplit transaction: separation av begäran och leveransBryggan innehåller: ”intelligens” + buffertminnetristate off-chipparallell bussmuxar on-chipflera seriella ”lanes”point-to-pointPCIe• 8b/10b kodning• Med kodning 2 Gbit/s = 250 MB/s• “Lanes”– 1,2,4,8,16 kanaler i en busskontakt• 2 - 32 Gbit/s i båda riktningarna2 datorer ihopkopplade med EthernetmemCPU MAC PHYmemmedia accessDator 0physicaltxDator 1rxFör 100 Mhz användsendast 2 parrxtxPHY…Hub, ”det somkommer in på rx,skickas ut på allaandra tx”...XYZCPU MAC PHYtxrxPHYrxtx


●●●EthernetFinns i hastigheterna 10 Mb/s, 100 Mb/s, 1 Gb/s, 10 Gb/sTill skillnad från USB, är Ethernet ett multi-master-systemAnvänder CSMA/CDcarrier sense multiple access/collision detection1) vänta tills ingen sändning pågår2) börja sändning3) upptäck kollision, sänd jamming-signal4) vänta en slumptid● Full duplex möjlig● Max paketstorlek 1500 bytesMediaIndependentInterface4txclk4EthernetPHY4b/5bMLT-3scramblerNRZI MLT-3 ampencodingencodingtxrxclk4b/5bdecodingdescramblerNRZIMLT-3decodingsyncrxMLT-3 använder 3 nivåer +1,0,-1MAC-adressKontroll/statusregisterEthernetBus arbitrationEndast en master åt gången ska få tillgång till bussenMulti-master busBussgränssnittDMAFIFOFIFOMIIgränssnitt4txclk4rxclkMaster 0Master 1Slave 0PakettillverkningPreambleAdressKontroll av checksummaMaster 2ArbiterSlave 1


Enkel, parallell, asynkron bussWishbone: gratisbuss för FPGA, ASICon-chip bus, dubbla data<strong>bussar</strong>MasterEn läscykelSlaveadr (32)Adress på adrSätt we=0, stb=1adrstbwestbweSlaveData på dat_iSätt ack=1Mdat_oSdat_o(32)dat_iackdat_i (32)Sätt stb=0ackSätt ack=0Bus requestcycEtt enkelt sekvensnätArbiterA2adr[31:0], dat_o[31:0], stb, we, …dat_i[31:0], ack, …


Wishbone-cykler med arbitreringstate 0 0 0 0 1 1 1 2 2 2 2 2 2cyc0ack0Data utVad är ett FIFO?rdskrivräknareemptyEtt mellanlagringsminneKö, en ringbuffert i minnetminnecyc1ack1läsräknareläspekarenskrivpekarencyc2ack2fullwrData inDMA=direct memory accessCPUICPipelinenDCBussMinneDMADMA är bra därför att:* DMA och CPU kan arbeta samtidigt (cacharna!)* Inga register behövs i CPUn* DMA är bättre på att skyffla data (inga hopp, test, ...)EthernetUSB hostCtrlFIFOCtrl●●Vi har nu fyra masters,som tävlar om bussen.Om IC,DC fungerar som de ska,är bussen mestadels ledig.Canal 0Canal N-1Control/StatusAdressCountControl/StatusAdressCountAdress+4adrstbackdata inFIFOArb.data ut

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!