<Desc/Clms Page number 1>
BESCHRIJVING behorende bij een
UITVINDINGSOCTROOIAANVRAGE ten name van de naamloze vennootschap "GTE ATRA" voor : "Interface-schakeling voor communicatie door middel van boodschappen".
Uitvinder : Guido Remi Marcel GALLOPYN
<Desc/Clms Page number 2>
De uitvinding heeft betrekking op een interfaceschakeling voor communicatie door middel van boodschappen, tussen twee processoren, welke schakeling benevens in/uitschakelingen een bufferschakeling van het type eerst-ineerst-uit voor de boodschappen bevat.
Bekende interface-schakelingen van deze soort, die moeten toelaten dat twee micro-processoren met elkaar samenwerken, zijn opgebouwd uit een lang schuifregister bestaande uit een reeks gegevens-flip-flops.
Voor een 8-bit brede databus en een 128-bit lang register geeft dit aanleiding tot een groot aantal transistoren.
Daarenboven brengt het gebruik van een schuifregister een relatief belangrijke vertraging in de communicatie met zich mee doordat het doorschuiven van de gegevens doorheen het schuifregister een zekere tijd in beslag neemt.
De uitvinding heeft tot doel deze nadelen te verhelpen en een interface-schakeling voor communicatie door middel van boodschappen te verschaffen die niet alleen economisch is maar een snellere communicatie tussen de processoren toelaat.
Tot dit doel bevat de interface-schakeling - twee bufferschakelingen van het type eerst-in-eerst-uit die in anti-parallel met elkaar zijn geschakeld en samen een bidirectionele buffer voor de boodschappen vormen die via de in/uit-schakelingen met de twee processoren in verbinding kan worden gebracht, welke bufferschakelingen elk een statisch RAM-geheugen bevatten met duale toegang die een asynchroon lezen uit zijn adressen en schrijven in zijn adressen toelaat, - twee tellers, namelijk een schrijfteller en een leesteller, die de adressen van het geheugen bijhouden, een comparator die het door de leesteller aangegeven
<Desc/Clms Page number 3>
adres vergelijkt met het door de schrijfteller aangegeven adres,
en -- een detector die op de comparator en op de ingang van de tellers is aangesloten en aangeeft of het geheugen vol of leeg is en bevat de interface-schakeling tevens - twee toestandregisters die aan de twee bufferschakelingen gekoppeld zijn en volgende bitfunctie bezitten : boodschap beschikbaar of niet, boodschap ontvangen of niet, bufferschakeling vol of niet en bufferschakeling leeg of niet, - twee commando-registers die aan de twee bufferschakelingen en de twee toestandregisters gekoppeld zijn en de volgende bitfunctie bezitten : boodschap beschikbaar of niet en boodschap ontvangen of niet, en - twee onderbreekschakelingen die met de bufferschakelingen in verbinding staan voor het besturen van de twee processoren in functie van de toestand van de overeenstemmende buffer- schakeling.
Bufferschakelingen van het type eerst-in-eerst-uit die een statisch RAM-geheugen met duale toegang bevatten en twee tellers die de adressen van het geheugen bijhouden, zijn op zichzelf bekend en het is dan ook bekend een dergelijke bufferschakeling in een interface-schakeling tussen twee processoren te gebruiken. Deze bekende interface-schakelingen bevatten evenwel geen twee in anti-parallel met elkaar geschakelde dergelijke bufferschakelingen. Ofwel bezitten de bekende interface-schakelingen slechts één dergelijke bufferschakeling ofwel twee of meer die in parallel met elkaar geschakeld zijn met de bedoeling het geheugen en dus de opslagcapaciteit van informatie in de bufferschakeling te vergroten. Deze bekende interface-schakelingen kunnen dan ook slechts in één richting werken, dus informatie van de ene processor naar de andere
<Desc/Clms Page number 4>
overbrengen.
Ze zijn daarenboven meer geschikt voor het overbrengen van informatie die meer bits bevat dan er adressen in de bufferschakeling zijn en zijn niet geschikt voor de communicatie door middel van boodschappen die merkelijk minder bits bevatten dan er adressen in de bufferschakeling zijn.
De bedoeling van deze bekende interface-schakeling is zo vlug mogelijk informatie van de ene microprocessor naar de andere te brengen in een enkele richting maar tijdens het lezen kan niet meer worden vastgesteld waar een informatie begint of eindigt. Wil men wel deze aanduiding verkrijgen, dan moet aan de informatie de nodige software worden toegevoegd waarbij een signaal wordt gegeven wanneer een informatie begint en wanneer ze eindigt.
Een dergelijke software is bij de interfaceschakeling volgens de uitvinding niet vereist. Terwijl de laatstgenoemde bekende interface-schakeling slechts op één manier (of dus in één mode) kan werken, laat de interfaceschakeling volgens de uitvinding toe op verschillende manieren (in verschillende modes) te werken.
In een bij voorkeur toegepaste uitvoeringsvorm van de uitvinding is de interface-schakeling op een enkele chip geïmplementeerd.
Andere bijzonderheden en voordelen van de uitvinding zullen blijken uit de hier volgende beschrijving van een interface-schakeling voor communicatie door middel van boodschappen, volgens de uitvinding ; deze beschrijving wordt enkel als voorbeeld gegeven en beperkt de uitvinding niet ; de verwijzingscijfers betreffen de hieraan toegevoegde tekeningen.
Figuur 1 is een blokschema van een interfaceschakeling volgens de uitvinding.
Figuur 2 is een meer gedetailleerd blokschema van een bufferschakeling uit de interface-schakeling volgens figuur 1.
<Desc/Clms Page number 5>
In de twee figuren hebben dezelfde verwijzingscijfers betrekking op dezelfde elementen.
De interface-schakeling volgens de figuur 1 bevat twee bufferschakelingen 1 van het type eerst-in-eerst-uit, die in anti-parallel met elkaar zijn geschakeld.
Samen vormen ze een bidirectionele buffer voor de boodschappen.
De ene bufferschakeling 1 werkt in de ene richting, de andere in de andere richting. Deze richtingen zijn in figuur 1 door de pijlen 2 aangeduid.
De constructie van deze bufferschakelingen 1 is in figuur 2 schematisch voorgesteld en wordt verder beschreven.
De twee bufferschakelingen 1 sluiten, de eerste met zijn ingang en de tweede met zijn uitgang, door middel van databussen 3 over een eerste in/uit-schakeling 4 aan op een eerste processor en sluiten, de eerste met zijn uitgang en de tweede met zijn ingang, door middel van databussen 3 en over een tweede in/uit-schakeling 4 aan op een tweede processor.
De twee in/uit-schakelingen 4 bezitten dezelfde, voor een vakman voor de hand liggende constructie die hier niet verder in detail wordt beschreven. Ze bevatten op de gebruikelijke manier elk een decoder die lees-en schrijfsignalen samen met selectiesignalen afkomstig van de processoren verwerkt en doorstuurt naar de bufferschakelingen 1.
Ze staan dan ook elk door leidingen 10 met de twee bufferschakelingen 1 in verbinding.
Aan weerszijden, dit is aan de zijde van de eerste, respectievelijk de tweede processor, bevat de interface-schakeling een toestandregister 5 en een commandoregister 6.
De twee toestandregisters 5 zijn elk aangesloten op de databus 3 aan de overeenstemmende zijde. Ook de twee commando-registers 6 zijn elk aangesloten op de databus 3 aan de overeenstemmende zijde.
<Desc/Clms Page number 6>
De twee toestandregisters 5 staan elk door middel van twee leidingen 7 in verbinding met de twee bufferschakelingen 1. Elk van de commandoregisters 6 staat door middel van leidingen 8 in verbinding met de twee toestandregisters 5.
Zowel de toestandregisters 5 als de commandoregisters 6 zijn 8-bit registers van een op zichzelf bekende en hier niet nader in detail beschreven constructie.
De toestandregisters 5 hebben de volgende bitfunctie : een eerste bit duidt aan of een boodschap beschikbaar is of niet. Deze"boodschap beschikbaar"-bit wordt op één gebracht wanneer een volledige boodschap is geschreven in de erbij horende bufferschakeling 1 en de"boodschap beschikbaar"-bit op één is gebracht in het overeenstemmende commandoregister. Deze"boodschap beschikbaar"-bit van het toestandregister wordt automatisch terug nul wanneer de "boodschap ontvangen"-bit op één gebracht wordt in het ermee samenwerkende commandoregister.
Een tweede bit van het toestandregister duidt aan of een boodschap ontvangen is of niet. Deze"boodschap ontvangen"-bit wordt op één gebracht wanneer een volledige boodschap is gelezen uit de overeenstemmende bufferschakeling 1 en een"boodschap ontvangen"-bit op één is gebracht in het overeenstemmende commandoregister 6. Deze "boodschap ontvangen"-bit van het toestandregister wordt automatisch terug nul wanneer de"boodschap beschikbaar"-bit op één wordt gebracht in het overeenstemmende commandoregister 6.
Een derde bit van het toestandregister 5 geeft aan of de overeenstemmende bufferschakeling 1 vol is of niet.
Wanneer deze bit 1 is, betekent dit dat de bufferschakeling 1 vol geschreven is en dat er, vooraleer verder te gaan
<Desc/Clms Page number 7>
met schrijven, eerst gegevens uit deze bufferschakeling moeten worden gelezen. Wanneer er gegevens uit de volle bufferschakeling worden gelezen, wordt deze bit automatisch terug nul.
Een vierde bit duidt aan of de overeenstemmende bufferschakeling 1 leeg is. Deze bit is 1 wanneer de overeenstemmende bufferschakeling 1 leeg gelezen is en er, vooraleer verder te gaan met lezen, gegevens moeten geschreven worden in deze bufferschakeling. Wanneer gegevens in de lege bufferschakeling worden geschreven, wordt deze bit automatisch terug nul.
De overige vier bits worden niet gebruikt.
Van de commandoregisters 6 duidt de eerste bit aan of een boodschap beschikbaar is of niet. Deze "boodschap beschikbaar"-bit moet bij sommige toepassingen op één worden gebracht nadat een volledige boodschap in de overeenstemmende bufferschakeling 1 is geschreven. Deze bit kan niet meer terug op nul worden gebracht door een schrijfinstructie maar wordt terug nul wanneer in het overeenstemmende toestandregister 5 de"boodschap ontvangen"bit op één wordt gebracht.
De tweede bit van de commandoregisters 6 duidt aan of een boodschap ontvangen is. In sommige toepassingen wordt deze"boodschap ontvangen"-bit op één gebracht nadat een volledige boodschap gelezen is uit de overeenstemmende bufferschakeling 1. Deze bit kan niet meer op nul gebracht worden door een echrijfinstructie maar wordt terug nul wanneer in het overeenstemmende toestandregister 5 de "boodschap beschikbaar"-bit op één wordt gebracht.
De overige bits van de commandoregisters 6 worden niet gebruikt.
Aan de zijde van elk van de twee in verbinding te brengen processoren bezit de interface-schakeling een onderbreekschakeling 9.
Elk van de twee schakelingen 9 staat door middel
<Desc/Clms Page number 8>
van leidingen 11 in verbinding met het aan dezelfde zijde van de interface-schakeling gelegen toestandregister 5 en zo onrechtstreeks in verbinding met de bufferschakelingen 1.
De onderbreekschakelingen 9 onderbreken de overeenstemmende processor in zijn hoofdprogramma zodat gegevenstransfer kan plaatsvinden. In de onderbreekschakelingen 9 is een initialisatieschakeling ingebouwd die via eenvoudigheidshalve niet in de figuren voorgestelde lijnen met de verschillende schakelingen is verbonden en ervoor zorgt dat bij het op spanning komen van de verschillende schakelingen deze hun juiste toestand verkrijgen.
Elk van de onderbreekschakelingen kan vier onderbreeksignalen aan de overeenstemmende processor geven, namelijk : een signaal"boodschap beschikbaar" een sginaal"boodschap ontvangen" een signaal"bufferschakeling vol"en een signaal"bufferschakeling leeg".
Daarenboven kunnen de onderbreekschakelingen een initialisatiesignaal geven waardoor de ene processor de andere processor terug op nul zet of bij voorbeeld in het geval van een"meester-slaaf"opstelling van de processoren de"meester"-processor de"slaaf"-processor initialiseert.
Al de hiervoor genoemde componenten 1 tot 9 zijn geïmplementeerd op een zelfde chip. Ten opzichte van de as die de twee bufferschakelingen 1 verbindt, is deze chip symmetrisch.
Zoals blijkt uit figuur 2, bevat elke bufferschakeling 1 in hoofdzaak een statisch RAM-geheugen 12 met duale toegang, dit is een RAM-geheugen dat afzonderlijke leesen schrijfpoorten bevat en dat dus toelaat gelijktijdig te lezen en te schrijven.
Dit geheugen 12 is 128 bytes lang. Op zijn ingang en uitgang sluiten de hogergenoemde databussen 3 aan.
<Desc/Clms Page number 9>
Het doorsijpelmechanisme van het normaal schuifregister is bij het RAM-geheugen 12 vervangen door een roterend adresmechanisme.
De bufferschakeling 1 bevat dan ook twee tellers, namelijk een schrijfteller 13 en een leesteller 14 die de adressen van het RAM-geheugen 12 bijhouden.
De twee tellers 13 en 14 die door bussen 15 aan het RAM-geheugen 12 zijn gekoppeld, fungeren als wijzers naar een plaats of adres in het geheugen 12.
Bij initialisatie worden door een door een van de hogergenoemde schakelingen 9 gestuurde puls of door een externe nulinstelpuls beide tellers 13 en 14 op nul gebracht.
Wanneer nu van een in/uit-schakeling 4 een schrijfpuls via de lijn 10 aan de schrijfteller 13 en aan het RAM-geheugen 12 wordt toegevoerd, wordt de via de databus 3 aan het geheugen 12 toegevoerde informatie in dit geheugen ingeschreven op het adres dat aangegeven wordt door de schrijfteller 13.
Onmiddellijk daarna telt de schrijfteller een eenheid verder en wijst hij dus de volgende geheugenplaats aan.
De hiervoor beschreven schrijfinstructie kan herhaald worden tot het geheugen 12 volledig vol is.
Wanneer het geheugen 12 vol is, wijst de schrijfteller die dus al de adressen van het geheugen 12 doorlopen heeft, terug naar dezelfde geheugenplaats als de leesteller die nog steeds dezelfde geheugenplaats aanwijst.
De leesinstructie gebeurt op een analoge manier waarbij dus de leesteller 14 telkens een geheugenplaats opschuift nadat via de databus 3 een informatie van een geheugenplaats gelezen werd.
Een schakeling is noodzakelijk om vast te stellen of het geheugen 12 vol dan wel leeg is.
Hiertoe bevat de bufferschakeling 1 een comparator
<Desc/Clms Page number 10>
16 waarmee de twee tellers via bussen 15 verbonden zijn.
Deze comparator 16 vergelijkt het door de leesteller 14 aangegeven adres met het door de schrijfteller 13 aangegeven adres.
Deze comparator 16 is via de leiding 17 gekoppeld aan een detector 18 die door leidingen 19 met de ingang van de twee tellers 13 en 14 is verbonden en via de lijnen 7 een signaal"leeg"of"vol"kan geven aan de toestandregisters 5, op de volgende manier :
Bij het op nul stellen van de tellers 13 en 14 wordt het"leeg"-signaal actief. Wanneer een schrijfinstructie wordt uitgevoerd, verschillen het lees-en schrijfadres van elkaar. Daardoor wordt het"leeg"-signaal terug inactief.
Zoals reeds vermeld, duiden de twee tellers 13 en 14 hetzelfde adres aan wanneer het geheugen 12 vol is.
Zodra de twee tellers 13 en 14 naar hetzelfde adres wijzen, geeft de comparator 16 een signaal aan de detector 18.
Indien de laatste instructie een schrijfbewerking was, geeft de detector 18 een signaal dat het geheugen 12 vol is. Vooraleer nieuwe data aan het geheugen 12 worden toegevoerd, moet eerst gelezen worden.
Wanneer daarentegen het geheugen 12 leeg is, duiden de schrijfteller 13 en de leesteller 14 eveneens hetzelfde adres van het geheugen 12 aan. De comparator 16 geeft opnieuw een signaal aan de detector 18 die, aangezien de laatste bewerking noodzakelijkerwijze een leesbewerking was, een signaal geeft dat het geheugen 12 leeg is. Er kan dus niet meer gelezen worden vooraleer opnieuw informatie in het geheugen 12 wordt geschreven.
De hogergenoemde lees-en schrijfinstructies gebeuren volledig asynchroon en zelfs gelijktijdig doordat op hetzelfde moment kan geschreven en gelezen worden.
<Desc/Clms Page number 11>
Daardoor is de doorvoering van informatie door de interface uiterst snel en in elk geval merkelijk sneller dan wanneer in plaats van een RAM-geheugen 12, dat zich gedraagt als een roterende buffer, een klassieke lineaire buffer wordt gebruikt.
De interface-schakeling zorgt voor een boodschappenbuffer tussen twee asynchrone processoren. Een eerste processor kan een boodschap schrijven naar een tweede processor, terwijl deze laatste een andere taak uitvoert. De tweede processor zal de boodschap uitlezen wanneer dit kan, terwijl de eerste processor reeds een andere taak kan uitvoeren. De schakeling is bijzonder geschikt voor communicatie tussen twee micro-processoren die in een"meester-slaaf"-opstelling zijn opgesteld.
De interface-schakeling kan op vier verschillende wijzen werken : De toestand-wijze, de onderbreekwijze, de gemengde wijze en met de bidirectionele bufferschakeling 1 in onderbreekwijze.
In de toestand-wijze worden geen onderbreeksignalen gebruikt. Beide door de interface-schakeling verbonden processoren bekijken op regelmatige tijdstippen de toestandregisters 5. Wanneer een"boodschap ontvangen"bit wordt bemerkt, kan er een boodschap gestuurd worden naar de bufferschakeling 1. Als deze boodschap volledig is, wordt de"boodschap beschikbaar"-bit op één gebracht in het bij het toestandregister 5 horende commandoregister 6.
Dit heeft voor gevolg dat in het andere toestandregister 5 de"boodschap beschikbaar"-bit op één wordt gebracht.
Dit wordt dan bemerkt door de andere processor die de boodschap kan lezen uit de bufferschakeling 1.
Wanneer dit lezen ten einde is, wordt in het commandoregister 6 de"boodschap ontvangen"-bit op één gebracht,
<Desc/Clms Page number 12>
waarna de eerste processor terug een boodschap kan doorsturen.
In de onderbreek-wijze wordt op dezelfde manier als in de vorige wijze tewerk gegaan met dit verschil dat hier speciale onderbreek-signalen worden gebruikt om de processoren te kennen te geven dat er een boodschap beschikbaar of een boodschap ontvangen is.
Na een onderbreek-signaal kan de boodschap direct gelezen of geschreven worden. Na de transfer van de boodschap wordt het overeenstemmende commandoregister 6 nog ingevuld.
De gemengde wijze is een combinatie van de twee vorige wijzen waar de ene processor de toestand-wijze gebruikt en de andere de onderbreek-wijze. Dit kan bij voorbeeld in meester-slaaf configuraties : De meester kan werken in de toestand-wijze en de slaaf kan werken op de onderbreek-wijze.
Wanneer de bidirectionele bufferschakeling in onderbreek-wijze werkt, worden de toestandregisters 5 en de commandoregisters 6 niet gebruikt. De"vol"-en "leeg"-signalen van de twee bufferschakelingen 1 worden hier gebruikt om de processoren te onderbreken in leesof schrijfcycli. De processoren lezen een boodschap tot deze beëindigd is of tot het geheugen 12 van de gebruikte bufferschakeling 1 leeg is. Om verder te kunnen lezen, moet gewacht worden tot het"leeg"-signaal inactief wordt.
De processoren kunnen een boodschap schrijven tot deze beëindigd is of tot het geheugen 12 van de gebruikte bufferschakeling 1 vol is. Er dient dan gewacht te worden tot het"vol"-signaal inactief wordt om verder te kunnen schrijven.
Op deze manier kan een boodschap langer zijn dan 128 bytes.
De uitvinding is geenszins beperkt tot de hiervoor beschreven uitvoeringsvorm en binnen het raam van
<Desc/Clms Page number 13>
de octrooiaanvrage kunnen aan de beschreven uitvoeringsvorm vele veranderingen worden aangebracht, onder meer wat betreft de vorm, de samenstelling, de schikking en het aantal van de onderdelen die voor het verwezenlijken van de uitvinding worden gebruikt.