);S3
bSe
-Lineprinter-controller met behulp van bit-slices Afstudeerverslag van R.W.Hoeke
De opdracht is uitgevoerd bij de vakgroep EB, digit ale systemen o.l.v. Ir M.P.J.Stevens en Ir J.P.Kemper hoogleraar prof.lr A.Heetman
Trefwoordenlijst: Hardware Micro-instructie Microprograrnma Lineprinter
1
1.1 Samenvatting
In dit verslag zal behandeld gaan worden het ontwerp van een universele I/O controller. Na een schets van de historische ontwikkeling van I/O controllers zullen globaal de eisen die aan de universele I/O controller gesteld worden besproken worden. De historische ontwikkeling van I/O controllers geeft aanleiding tot een splitsing van de r/o controller in twee sub-controllers, een channel controller en een device controller. Aan de channel controller zal in dit verslag verder geen aandacht besteed worden, de device controller zal uitgebreid ter sprake komen. Eerst wordt in hoofdstuk 3 aan de hand van de te stellen eisen een globale opbouw gegeven van de universele device controller. Dit resulteert in een globaal blokschema dat in de volgende paragraaf van hoofdstuk 3 per systeemonderdeel verd~r uitgewerkt wordt tot de realisatie van het systeemonderdeel. De werking wordt beschreven, indien nodig in timing diagrammen. In hoofdstuk 4 komt de line-printer ter sprake. Aan de methode om karakters af te drukken ligt een bepaald principe ten grondslag. Dit principe wordt eerst besproken. Daarna wordt behandeld een mogel~ke realisatie van de printerbesturing ala toepassing van de universele device controller. Onafhankel~k van de gekozen realisatie moet voor de aansturing van de printer nog extra elektronika gebouwd worden.
2
1.2 Inhoudsopgave
1 • 1 Samenvatting
1 2
1 .2 Inhoudsopgave 1 • 3 Inleiding
2.1 2.2 3.1 3.2
eo. •
• •
• •.• •
•
Historische ontwikkeling van de I/O controller •••...• Algemene opzet universele I/O controller ...•....•.••. Globale opbouw van een microprogrammeerbare controller Realisatie universele device controller •.•.••••......•
3
5 9 11 16
4.0 Line-printer
63
4.1 4.2 4.3 4.4
Principe van werking line-printer ••..•••••..•.•...... Line-printer control units........................... Line-printing en operation commands ••...••.•••..•••.. Printer besturing m.b.v. device controller •....•...•.
64 68 75 77
Concluaie
87
Li teratuuroverzicht ...•••••••..••••••.•••••.....•••.•. , 88
3
1 Inleiding
In dit verslag zal het ontwerp behandeld worden van een universe Ie I/O controller. Een eerste aanzet tot het ontwerp van een dergelijke controller is gegeven door een vorige afstudeerder A.G.M.Claessen. Mijn afstudeerwerk heb ik uitgevoerd in nauwe samenwerking met A.J.F.M.Dhaeze. Samen hebben wij het ontwerp van een universe Ie controller volgens Claeccc~ geevalueerd en herzien. Een I/O controller wordt gebruikt voor besturing van een I/O device. In oudere computersystemen was de computer zelf verantwoordel~k voor de juiste aansturing van elk device. Door dit werk af te schuiven op een controller, wordt de computer niet meer met deze taken belast. Een universele I/O controller nu is een controller waarrnee elk willekeurig device bestuurd moet kunnen worden. Het zal duidelijk zijn dat een dergel~ke controller in ieder geval zo snel moet zijn, dat het snelste device dat momenteel verkrijgbaar is, ermee bestuurd moet kunnen worden. De controller zal dan ook aIle logica moeten bevatten om aan een dergelijke eis te kunnen voldoen. Met de huidige stand van de techniek zal aan deze eis aIleen kunnen worden voldaan als de controller een microprogrammeerbare machine wordt. Het microprogramma bepaalt dan het gedrag van de controller. De toekomstige microprocessors zullen veel sneller zijn dan de huidige, zodat dan de controller met een microprocessor gerealiseerd kan worden. Elk device zal op zich nog specifieke eisen stellen aan de controller. B~voorbeeld zullen de stuurspanningen niet op TTL niveau liggen, data moet in serie of parallel toegevoerd worden enz. Aan dergelljke eisen wordt tegemoet gekomen in de interface tussen controller en device. Zo'n interface moet per device opnieuw bekeken en ontworpen worden. Verder zal blijken dat de universele controller opgebouwd wordt uit twee deelcontrollers, een channel-controller en een device controller. Opsplitsing in twee deelcontrollers
4
heeft net voordeel dat
b~
verandering van het device of de
CPU, slechts een controller veranderd hoeft te worden. De channel controller zorgt voor de aanpassing van de CPU en regelt het data transport met de CPU. Dedevice controller zorgt voor de aanpassing van het device en bestuurt en controleert het data transport met het device. Voor de snelheidsaanpassing tussen CPU en device is een buffergeheugen vereist voor data opslag. De dee I-controllers
wiss~len
data
uit via dit buffergeheugen en communiceren via een aparte communicatiebus. Behalve met het ontwerp van een universe Ie controller, heb ik
m~
tUdens mUn afstuderen ook bezig gehouden met een toe-
passing van deze controller voor aansturing van een IBM 1403 lineprinter. De werking van de lineprinter zal behandeld worden evenals de control units die nodig
z~n
om de line-
printer te kunnen besturen. De control units zullen met de universele device controller of in de interface gerealiseerd moeten worden. Een mogelijke realisatie van de besturingwordt behandeld evenals de extra elektronika die deze realisatie met zich meebrengt.
5
2.1 Historische ontwikkeling van de
r/o
controller
De allereerste computers zorgden zelf voor de juiste aansturing van de devices. Het programma in het geheugen van de computer is in feite de
r/o
r/o
controller. Deze software
controller wordt op een gegeven moment vervangen door
een stuk autonome hardware. Deze controller was opgebouwd uit "wilde logica". Vanwege de opbouw uit "wilde logica" is verandering van de controller voor aanpassing aan een andere CPU of een ander device vrijwel niet mogelijk. De controller was aileen geschikt voor een bepaalde computer en een bepaald device .
... , II
8..... ...
~
CPU
OU1
....
IN I
.I
,
ou~ \
1MfA.
.,
.. r
.., ..
I/O DeY10•
~
De volgende stap in de ontwikkeling is dat de controller microprogrammeerbaar wordt, met als gevolg dat de controller op een eenvoudige manier gemodificeerd kan worden voor een andere CPU of device. B~ een microprogrammeerbare controller bepaalt het microprogramma het gedrag van de controller. Dit microprogramma wordt opgeslagen in een geheugen (control store geheten) dat meestal als Read Only Memory (ROM) werd uitgevoerd. Later wordt dit ROM control store vervangen door een Random Access Memory (RAM). Bij gebruik van de controller moet dan eerst in het RAM het microprogramma geladen worden.
6
De rnicroprogrammeerbare controller heeft het voordeel dat de controller zo gebouwd kan worden, dat meerdere devices met dezelfde controller bestuurd kunnen worden. De controller krUgt dan al een min of meer universeel karakter. Het nadeel is echter dat
b~
gebruik van de controller voor een ander
device of met een andere CPU, het hele microprogramma gewijzigd moet worden. Een volgende stap in de opbouw van de controller geeft dan ook een splitsing te zien in twee subcontrollers, ieder met hun eigen control store. Vanwege de geringere taak die de subcontrollers hebben, kunnen de control stores samen kleiner zijn dan het control store van de controller die beide taken moet verrichten. De I/O controller bestaat dan uit een channel controller en een device controller. De channel controller zorgt voor de communicatie en het datatransport aan de CPU-kant, de device controller verricht de specifieke taken voor aansturing van het device en bestuurt het datatransport van en naar het device. De data moet nu doorgegeven worden van de ene controller naar de andere en de beide controllers zullen dan ook communicatie-signalen met elkaar moeten uitwisselen. Voor het datatransport is een zekere buffercapaciteit vereist, vanwege het verschil in snelheid van CPU en device.
Device
7
Voordeel van de splitsing in twee controllers is dat
b~ w~
ziging van de CPU of het device, slechts een microprogramma gew~zigd hoeft te worden. De
ler geeft
~iteindel~k
ontwikkeling van de
r/o
control-
een onderverdeling te zien in 5 delen.
- channel interface deze interface zorgt voor de aanpassing van de verbinding tussen CPU en channel controller - channel controller deze controller regelt het datatransport en de communicatie met de CPU -
buffergeheugen dit geheugen dient voor opslag van de data van CPU naar device en andersom
-
device controller deze controller vertaalt de commando's van de CPU en best~urt
de mechanica en elektronika van het device en regelt
het data transport van en naar het device - device interface deze interface zorgt voor de aanpassing van de verbinding tussen controller en device.
Buffer memory
do_'_Q_- _I_o_d_d_r_e_s_s_b_u_s_---:::;;;>"",O:::::::-____ s ysfe m bus c ............ ~ 1---comm. bus
_ _ _ _--::::"""'=='""'_ _
_.,..- -;:..
----
:-------.------------ --- - ~-----l
!
~~~~. Com/77.
, channe I lr, , 'L......I1------...I\.\ linten-oce 1/fL----., A
J
1\
AJAJ\~....L--+'I--.l-J "
CI-IA IV"c;.
unit
I
I
I
V
arithmeVc 'bus J.
interfoce
... - -;.-
..""'" ..... ;a.
I I
! I
J
conlrol ~ store 1\
,-----I
'----'vJ\o-L....-_ _- - - - I
! I
i
CJ-IANNEL confroller
unit
.device
,
II
In/;erta~1I
,
r\
l
I II
'l
I I
,
1\
.I
Y L....-_ _ JJ
I
l'
conlrol store
If 1\,,-_ l
!I DEVICE ,I ,I I,
- _ .J
·L
DEVICE controller
}
.I I
i !
~---------------_._-----------~
Comm.
arilhmelic bus inlerfoce ... ~ ....... ~
I
I
I
I
--"",100-
j
I
I
~
I
'
I
-~--~----------------·--1 ........
I
I
I
r---I
9
2.2 Algemene opzet universele
I/O controller
Onder een input/output operatie wordt verstaan het datatransport tussen een processor en een peripheral device zoals
sch~vengeheugen,
magneetbandgeheugen, kaartlezer, re-
geldrukker enz. Al deze peripheral devices moeten van besturingssignalen worden voorzien. De besturingssignalen dienen ter besturing van de mechanica en de elektronika van het device. Het device rnaakt door rniddel van statussignalen de toestand waarin
h~
verkeert kenbaar .
.A
... Skiu CPU
C.'nl J
'(
,
~
Best~ring
"r
,
I/O »e.loe
1-
lll~A
,J
van een device houdt in het toevoeren aan het de-
vice van besturingssignalen op zijn besturingslijnen. Vervolgens zal de status van het device getest moe ten worden waarna,
afhankel~k
van de status, andere besturingssignalen gege-
nereerd zullen worden. Verder moet de controller data voor het device beschikbaar stellen of data van het device ontvangen. Een rnanier om de besturing van een device te realiseren
I/O. Voor elk device van het computersysteem is een programma (I/O handler) in h~t geis door middel van geprogrammeerde
heugen aanwezig, waar~ee de aansturing van het device wordt gerealiseerd. De besturings-, status- en datalijnen
z~n
recht-
streeks op in- en outputkanalen van de processor aangesloten.
10
De processor draagt dus zelf zorg voor de juiste aansturing van het device. Op deze manier gaat echter veel processort~d verloren aan
I/O datatransporten.
Een manier om aan dit bezwaar tegemoet te komen is door de software te vervangen door een stuk autonome hardware. Dit stuk hardware wordt de I/O controller genoemd. De processor moet nu kunnen communiceren met de I/O controllers. H~ moet data beschikbaar stellen en kenbaar maken voor welk device het bestemd is en wat ermee gebeuren moet. Het datatransport vindt niet plaats rechtstreeks van processor naar
r/o
controller maar via het geheugen van de CPU. De I/O controller wordt meestal functioneel in twee subcontrollers gesplitst en wel een channel controller en een device controller. De channel controller draagt zorg voor het datatransport van of naar het geheugen van de CPU en voor de aanpassing aan de CPU. De device controller regelt het datatransport van of naar het device en bestuurt de mechanica en elektronika van het device. De taken die een
r/o
controller moet kunnen verrichten, kunnen als volgt worden samengevat: - het vertalen en/Of genereren van commando's van de CPU naar besturingssignalen voor het device - hiervoor is vereist dat de controller de toestand (status) kent waarin het device verkeert - de controller moet data aan het device aanbieden en/of data van het device verwerken - de controller zorgt voor foutenbewaking port.
b~
het datatrans-
Het genereren van besturingssignalen houdt in dat in de controller bepaalde bitpatronen geset moeten worden. Het testen van de status van het device komt neer op het binnenhalen van het statuswoord en het testen op bepaalde bitpatronen. Het controleren van het datatransport houdt meestal in het toepassen van bepaalde codebewerkingen op de data.
11
3.1 Globale opbouw van een microprogrammeerbare controller
Een microprogramma is een opeenvolging van micro-instructies die opgeslagen worden in een geheugen, het control store geheten. Een micro-instructie 1s besturingsinformatie voor een of ander systeem b~v een ALO. Een micro-instructie bevat de meest elementaire besturingsinformatie voor het systeem. Een functie die het systeem moet verrichten, wordt uitgevoerd in meerdere micro-instructies. Zoln set van micro-instructies wordt een macro-instructie genoemd. De micro-instructies moeten ineen bepaalde volgorde uit het control store gehaald worden. Een micro-instructie bestaat dan ook in principe uit twee delen. Het ene deel bevat besturingsinformatie voor het te besturen systeem, hat system control field, het andere deel bevat informatie over de volgende micro-instructie die uitgevoerd moet worden, het next address control field. Het een en ander is schematisch weergegeven in fig 3.1.
next
A~~.~ ".
I
co_rrOl 8~or.
ad4re••
""rol
f
I
f ••, I
87·....
~
I
I
I
I
f
I ~.8t da~a
f
een microprogrammeerbare machine te realiseren is dus nodig een control store voor opslag van het microprogramma. De controlewoorden in het control store hebben ieder een
~Om
12
eigen adres. Dit adres wordt geleverd door de sequencer, die onder invloed van z~n besturingsveld uit het control store, het adres bepaalt van de volgende uit te voeren micro-instructie. De sequencer is mn feite een multiplexer waar, afhankelljk van de instructie en eventueel de waarde van een testbit, een bepaalde ingang geselekteerd wordt en daarmee het adres voor het volgende controle-woord bepaalt. Het adres voor het volgende controle-woord kan afkomstig z~n van het controlstore, van een programmateller waarin het geincrementeerde adres staat van de vorige instructie, van een stack, van een vector PROM of van een instructiedecoder. Welke instructie als volgende instructie uitgevoerd moet worden, kan afhankel~k zljn van het resultaat van de huidige instructie. Met het bepalen van het adres van de volgende instructie kan gewacht worden tot het testresultaat bekend is. Dit is de gewone recht toe recht aan methods, weergegeven in fig 3.2.
T
I
S,at. rek.n.
I -----' . adr. oep. 1 I
[ I
'-a-d-r-.-be-p-.-]
fig 3.2 De instructie wordt uitgevoerd, waarna het adres voor de volgende instructie bepaald wordt. We kunnen de cyclustljd van de machine verkleinen door overlapping toe te passen. Tegelljk met het uitvoeren van de instructie wordt het adres bepaald van de volgende instructie (fig 3.3): Is de bepaling van de volgende inst~ctie afhankel~k van het resultaat van de huidige instructie, dan zal eerst een dummy-slag uitgevoerd moeten worden. Bij conditionele adresbepaling valt de tljdwinst door overlapping verkregen, dUB weg. Blj gebruik van-overlapping ( ook weI pipe-lining)geheten) moet het controle-
13
T
.c
)I
t
8S-"-
I I
.. I
Sy_'_ ,. ,
I "p. I I··..· I nk••
I
I
aclr.
bep.
I
I
I
•
Sf·'·
r~. •
rek.ai
H,·I
[
t
fig 3.3 woord dat momenteel uitgevoerd wordt, opgeslagen worden im een register, het pipeline register genaamd. Immere, voordat de instructie volledig uitgevoerd 1s, versch1jnt aan de uitgang van het control store het nieuwe controlewoord. We zien dus dat een m1croprogrammeerbare controller in ieder geval een control store en een sequencer moet bevatten. Passen we bovendien overlapping'toe dan wordt de cyclustijd korter maar is nu een pipeline register wereist. De controller moet verder in staat z.ijn om logische en rekenkundige operaties uit te voeren. Voor het uitvoeren van deze operaties is dus een rekenkundmge eenheid vereist, waarmee de gewenste operatie uitgevoerd kunnen worden. Omdat de controller in staat moet zijn snelle data vergel1jkingen te verrichten, is een geheugen in de controller noodzakelijk. Deze snelle data vergelijkingen komen bijv voor bij een disc, waar data aan de hand van een key opgezocht kan worden. Het vergelijken van de data van het device met de key moet dan snel gebeuren. De key wordt in de controller opgeelagen in een geheugen, het register file geheten. De controller moet met het device diverse bus-verbindingen hebben. De controller moet in het device adressen kunnen aanwijzen, data naar het device kunnen sturen en data van het device kunnen ontvangen, besturingslijnen van het device kunnen activeren en de status van het device kunnen lezen. Deze bus-verbindingen worden gerealiseerd in de device-data-interface en de device-control en status interface.
14
Met het buffergeheugen moet de controller eveneens data kunnen uitwisaelen en dus moet de controller in het geheugen adressen kunnen aanw~zen om op die plaatB te lezen of te schr~ ven. Of er in het buffergeheugen gelezen of geschreven moet worden wordt dmv een opcode kenbaar gemaakt. Omdat zowel de channel controller als de device controller toegang tot het geheugen moet hebben, moet de bus verbinding met het geheugen aan een van beide controllers worden toegewezen. Hierover moet communicatie gepleegd worden, waarvoor dus een communicatie unit nodig is. De toewijzing van de memory bus kan door een bus-allocation unit geechieden. De device controller moet ook rechtstreeks kunnen communiceren met de channel controller. Omdat meerdere device controllers op dezelfde channel controller aangesloten kunnen zijn, moet de device controller een adres kunnen uitsturen en z~n eigen adres kunnen herkennen. De communicatie met de channel controller geechiedt via de communicatie unit. De systeemonderdelen zullen voor wat betreft hun onderlinge signalen met elkaar gesynchroniseerd moeten worden. Hiervoor is een klokschakeling nodig die de vereiste kloksignalen genereert. Bovendien moet de klokschakeling kunnen zorgen voor synchronisatie van de controller met het device en het buffergeheugen. Uit voorgaande overwegingen komt een globaal blokschema van de device controller naar voren.(fig 3.5).
I
Ie--
--
f-
bu, butl.,.
4"
a4ldrus
J)
COM"'.
~.
control
saquuc.e r
r.-- .~
1
I
rF.~
k
I I
4
-
I DEViCE r·t;,~·r
file
systelft b\ls
--
bus
roo-
data
-.,.-
I
'"
-.
-
c
S
da~a b\l~
,.
i~
bl.lffer "'""
-..
..
I
l I
det.
I
. IcontroL
out
1
-
- unit
,.
d~ice
but'er
'-,
,..-
I
~
-
bus
ditd
L.
I I I
""J)
~
buffer
~ffet'
CPE .,.ray
sto'"
~.
~
.J ----I
A
~
8UFFEA NEtlO"y
~ic.
atlclruc
.h.ss
A
-
~~
I
co"' ....
I ..
I bus
-
~ ~
...
....
---
1
r in
1
16
3.2 Realisatie universels device controller
De universele device controller moet in staat z~n om ook de snelste devices te kunnen besturen en van data te Yoorzien. De snelste devices hebben momenteel een data-rate van 1,25 Mbyte/sec. De data-rate van de devices neemt steeds toe, zodat ook b~ de controller hiermee rekening moet worden gehouden. Voor de controller wordt een data-rate gedacht van 10 Mbyte/sec. B~ een data-bus met een breedte van 8 bits, komt dit neer op een eyclustijd van 100 nsec. Met d~ huidige sequencers en CPE's is deze snelheid niet haalbaar. B~ een 16 bit brede data-bus wordt de eJeluet~d 200 nsee. Blj de gekozen opzet van de controller zal bij een cyelustljd van 200 nsec dubbele pipe lining optreden. B~ dubbele pipelining bepaalt de sequencer niet het adres van het volgende controlewoord maar van het daarop volgende eontrole woord. Dit geeft een moeilljker manier van programmeren. Besloten ward om enkele pipelining toe te passen, waardoor de cyelustijd gebraeht moest worden op 330 nsee, hetgeen blj een 16 bit brede databus een data-rate levert van 6 Mbyte/sec. In de hierna volgende pagina's zullen de systeemonderdelen apart besproken worden. De gekozen opbouw en de werking zal behandeld worden evenals de timing diagrammen. Enkele systeemonderdelen zijn reeds gebouwd, hiervan wordt de print layout eveneens gegeven.
...r-.. ._..-.
" ...- - t
r-1fa-
T
I - ,..-
"TIlT I..".,n--..
l.-_+-+----~_+--4IN
11f~~·
I
-tII J " .,.
L....
I
1 "".
r-3 W"
IN/•.,.,.
-
T
--T
I
O,.... ~IC
."·'S·
D~
1
F;~
.
rNfe<Jr
-t-
-+
~R~D~..~£:=s:..:8~v~s
4.... .-- '''_i
,.,.It! Ty L-
I
I
~
ad
__!-
+-
-!._I-
~
Ic-".'
-
'----L-J
~I"'~I·-~I--_+~,.c;·=ll~t~S~
T1
CHfete 6. / ~1~AAr..
IDA ~----Il--~---jr------------"1L.---~M~nt~a!!:!4V~j
I---
.
Us. .,IItC>C- +--"_~mw
~
~
kL.'C
~ -
l:",r_L-
L I+--+-+--i 6".,....
I
--.
1 ......- ...
..:.-
L
l-
-+-.lID. ........ ..,..F+_.--.l!Mnt=:;=-
18
Control store
Elk systeemonderdeel wordt dmv enkeie bits uit het control sto~e bestuurd. Hoeveel bits hiervoor nodig z~n hangt af van· het systeemonderdeel. Al de controlewoorden voor de syeteemonderdelen naast elkaar geplaatst, geeft het totale controlewoord voor het gehele systeem. Elk syeteemonderaeel heeft dan due zijn eigen besturingsveld in het oontrolewoord. Over de breedte van het controlewoord valt vooraf niets te zeggen. Er is echter een manier om de breedte van het aldus ontstane controlewoord te verkleinen. Dit gebeurt door veld-multiplexing. Er z~n namelijk enkele systeemonderdelen die niet tegelijkertijd aktief kunnen z~n, b~v omdat ze allebei de data-buB nodig hebben bij hun aktie, of hoeven te zijn, bijv tegelijkertijd communicatie plegen met channel controller en device. We kunnen nu alle systeemonderdelen die niet tegelijkert~d aktief kunnen of hoeven te zijn, een gemeenschappelijk besturingsveld in het controlewoord toewijzen, het data-field geheten. Met behulp van een ander veld, het emit-field genaamd, wordt bepaald voor welk systeemonderdeel de data uit het data-field bestemd is. De toewijzing door het emit-field van het datafield is in de figuur aangegeven. Op deze Manier wordt de breedte van het controlewoord van de device controller 48 bit. Over de benodigde grootte van het control store, dus het aantal benodigde controlewoorden, valt weinig defenitiefs te zeggen. In de vakgroep is nog weinig ervaring met microprogrammering. De idee bestaat echter dat een microprogramma zeker uit minder dan 4K woorden bestaat, maar hoeveel Minder is niet te voorspellen. Besloten werd om als uiterste grens 4K aan te houden en voorlopig het control store uit 1K woorden op te bouwen. De grens van 4K woorden houdt tevens in dat de sequencer slechts een 12 bits adres aan het control store hoeft te leveren. Ale de device controller bestemd is voor besturing van een bepaald device, kan het control store het beste uit PROM op-
19
gebouwd worden. Na het aanzetten van de spanning is de controller meteen voor gebruik gereed. Voor het prototype van de controller werd echter besloten om het control store op te bouwen uit RAM. Het prototype moet namelijk nog volledig getest worden waarvoor testprogramma's in het control store geplaatst moeten worden. De inhoud van het control store moet dus regelmatig gewijzigd worden en dit gaat eenvoudiger als het control store uit RAM is opgebouwd. Het laden van het control store kan op diverse manieren gebeuren. Een eenvoudige maar bewerkelUke manier is met de hand. Met schakelaars worden het adres en en het controlewoord ingesteld, waarna het controlewoord in een keer in het control store wordt ingelezen. Vanwege de bewerkelijkheid van deze methode werd besloten om bij het laden van het control store gebruik te maken van een Sys 8000 microcomputer, waarvan in de vakgroep enkele aanwezig zijn. Om bij het laden van het control store het benodigde aantal I/O poo~ten te beperken, gebeurt het laden van het control store in kolommen van 8 bit breed. Aan de opbouw van het control store wordt dan de eis gestelld dat de HAM-chips gescheiden in- en outputs hebben. Bovendien voIgt uit een bescnouwing van de timing van de gehele controller dat de access time van het control store maximaal 90 nsec mag bedragen. Uit voorgaande overwegingen werd besloten om voor de RAM-chips de Intel 2115-2 te gebruiken, een 1K x 1 statisch RAM. Met betrekking tot het laden van het control store kan nog het volgende opgemerkt worden. Met een connector wordt de microcomputer verbonden met de data-bus van het control storw en de adres-bus van de sequencer. De adres outputs van de sequencer worden dan gedisabled en de systeemklok uitgeschakeld. Het control store is 48 bit breed en wordt verdeeld in 6 kolommen van 8 bit. AIle nulde input-bits van elke kolom worden met elkaar doorverbonden, evenals de eerste, tweede enz (zie fig). Aldus ontstaat een 8 bit brede bus die aangesloten wordt op een outputpoort van het systeem 8~00. van aIle chips van elke kolom worden de write enables en de
20
1)11 fA ill,
~.
D.
~r~j
Yf'61
chip-selects doorverbonden. Zodoende kr~gen we per kolom een write-enable en sen chip-select, in totaal 12 inputaignalen die aangeeloten worden op 2 outputpoorten. Het adres waar data geschreven moet worden is 10 bit breed en hiervoor is nog een outputpoort nodig, immers 2 bits zijn nog vrij in reeds gebruikte outputpoorten. We kunnen nu ijet control store laden of in kolommen, dwz eerst de eerate 8 bits van alle controlewoorden dan de volgende 8 bits enz, of in rijen, dwz eerst controlewoord 1, dan 2 enz. Werking Door de sequencer wordt in de positieve helft van de systeemklok het adres bepaald van het volgende controlewoord en aangeboden aan het control store. In de negatieve helft van de systeemklok wordt de data uit het control store opgehaald en aan de outputs klaargezet. Op de positieve flank van de· systeemklok wordt het controlewoord in de pipeline registers ingeklokt.
21
Control store velden en indeling
o
ISE soft interrupts
1
RED
2 3 4 5
I3
/
11
I, Instructie 10
6 7
CCEN S
8
A
9
B
10
11 12 13
l
Sequence field
test select
C
carry in mux klok onderdrukking
14
Fo
15
FI
16
F1
17
F] CPE function
18
F£t
19
F.;
20
FL
21 22
1 J
CPE field
K-bus mux
~~ ~} klokherstart
25
C
~~ 1emit 28
J
field
selectie
22
29 30 31 32 33 34 35
I-bus source current status soft intIs soft interrupts hard interrupts D-bus source
Data field
36
~~ :~W l
file control
f
I
39
Lie
40 41
dev. opreq R/W
42
bus req
~~
:;;" bus opreq
45 46
47
~
device \
1
memory
--------------------=-leeg
23
Sequencer
De sequencer moet een 12 bits adres aan het control store kunnen leveren. De sequencer moet b~ de bepaling van het adres een selektie kunnen maken uit diverse mogel~kh.den. Het adres moet afkomstig kunnen z~n uit het pipeline (jump address), .en programmateller, een stack, een instructiedecoder en een interrupt mogel~kheid moet aanwezig zijn. De adresbepaling moet bovendien conditioneel uitgevoerd kunnen worden. Er z~n diverse sequencers in de handelb~v AM 2909, AM 2911, beide 4 bits cascadable sequencers en de AM 2910 een 12 bits not-cascadable sequencer. De 2909~2911 z~n ongeveer gel~k. Ze selecteren het adres uit 4 inputs en hebben een mogel~kheid voor een N-way branch. De 2910 kan een selectie doen uit 6 inputs. Gekozen werd voor de AM 2910, waarvan hieronder een blokschema gegeven is.
,
0
•
~
:::..A
~
..!.
:t
cc.
cc:iAi Ii If
"
..,
.J
~~ ... .!
0(
~
Cl
" IlvM
""-D/c.
••
iii ~ "liT
1~lil~
-+
0.,.,.,,,
c• .." .... ,....·
A",t"O BLoCk »iA.,.,IM
24
Deze sequencer is momenteel echter nog niet leverbaar. DaarSM werd de 2910 nagebouwd met 3 stuks 2909. De AM 29811 next address control unit vertaalt de aangeboden instructies in de signalen voor best~ring van de AM 2909. Vanwege ,de gew~ zigde instructieset van de AM 2910 kan de AM 29811 in dit ontwerp niet gebruikt worden. De next address control unit wordt nu vervangen door een PROM. Het adres voor het vOlgende controlewoord kan nu afkomstig z~n uit het pipeline, van een register dat geladen wordt vanuit het control store (in een vorige instructie), van een stack, van een programmateller, van een instructiedecoder of van een vector interrupt PROM. Voor uitvoeriger dokumentatie over de AM 2999 en AM 2910 wordt verwezen naar de data sheets. In dit ontwerp is een voorziening getroffen voor interrupts. Bij het optreden van een interrupt zal over het algemeen de nodige data (b~v uit het CPE array) bewaard moeten bl~ven, om na de interrupt-afhandeling het programma te kunnen voortzetten waar het werd onderbroken. B~ het optreden van een interrupt kan het z~n dat na de afhandeling van de interrupt-service-routine, het geinterumpeerde programma niet meer voortgezet hoeft te worden. Dit is afhankel~k van de aard van de interrupt. Er wordt daarom onderscheid gemaakt tussen hard-interrupts en soft-interrupts. Hard-interrupts zijn van dien aard, dat voortzetting van het programma na optreden van een hard-interrupt geen zin meer heeft. Een hard-interrupt kan niet gemaskeerd worden. Soft-interrupts z~n interrupts waarvan het mogelijk optreden min of meer te verwachten was. Soft-interrupts zijn weI maskeerbaar. Het Interrupt Acknowledge (IA) signaal van de Interrupt Control Unit (ICU) voor de soft-interrupts wordt door het microprogramma al dan niet doorgelaten. Op in het programma gunstige plaatsen wordt het IA signaal doorgelaten. Er wordt dan een conditional jump vector instructie gegeven zodat als er een soft-interrupt opgetreden is, het startadres van de betreffende interrupt meteen door de sequencer geleverd zal worden. Als er een hard-interrupt opgetreden is
25
wordt er een jump vector instructie opgedrukt en de vector interrupt PROM geenabled, waar het startadres voor de desbetreffende interruptroutine staat. Er zijn 16 mogel~ke test inputs waaruit gekozen kan worden. De selectie gebeurt dmv 4 bits uit het control store. Met een 5 e bit wordt aangegeven of de instructie al dan niet conditioneel moet worden uitgevoerd (CCEN). Verder is de sequencer voorzien van een mapping PROM. Via de data bus wordt een instructie (opcode) aan de controller gegeven. Zoln instructie beslaat in het control store meerdere micro-instructies. Een instructie wordt in de mapping PROM vertaald naar z'n startadres in het control store. Werking Aan het begin van de cyclus wordt het controlewoord uit het control store in het pipeline register ingeklokt. Gedurende e'n klokcyclus bl~ft het controlewoord in het pipeline register staan. Het controlewoord bevat de data voor de besturing van de diverse onderdelen van de controller. De sequencer ontvangt van het control store twee besturingsvelden, - het sequence field en - het data field. In het sequence field staat de instructie voor de sequencer en de data voor selectie van een test input. In het data field kan staan een jump address of een getal waarmee de counter/latch geladen kan worden. De counter kan door sommige instructies gedecrement worden en getest worden op zeroinhoud. Bij het aanzetten van de spanning op de controller zal een reset interrupt 0 hard-interrupt met hoogste prioriteit) gegenereerd worden. In de vector interrupt Prom zal de interrupt service routine bestaan uit een jump zero instructie. De sequencer zal dan adres 0 aan het control store aanbieden. Vanaf adres 0 zal in het control store een initialisatieprogramma staan voor controller en interface. Verder wordt met een teller b~gehouden of de stack vol is of niet. Deze
26
teller moet na het aanzetten van de controller gereset worden. Dit gebeurt tegel~k met de jump zero instructie, door de teller parallel te laden.
}
27
PROM-vulling
----
13
La. Ii 1 CO CZ
S S.. FE PUP CE L/C RE PL MAP VEcT -ZERO
o
0 0 0
H H
o
0
1 0 0
1 0 1
0
H
H
H
H
L
H
H
H
L L
H
H
H
H
H
L
H
H
H
0
H H
H
H
H
H
If
H
L
H
H
H
H
H
H
H
L
H
H
H
1 L
H
H
H
H
H
L
H
H
H
L L
L
H
L
L
1
L
H
H
H
L L
L
H
H
H
H
L
H
H
H
H H
L
H
H
H
H
L
H
H
H
L H
L
H
H
H
H
L
H
H
H
H H
H
H
H
H
H
H H
L
H
H
H
H
H
H
H
H
L
H
H
H
H H
H
L
H
H
H
H
H
H
H
H
L
H
H
H
L
L
H
H
H
H
H
H
H
H
H
H
H
H
H
L
L H
L H L
H
H
H
H
H
H
H
L L L L
H
H
H
~I
1
0
1
1
0
0
~
1
0
1
1
0
~f
l
1
0
1
1
0
~f
0
~~ ~f
H H
~\
L L
~J
H H
1
~I
L H
0
0
0
1
1
0
1
1
1 1 0
0 1 1 0 0 0
~l
HH L
1
0
1 1 1
L
0
1
o
H
1
1 1 1 0
H
1
0
o
L
0
0
o
H
1
1
o
H
1
1
0 1 1
H
0
0
o
H
0
0 0 1 .0
001 0
H
0
L H L H
L L L L
H
28
-
!J lot I! L CC -CZ
S. S.. FE PUP
1 0 0 1
1 0 1 0
0
L L
H
H
H
H
H
L
H
H
H
0
1
H H
H
H
L
H
H
L
H
H
H
1
0
L L
H
H
H
H
H
L
H
H
H
1
1
H H
H
H
L
H
H
L
H
If
H
0
~}
H L
L
L
H
H
H
L
H
H
H
~}
L L
H
H
H
H
H
L
H
H
H
~I
H H
L
L
H
H
H
L
H
H
H
H
H
H
H
H
L
H
H
H
1
~}
L L
0
0' L L
H
H
L
L
L
L
H
H
H
0
1
1
0
1
1
0
~l
L L
L
L
H
H
H
L
H
H
H
L
H
H
H
H
H
L
H
H
H
L
H
H
H
H
H
L
H
H
H
1 1 0 0 1 1 100
1 1 0 1
0 1 1 1 1 1 0
0
)
I
~J
H
1
;r
0
0
L L
L
L
H
H
H
L
H
H
H
0
1
L L
L
L
L
H
H
L
H
H
H
1
0
H H
L
L
H
H
H
L
H
H
H
1
1
H L
H
H
L
H
H
L
H
H
H
0 1 1 1 1 1
-
MAP VECT ZERO
0
0
1 0 1 1
CE L/c liE PL
'NTs
~=:
II. A.
-a'2.lil
~
N,.PP;NG
\lfCToR
A. III
8.11, B
PROM
50FT
O.
Of!
I
,---J
~
r ---- -
~'l14
~
:::::::
Iii f--
~
+5'J
IJJ/r~~---8. 6, 8, / /
( I I
I
"
I
iii
0
R
,"' ....
1S
P c:.
U
Sl~
~
....
I
~~if...
I I
I---
I
0
I
1 r---J
0-rrn Oi
D
y
'2,qoq
R
I
'
....
t I
'~ ,{IlK,
'
i. I
.
~
0"TTn
1
o_ S "II
ill Y
u
~ 0
0/;:
~
P 0;.,
T
lqDq
R
~"'"
:s. "
III
~S
,....
-
\J-
II<
Ill: lit
A
I!N
~I:
li (5 ~ rz oc..:r I/o
II
~
C'
Y
~
I f-S
PE
L _________
_.- l-
I~ I.
t f f
- --
f-
I, I.
I;
I~ I
5 E C;>UfNCE R..
A •
~I
lJ.
I
SH"
Of ,I-
~
Hoe
r
I
DAT
II
~IELD
I
I
I
Ls 3l.t
I I I I I 0
,
I
0
I
:>--
~Of
S~H
J
I-
lIIIlIfc f-
I
I
Sf " E NC E riEL D
".;..
TfS T 11'1 PUTS S '-51
~
e/r
a
Il-
IL~
~
-(J:: r-- Ci
-Q::
....f-
y
~
If...
ADRE'S
III
of
...1/
CP, Ilc
I I
RI'
~
-
;
C?~
- --
1?"""t' t: \.I L L
I
P\.Ip
I"
511.Cj
elf
-
i" C/i.
n
t I I
II
f 0_
a-J-.
'2qo~
>----
I
I
c.
-
0Tn-l
lU
~
"
---f
I I
1
~ "~
P
~
I" C,..1
-"
C/;: ~
: - ----
--
--
T
D-
- A""PflD ---,
-
I~I
'kr~
r--
~
/
DIt1"R 6 u:s
-,--
LLl- o
INT'S
PROM
iNTERRUPT
-
If..
30 -;; ~-
o
•
~
:$
- ---;-r
....
a
'j
c
:>
~
I...
'"
-
.... Ql
o
'\~
.7.
~
•I-
~
D
:1 I
--
-- -
...z"
"j:.
......., .
c
$I
j
.~
f
f
".
I-
...
~
..
...
l-
'"
"*= ;:;-
.. •
~
.... 0
~
---)- - -- -
... c: Q
,.
.lC
....0
Z
z::
'':'
'':'
I-
0
Q..
....
....
ClC 0-
?;
...'.
!
--
....
'l-
~
...
--
-
.., II>
r
~
9-
....
Il'
-
~-
~
...
:J
0
Go
.... \II
•.•. H
3-
'"
1/1
t "'"
~
.~::: ~
AM
.. n
~
-PROJECTII
30"''',0)0''
I RUWHIEIDSWAARDEN VLGS NIH 6JO
aENAHING
AANTAL
HATER1AAL
TECHNISCHE HOGESCHOOI. EINDHOVEN
S<:HML
D....TUM[ T1EKENINGNIIt..
"FDELING:
GET.:
I
GROEP:
GEe.:
IW'IZIGING
PASSINGEN VLGS N 101
~
- - - -
TOLERANTIES VLGS NEN 1)65
I~
...
~
~
¢
....
'~
-- -
.. £
0
-
.., ,.-t
lao
III
::J
-
e:t
a
....
=ll
~
1
~ ",
1ft
..
".f
IIII II
A3
B()'!inS~E
Top \IiE\AI.
I DndUsh
C.O"'I\~c.\ot
C.O"'P\ECTo(l.
f
f
SIt'!
S Ib'J
t S Ibet
t
S
Ib~
~ Plliht
I
I
Yo -.. Y1 '2.Qoli
t
It
1100'1
YI,-""h 2QOCj
I t I
f
Y.- y"
'2.~oCJ
I
I
t
11-02-
If
If
f
3t11
SOFr iNT'S
:!. 'lIlt
S3H
r
SU,I f SU,I ~
[;;]
~
E] ~
lS
s n,. 5 nit
~
I Sfq.
I
I
S Ult
~AII.O
I
.
FiELD
T,_
I
TEST
IIlDQES
1/"1 PuTS
I
110011
CONTRoL
ISTolE
we . .
f
I
INTs
s.
••
I.
Y.
8,
I.
T,
Ie
f'~ EC.S
il't't's ~211.
Iclok SE
OE
. Lo.y-o"i: SE ~UHICL=R
SOFT 'NT'S
TOLIERANTlES VLGS NEN 1)65
GEe. :
32
CPE array
Om een rekenkundige eenheid te bouwen, kunnen we gebruik maken van bitTslices. Bit-slices z~n schakelingen die op data woorden van een gering aantal bits, meestal 2 bits, 10gische en rekenkundige operaties kunnen uitvoeren. Deze bitslices kunnen aan elkaar gekoppeld worden zodat data woorden van 2xN bits bewerkt kunnen worden. Bij de keuze van de te gebruiken bit-slices kunnen we uit diverse typen van verschillende fabrikanten kiezen bijv AM 2901 van AMD en 3002 CPE van Intel. Het zou te ver voeren om elke bit-slice in detail te bespreken, hiervoor wordt verwezen naar de data-sheets. Bekijken we de bit-slices wat nader, dan valt de 3002 CPE op door de aanwezigheid van een extra maskerings input. Deze maskeringsinput is in de controller toepasbaar voor snelle data vergelijkingen, b~v bij het zoeken van data op key op een disc, en voor het testen van een of meerdere bits van het statuswoord. Gekozen werd dan ook voor de Intel 3002 CPE. Deze CPE is een 2 bit bit-slice, er zijn dus 8 CPE's nodig~ Deze 8 CPE's kunnen met elkaar gekoppeld worden door de carry-output van de ene bit-slice te verbinden met de carryinput van de volgende bit-slice, dit is de ripple-carry methode. De carry-output van de meest significante bits moet bekend zijn voordat een nieuwe klokcyclus begint. Dit is met de ripple-carry methode bij een klokcyclustijd van 330 nsec niet haalbaar. We zullen dan ook gebruik moeten maken van de (snellere) carry-Iook-ahead methode, waarvoor de 3003 Carry Look Ahead Generator van Intel gebruikt wordt. Via de M-bus wordt de data binnengehaald afkomstig van het device of van het buffergeheugen. Via de I-bus wordt data binnengehaald afkomstig van het communicatie register met de channel controller of een statuswoord afkomstig van het device. De K-bus input van de 3002 CPE is de maskerings input. Data op de K-bus wordt altijd ge-AND met de data die door de B-multiplexer geselecteerd wordt. De K-bus inputs worden via
33
11+-
....
'1----.. .
.....
c:.~
&..0 ......
..
-4
I...r--........---:II_---:m~
IJ L __
5002 block diagram
een multiplexer geselecteerd. Selectie vindt plaats uit 4 mogel~kheden. De K-bus kan allemaal nullen of allemaal enen bevatten of data afkomstig uit het register file 'of uit het control store. De D-bus outputs van de 3002 zijn aangesloten op de data bus. De D~bu8 outputs kunnen gedisabled worden. Op de data bus is aangesloten een parity generator/checker. Wordt door het CPE een 16 bits data woord op de data bus gezet, dan worden 2 pariteitsbits door de parity generator bijgevoegd, 1 pariteitsbit per byte. De data bus is 18 bit breed. Wordt er anderzijds data vanuit het device of het buffergeheugen op de data bus gezet, dan controleert de parity checker de pariteit en geeft indien nodig een foutmelding. De A-bus outputs van de 3002 zUn aangesloten op de adresbus. Omdat aIleen vanuit het CPE array een adres op de adres bus gezet kan worden, zijn de outputsaltijd geenabled.
34
Werking Aan het begin van een klokcyclus wordt het controlewoord voor het CPE-array van het control store in het pipe'line register ingeklokt. Dit controlewoord bestaat uit 7 bits voor de functie die de 3002 CPE's moe ten uitvoeren en 2 bits voor selectie van de K-bus inputs. Verder wordt met 2 bits de carry-input geselecteerd. Gekozen kan worden uit een 0, een 1 of de carry flipflop, waarin de carry staat die b~ de vorige instructie is opgetreden. Bovendien is er een bit in controlewoord voor onderdrukking van de klok voor het CPE. Wordt gedurende een klokcyclus de klok voor het CPE onderdrukt, dan blijft de registerinhoud van accumulator en scratchpad registers ongewijzigd. In feite is dit dus een NOP instructie. De carry-out die bij de instructie is opgetreden, wordt bij het begin van de volgende eye Ius in de carry flipflop ingeklokt. Verder z~n in het CPE-array nog twee foutendetectie circuits aanwezig, een carry-error-interrupt en een parity-errorinterrupt. B~ de carry-error-interrupt worden de ripple-carry's van elke bit-slice vergeleken met de carry's die door de carrylook-ahead generator bepaald zijn. Bij een ripple carry gebruik van het CPE wordt de carry output van een bit~slice aangesloten op de carry input van de volgende slice. Bij gebruik van een carry look ahead generator wordt de carry input van de bit-slice gebruikt. De carry look ahead generator bepaalt de carry voor elke slice, aan de hand van zijn inputs. Vergelijken we nu de niet meer gebruikte carr~ output van elke slice met de desbetreffende carry output van de carry look ahead generator, dan kunnen we in beperkte mate het optreden van fouten detecteren. Bij bepaalde functies zal de op deze manier gedetecteerde fout geen echte fout zijn. Voor deze bepaalde functies wordt de foutmelding onderdrukt. De parity generator/checker heeft een tweeledig doel. Dit is op de vorige pagina reeds besproken.
3'5
3003 i" !OV....!
..c.n....
Cf\ .., y, C""'. -.., Yt. c... I
'11 .,)'4\ 'SI "'I ..
I
."yIN)
,:~
-
-r
'rl<
,. ..
e.... "~
u.
I.
,
.
y~ e...."r II
.,
I
en.
c...,
c:,..~", '1', e...'l4 y )<& ~ J r l " t4 ~1 ul '-I I If
II1
,Ilr..
'J'f S2U
Itll l'tutl.
.4,
.A. I--
l-
300t
Li
l1li
8iT, t .. J
--r-
300t IITS .... 6'
leo te.1l."~."''to7, .. I I,
I
.A.
11..
.~,
J
13
I
'-
1
.A &
,
''\
It
c:.
I
C;"Ycg~
Ro 3001 F '.r.olt,
nit!:
y,
ttt "
r-;:::...-
,~. .,
IJ
~
"'~
l-
?,oot liT,
&1'1-
~
~
1iJ,p-.
I-
300t 8m Sit,
l!:
l-
Im~ '
.
3001
~
1;1'5 10" It
f-
•
3001 tiT, II."
~,
I)
j;J.,.
L!:
3001 ,in
,,,,,,s Lt:
II--
h
I
I'
i
"
I
"
II -Bus J:
II -8vs
'b TOURANTIES "'loGS HEN 2M»
b.,.8±O.1S 8
F-8vs
~~:~
d
lO"1O"±)O"
PROJECTIE
BE NAMING
CPE- AR.R.AY
AM
DEvice CoAJTR.oLL
K-Bus PASSINGEN "'LGS N 802
Ruw!-!elDsw.... A~OEN vJ.GS NEN 6)0
H .... TERIA...l
AANTAL
TECHNISCHE HOGESCHOOL EINDHOVEN
SCH ......l
AFOElING:
GET.:
GROEP:
GEe. : - - - - - -
I
DATuM 1 TEKENING ...R
I
-t----;I
""JZIG,NG
I
I liT·
A3
KLoK
Pipr:L iWF
FUo./CTie EN 'DftTft
Of H-
EN
I i"pUTS srlf/J",l
OUTpuT
K- iN pur Eo./A8LE
1<-I"'puT STRBiEL 1. nS.
'I..y
OliTPUTS VAN CpE
t. nS· srrup T;/f" C i
Vooll. CpE
Cj STI'l8il!L
DRTA OUTpUTS VAAl cpr:
CAR R Y OliT EW
Ro
J)ATI'l
VIlLI%>
Co. Roo "Ali%>
"""
Cpr: I 2. 4
n S.
~0
\"/ORST- CASE liMiNG
n S.
CPE-f1RP.Ry.
I
+E ",.0 ...
g ::r::::z Z ,.... Vi " ::r:::
m
::r:::
C'I
..... ..... ".,
::r:::
0 0
.... ".,
Z <::>
£
n
i'
,I
i'> r
I~
l~ _. L:
~)
f
Z z
~
-I-To
~
~
0
z
I
-~
r
"'" ~ >
<
z
~
'"c:~
::r:::
".,
...
;:: z
z
"~
35"n5
t:~
;S ~
0
1,-
---.J +
I
00
".,
0
.,
KloK
-< ~ ~
~ Ii
0
f\ LL r:
epE'- i/olpli TS\
~\\\\\~II
STI'lSir:l
I."
~.
n S.
\\\'~
CARRy- iN
H-
~
~\'\
Cj ",.LiD
50nS.
»
3:
DATA· V iTGA'" GEN
Il
> > ~ ~
/i. S'
'DATA
vALi D
"\.
,~\\~
s
I:
O
\\\\\\~ C •• P..
"AiID
,l.s MS.
n S.
I
=:\
.:l
~ V)
DEI/iCE - CowTRoLLER.
~
5l
- ,f-------------------...., :J'tSI5"3
~ND_I.
+~ ~
"
r~ rI
"
...- - - - - - - - - - . . . . , . ' - - - - - - - - - - - - - - - - - I -
v_
c"....y
Ius
OUT
Cf€ - /l ....,.y
~~n~
C"....y- ..'Ul.... _----'&LjI ~..: ...I--------.. ;.,r.....u'r ~
c;
A-luI
1'tll~
l-:!.'----+-------~
' - - - - - - ,..'-1
tub1-'-':!o.'
,------------------------!..!....j-~
tx
[
l,q-:JL It'.
l~'"
t'tSI1~ 1 .. '" ,a.
J
!IIII!
J'l
•
CpE - FUNCTiE
vr i
L.-
b......
'fn
KLol(.
PROtECTIE
TOLERANTIES VLGS NEN 1365
1~1":l
tl
111111
iN'iE ....
~
...J
"
P''IIf·;Ty-ta.eo..
llillTI
L.
lllllll~
. .,. _---..:.';.5" K-SuS
(,~&;T)
±
01S 8
.
+ 0,10 A:JOG 10' ± -O.2S~
PASSINGEN VLGS N 1llO2
10"
I kUWHEIDSWAAkO[N VLGS
AM NEN 6)0
TECHNISCHE HOGESCHOOL EINDHOVEN AFDELlNG:
BENAHING
DEViCE CONTR.oU.ER.
CpE- ARP.Ay AAN'tAl
HATERIAAI.
SCHAAL
DATUM
1------1------j GET.:
I
TEKENINGNR
I--------+---+I----,-...,-,-,--r-~-
A3
33
C OHPoNENT l ;'DE
o
P '1'1
D300~
3oo!. Bil:3 o
BOVl:/'ISTE C.ONNEc.ToA.
rll"
p1
11180
t:>
[
300!.
..... ,
8its
Bits It g,s
It
P 8°31
g.'3
300'2.
Sits
'g..,
)
8;T
NvLT;rlE.U ClIll.ll.y-iAJ
~
[
'l-o"
I.}
> CpE - Fu"ai.
<
J)-Bu.5
I-BLIS
2
o v
P
'0
J IS" 8iTIS' cPO p"II.;Ty 8 U II 06
N u LT'rLel-n, ouTptJ r ~"""L6s
CpE OF
epe
c.All~'1-6uT
IS"
T6sT;N'UrSE}UeNC.~1l.
"~II
1lE&. F;le BiTt '10
S
A-6v.s
<
'0
oCOpA.iTy 6
P1'1
SiT'/!'"
:2
8its ''fg.,IS'
P~'fS'3j
,
5
3001-
I P1'1
J
KLok i",lii'iT
~'1.s 314
)
...
I
III
I K.!L
3001.
,
8irf>
l
08
\lUI.
PBon o
P1'15
O"'D ~lI.srE CoNN ec.roR.
C ohpoN.tvTi.'jfl4!
.
r
~
Bits 10 i-Il
Bits t. i-3
) 30" t.
]
Bon
Bits ag.j
it,
D300t.
I §
SEOItAIl;f'lsS ZijD6
el'l'ul.. ,-IfIl.Ao" ....Te....vpr
DEvic.E
at'
pit~iTy- ~Ill.o"
f'1€'no/l.y
~
INT... ~v,.T
s;rlS
BiT,S
/(Lo I< 8 ir ;
2,0
'1'1
>k-8u5
S1'i
3"
30
'c""o)
l5iTtS 35'
iii
2 2
o
U
TOLERANTI[S 'iLGS NEN 1]65
b.,~ '.~~:~ ~ 0.15
PASSINGEN VlGS N 102
30"'0' .i.1O"
I RUWHErDswAAROEN VLGS
PROJECTIE
AM NEN 6]0
TECHNISCHE HOGESCHOOl EINDHOVEN AFDELlNG: GROEP:
.ENAMING
P-RiNT ops.tLLiAl6
AANTAl
I HATERIAAl
Cf~-ARRAy
39
Register file
In het OPE array z~n 11 general purpose registers ter beschikking voor data opslag. Dit aantal kan te weinig z~n. Het register f±le kan eveneens gebruikt worden voor ops$ag van data, adressen, statusinformatie enz. Het voornaamste gebruik van het register file is als input voor de K-bus van het OPE array bij snelle data vergelijkingen. B~ gebruik van de universe Ie controller ala controller van een magnetisch registratie medium (bijv een disc), komt het voor dat data afkomstig van het device, vergeleken moet worden met een sleutelwoord (key). Het sleutelwoord wordt dan opgeslagen in de register file. Opbouw De register file is opgebouwd uit RAM circuits (2115-2 van Intel). Het register file bevat 1K woorden van 16 bit. Adressering van het register f~le gebeurt vanuit het OPE array. Het adres wordt dan overgenomen in een counter/latch die bestuurdwordt door 3 bits uit het control store. Werking In het register file kan data worden geschreven en gelezen. Het schr~ven van data in de register file gaat als voIgt. Het address output buffer van het OPE is altijd geenabled. Eerst wordt dit output buffer met het adres voor het register file geladen. In de volgende klokcyclus wordt de data in de data output buffers geschreven. In dezelfde cyclus wordt met de 3 bits file-control uit het control store de counter/ latch bestuurd en weI zodanig dat op ~e negatieve flank van ~~ het adres in de counter/latch wordt ingeklokt. Op V, van dezelfde klokcyclms wordt de data in de register file geachreven. Moet in het register file op achtereenvolgende adressen
40
data geschreven worden, dan zal in de volgende klokcyclus de counter/latch met 1 verhoogd worden Cop positieve flank van ~~), de nieuwe data wers op de positieve fla~k van ~~ in de output buffers geklokt en in dezelfde cyclus wordt met 1~ de data in het register file geschreven. Het lezen van data uit het register file gaat op de volgende manier. Eerst worst het adres in de output buffers van het CPE array geklokt. In de volgende cyclus wordt met de 3 bits file control de counter/latch zodanig bestuurd dat op de negatieve flank van f~ het adres wordt ingeklokt. Gedurende de negatieve helft van ~~ vindt de access van het register file plaats waarna op de positieve flank van ~~, dus het begin van een nieuwe klokcyclus, de data in de register file wordt ingeklokt.
MAA k.i,..,rJ
.-
...
,...-
- -
- "f} -
"-41..
C,. ·''''If.lfy
- - --
P"
t-
Oi' ..,,. M-1kI5 "'VLT;
1
c PE
ell -.It.y
I
,..
~
rf
, I
••
.-'"~
CI
51'S ~..,
I I
"fD Do
~~
II'S
J1
So!.
Sl~
"f
(6 ....
-- -
Q
1-
1/111"
- --- -- -- -- ---- ----- - - - - ---
~
I-.D r
JD~
~
T
~
D,s
D& -
- -
-~4
~.
/' " J!"
AOREs-8u5
Po'" -
A,
Loll "140.1
FL_ C:e,.,TR.L
lUn'14
k~ •
'1"
R.lv;; vl4lo1
i}AT''' FLow c.""'T .... L
\IAN DATA FLo ..
CeNT_.£'
Cl
~
)
/ 10
.. ., ..
p's~,'t
--- ---------- - -- 2ns--1 - -- -- -------- -- ---- .tIlS-l -- ------------ -- -- -- -- -- - --r-r-- - - - ------'-I> lL
I--
j
ell-
j
11'1"
-
-
'----
I
----
~-
I-"'-
~
I"""-
r-c
v~
•
I-I-I--
0--
."1' 'i~ II-
Ut,
I
Zlf~-1. 0 - - %IlS-.f
I
f~
•
f
,
f~
J)
~~
s,',
.111
4t
jrtsil"
,
"I {
-i'" i ,.L
'If, ••1:
....
Ir
,.L....
- - - - -
--
1
k
42
SonS.
--"--"- ---"'I
\.VoR sT -
C R SE l1/fiAlG.
..::-l j(Lo I(
fL-
J 50 n S·
~
Lie. FE.
fl./I;i
vALiD ,(IlJ .
.......
~\ ~~ \
I
A .... s "ALI.
'" "I.e
~\\\\\~
MrA
IT,,'I',
WRiTE" PvLs
~
.'s
nS.
',I..
"(.0 1.
j
.n nS
UnS
..
43
Data flow control register en emit demultiplexer
De emit demultiplexer bepaalt de bestemming van de data in het data field van het control store. Het data field kan bestemd z~n - voor de sequencer en bevat dan een adres of een getal voor de counter - voor het CPE array als input voor de K-bus - voor het device-data-output-register en bevat dan besturings- en controle-signalen voor het device - voor het communicatie register met de channel controller en bevat dan communicatie-data - voor het data-flow-control register en geeft dan een bepaald data-pad aan. De data in het data-flow-control register bepaalt de datastroom in de controller, naar en van het geheugen en het device en voor de datastroom van communicatiesignalen met de channel controller. Werking Het data-flow-control register is een D-register waarin, afhankel~k van de data in het emit field, de data uit het datafield van het control store wordt geklokt. De data in het.data-flow-control register bepaalt dan de datastroom in de controller en ~et zUn omgeving. De betekenis van de verschillende bits in het dataff~Qw-control register staat reeds vermeld bQ het control store. Het data-flaw-control register is in feite een pipeline re~ gister. Het verschil met andere pipeline registers is dat het data-flow-control register gewist kan worden. Verder kan het wissen verboden worde~, Door het wissen te verbieden is het mogel~k om eerst met behulp van het data-flow-control register een bepaald data-pad te openen, waarna het datafield weer een andere bestemming kan krijgen. Het adresseren
44
van Det data-flow-control register vergt nog nadere uitleg. In het emit-field kan op 4 manieren worden aangegeven dat de data uit het data-field voor het data-flow-control register bestemd is. ~amelUk met 10x hetgeen betekent data-flow-control en hold en ~et 11x hetgeen betekent data-flow-control en clear. Wordt 11x (dfc en clear) gebruikt om het dataflow-control register aan te duiden, dan zal in de volgende klokcyclus het data-flow-control register gewist worden. Wordt 10x (dfc en hold) gebruikt om het dfc register aan te duiden, dan zal in de volgende klokcyclus het data-flowcontrol register niet gewist worden. In deze volgende klokcyclus kan het data-flow-control register wederom geladen worden met data uit het datafield, maar dit hoeft niet. De data-flow-control register-inhoud bl~ft dan ongew~zigd. Het datafield kan dan een andere bestemming hebben. Hoeft het data-flow-control register niet meer gebruikt te worden, dan moet het data-flow-control register gewist worden, dus geadresseerd met 11x.
SIll
C
8
I
•
.
I
t
D
. ,, I
o-
II
,
I
~
I
""r
513&
~IUt I~ ftf~ET
l
'1'
'12,
I D ,
--l.J 'i 7
~
-
.. ....- elUI
0
~
'to
35
"l4
~
D
Q
~
~ S 113 r--
-
-.r
-{>
If_
4 8· 0----,
DA-TA FLO..,. c.onT ftoL
I t
J.
..
Itl
Mt:M Of DE~
Ol
-
c.PE Of
0 fi>
~
46
Pip~Lini kLok
J
I
P;p,li t'\f O\4~P\4t.
tf&irt.
'1
:f
I I
c
~ vALil) I)
I
I
I
o ....t~u! DfC. Cl f~.
i·
I I
~ I
Ie
1}
I
c..liAlt
I. I
1.
4'
~"I'LiD
)0
I
~ANO i~"\l~
,,\"1.il>
i
I
I
I I
,e
10
~o .... l~,,~ n,.
I
H\&. I)\&f.p"'i:.
I
I I If I
"ALio l'~'
"AliI)
cLl~l
47
Communicatie unit
Het doel van de communicatie unit is de communicatie te verzorgen met de channel controller. Hierbij kunnen de device controller en de channel controller aIleen initiatief tot 0 output nemen. Yerlangt een controller input van de andere controller, dan moet hij deze dus eerst aanvragen. Werking Omdat het,niet ondenkbaar is dat in de toekomst meerdere device controllers aangesloten zUn op dezelfde ehannel controller, moeten de device controllers geadresseerd kunnen worden. De device controllers moeten hun eigen adres kunnen herKennen en hun adres aan de channel controller kunnen meedelen. Omdat meerdere device controllers via de adres- en data-bus met de channel controller verbonden zijn, moet voor een output operatie van een van de controllers, eerst de busverbinding aangevraagd worden. Een ontwerp voor deze Bus Control Unit is nog niet gemaakt. Het aanvragen van de bus gebeurt met de signalen Bus Request en Bus Acknowledge. Toen de communicatie unit ontworpen werd, was het de bedoeling de channel controller uit te rusten met een 8155 statisch RA~. De werking van de communicatie unit is dan ook gebaseerd op gebruik van een 8155 in de channel controller. De 8155 is een 2K bit statisch RAM met 3 I/O poorten, genoemd poort A, B en C. Poort A is de output poort van de channel controller, poort B de input poort. Poort C dient voor de controlesignalen van de poorten A en B. Deze controlesignalen zljn een interrupt die de 8155 kan uitzenden, een outputsignaal dat aangeeft of het buffer vol of leeg is en een strobe input dat dient ala lees- of schrljfsignaal.
48
Output-operatie een output operatie wordt eerst getest of het inputbuffer van de channel controller leeg is. Is dit het geval dan wordt met Bus-request-extern de busverbinding met de channel controller aangevraagd, door bus-request-intern met het laag worden van de Oi' voor communicatie output uit het emit field, in een D-flipflop in te klokken. Tegel~kert~d wordt de data in het output register geklokt. Met de Bus acknowledge wordt de bus toegewezen. Busaak enabled de output registers en zal een one-shot triggeren die een 200 nsec strobe-puIs afgeeft aan het input register van de channel controller, waarmee de data in deze registers wordt geklokt. Buffer B Full (BBF) zal dan hoog worden. De device controller zal nu het opack signaal blijven testen op laag worden. Dit wordt laag als BBF laag wordt. De channel controller heeft dan de data uit zijn input register overgenomen. Moet er meer data overgezonden worden, dan hoeft de busverbinding niet meer te worden aangevraagd, hij is nog steeds toegewezen. We kunnen nu weer met het Of signaal van het emit-field data ift de output registers inklokken enz. Is het laatste datawoord overgestuurd en ontvangen (opack is laag) dan moet de bus weer vrij gegeven worden door met Of van het emit~field busrequest=O in te klokken. B~
Input-operatie Bij een input operatie zal de channel controller de bus aanvragen en na een zekere tijd toegewezen krijgen. Het adres wordt dan op de bus gezet. Tevens wordt er een interrupt (int.A) gegenereerd. De device controller zal het ad res op de adrea-bus vergel~ken met zijn eigen adres, indien dit gelijk is wordt de int.A doorgelaten naar de interrupt control unit. Het signaal BAF zal zorgen voor het uitzenden van een 200 nsec strobe-A puIs, waardoor de data op de data-bus wordt gezet en in het input register geklokt. In de interrupt service-routine zal getest worden of het eigen input buffer vol
49
is. Is dit het geval dan wordt de data uit het bu~fer gehaald waarmee de flipflop, die aangeeft of dit inputbuffer vol of leeg is, wordt gereset. Er kan nu opnieuw input plaats vinden.
Bus RE!luE.T
,---t1
,
"v
Oi C;oHn.ouTpuT "'''1<1 ~Mjr I'fu...
8 ]lATA
DRTA
vII",
CONTlloL ,rollE
.er.~ s F-=-~-~-----' 1---l----='-I'eIK
~r
l....-,n
Gl
~LR
L.;--..
Q
,..-\-"
~~1"1
~'I(
yo >_---O-
+_----+---r---=--oo-n-$-._--,
~
5T1~o8£
B
...
of. AeK.
TEST iOlf'VT
voolt s£1u£",eEl
s .. 1- D
~'7 ~.,
q
~
-T-
I
TEST ;"'fuT
8BF
SE'!v£Nt£1C
C.OMNV~;CATiE - kAII/T MET C.IiFl~"'El- COIJrRoLlER,
DEViCE -coIl/TRoLLER- KAII/T
+E
~
z
"Z
It
<
~
z
§
1+
~~
iNT'ltIlUpT
i.IU/l.RupT fl
..-----------«(J====~-t_-o<::::JL~=1
l!:!:..r'?
S
clkr--
~"'U
~s.
c----
U1" llFlT,
8
I -sus c.pe
14-----....-1----_------""""11----------4- DATA -----;::I.....""lr ~C>---......;;;;;.....
B
o; f
or • ''''''
81T JI
~
~Fc..
.--_.....J
T
~r-
STR08E II
e_
r--L----t-t--e]::==~~--rllil e... ~S i~,u
I
I -
~Q I---
--.J!.q
~
41----+---+--+---------,
"\I,
Q elk
T6.T I",pvr... - - - - - - - - - - - - - - - '
n
::-Jl:!J~ '----
J)
8AF
I
'ES""NCt!~ o~
EIC6N
auF".
LEIt; ;$
" c
VI
o
OUTPUT- OPERFlTl'E:
voL
e FULL
8lJFFI!~
'------I-----------.~--___+--
Bus Rcq uEs r
i N7 ER N
oE CoNN. oUTfur
DATA op CoMH.Bv5
0pERAr~N
Bus
ACKNowLEDGE
ReI<
S-rRoBE B
INPUT- OpERflTiE:
. ~ .
~
!
fI-
1+
,op
t:o
I
fJ
--i
;
12 ~ z ::l
~! ~
_~ INTE~R.vPT
\
I
\
INTEll.IWpT VooR
DEVic:.E CaNT{/..
I
I
!
,JAw
C.~A"NEL CONTR
\ONE-SHOT vooR INTER.NE iNT
c;
(
0+-
J
l1
» 3:
,. ~
GE1iil<
\
SLflvE -ADDR.ESS NiE,6FI!j1<
.Q ~
n
~
::::\ :% ~:
(1\
n0
f
voL EiSEN BuFFER. ~EE6
VoL
\
/
BuFFE R A FuLL LEE6
:l
:z c
\
~ ;;.
~
:J>
~ !j
~
~
-
~
-
l\)
-
~
~
-
-
1"\ It,
-
.>..
'-------------4'
ff---------JI
I \.. .
~""",~::-:-:-~----.,..",---.-r"""-"""--.--T""'.....,.{J\ \\ \ \ \ \ \S\XI-....;V:..:::A~L:..=;D!.....----.JX\\S \ \ t"
u
STRo8E A
REGi S'E Il. KLoK
\\\1),qr A
or
oE '" BiT
Bu.s 2j ""'N
DFc.
01
52
Memory-bus-communicatie-unit
Deze unit dient voor het data-transport tuseen device controller en buffergeheugen. Deze busverbinding wordt door meerdere controllers gebruikt zodat ook voor deze bus een bus-control-unit moet z~n, die de bus toew~st aan de controller die hem als eerste aangevraagd heeft. Bij meerdere aanvragen tegelijk wordt de bus toegewezen aan de aanvrager met de hoogste prioriteit. Werking Nadat de bus toegewezen is aan de c~ntroller, vindt het data-transport plaats onder begeleiding van de handshake signalen bus-operation-request en bus-operation-ackowledge. B~ een I/O operatie vindt een herstart plaats van de klok door middel van device-opack. De device-opack kan geactiveerd worden door een bus-opack, waarbij de I/O operatie geslaagd is, of door een time-out, waarbij de I/O operatie niet gelukt is en waarb~ tevens een time-out error-interrupt gegenereerd wordt. Een operation error aan memory-kant wordt bij het begin van de eerstvolgende klokcuclus ingeklokt. Outputoperatie Eerst wordt de busverbinding aangevraagd met het geheugen door middel van bus-request. Met operation request en ~,' worden het adres, de data en de opcode in de output-registers ingeklokt. Als de verbinding met het geheugen tot stand gekomen is (dmv bus-ackowledge) worden de output registers geenabled en wordt:nmet het opkomen van delayed bUB-ackn~wiea ge en een bus-operation-request gedaan. Als het geheugen de data overgenomen heeft, geeft h~ dit door met bus-opack die device-opack activeert en een nieuwe klokcyclus start.
tJ
Wordt in een volgende klokcyclus weer output gepleegd, dan
53
blijft de verbinding met het geheugen in tact (busack bl~ft hoog) en hoeft de bus niet opnieuw aangevraagd te w~rden. Met bus-operation-request en bus-operation-acknowledge wordt dan op handshake-basis de data overgestuurd. Inputoperatie Eerst wordt weer de bus aangevraagd met het geheugen door middel van bus-request. Met operation-request en fJ worden het adres en de opcode in de output registers ingeklokt. Als de bus toegewezen is, worden deze output registers ge~nabled en wordt met het opkomen van delayed bus-ack en 'f1 een busoperation-request gedaan. Als het geheugen de data klaar heeft staan wordt dit doorgegeven met bus-operation-acknowledge waarop de data in de input registers wordt ingeklokt. Bus operation-acknowledge activeert device opack die een nieuwe klokcyc14s start. Met het opkomen van bus opreq wordt een time. out gestart die bepaalt hoeveel t~d het geheugen ter beschikking krijgt om de data te lezen of te schrijven. Wordt deze t~d overschreden dan genereert de time-out een time-out error-interrupt- en activeert de device opack die een nieuwe klokcyclus start. De I/O operatie moet dan herhaald worden.
U11t .it
°re--<.....-
~
b
.,
r--I til
-
ofJf:AZ,E
...
--
I
I
A
AMIS-
avoS
<
I
v
51 1"
.
'"
I ~f
la, .e
I
J)
..,
H iii
~I :lJ aUS
~I
..
q
.,
...
A ...c.r-
-
US
....-
ACCM:>WUDQ!
Bus REqUEsT ...-
~
ltE9V~ST
-
$
v
--,.J
I
-
....,
A
It ~UE'T
o P. E1Uo/t
v
18u4c"NOwlIl5Cl" S Of· ~
I
r Sus
<
A
..
.
.8
1" I'U
D
rOl ., 5J1'"
L~
)lD
-Vi I
}
kLolCSi.,.,AlEjIt
F'loVtJ
CON Tf/l.oL
-
-
~
....-
"It",
nATA
w/i
rrel
NI
., ....., iii Sll" I'r--J
I
~
f-'
-
1~
I
A
A
r
o ~EIt"T;.N
0'" IUtuEIT
'-..-
ut"
('1--
I DR TA-
Ap.ES·8us
f
'l
~
~
i
'--
BI
!l~"
s "
~
/ - I)
~
"q
a.. Al ,.~ , , I
/00
~ 1- D
D
~
CSl
+-
..
q r----"'
ritf~
ouT
E",,,oA
L.-.-J
s 7" D
°fEAAT;G.N
~
EIt«ojt
-J
BuS
I
~E,.trr;o
"c:",~otJ(EO~ j
,a
i
ME"oll'(-aus of
DATR ·8u!'.
W"11 ,. kLo ICGEA/E-
"'"70"
I KLoK
VEFUR~G DE kLok
i
Ir-
-/-_--"j_ _~J
f\-
3
\
,
I
w/i
Bus
ACl(.
en \/00(1.
A· Bus
eN
opo>
0/1
/
Bus of
IU~.
8us of.
ACI<.
"DEI/teE Of·
/
I'lCI<.
.330 nS.
V
dol<
+E
II
.J
/
LL n S.
//) I.'"s
J !'H'~.
OpCDDf,
8u S RE4.• OPfU-4.
\~
v---
/
I
\
\
wit<
I
\
\
--":E=-US-+II_ClC_'
-I-l6..._~~..
DELAy,.!D 8us licit:'
I
~~.---\.---I-J----------r-------\;\----r\~
8us.Cjl.
liCK.
OUTpUT- OpEf(AT,'e
\
.
56
Device data I/O
Het doel van deze unit is om op handshake-basis data met het device uit te wisselen. Het device wordt hierb~ door de controller bestuurd via de device-cmntrol~output. Werking Outputoperatie Aan het begin van de klokcyclus worden data en het adres in de output registers geklokt. Tegelijkertijd worden ook de signalen R/W en opreq-intern in het pipeline register gezet. Op de positieve flank van ~J wordt dan opreq-intern omgezet in een opr~q voor het device. Als het device de data heeft overgenomen, deelt het dit mee met het signaal opack, waarna een.~ieuwe klokcy.clus gestart wordt. Inputoperatie Aan het begin van de klokcyclus wordt het adres in het output register gezet. Met ~ wordt dan weer opreq-intern omgezet in een opreq voor het device. Wanneer het device met het opack- signaal meedeelt dat de gevraagde data op de databus staat, wordt met het hoog worden van het opack sigmaal de data van de data-bus in de input registers geklokt. Het opack signaal start weer een nieuwe klokcyclus. In deze volgende klokcyclus wordt de inhoud van de input registers op de interne data bus gezet, 66k als in de volgende cyclus weer input gepleegd wordt. De inhoud van deze registers wordt gelezen, voordat er weer een opreq aan het device gegeven wordt. Moet de data in het buffergeheugen opgeslagen worden, dan kan de data fius aan het begin van deze volgende cyclus in het bus-output register geklokt worden.
57
Device control-output en status-input
Het duel van deze schakeling is om het device van controlesignalen te voorzien en om de status van het device te kunnen lezen die dan in het CPE getest kan worden. Werking De controlesignalen voor hetvdevice zijn afkomstig van het datafield uit het control store. Als het emit field aangeeft dat de data uit het data field bestemd zijn voor het devicecontrol register, wordt de data in dit register geklokt, De status van het device wordt aan het begin van elke cyclus in het input register geklokt. De controller kan daze data op de I-bus input van het CPE zetten, om in de CPE getest te worden.
-
-'
-
0 1/1
ali
:f I-
~
Z
cz: I-
V
...
...
In
r
... o-
e-
I
I
I
1
Q
, §!
(J' ... .J< C< ~
0
t
G-
~l
0
I
T
re
C)-
Q
I
I
o--
l~
Q
¢
...
0
13
a. A.' o 0 at
0
I
,..", "*
r~
......,
r
.!
j(
('f
~
II'
1~
....0
~
J I~ ~
~J
~
....
.4~
~
i
0-
... .f '" ~ ,.,...
4-
If')
r+o
"
Ie:
~
1
I~
I
......
v
.
tn
0
~
w
..
-
0
0
;,
...t-t-
... ¢.-
~o-
11
-:t
: :~ ~
0
0
...
0-
...
oo
VI
z
...
"" ~
...
0
... a ...,.. "." ~
~
Q
IU
.l!
.. ~
TOLERANTIES VLGS NEN U6S
a
7
'·•. HO.15
'"
Q
.~::~ ~
PASSINGEN VLGS N MJ2
I
~
30"'0"%)0"
I RUWHEIOSWAAROEN VLCS
P~OJECTIE
.ENAMING
AM NEN
no
TECHNISCHE HOGESCHOOL EINDHOVEN
AANTAl
HATERIAAl
SCHAAL
OATUM
AFDELING:
GET. :
GII.OEP:
GK.:
TEKENINGNA..
WlllI"'NG
II I I I I
AJ
59
Klokschakeling
De klokschakeling bestaat uit een schuifregister dat door een oscillator van klokpuisen wordt voorzien. De oscillator heeft een frekwentie van 30 MHz. Door hat schuifregister (dat 10fbit-plaatsen lang is) wordt een negatieve pula gestuurd. De kloksignalen worden gevormd door de uitgangen van het schuifregister in poorten te combineren. De systeemklok heeft een cyclusduur van 330 nsec. Er loopt een negatieve puIs van 66 nsec door het schuifregister. Deze negatieve puIs kan op verschillende manieren gestart worden, 1 door een automatisch~ herstart na beeindiging van de cyclus. Negen oscillator-cycli na de start van een cyclua wordt de strobe ingang van de herstart mUltiplexer hoog gemaakt en de gekozen herstart ingang vr~gegevan. Ward door de multiplexer input D~ (automatische herstart) gekozan, dan zal il~ (logische 1) de restart D-flipflop triggeren. Daardoor zal b~ de volgende oscillatorpuls een 0 in het schuifregister worden ingeklokt.en tevens de herstart multiplexer weer worden gedisabled. Na de tweede oscillatorpuls wordt ~~de restart flipflop gereset en zal verder een 1 in het schuifregister worden ingeklokt. Er loopt dus een negatieve puIs van 66 nsec door het schuifregister. 2 door een operation acknowledge van de memory-bus 3 door een operation acknowledge van het device ~ met de AND van beide 5 met de hand. De laatste vier genoemde mogel~kheden werken hetzelfde als de automatische herstart, aIleen wordt door de herstart multiplexer dan een andere ingang geselekteerd. Na een klokcyclus va~ 330 nsec wordt de klok in~p~incip•. dus gestopt. Elke klokcyclus moet opnieuw gestart worden. De herstart selectie vindt plaats met 3 bits uit het control store (bit 23,24 en 25). Door middel van de handherstart is I
60
het mogel~k om in het microprogramma breakpoints te setten. Is S1 geopend dan kan met S~ een handherstart gegeven worden. Als Sj gesloten is dan kan de handherstart niet gebruikt worden.
"=~
,J..-ftn
3-"'"
Sat ..
( !- 0
lilt
S7ft
.., " j
~
C~
•
Co
~
St,s
~
Cl. qc, Cl.
L.
""Ie.-l 51'S
q", c~ CO). ~D
I
...
\
Lt::===~=t==::tp---.J;;"D----------4----~
1't~1lf.
T>rv.
Of'. Aclt.
0".
~c ...
1,o,
n
\f "'4'- C...,T. .l STo~l
~ 1$' 7
JOMHa. Op. Ac.I(.
ST~o8E IIItH
q
S lSI
VA'"
P.ESTA~T 'D-F.F.
\_---------
63
4.0 Line-printer
In het tweede gedeelte van dit verslag zal nader worden ingegaan op de werking van de line-printer. Om een controller voor de printer te kunnen realiseren, zallen we moe ten weten hoe de printer werkt en op welke manier de printer bestuurd moet worden. In paragraaf 1 zal dan ook eerst het principe van de werking van de printer behandeld worden. In paragraaf 2 komen dan de control units aan de orde, die voor de besturing nodig z~n. Vervolgens komen de commando's ter sprake die aan de controller gegeven moeten kunnen worden. Ten slotte zal een aanzet gegeven worden om een besturing voor de printer te realiseren met de in de vorige pagina's beschreven universele device controller. Het zal echter bl~ ken dat in de interface tussen controller en printer nog veel extra elektronika vereist is, met name 132 drivers voor bekrachtiging van de hamers.
64
4.1 Principe van werking line-printer
Het print en van de karakters komt tot stand door papier en ~tlint aan te drukken tegen een continu bewegende ketting, waarop de karakters staan. Een regel bevat 132 printposities. Elke printpositie heeft .en hamer. De ketting bevat 240 karakters. Het printalfabet komt een geheel aantal keren op de ketting voor. De standaard-ketting heeft een alfabet van 48 karakters; 26 letters, 10 c~fers en 12 speciale karakters waaronder leestekens. Omdat de ketting continu ronddraait, moe ten we dus op de een of andere manier uitmaken wanneer een bepaalde hamer afgevuurd moet worden om op die plaats het jUiste karakter te printen. De methode van printen zal aan de hand van fig 4.1 nader uitgelegd worden. De regel die geprint moet worden, staat opgeslagen in een buffer. Het printen begint alt~d met positie 1 en op het moment dat een karakter precies tegenover hamer 1 staat. Gedurende de eerste cyclus wordt het karakter dat geprint moet worden op positie 1, vergeleken met het karatter dat op positie 1 geprint kan worden. Z~n ze gel~k dan wordt hamer 1 afgevuurd en het karakter op het papier geprint. Na beeindiging van de eerste cyclus is de ketting intussen zover verplaatst dat vervolgens karakter 3 op een l~n is komen te liggen met hamer 4. In de tweede cyclus wordtlmu het karakter dat op positie 4 geprint moet worden, vergeleken met het karakter dat op positie~geprint moet worden. Z~n ze gel~k dan wordt hamer 4 afgevuurd. Na beeindiging van de tweede cyclus is de ketting weer zover verplaatst dat nu karakter 5 op ~en lijn is,-komen te liggen met posi tie 7 enz. -Op deze wijze ontstaat een vasta volgorde en weI dat steeds eek tweede karakter op een l~n komt te liggen met elke derde positie. Dit patroon zet zich voort totdat in de 44 0 cyclus karakter 87 (karakter 39 modulo 48) op een l~ ligt met positie 130. Dit patroon van vergelijken, beginnend op positie 1
65
,
1
3
£t
6
UUUUU •
L - - \4A- HER$ - - __ J U U U U
I ,
.......0.'
-'I .... 00' II I
I
n n
~
I
t.
,
'
I
I
II
n r
n 1'1
1
40
BFGIN sUBseA'" '1 t
I
3
_
"
U U U U U L __\i!N!.R~
,
I I
I
...
n, n
~
1&1
n
J U U U U I I
LJLJLJ ,
If
I
ai,
~
~
. ,I '..... 0 .. 3 "
, I
Q
. tit
J U U U U
" ..... • 001 .,
I
~
~AHERS
n
40
110
U U L
[1
4
I
BeGiN s",Bsc4N J
LJ LJ lJ LJI
,I I
Q
I
1;\0
n In ~
At
fJ
•
In
III
" L ___1i'LM~~___ J U ,U, U U LJ '1 ..., "'" • o...s II
",'" • 00/ I
II
'n
n '"
0\
IS"l
-tI ..... '~'5
1 I
'l.
l
.001
"
110
Ih
•
4D
fig 4.1
nIt, r
66
en eindigend op positie 130 heet subscan 1. Na beeindiging van subscan 1 is de ketting zover verplaatst dat karakter 2 op een l~n ligt met positie 2. Het printen begint nu op positie 2 met karakter 2 en vervolgens elk tweede karakter met elke derde positie totdat in de 44 0 cyclus karakter 88 (karakter 40 modulo 48) op e~n l~n ligt met positie 131. Dit patroon, beginnend op positie 2 en eindigend op positie 131 heet subscan 2. Na beeindiging van subscan 2 is de ketting zoververplaatst dat vervolgens karakter 3 op een l~n ligt met positie 3. Het printen begint nu op positie 3 met karakter3en vervolgens weer elk tweede karakter en elke derde positie totdat in de 44 0 cyclus karakter 89 (karakter 41 modulo 48) op een l~n ligt met positie 132. Dit patroon, beginnend op positie 3 en eindigend op positie 132, heet subscan 3. De combinatie van subscan 1, 2 en 3 heet een printscan. Gedurende een printscan heeft elk van de 132 posities de mogel~kheid gehad om een karakter te printen. Voor elk van de posities geldt dat indien het karakter dat op die plaats geprint moest worden, gel~k was aan hat karakter dat op die positie geprint kon worden, de desbetreffende hamer afgevuurd werd. Na beeindiging van dit printscan zal de ketting ZOYer verplaatst z~n dat nu karakter 2 op een l~n ligt met positie 1. het print en begint nu weer van voren af aan, dus subscan 1, 2 en 3, in totaal weer een printscan. Elk van de 132 posities heeft nu de mogelijkheid gehad om een tweede karakter te printen. Omdat het printalfabet uit 48 karakters bestaat, z~n er 48 printscans nodig om op elk. positie elk van de 48 karaktera te kunnen printen. Op elka positie zal uiteraard maar hooguit een karakter geprint worden. In fig 4.1 z~n we er vanuit gegaan dat karakter 1 op een l~n lag met positie 1. Dit heet de home-position. Het printen begint steeds op positie 1 maar behoeft niet noodzakel~kerw~s in de home-position te zijn. Het is voldoende dat een willekeurig karakter op een lijn ligt met positie 1. Met behulp
67
van een speciale teller wordt b~gehouden welk karakter op welke positie geprint kan worden. De control units die nodig z~n om de printer te kunnen besturen, zullen in de volgende pagina's nader uitgewerkt worden.
68
4.2 Line-printer control units
De ketting met karakters draait met een konstante snelheid rondo Een hamer moet afgevuurd worden als het juiste karakter precies tegenover deze hamer staat. Hiervoor is een timing vereist. Deze timing wordt verzorgd door een magnetische drum die mechanisch gekoppeld is aan de omloop van de ketting. Deze drum geeft de zo genaamde Print Sub Scan (PSS) trigger pulsen af. Elke puIs geeft het begin aan van een subscan. Bij een ketting met 48 karakters zijn er 144 subscans. De drum geeft dan ook 144 pulsen af. Tussen de 1e en 144 e puIs wordt een extra 145 e puIs afgegeven die de home-position van de ketting aangeeft. De home-pulse dient voor synchronisatie van de besturing met de omloop van de ketting.
Om tekst te kunnen printen moeten er in principe 3 dingen bekend zljn; - welk karakter staat er tegenover een hamer - op welke positie kan dit karakter geprint worden - welk karakter moet op een bepaalde plaats geprint worden. In de Print Character Generator (PCG) wordt bijgehouden welk karakter er tegenover een hamer staat. De PCG bestaat uit de Character Address Counter (CAC) en een geheugen (ma.imaal 240 byte groot). In de home-position van de ketting zal de CAe het adres bevatten van het eerate karakter op de ketting. In het geheugen staat de bijbehorende code van dit karakter.
69
De CAC is een teller modulo het aantal karakters van het printalfabet. In het geheugen staat op sequentiele adressen de code van de karakters op de ketting. De hamerpositie waar we een karakter proberen teprinten, wordt b~gehouden in de Hammer Address Counter (HAC). De HAC . geeft het adres van de hamer waar geprint zal gaan worden en adresseert tegelijkertijd de overeenkomstige positie in het data-buffer, waar het karakter staat dat op die plaats geprint moet worden. In de volgende pagina's zullen de control units die voor de besturing van de printer nodig zijn, nader besproken worden.
-
- c.Re
~
S5
~
#"
J -. CO" ,,.AE~
ORTA-~"'I"· kLok
H~c
,
r
.1
~,,"I'.s.lfcTi, 1:,... b.krtAdIT''';N'.
-
- - - -- - - - - - - - - Q G6
c'--
l,ja
-- 6
----')t
-
-
70
Subscan counter In de subscan (SS) counter wordt b~gehouden in welk subscan het print en is. De SS counter is een teller met 3 toestanden. B~ de synchronisatie-procedure wordt de SS counter op 3 gezet en zal vervolgens door elke PSS puIs een stand verder gezet worden. Tevens wordt de SS counter gebruikt om te controleren of de ketting en de besturing nog weI gesynchroniseerd zijn. Is de SS counter na de home-pulse, maar v66r de volgende PSS puIs niet in stand 3, dan is de synchronisatie niet meer correct en zal er een sync error gegeven worden. Print-character generator De PCG bestaat uit een Character Address Counter (CAC) en een geheugen. In de CAC staat het nummer van het karakter op de ketting dat we proberen te printen. Dit nummer vormt het adres voor het geheugen, waar de b~behorende code van het karakter staat. De te gebruiken code kan z~n ASCII, EBCDIC of een willekeurige andere code, eventueel door de gebruiker zelf te defenieren. De CAC is een teller modulo het aantal karakters van het printalfabet. B~ gebruik van de standaard-ketting met 48 karakters, neemt de CAC de standen 0 tim 47 aan. De PCG werkt in 2 modes; - printing mode - not~printing mode. In de not-printing mode geeft de PCG de beginconditie aan om met printen te kunnen beginnen. In de PCG wordt dan bijgehouden met welk karakter in subscan 1 begonnen kan worden met printen. De overgang van subscan 3 naar subscan 1 doet de CAe met 1 verhagen. In de printing-mode moet de PCG voor elke cyclus het karakter aangeven dat geprint kan worden op de positie aangegeven door de Hammer Address Counter. Een klok geeft het begin van een nieuwe cyclus aan. Een andere manier om de pcq te realiseren is door middel
71
van een speciale teller die rechtstreeks de code van het te printen karakter representeert. Dit gebeurt in de IBM 2821 Control Unit. De volgorde van de karakters op de ketting bepaalt de eenvoud (of complexiteit) van deze teller. Deze teller is dan geschikt voor "n bepaalde code, bijv EBCDIC, en ddn bepaalde Ketting. BU gebruik van een ander~ ketting moet de PCG gemodificeerd worden. Door de PCG te splitsen in een CAC en een geheugen, wordt de PCG universeler. De CAC is een teller modulo het aantal karakters van het printalfabet (maximaal 240). ~e modulus van de teller moet instelbaar (of programmeerbaar) zijn. Het geheugen heeft een grootte van 240 byte. De code van de karakters die aan de controller wordt aangeboden, is elke willekeurige code van 8 bit. De code die in het geheugen staat, is de code waarin de karakters aan de printer aangeboden moeten worden. Hammer address counter In de Hammer Address Counter (HAC) wordt het nummer (adres) bijgehouden van de positie waar geprobeerd wordt een karakter te printen. De HAC kan in 2 modes werken; - loading - not-loading. In de loading mode wordt het data buffer gevuld en zal de HAC de bufferposities incrementeel adresseren. In de not-l~ading mode wordt in de HAC het adres bijgehouden van de positie waar geprobeerd wordt een karakter te printen. Na beeindiging van de loading mode zal de eerste PSS puIs die het begin van een'subscan 1 (dus SS=3 en PSS puIs) de HAC resetten in stand 1. Bij het begin van subscan 1 zal de HAC dus het adres 1 bevatten en vervolgens in elke klokcyclus met 3 vernoogd worden. Bij het begin van subscan 2 moet de HAC het adres 2 bevatten en bij het begin van subscan 3 het adres 3. Aan het einde van een subscan (positie 130,131 of 132) vindt dan een reset plaats naar de beginstand voor het volgende subs can.
72
Data buffer In de data buffer staan de karakters opgeslagen die geprint moeten worden. De data buffer wordt geadresseerd door de HAC. Een karakter vergt 8 bits. In de data buffer worden ook nog enkele speciale condities bijgehouden. Voor elke conditie is een bit per printpositie beschikbaar. In dit status-buffer wordt bijgehouden; - of de printpositie een afvuur~ opdracht gekregen heeft. Deze bit wordt tevens gebruikt om te voorkomen dat op een positie meerdere karakters geprint worden. - of de printpositie al een compare-equal signaal gekregen heeft. Deze 2 status bits geven de mogelijkheid tot hat detecteren van de volgende toestanden; 1 De printpositie heeft een compare-equal signaal gekregen en een afvuur opdracht. 2 De printpositie heeft een compare-equal signaal gekregen maar geen afvuur opdracht. 3 De printpositie heeft een afvuur opdracht gekregen zonder een compare-equal signaal. 4 De printpositie heeft geen compare-equal signaal gekregen en geen ufvuur o~)dracht. Op daze positie is due nog geen karakter geprlnt kunnen worden. Uompq~e
unit
In de compare unit wordt het te print en karakter vergeleken met het karakter dat geprint kan worden. Bij gelijkheid, en in geval deze positie nag geen afvuur opdracht gekregen heeft, wordt een compare-equal signaal aan de hamerselectie en bekrachtigingsunit gegeven. De hamerbekrachtiging geeft dan op z~n beurt een afvuur opdracht aan de geselecteerde hamer.
13
Klok De klokschakeling geeft het begin aan van een nieuwe cyclue. In een cycluswordt gepoogd een karakter te printen. Zo'n cyclus duurt 11,1 jAsec. Een subscan duurt 555 JAsec en een printscan 1,665 msec. Print scan counter In de print scan counter wordt bijgehouden hoaveel printscans hat printen reeds heeft voltooid. Voor het printen van een regel tekst zijn 48 print scans nodig. Na beeindiging van 48 print scans wordt het printen gestopt en kan, na een papierverplaatsing, een volgende regel geprint worden. In de printer vindt ook een papiertransport plaats. Dit gebeurt door middel van een hydraulisch systeem. Om het papier over 1, 2 of 3 regels te verplaatsen, moet een signaal met een bepaalde tijdsduur aan de printer toegevoerd worden. Deze tijd varieert van 15 tot 21 msec. Voor de precieze timing wordt verwezen naar de handboeken van de printer. Tegelijk met het papiertransport draait een controle-bandje mee waarmee de gebruiker een zelf bepaalde indeling van het papier kan verwezenlijken. Voor dit doel zijn er 12 kanalen ter beschikking. Kanaal 1 geeft aan de eerate regel op een bladzijde, kanaal 12 de laatate regel. De overige 10 kanalen zijn door de gebruiker vrij te verdelen. In de controle-band moeten dan gaatjes gemaaktworden op de gekozen plaatsen. Door middel van borstels, voor elk kanaal een, wordt gedetacteerd of het papiertransport tot hat gekozen kanaal gevorderd is. Ook dit papiertransport gebeurt relatief langzaam. Verder zijn in de printer micro-schakelaars aangebracht ter beveiliging van de mechanica van de printer en voor detectie van moeilijkheden bij het papiertransport. Bovendien zijn op de printer enkele bedieningsknoppen aanwezig waarop door de con-
74
troller eveneens gereageerd moet kunnen worden en indicatie lampjes die door de controller aangestuurd moe ten worden. Het proces van de papierverplaatsing en het reageren door de controllerop gebruik van de bedieningsknoppen z~n reI atief langzaam verlopende processen. B~ gebruik van de universele controller voor aansturing van de printer zijn met betrekking tot deze processen dan ook geen enkele timingsmoeilijkheden te verwachten. Bjj de bespreking van een mogelijke realisatie van een besturing met de universele controller, zal dan ook vr~wel geen aandacht besteed worden aan deze processen. Met betrekking tot de precieze werking van de mechanica en de vereiste timing van de signalen wordt verwezen naar de handboeken behorend bij de printer.
75
4.3 Line-printing en operation commands
Nu de control units voor de printer besturing bekend z~n, zullen we eerst bekijken hoe het print en van-een regel tekst tot stand Ieomt. Na het aanzetten van de spanning voor de printer zal een zekere t~d verI open voordat de ketting op volle snelheid r~ddraait. Vervolgens zullen de control units gesynchroniseerd moeten worden met de omloop van de ketting. Daarna is de printer-in staat om tekst te printen. Voorafgaand aan de data zal aan de controller een commando gegeven moeten worden die aangeeft wat met de (eventueel) volgende data gebeuren moet. De IBM 2821 Control Unit kent 4 soorten commando's; - Read Command - Write Command - Control Command - Sense Command. Een commando is een byte breed. De Read Command dient aIleen voor diagnostische doeleinden. Met dit commando kan de inhoud van diverse conditie-registers en de line-buffer gelezen worden, om het opsporen van een fout te vergemakkel~ken. Met de Write Command zijn diverse functies te realiseren. Een command byte is gesplitst in twee stukken, met 3 bits wordt het soort commando aangegeven, de 5 andere bits geven een nadere bepaling van hat commando. 01234
567
00000 00001 00010 00011 10001
001 001 001 001 001
10010
001
Write (no automatic space) Write and space 1 line after printing Write and space 2 lines after printing " 3 " " " " " '/{r i te and skip to channel 1 ~fter printing
"
"
" "
"
2
"
"
76
01234
567
10011
001
I
I
I
I
1110J
001
00000
100
Write and skip to channel
3 after printing
Write and skip to channel 12 after printing Sense
Her Write Command heeft dus als gevoig het afdrukken van een regel tekst waarna automatisch een papierverplaatsing plaatsvindt. De papierverplaatsing kan zijn 0, 1, 2 of 3 regels of een transport naar kanaal 1 tim 12. Over het gebruik van de Kanalen 1 tim 12 wordt later teruggekomen maar hier kan reeds vermeld worden dat de gebruiker mbv deze kanalen een door hem zelf bepaalde bladindeling kan verwezenlijken. Met de Control Command wordt een papiertransport aangegeven zonder dat hierbij tekst geprint wordt. 01234
567
00001
011
00010
011
00011 10001
011 011
10010
011
I
I
I
I
11100
011 011
00000
I
Space 1 line immediately " " 2 lines
"
3
"
"
Skip to channel
" "
"
1 immediately
2
"
Skip to channel 12 immediately No op
De Sense Command byte was reeds vermeld bij de Write Command. Met een Sense command wordt de status van de printer opgevraagd. De status wordt aangegeven met een byte. DestatuB byte wordt "gemaakt" in de device controller naar aanleiding van signalen uit de contral units, bijv synchronisatiefout melding, en ui t .de printer, bijv het indrukken van bedieningsknoppen.
77
4.4 Printer besturing m.b.v. device controller
Met behulp van de universele device controller kan een besturing gerealiseerd worden voor de line~printer IBM 1403 model 2, die in de vakgroep aanwezig is. Een voor de hand liggende manier om de besturing te realiseren is door een maximaal gebruik te maken van de controller. Dat wil zeggen dat de besturing zoveel mogel~k in software gerealiseerd dient te worden zodat zo min mogel~k extra hardware bijgebouwd hoeft te worden. De besturing van de printer gebeurt in principe in 3 cycli; - het vullen van het data-buffer. Hiervoor heeft de controller in principe oneindig veel tUd ter beschikking. Het .is niet vereist, voor de printer, dat dit binnen een bepaalde t~d gebeurd is. Deze cyclus kan dus onder software bestuurd worden. - het papiertransport. Een papierverplaatsing over 1, 2 of 3 regels vergt 15 tot 27 msec. Een papierverplaatsing naar een bepaald kanaal gebeurt eveneens relatief langzaam. De controller, met een cyclystijd van 330 nsec, kan dit papiertransport eveneens onder software- besturing regelen. - het print en van tekst. E~n printer klokcyclus duurt 11,1 ~sec. In een cyclus wordt geprobeerd ~en karakter te printen. In deze tijd kan de controller 33 instructies uitvoereno In deze cyclus zijn we dus weI aan een bepaalde tijd gebonden. Bij een software-realisatie van de besturing worden de control units ondergebracht in registers van het CPE en in de register file. Data lezen uit het register file kost 2 instructies, het testen van registerinhouden kost eveneens 2 instructies, vanwege pipe-lining. In een klokcyclus worden voornamelijk tests uitgevoerd. We zullen dan ook in zoln klokcyclus ons moaten beperken tot de hoogst noodzakel~ke tests.
78
Beschouwen we de timing van de printer wat nader. Een subscan duurt 555 ~sec en bevat dus 50 klokcycli van 11,1. psec. Hiervan worden de eerste 44 gebruikt om een karakter te kunnen printen en daarna zijn er nog 6 klokcycli v66r het begin van een volgend subscan. I~ I
Jl I. I
'tAt
n I
)4'
R.:.
>1
.I~
>l(
'~5)J"',
n ,.:. ,. .. I
~It
,(
I
>f
rL '>:
Een printscan duurt dus 1,665 msec. In deze 6 cycli Kunnen we onder andere een synchronisatie controle uitvoeren indien dit nodig is. Indien we in subscan 3 aan het printen z~n en in het volgende subscan 1 de home-position bereikt wordt, dan treedt halverwege subscan 3 de home-pulse op, waarop we in de laatste 6 cycli dus kunnen testen. De homepulse moet dus ala test-input aanwezig z~n evenals deSS pulsen, zoals we later zullen zien. Het vergt weinig hardware om de home-pulse te onderscheiden van de SS pulsen. De synchronisatie controle hoeft zodoende dus niet binnen de 33 instructi~s te gebeuren. Het programma voor e~n Klokcyclus willen we universeel maken dwz toepasbaar voor elke klokcyclus, in de printing mode. We zullen dan de nodige tests moeten uitvoeren, oa - testen op einde subscan 10f 2. De CAC moet dan voor het begin van het volgende subscan met 11 verhoogd worden - testen op einde subscan 3. De CAe moet dan voor het begin van het volgende subscan 1 met 9 verhoogd worden. Het testen op einde subscan moet gebeuren binnen de vastgestelde 33 instructies. Is er een einde van een subscan geconstateerd dan kan het bijwerken van de telbestanden gebeuren in de erop volgende klokcyclus, die immers de eerste is van de 6 cycli waarin toch niet geprint hoeft te worden. Mocht op deze manier het aantal van 33 instructies overschre-
79
den worden, dan moet er voor elk subs can een apart programma geschreven worden. Willen we de printer besturing volle dig Onder software-controle houden, dan moeten de control units in het geheugen van de controller ondergebracht worden. In het CPE worden dan ondergebracht de CAC, de HAC, de SS counter en de PS counter, waarin het aantal printscans wordt bijgehouden waarin reeds geprint is. In het register file moe ten dan nog ondergebracht worden het data buffer en het geheugen voor de PCG. De HAC adresseert een plaats in het data buffer en de daarmee overeenkomende hamer. Het ligt voor de hand om het data buffer in het register file op de adressen 1 t/m 132 te plaatsen. Zodoende is het adres in het register file meteen gelijk aan de overeenkomstige hamerpositie. Noodzakelijk is dit niet. We kunnen het data buffer willekeurig in het register file plaatsen. WeI zal dan het adres in het register file van een bepaalde positie, omgezet moeten worden naar het erbij behorende hameradres. Dit kan gebeuren in software in de controller of in hardware in de hamerselectie unit in de interface. We nemen verder aan dat het data buffer op de adressen 1 It/m 132 geplaatst wordt. Het CAe kan eveneens willekeurig in het register file geplaatst worden. Het CAC geeft het adres in het register file van de code van het karakter. Het CAC adresseert 48 opeenvolgende plaatsen in het register file. Als we schrijven CAC= 1 dan bedoelen we dus dat het CAO het adres bevat voor de code van het eerste karak,er op de ketting. Op de ketting komt het print alfabet 5 keer voor. Het begin van het alfabet, dus het eerste karakter, wordt aangegeven door de home-pulse. In de interface wordt een klokschakeling gerealiseerd met een cyclustijd van 11,1 flsec. Deze klok wordt met de printer gesynchroniseerd door de PSS pulsen. Verder moet de interface in ieder geval de elektronika bevatten voor de hamerselectie en hamerbekrachtiging en voor de omzetting van TTL niveau naar in de printer gebruikte spanningsniveau's en andersom. Verder moet er enige elektronika aanwezig zijn om
80
de home-pulse te onderscheiden van de SS pulsen, en worden de SS pulsen en de home-pulse als test input voor de controller gebruikt. Wordt er geen data geprint (de printer is dan in de not-printing mode) dan rnoeten de control units gesynchroniseerd bl~ven met de omloop van de ketting. Daartoe worden de tellerstanden b~ elk begin van een printscan aangepast. Het/is dan makkel~k als we het begin van een printscan als test-input hebben. Daartoe zou de SS counter ook nog in hardware in de interface ondergebracht moeten worden. B~ het schr~ven van de microprogramma's kan echter bl~ken dat dit niet noodzakel~k is en kan dan weggelaten worden. Voorlopig nemen we aan dat we het begin van een printscan weI als test-input ter beschikking hebben. Na het aanzetten van de controller zal de controllereerst geinitialiseerd moeten worden, waarna de printer aangezet kan worden. De besturing komt dan in een scan mode waarin aIle inputs gescand worden. Inputs vanuit de printer z~n de schakelaars op het bedieningspaneel en micro-schakelaars in de printer. Nadat de operator de nodige bedieningsknoppen ingedrukt heeft, de Reset Key om de control units te doen synchroniseren met de omloop van de ketting en de Start Key om de printer in een ready-toestand te kunnen brengen, is de printer in staat om tekst te printen, mits er geen andere fouten z~n die dit verhinderen. De controller zal het ready zijn van de printer melden aan de channel controller. De channel controller zal te z~ner t~d dmv een soft interrupt de device controller melden dat er data in het buffergeheugen opgehaald kan worden. De device controller zal deze data ophalen en plaatsen in het data buffer in het register .f11e, waarna met print en kan worden begonnen. We zullen de verschillende cycli voor aansturing van de printer wat nader uitwerken. Wanneer de printer niet bezig is met het printen van tekst verkeert h~ in de not-printing mode en scant voortdurend aIle inputs af om te zien of er een opdracht is die uitgevoerd moet worden. Er kan een soft interrupt van de channel con-
81
IN;TiAll~I1Ti ,
COlirltou., l
IfSfT
STltlT
troller komen om data op te halen, op de printer kunnen bedieningsschakelaars ingedrukt z~n en er kan een PS puIs of een home-pulse opgetreden zijn. Voor wat van de printer verwacht wordt dat hij doet onder invloed van de diverse bedieningsschakelaars wordt verwezen naar de data sheets van de printer. Het gebruik van de Reset Key en de Start Key en het optreden van een PSS puIs en een home pulse zullen we nader bespreken, omdat deze signalen de control units beinvloeden. Gebruik van de Reset ~ey heeft tot gevolg dat de control units gesynchroniseerd worden met de omloop van de ketting. De diverse tellers worden in de beginstand gezet, dit is de stand die ze moeten hebben wanneer de ketting in de homeposition verkeert. Vervolgens wordt gewacht op het optreden van een home- pt~e. De eerste PS puIs die daar op voIgt geeft de beginstand aan. Vervolgens worden met de daarop volgende
82
SCAN MODI: 1
HAlll (.Ot1r1ANbb £1" Bf RGOP
tUCOI).ER COMMANDO "'RkOOG ADR ts
ST~AT·
R.f~O ~AAL
DATA
6eRG OP i... R.·6. F i 1E
"oel{
REST "AN
(,OHH4NOO ",iT
COHTltoL
83
PS pulsen (dus het begin van een printscan) de tellerstanden b~gewerkt. De HAC blijft in 1 staan, de CAC wordt met 1 verhoogd. Na synchronisatie komt de printer dus in de not-pri~ ting mode. Na gebruik van de Start Key kan met printen begonnen worden. In de not-printing mode zullen bU het optreden van een PS puIs de tellerstanden bUgewerkt moe ten worden. De SS teller blijft 1, de HAC blijft 1 en de CAC wordt met 1 verhoogd. In de not-printing mode is het niet noodzakelijk dat meteen na het aptreden van een PS puIs de tellerstanden bijgewerkt worden. Dit mag gerust enkele honderden psec naderhand gebeureno Noodzakelijk is alleen dat op elke PS puIs adequaat gereageerd wordt. In de printing mode is dit andere. BU het optreden van een home-pulse moet op eynchronisatie gecontroleerd worden. De home-pulse treedt op in subscan 3. De CAC zal dan op 48 moeten staan. Voor het aptreden van een PS puIs en een home-pulse in de not-printing mode kunnen we de volgende flow chart opstellen (fig 2). PS puIs: Eerst wordt getest of er een sync error gemeld is, zo ja dan zal eerst de eynchronisatie procedure afgewerkt moeten worden (activeren door Reset Key). Vervolgens worden de tellerstanden bUgewerkt. De CAC kan de getallen 1 tim 48 bevatten (er zijn 48 karakters) en er zal dan ook getest moeten worden of CAC ~ 49. Ingeval CAC= 48 mogen we niet overgaan op de printing mode. Immers, in de printing mode is de timing van belang zodat eerst getest moet worden op het begin van een printscan. Als CAC= 48 treedt v66r het optreden van een PS puIs de home-pulse op, die dan gemist zou worden. Home-pulse: Bij het optreden van een home-pulse wordt getest op synchronisatie en zal indien nodig een sync error gegeven worden. In de not-printing mode zal de channel controller dmv een 80ft interrupt aan de device controller meedelen dat er in het buffergeheugen data voor hem aanwezig ie. De device con-
84
~(AN MO l)E
~~:~
1
I
'iAc.::, C.Ac.:; ,Ac.-+.
SYNC. ElRO,"
Sc AN HODE '1
~\~: I
Hit'::.· c.1\(::'''''''' VAillGlfqilr bAT~
Geli F E\lT.
A'" u",.Q. (. 0 H· HilNDo
85
\alA' \4T
0
P
IClOfC ... 1: Ro':l TA ~T
~A':: ~A' t ] 'A'::(~' .1.
\lEP.Gfll:ik DATA
",,:t. iA
">----
fi ... Df
~",eSC.AN 1
86
troller zal deze data uit het geheugen ophalen. Eerst wordt een commando binnengehaald en gedecodeerd waarna ingeval van een Write command de erop volgende data uit het geheugen gelezen wordt en in het data buffer in het register file geplaatst. De controller vult het data buffer zelf aan met spaties tot 132 karakters. Als het data buffer gevuld is, wordt overgegaan tot het printen van de karakters, waarna indien nodig een papiertransport plaats vindt. Het een en ander is schematisch weergegeven in fig 2. Op de communicatie met de channel controller zullen we verder niet ingaan. Het resultaat van de communicatie is dat het data buffer geladen wordt. In het data buffer worden 8 bit gebruikt voor de karaktercode en zijn er dus nog 8 bit over. Hiervan worden er 2 gebruikt voor check bits, een bit om aan te geven of de positie al een compare equal signaal gekregen heeft en een bit om aan te geven of de hamer afgevuurd is. Deze bits worden geset als er in het data buffer een spatie staat. In de printing mode worden deze bits geset aan het einde van een klokcyclus, dan zijn de waarden van de bits bekend. In een flow chart is aangegeven wat er in de printing mode met betrekking tot de control units gebeuren moet. In een klokcyclus wordt dan getest of het karakter (in het data buffer) dat op een bepaalde positie, aangegeven door de HAC, geprint moet worden, gelijk is aan het karakter dat op die plaats geprint kan worden, aangegeven door de CAC. Indien ze gelijk zijn moet een afvuur opdracht gegeven worden. Verder moeten in een klokcyclus de nodige tellerstanden bijgewerkt worden en enkele tests hierop uitgevoerd worden. Het microprogramma voor een klokcy.clus in de printing mode, vergt 22 micro instructies. Dit is dus ruim binnen de 33 instructies die we ter beschikking hadden. De in de vorige pagina's beschreven realisatie voor besturing van de printer is uiteraard niet de enige mogelUkheid om de besturing te realiseren. De hier beschreven realisatie is in feite een software realisatie van de hardware control units. Op andere mogelijkheden zullen we hier verder niet ingaan.
87
Conclusie
Met de ontworpen universele device controller is het mogelijk om elk willek€urig peripheral device te besturen en van data te voorzien. De data transport snelheid bedraagt maximaal 6 Mbyte/sec. Vanwege het universele karakter van de controller is de hoeveelheid hardware voor de meeste devices te uitgebreid. Vanwege de opbouw van de controller met bit-slices is de grootte (lengtexbreedtexhoogte) van de controller nogal fors. Gezien de miniaturiseringstrend van de laatste jaren, is dit een nadeel. In de industrie is de trend waarneembaar om voor bijna elk peripheral device een (eventueel meer) chips controllers te fabriceren. Deze controllers zijn niet universeel maar weI klein (minder vermogensdissipatie) en daardoor aantrekkelijk in gebruik. Uit het oogpunt van onderwijs is de universele device controller bijzonder educatief. Over de concrete toepasbaarheid van de controller zullen de meningen waarschijnlijk niet eensluidend zijn.
88
Literatuuroverzicht Afstudeerverslag A.M.G.Claessen antwerp van een zeer snelle microprogrammeerbare I/O controller Afstudeerverslag P.J.C.M.Matthee Universele I/O communicatie in computersystemen Microprogramming
Guy G.Boulaye
Handboeken IBM 1403 Lineprinter Handboeken IBM 2821 Control Unit
BP 7546