Digital- och datorteknik Föreläsning #23 Biträdande professor Jan Jonsson Institutionen för data- och informationsteknik Chalmers tekniska högskola
Översikt När flera minnesmoduler placeras i processorns adressrum ansluts modulernas adressingångar till motsvarande ledningar i adressbussen. Övriga adressledningar i bussen används för att välja rätt minnesmodul genom att man bildar selektorsignaler ( chip select ) med hjälp av dem via logik för adressavkodning. centralenhet databuss adressbuss avkodningslogik minne minne ACK-logik
Låt oss nu titta närmre på hur detta går till, hur man kan vara säker på att rätt gränssnitt adresseras av centralenheten. Oftast består datorn av flera minnestyper och vanligtvis ingår också flera typer av gränssnitt. Vi ska nu inledningsvis, som dogöra för hur ett komplett datorsystem, med centralenhet, två minneskretsar och gas upp. Vi gör detta genom att konstruera ett block bestående av grindar. Detta ssavkodningslogik (Figur 10.12). centralenhet avkodningslogik Översikt FIGUR 10.12 ADRESSAVKODNINGSLOGIK Som målsystem i våra exempel på adressavkodning använder EP vi ett mindre inbyggt datorsystem med en centralenhet med 64 inport kbyte adressrum (16-bitars adressbuss) och 8-bitars databuss. r vi att vi har tillgång till följande komponenter B adressrum (16 bitars adressbuss), 8-bitars ordbredd (databuss) M 4 kb OM 4 kb om utport, buffert, 8 bitar som inport ed logikgrindar. databuss adressbuss minne Chip Select 1 minne Chip Select 2 utport Som minnesmoduler använder vi och i storlekarna 4 kbyte 32 kbyte. Exempel på 4 kbyte minnesmodul ges nedan. D0 A0 utsättningarna kan vi ge förenklade bilder av de ingående komponenterna. I dessa ignaler och komponenter som inte behövs för adressavkodningen. A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 MR MW Adressbuss, 16 signaler, betecknas A0-A15 Styrsignaler MR och MW Minnet har 8-bitars ordbredd, precis som centralenheten MR och MW är insignaler till minneskapslarna CS (Chip Select) är en insignal till kapseln som måste aktiveras för åtkomst minnet UR 10.13 FÖRENKLADE FIGURER AV CENTRALENHET OCH MINNE D0 D1 D2 D3 D4 D5 D6 D7 MR MW CS A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 Minnet innehåller 4 kb (2 12 ) bytes och har därmed 12 adressledningar A0-A11 Databuss, 8 signaler, betecknas D0-D7 D1 D2 D3 D4 D5 D6 D7 Minneskapsel EP 4 kbyte Buffert, 8 bitar som inport Register, 8 bitar som utport A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 TABELL 10.1 MINNES Av minnesdispositionen framgår att -minnet ska aktiveras om centralenheten gener EP-minnet ska aktiveras om centralenheten gen Inporten ska aktiveras om centralenheten genererar a Utporten ska aktiveras om centralenheten genererar a Följande tabell visar de värden adressbussens signale Kapsel A15 A14 A13 A12 A11 A 0FFF 0 0 0 0 1 0000 0 0 0 0 0 CFFF 1 1 0 0 1 C000 1 1 0 0 0 A000 1 0 1 0 0 A000 1 0 1 0 0 8000 1 0 0 0 0 8000 1 0 0 0 0 Vi måste nu, konstruera logik som kan jämföra adre vi tilldelat respektive kapsel och skapa en signal CS (c använder vi grindar av typen NOT och AND. Av tabelle varje kapsel genom att bara använda adressledningarn följande uppställning Minnet har 8-bitars Kapsel ordbredd, precis som Adressbuss, centralenheten A 16 signaler, 0000-0FFF betecknas MR och MW är A0-A15 EP C000-CFFF inport A000 insignaler till minneskapslarna utport 8000 För exempelvis -kapseln ska dessa CS (Chip Select) tre adress är en A14 insignal till kapseln A15=1, A14=1 och A15 A13=0, osv. Genom att bara låta d som måste aktiveras minsta möjliga kretslogik. MR Eftersom Styrsignaler vi lämnar för åtkomst adressle minnet MW MR och MW kommer CS-signalen att vara aktiv för ett större adre respektive kapsel. Man säger att samma modul avbilda ofullständig adressavkodning. Följande tabell visar nu vå
Placering av minnesmoduler När man gör adressavkodningen för en dator utgår man ifrån hur stort minne och vilken typ av minne som behövs. Därefter avgörs hur stora minnesmoduler som skall användas. Nästa steg är att placera in de olika modulerna i centralenhetens adressrum. Var varje minnesmodul placeras beror på vad modulen skall innehålla samt vilka konventioner som används för den typen av dator. För inbyggda datorsystem gäller normalt att placeras där man vill ha data som inte skall förändras, t ex programkod, textsträngar, vektorer för reset- och interrupt. placeras där man vill ha data som skall kunna förändras av programmet, t ex variabler och stack.
Placering av minnesmoduler (storlekar) 4 kbyte minnesmodul (12 adressledningar A 0 A 11 ) Storlek 1000 16 bytes Exempel på adressområde 1000 16 1FFF 16 8 kbyte minnesmodul (13 adressledningar A 0 A 12 ) Storlek 2000 16 bytes Exempel på adressområde 2000 16 3FFF 16 16 kbyte minnesmodul (14 adressledningar A 0 A 13 ) Storlek 4000 16 bytes Exempel på adressområde 4000 16 7FFF 16 32 kbyte minnesmodul (15 adressledningar A 0 ) Storlek 8000 16 bytes Exempel på adressområde 8000 16 FFFF 16
Placering av minnesmoduler (minneskarta) För att illustrera den valda placeringen av minnesmoduler och periferikretsar används oftast en minneskarta ( memory map ). För ett datorsystem med 64 kbyte adressrum är det totala adressområdet 0000 16 FFFF 16. Exempel system med 20 kbyte minne 4 kbyte 4 kbyte placerat på 8000 16 8FFF 16 16 kbyte 8 kbyte placerat på C000 16 DFFF 16 8 kbyte placerat på E000 16 FFFF 16 0000 16 8000 16 8FFF 16 C000 16 DFFF 16 E000 16 FFFF 16 4 kbyte 8 kbyte 1 8 kbyte 2
Placering av minnesmoduler (minneskarta) De olika modulerna skall adresseras inom unika adressintervall (områden). Inom respektive minnesmoduls adressområde är ett litet antal av de mest signifikanta adressbitarna konstanta. De konstanta bitarna i vårt exempel är markerade med en ram. Modul Adress Adressignal nr nr 1 nr 2 8000H 8FFFH C000H DFFFH E000H FFFFH 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Placering av minnesmoduler (minneskarta) De konstanta adressbitarna har samma (unika) värden för alla adresser inom området och kan ses som en ID-kod för området. ID-koden kan användas för att "peka ut" respektive minnesmodul, när processorn skall läsa eller skriva i just denna modul. Modul Adress Adressignal nr nr 1 nr 2 8000H 8FFFH C000H DFFFH E000H FFFFH 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Placering av minnesmoduler (avkodning) en ( chip select -logiken) sker i logikblock med de mest signifikanta adressbitarna samt, när så behövs, signalen MR som insignaler. Utsignalerna består av "chip select"-signaler till de olika modulerna. centralenhet databuss adressbuss avkodningslogik minne minne ACK-logik
Placering av minnesmoduler (avkodning) Vi betraktar nu adressavkodningen för -modulen i vårt exempel. När modulstorleken är 4 kbyte = 2 12 byte används 12 stycken adressbitar för intern adressavkodning inom modulen. De övriga fyra adressbitarna, A 15 A 12, används för att bestämma var någonstans i processorns adressrum modulen placeras. -modulen placeras i adressintervallet 8000 16 8FFF H. I detta intervall har adressbitarna A 15 A 12 värdena 1000 2. Modulen kan då pekas ut med en chip select -signal, som bildas på följande sätt A 15 A 13 A 12 CS
Placering av minnesmoduler (avkodning) På ett liknande sätt kan vi ta fram adressavkodningen för -modulerna i vårt exempel. De två modulerna placeras i adressintervallet C000 16 DFFF H ( nr 1) respektive E000 16 FFFF H ( nr 2). Här används även MR-signalen vid bildandet av chip select. Om MR inte används så skulle en eventuell skrivning i (t ex på grund av ett programmeringsfel) innebära att både processorn och -modulen släpper ut data på databussen och orsakar en busskollision. A 15 A 13 MR CS nr 1 A 15 A 13 MR CS nr 2
Fullständig adressavkodning Vi har i vår lösning använt alla adressbitar som krävs för att aktivera en modul enbart inom dess avsedda adressområde. Detta kallas för fullständig adressavkodning. Vid fullständig adressavkodning kommer adressrummet att utnyttjas maximalt. Vi kan exempelvis bygga ut med fler minnesmoduler eller lägga till periferikretsar, utan att behöva göra om den tidigare adressavkodningen. Denna typ av avkodning kan dock i många fall kräva relativt komplicerade logiknät. 0000 16 8000 16 8FFF 16 C000 16 DFFF 16 E000 16 FFFF 16 Outnyttjat adressområde 4 kbyte Outnyttjat adressområde 8 kbyte 1 8 kbyte 2
Ofullständig adressavkodning För att förenkla adressavkodningen kan man ibland låta bli att använda alla adressbitarna. Detta får till följd att avkodningen inte blir entydig, d v s samma chip select -signal kan bli aktiv i fler än ett adressintervall. Man kallar denna metod för ofullständig adressavkodning. Om vi i vårt exempel skulle använda enklast möjliga avkodning skulle minnesmodulerna fortfarande ha sina ursprungliga unika adressområden, men det skulle också bli möjligt att adressera dem på andra ställen i adressrummet. 0000 16 8000 16 8FFF 16 C000 16 DFFF 16 E000 16 FFFF 16 4 kbyte 4 kbyte 4 kbyte 4 kbyte 8 kbyte 1 8 kbyte 2 4 kbyte 4 kbyte 4 kbyte 4 kbyte 8 kbyte 1 8 kbyte 2
Ofullständig adressavkodning Vi ser i vårt exempel att endast adressbit är helt nödvändig för att skilja på adressområdena för - och -modulerna. För att välja mellan de två modulerna behöver man sedan lägga till adressbit A 13. en kan alltså göras med ett färre antal grindar, och med grindar med ett färre antal ingångar. öljande tabell, som avbildar processorns hela adressrum M. Modul Adress Adressignal nr nr 1 nr 2 nr 1 nr 2 0000H 0FFFH 1000H 1FFFH 2000H 2FFFH 3000H 3FFFH 4000H 5FFFH 6000H 7FFFH 8000H 8FFFH 9000H 9FFFH A000H AFFFH B000H BFFFH C000H DFFFH E000H FFFFH 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Ofullständig adressavkodning en kan alltså göras med ett färre antal grindar, och med grindar med ett färre antal ingångar. A 13 MR A 13 MR 1 CS CS nr 1 CS nr 2 öljande tabell, som avbildar processorns hela adressrum M. Modul Adress Adressignal nr nr 1 nr 2 nr 1 nr 2 0000H 0FFFH 1000H 1FFFH 2000H 2FFFH 3000H 3FFFH 4000H 5FFFH 6000H 7FFFH 8000H 8FFFH 9000H 9FFFH A000H AFFFH B000H BFFFH C000H DFFFH E000H FFFFH 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Placering av periferikretsar (minneskarta) Antag att man nu skulle vilja utöka vårt exempel med två inportar och två utportar, och placera dem i adressområdet 4000 16 4003 16 Med fullständig adressavkodning kommer alla 16 adressbitar att krävas vid avkodningen. eringen kan sammanfattas i tabellform 4000 16 4001 16 4002 16 4003 16 Inport nr 1 Inport nr 2 Utport nr 1 Utport nr 2 0000 16 8000 16 8FFF 16 4 kbyte Modul Adress Adressignal nr 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Inport 1 4000H 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Inport 2 4001H 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 Utport 1 4002H 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 Utport 2 4003H 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 C000 16 DFFF 16 E000 16 FFFF 16 8 kbyte 1 8 kbyte 2
Placering av periferikretsar (avkodning) 0000 16 A 15 A 13 A 12 A 11 A 15 A 13 A 12 A 11 4000 16 4001 16 4002 16 4003 16 Inport nr 1 Inport nr 2 Utport nr 1 Utport nr 2 A 10 A 10 A 9 A 9 A 8 A 7 CS Inport nr 1 A 8 A 7 CS Inport nr 2 8000 16 8FFF 16 4 kbyte A 6 A 6 A 5 A 5 A 4 A 4 A 3 A 2 A 1 A 0 MR A 3 A 2 A 1 A 0 MR C000 16 DFFF 16 E000 16 FFFF 16 8 kbyte 1 8 kbyte 2
Placering av periferikretsar (avkodning) 0000 16 A 15 A 13 A 12 A 11 A 15 A 13 A 12 A 11 4000 16 4001 16 4002 16 4003 16 Inport nr 1 Inport nr 2 Utport nr 1 Utport nr 2 A 10 A 10 A 9 A 9 A 8 A 7 CS Utport nr 1 A 8 A 7 CS Utport nr 2 8000 16 8FFF 16 4 kbyte A 6 A 6 A 5 A 5 A 4 A 4 A 3 A 2 A 1 A 0 MW A 3 A 2 A 1 A 0 MW C000 16 DFFF 16 E000 16 FFFF 16 8 kbyte 1 8 kbyte 2
Överlagrad minnesavbildning I en del system (som i vårt exempel) kan man få en situation där man behöver några enstaka portar, men inte vill lägga beslag på ett ledigt adressrum enbart för portarna. Ett alternativ är då att lägga portarna i samma adressrum som en redan existerande modul. Antag att man väljer att lägga in- och utportarna i området D000 16 D003 16, D000 d v s i samma del av 16 Inport nr 1 D001 Inport nr 2 adressrummet som en 16 D002 16 Utport nr 1 av -modulerna. D003 16 Utport nr 2 0000 16 8000 16 8FFF 16 C000 16 DFFF 16 E000 16 FFFF 16 4 kbyte 8 kbyte 1 8 kbyte 2
Överlagrad minnesavbildning Detta löses genom överlagrad minnesavbildning, där man först skapar en fullständig avkodning för portarna och sedan använder inversen av den erhållna avkodningen som kompletterande villkor för chip select -signalen för minnesmodulen. 0000 16 A 15 A 13 MR CS nr 1 (C000 16 CFFF 16 samt D004 16 DFFF 16 ) 8000 16 8FFF 16 4 kbyte CS Inport nr 1 CS Inport nr 2 CS Utport nr 1 CS Utport nr 2 1 CS In/Ut (D000 16 D003 16 ) D000 16 D001 16 D002 16 D003 16 Inport nr 1 Inport nr 2 Utport nr 1 Utport nr 2 C000 16 DFFF 16 E000 16 8 kbyte 1 8 kbyte 2 FFFF 16
Generell avkodningslogik I stället för att bygga upp adressavkodningen med diskreta grindar använder man i praktiken ofta färdiga kretsar för att bilda chip select -signalerna, t ex binäravkodare, fördelare ( demultiplexer ), eller PLA-/PAL-kretsar. PLA- och PAL-kretsar är exempel på s k programmerbar logik, PLD (Programmable Logic Device). som utförs med denna typ av kretsar blir därmed den mest flexibla. Att fundera på Hur skulle adressavkodningen för vårt exempel göras om vi använde binäravkodare eller fördelare?