Wat is een busverbinding?
gemeenschappelijke verbinding tussen CPU, geheugen en I/O-schakelingen
onderscheid tussen: –
databus/adresbus/controlbus
–
intern/extern
–
serieel/parallel
–
unidirectioneel/bidirectioneel
http://www.nataliedee.com/archives/2003/Feb/
Blokschema microprocessor buffers
Waarom een bus?
beperking aantal verbindingen/aansluitingen (<->ster) makkelijk uit te breiden, modulair van opbouw
nadeel: gemeenschappelijke verbinding: – –
bottleneck afspraken nodig voor bustoewijzing (meerdere busmasters)
Synchronisatie
Wanneer is data geldig op de bus?
Hoelang moet data op de bus blijven staan?
Synchrone communicatie
klokken van zender en ontvanger lopen gelijk: –
gemeenschappelijke klok via aparte draad (meestal bij parallel transport)
–
aparte klokken lopen in de pas door synchronisatie-informatie in de data (meestal bij serieel transport)
geen tijdsverlies door synchronisatie
max. bussnelheid wordt bepaald door kloksnelheid
Asynchrone communicatie
klokken van zender en ontvanger lopen niet gelijk, signalering van data-geldig: –
toevoegen start- en stopbits
–
meezenden strobe-signaal
–
handshaking
tijdsverlies door synchronisatie
Snelheid van de communicatie tussen twee devices wordt bepaald door de traagste van die twee
Verder vandaag
Atmel AT91SAM7SExxx microcontroller –
Architectuur
Doelstellingen ARM7TDMI processor
ARM7TDMI processor –
Architectuur
–
Signalen
–
Bus cycle types
–
Adres timing
Atmel AT91SAM7SExxx microcontroller
Bron : http://www.olimex.com/dev/index.html
Bron : http://www.olimex.com/dev/index.html
Atmel AT91SAM7SExxx microcontroller
Architectuur: –
Memory controller
–
Systeem controller
–
External bus interface
–
DMA controller
–
Peripherals
–
ARM7TDMI processor core
Atmel AT91SAM7SExxx microcontroller
Memory controller –
Programmeerbare bus, behandelt aanvragen van:
ARM7TDMI processor
DMA controller
–
Adres decoder
–
Memory protection unit (PMU)
–
Embedded Flash controller
Atmel AT91SAM7SExxx microcontroller
Systeem controller –
Interrupt controller
–
Reset controller
–
Verzorgt de interrupt lijnen naar de ARM processor (nIRQ en nFIQ). 8 prioriteit niveaus Iedere interrupt source heeft een 32-bit vector register Power on reset Status van de laatste reset (power-on, software reset, user-reset, watchdog, etc.) Regelt de interne reset en de nRST output pin.
Power managment controller (PMC)
Verzorgt, gebruik makend van de Clock generator uitgangen, de volgende klok signalen: – – – – –
– – –
Processor clock PCK Master clock MCK USB clock UDPCK Periferal clocks 3 programmeerbare clock uitgangen
Watchdog timer Real-time timer PIO controller
Poort A en B ieder 32 bits I/O, poort C 24 bits I/O
Atmel AT91SAM7SExxx microcontroller
External bus interface – Static memory controller 8 – 16 bits databus Tot 512Mbyte adresseerbaar Verschillende access-modes Wait-state managment
–
SDRAM controller
Verschillende configuraties van SDRAM chips mogelijk Error detectie –
Externe bus
16 of 32 bits data bus Maximaal 23 bits adres bus (max 8Mbyte te adresseren
Atmel AT91SAM7SExxx microcontroller
DMA controller –
Verzorgt de data-transfer tussen periferals en geheugen
–
11 DMA kanalen
Atmel AT91SAM7SExxx microcontroller
Peripherals – USB V2.0 (full-speed compliant) – SPI , Serial Peripheral Interface – TWI, Two Wire Interface – USART, 5..9 bit full-duplex synchroon of asynchroon communicatie poorten (2x) met programmeerbare baudrate generatoren. – SSC, Serieel Synchronous Controller – PWMC, 4 16 bits PWM kanalen – Timer, bevat 3 16-bit counter kanalen. – ADC, 8 Analoge naar Digitaal converters van 10 bit.
Atmel AT91SAM7SExxx microcontroller
ARM7TDMI processor core –
RISC processor gebaseerd op de “von Neumann” architectuur
–
Max 55Mhz met 0,9MIPS/Mhz (bij een voeding spanning van 1,8V)
–
2 instructie sets:
–
ARM high-performance 32-bit instruction set
Thumb high code density 16-bit instruction set
Three stage pipeline architectuur:
(F) Instruction fetch
(D) Instruction decode
(E) Execute
Von Neumann Architectuur
Bron : Wikipedia
Harvard Architectuur
Bron : Wikipedia
Doelstellingen kennis maken met ARM7TDMI processor
Signalen van een uP leren kennen
Tijddiagrammen begrijpen
Samenhang van de communicatie signalen kennen
uP kunnen aansluiten op extern I/O
Kunnen berekenen of aan alle timing eisen wordt voldaan
ARM7TDMI processor core
Bron : http://www.atmel.com/dyn/resources/prod_documents/6222s.pdf
Bron : http://www.atmel.com/dyn/resources/prod_documents/6222s.pdf
ARM7TDMI processor core
De signalen van de ARM7TDMI kunnen in 4 groepen worden verdeeld: –
Klok en klok controller signalen
–
Adres signalen
–
Geheugen request signalen
–
Data signalen
ARM7TDMI processor core
Klok en klok controller signalen –
MCLK, het “hoofd” klok signaal
–
nWAIT, access verlengen met aantal cycles
–
ECLK, uitgang van MCLK of DCLK
–
nRESET, resetten processor
ARM7TDMI processor core
Adres signalen –
A[31:0], adres lijnen A0 t/m A31
–
nRW, Read/Write richting van data transfer
–
MAS[1:0], grote van data transfer (byte, half word of word)
–
nOPC, info over transfer (opcode of data)
–
nTRANS, info over transfer (user, privileged)
–
LOCK, geeft ondeelbare operatie aan
–
ABE, voor aan/uitzetten adresbus drivers
–
APE, Wel of geen adres pipeline gebruiken.
ARM7TDMI processor core
Geheugen request signalen –
nMREQ, processor doet een geheugen aanvraag voor volgende cycle
–
SEQ, geeft aan dat het adres van de volgende geheugen cycle gerelateerd is aan het huidige adres (hetzelfde of opeenvolgend).
ARM7TDMI processor core
Data signalen –
D[31:0], 32-bits bidirectionele databus
–
DIN[31:0], 32-bits unidirectionele input databus
–
DOUT[31:0], 32-bits unidirectionele output databus
–
ABORT, data transfer mislukt
–
BL[3:0], welk databyte moet worden gebruikt: D[31:24] , D[23:16] , D[15:8] of D[7:0]
De ARM7TDMI processor bus interface
4 soorten bus cycles:
Nonsequential cycles, er wordt een transfer van of naar een adres aangevraagd die geen relatie heeft met het adres van de vorige transfer. Sequential cycles, er wordt een transfer van of naar een adres aangevraagd die wel een relatie heeft met het adres van de vorige transfer, bijvoorbeeld; hetzelfde adres of een adres dat een half of een heel word verder ligt. Internal cycles, bevat geen transfer omdat er een interne functie wordt uitgevoerd en er geen zinvolle prefetch kan worden uitgevoerd op dezelfde tijd. Coprocessor transfer cycles, gebruikt dezelfde bus om te communiceren met een coprocessor, maar heeft geen transfers naar het geheugen.
De ARM7TDMI processor bus interface
De bus cycles types zijn te onderscheiden m.b.v. de signalen nMREQ en SEQ:
bron : http://www.eecs.umich.edu/~panalyzer/pdfs/ARM_doc.pdf
De ARM7TDMI processor bus interface
Nonsequential cycles:
bron : http://www.eecs.umich.edu/~panalyzer/pdfs/ARM_doc.pdf
De ARM7TDMI processor bus interface
Sequential cycles: –
De sequential cycles worden gebruikt voor burst data transfers op de bus. Het adres kan hetzelfde zijn of automatische worden verhoogd t.o.v. de vorige cycle.
bron : http://www.eecs.umich.edu/~panalyzer/pdfs/ARM_doc.pdf
De ARM7TDMI processor bus interface
Sequential cycles: –
Een Burst cycle start altijd met een N-Cycle (Nonsequential cycle) welke dan wordt vervolgt met SCycles (Sequential cycles).
–
De volgende burst type zijn mogelijk:
bron : http://www.eecs.umich.edu/~panalyzer/pdfs/ARM_doc.pdf
De ARM7TDMI processor bus interface
Internal cycles: –
Tijdens een interne cycle heeft de ARM7TDMI processor geen geheugen access nodig als hij een interne functie aan het uitvoeren is. Wanneer mogelijk zal de processor wel het adres voor de volgende access op de adresbus zetten zodat het decoderen alvast kan starten.
bron : http://www.eecs.umich.edu/~panalyzer/pdfs/ARM_doc.pdf
De ARM7TDMI processor bus interface
Coprocessor transfer cycles: –
Tijdens een coprocessor register transfer cycle gebruikt de ARM7TDMI processor de data bus voor de transfer van data van en naar de coprocessor.
bron : http://www.eecs.umich.edu/~panalyzer/pdfs/ARM_doc.pdf
De ARM7TDMI processor bus interface
Overzicht van alle bus cycles
bron : http://www.eecs.umich.edu/~panalyzer/pdfs/ARM_doc.pdf
Adres Timing
ARM7TDMI processor adresbus heeft 2 configuraties: –
Pipelined
–
Depipelined
APE (Address Pipeline Enable) beïnvloed de timing van de adresbus A[31:0], nRW, MAS[1:0], LOCK, nOPC en nTRANS. (ALE heeft zelfde functie als APE maar is nog aanwezig vanwege backwards comptabiliteit)
Adres Timing (pipelined)
Meeste systemen, en in het bijzonder systemen met DRAM, is het wenselijk dat het adres zo snel mogelijk bekent wordt gemaakt door de processor. –
Wanneer APE hoog is wordt het adres van de processor valid na een opgaande flank van MCLK
Adres Timing (pipelined)
Voorbeeld Pipelined addressing
bron : http://www.eecs.umich.edu/~panalyzer/pdfs/ARM_doc.pdf
Adres Timing (depipelined)
SRAM en ROM eisen dat het adres stabiel wordt gehouden gedurende de gehele geheugen cycle. –
In een systeem met alleen maar SRAM en/of ROM kan APE signaal permanent laag worden gehouden.
–
Adres valid na neergaande flank van MCLK
Adres Timing (depipelined)
Voorbeeld Depipelined addressing
bron : http://www.eecs.umich.edu/~panalyzer/pdfs/ARM_doc.pdf
Adres Timing
Veel systemen hebben echter een combinatie van DRAM, SRAM en ROM. –
Om aan de verschillende timing requirements te voldoen, kan APE signaal worden aangepast tijdens de laag fase van de MCLK.
–
Tijdens een burst of sequential access naar een bepaald geheugen type wordt APE signaal op 1 niveau gehouden.
Adres Timing
De processor gebruikt de uitgangsignalen MAS[1:0] om de size (word, half-word of byte) van een transfer weer te geven.
Bij een word transfer worden A[1,0] genegeerd.
Bij een half word transfer wordt A[0] genegeerd.