Bus 860409 (c) 1986 by ORD-GROUP 7 De bus Inleiding Dit document beschrijft de ORDINATOR bus structuur. We hebben gekozen voor een busstructuur omdat dit een zeer hoge flexibili- teit biedt, een gestructureerde opzet van het systeem mogelijk maakt en de mogelijkheid biedt het systeem in gedeelten op te bouwen en te testen. Bovendien waren er standaardkaarten beschik- baar, die voor een bussysteem bedoeld waren. De connectoren waren ook beschikbaar, zodoende... Eisen Aan de bus werden een aantal eisen gesteld: - De bus moest flexibel zijn. - De bus moest uitbreidbaar zijn. - De bus moest de gebruikelijke voedingsspanningen leveren. - De bus moest niet plaatsafhankelijk zijn w.w.z. de ver- schillende kaarten voor b.v de CPU, de RAM etc. moesten overal in de bus passen, zonder van functie te veranderen. - Uiteraard moest het een (uitgebreide) Z80-bus zijn - de CPU is immers een Z80. - De bus moest een goede interrupt structuur hebben, want het systeem ontvangt nogal wat interrupts. Voedingsspanningen Omdat het systeem met TTL logica opgebouwd werd, moest er uiteraard +5 Volt ter beschikking staan, met flink wat vermogen beschikbaar. In de begintijd werd de 5V geleverd via 1 spannings- regelaar per 3 kaarten. Toen er meerdere 5V spanningsregelaars ter beschikking kwamen hebben we de zaak omgebouwd naar 1 spanningsregelaar per kaart, omdat bleek dat sommige combinaties te veel stroom trokken. De gebruikte spanningsregelaar is een 7805, deze levert 1A maximaal. Sommige kaarten trekken alleen al 0,8A, zodat we wel om moesten bouwen. Behalve deze 5V is ook nog +12V bij 200 mA, -5V bij 50mA, en -12V bij 50mA ter beschikking. Dit heeft het voordeel dat complexe IC's, die met meerdere voedingsspanningen werken, ook gebruikt kunnen worden. Bij de meeste systemen, waarbij deze spanningen niet gemaakt worden, blijkt dat deze na verloop van tijd toch nodig zijn. Ze moeten dan met DC-DC omzetters gemaakt worden. Aangezien wij dit niet zo'n nette oplossing vinden en verder niet de beschikking hebben over DC-DC converters hebben we alle benodigde voedingsspanningen maar op de bus gezet. Adresbus De adresbus van de ORDINATOR lijkt op de standaard Z80, maar bevat 19 adreslijnen, dit i.v.m. het uitgebreide adresbereik. Het op de bus weergegeven adres is het fysieke adres. Merk op dat, doordat de MME (Memory Management Unit) enige delay heeft, A12 t/m A19 later valid zijn dan in de Z80 specificatie gegeven is. Ze zijn wel valid voordat MREQ (Memory REQuest) opkomt, zodat het toch geen problemen geeft. Bus 860409 (c) 1986 by ORD-GROUP 8 Databus De databus gedraagt zich als een normale 8-bits databus. De kaarten hoeven geen signalen aan te maken om diverse buffers buiten deze kaarten aan te zetten. Met andere woorden: de kaarten behoeven alleen de eigen buffers te besturen. Vanwege de struc- tuur van de ORDINATOR was dit de aangewezen weg, en daarom hebben we hiervoor gekozen. De databus heeft pull-up weerstanden om te garanderen dat een niet bestaande I/O poort of geheugenplaats de waarde FF(hex) teruggeeft. De interupts maken hier gebruik van, zie 'inter- rupts'. Controlbus De controlbus bevat de gebruikelijke Z80 control signalen. Daarnaast bevat deze bus ook diverse clocksignalen, zoals Z80-phi (de klokfrekwentie van de Z80) en 16Mhz (dit signaal gaat verwijnen, zie daarvoor 'problemen'). Ook bevat de controlbus een aantal signalen die naar het CPU- board toegaan. Hieronder vallen INT (INTerrupt request) en WAIT. Omdat deze signalen door meerdere kaarten opgewekt kunnen worden, kunnen de uitgangen van deze kaarten geen totempaalstructuur hebben. Daarom is gekozen voor een open-collector structuur. Deze structuur wordt ook gebruikt voor de interuupts - zie daarvoor het volgende hoofdstuk. Interrupts Het servicen van interrupts is een probleem op zich: interrupts worden aangevraagd via een open-collector poort, maar de inter- rupts moeten naar een adres wijzen dat de interuupt serviced. Daarom moeten vectored interrupts worden gebruikt. Er zijn verschillende systemen bekend om dit te verwezelijken, waarvan we er nu enkele zullen bespreken. Het Zilog-systeem werkt met chips zie met de CPU meelezen en een bepaalde instructie zelf uitdecoderen. Omdat niet alle peri- pheral-chips van Zilog zijn, kan het Zilog-systeem niet worden gebruikt, want het systeem is verschrikkelijk lastig als het met 'eigen' hardware moet worden geimplementeerd. Een andere mogelijkheid zou een daisy-chain kunnen zijn. In het door ons gebruikte bussysteem zijn 'open slots' (slots zonder kaart) mogelijk. Dit sluit de daisy-chain uit, want daar zijn deze open slots niet mogelijk. Daarom is gekozen voor een ander systeem: de kaart geeft via de open-collectorlijn 'INT' aan dat een interrupt wordt aangevraagd. Als de CPU deze interrupt acknowledged, maakt deze tegelijk de M1- en de IORQ-lijn laag (dit is standaard Z80). Het device dat de interrupt aanvroeg, geeft dit te kennen door een bepaalde databuslijn laag te maken. Op de CPU-kaart zit een priority-encoder die deze databussignalen omzet in een vector, welke hij aan de CPU aanbiedt. Deze vector wordt door de CPU op de normale (Z80) manier verwerkt. Bus 860409 (c) 1986 by ORD-GROUP 9 Als er nu meerdere kaarten tegelijk ok een interrupt vragen, gaat dit systeem ook goed, omdat de 'vector' via open-collector lijnen gaat. Dit systeem blijkt in de practijk zeer goed te voldoen. Ondanks alle hardware-uitbreidingen zijn de 8 mogelijke vectoren nog steeds niet allen in gebruik. Problemen Problemen hebben we natuurlijk ook gehad. Omdat de bus nergens afgeschermd is, stralen de signalen op elkaar in. Dit is de reden waarom wij binnenkort het meest agressieve signaal (16 Mhz) van de bus zullen verwijderen. Alle kaarten wekken dan hun eigen hoogfrekwente kloksignalen op. Een tweede probleem betreft het afsluiten van de bus: de bus kan beschouwd worden als een 'lange' leiding en heeft als zodanig een karakteristieke impedantie. Als de bus niet met deze impedantie wordt afgesloten, ontstaan er reflecties. Omdat de bus geen 'mooie' transmissielijn is, is de impedantie niet te bepalen. We hebben besloten om de bus met 1 kilo-ohm af te sluiten. Dit is een aanvaardbaar compromis tussen de werkelijke busimpedantie enerzijds, en de door de afsluiting aangebrachte extra belasting anderzijds. DMA DMA (Direct Memory Access) is in dit bussysteem niet mogelijk. Een reden hiervoor is dat de virtuele memory-layout niet in het DMA-stuk doorgevoerd kan worden. Een andere reden is, dat we het aanwezig hebben van DMA niet nodig achtten. Voor kaarten, die dit wel nodig hebben, is het mogelijk om DMA toe te passen op de op de kaart aanwezige RAM. Een voorbeeld hiervan is de floppy-disk controller. Conclusie Het bussysteem blijkt in de practijk zeer handig te werken. Met name de plaatsonafhankelijkheid blijkt zeer practisch. Een aan- merking valt te maken op het aantal aardpunten: omdat de connec- toren tweede-hands zijn, is de overgangsweerstand hoger dan verwacht. Deze overgangsweerstand wreekt zich bij spannings- veranderingen op de bus: de aarde van de kaarten wordt dan a.h.w. 'opgetild'. Hierdoor zijn (helaas) spikes mogelijk. Hiervoor wordt nog een oplossing gezocht.