home *** CD-ROM | disk | FTP | other *** search
Text File | 1990-05-06 | 35.1 KB | 1,138 lines |
-
-
- SIM - ein Simulator für Register-Transfer-Netze
-
-
-
- Inhaltsverzeichnis:
-
-
- 1 Einführung
-
- 2 Syntaxregeln der Verschaltungsliste
-
- 3 Bedienung des Simulators
-
- 4 Bausteine
- 4.1 Liste der verfügbaren Bausteine
- 4.2 Beschreibung der Bausteine
- 4.2.1 AND-Gatter
- 4.2.2 NAND-Gatter
- 4.2.3 OR-Gatter
- 4.2.4 NOR-Gatter
- 4.2.5 XOR-Gatter
- 4.2.6 Invertierer
- 4.2.7 Tri-State-Buffer
- 4.2.8 Tri-State-Buffer invertierend
- 4.2.9 Multiplexer
- 4.2.10 Demultiplexer
- 4.2.11 Register vorderflankengetaktet
- 4.2.12 Register rückflankengetaktet
- 4.2.13 J-K-Register vorderflankengetaktet
- 4.2.14 J-K-Register rückflankengetaktet
- 4.2.15 Register positiv pegelgetaktet
- 4.2.16 Register negativ pegelgetaktet
- 4.2.17 Lampenfeld
- 4.2.18 Schalterfeld
- 4.2.19 Addierer
- 4.2.20 Zähler
- 4.2.21 Vergleicher
- 4.2.22 Leitungszusammenführung
- 4.2.23 Rotation nach links
- 4.2.24 Schreib-Lese-Speicher
- 4.2.25 Festwertspeicher
- 4.2.26 Stopbedingung
- 4.2.27 Mustergenerator
- 4.2.28 Rekorder
- 4.2.29 Registersatz positiv pegelgetaktet
- 4.2.30 Registersatz negativ pegelgetaktet
-
- 5 Warnungen und Fehlermeldungen
- 5.1 Warnungen
- 5.2 Fehlermeldungen
-
-
-
-
-
- 1 Einführung
-
-
- Register-Transfer-Netze dienen der Beschreibung von Hardwaresystemen.
- Sie lassen sich mit digitalen Schaltbildern vergleichen. Ihre Bausteine
- können in drei Klassen einteilt werden:
-
- - Register (Schaltwerke) mit innerem Zustand
-
- - Verknüpfungsglieder (Schaltnetze) ohne inneren Zustand
-
- - Leitungsbündel zur Verschaltung der Bausteine
-
-
- Zur Simulation eines Register-Transfer-Netzes muß eine Verschaltungs-
- liste angegeben werden. Dies geschieht durch die Aufzählung der ver-
- wendeten Bausteine. Die Verschaltungen der Bausteine wird anhand der
- Verbindungsleitungen zwischen den Bausteinen definiert. Die Leitungen
- stellen jeweils 16 Bit breite Drahtbündel dar. Für jeden Anschluß
- eines Bausteins muß ein Leitungsname angegeben werden.
-
- Da bei der Simulation einer Hardwareschaltung deren Funktionen zwangs-
- sequentialisiert werden müssen, kann das entstehende Modellsystem sehr
- stark 'hazard'- bzw. 'race'-empfindlich sein. Daher sind kombinato-
- rische Hazards und Races möglichst durch geeignete Schaltungsumfor-
- mungen zu verhindern.
-
-
-
-
- 2 Syntaxregeln der Verschaltungsliste
-
-
- Jeder Bausteinaufruf muß mit dem Namen des Bausteins beginnen. Die
- vordefinierten Namen dürfen nur aus Großbuchstaben bestehen und müssen
- von der Liste der Leitungsnamen mindestens durch ein Leerzeichen oder
- Tabulatorzeichen getrennt sein.
-
- Die Leitungsnamen sind frei wählbar. Es wird zwischen Groß- und Klein-
- buchstaben unterschieden. Folgende Zeichen sind zugelassen:
- 'a'...'z','A'...'Z','0'...'9','_' (keine Umlaute)
- Ein Name darf nicht mit einer Ziffer beginnen.
-
- Die Leitungsnamen müssen durch Komma getrennt werden. Zusätzliche Leer-
- oder Tabulatorzeichen sind erlaubt. Wenn ein Baustein eine Liste
- variabler Länge von Anschlußleitungen gleicher Art benötigt, muß diese
- Liste durch '(' und ')' einggegrenzt werden. Es muß jedoch mindestens
- ein Name angegeben werden.
-
- Bei Eingangsleitungen eines Bausteins darf auch eine Konstante ange-
- geben werden. Diese Zahl wird als Hexadezimalzahl interpretiert, wenn
- sie mit einer '0' beginnt, sonst als Dezimalzahl.
-
- In '[' ']' gesetzte Parameter eines Bausteins sind optionale Angaben.
- Sie stellen meist die Intialisierungskonstanten der Ausgänge zu Beginn
- der Simulation dar. Bei fehlenden Initailisierungswerten wird der Aus-
- gang zu Beginn auf 0 gesetzt. (Die '[' und ']' dürfen natürlich nicht
- mit angegeben werden.)
-
- Sofern der Wert einer Leitung neben der Darstellung als Pegel auf einem
- 16 Bit breiten Drahtbündel als Zahl relevant ist, wird der Wert als
- vorzeichenlose 16-Bit-Zahl interpretiert.
-
- Kommentarzeilen müssen durch ein Semikolon eingeleitet werden. Das
- Semikolon muß das erste Nicht-Leerzeichen dieser Zeile sein, d.h.
- nach einem Bausteinaufruf kann kein Kommentar angehängt werden.
-
- Neben den vom Benutzer zu definierenden Leitung existiert die vordefi-
- nierte Taktleitung CLOCK. Sie dient als Modellzeit und mit ihr sollten
- zur korrekten Funktion der Simulation alle Register getaktet werden.
- Die Taktleitung ist als Ausgang eines Zählers realisiert. Bit 0 dieser
- Leitung kann dann als Takt verwendet werden.
-
- Die Taktleitung wird durch den Baustein SWITCH bereitgestellt. Dieser
- Baustein muß der erste aufgeführte Baustein in der Verschaltungsliste
- sein. Er darf ebenso wie der Baustein LAMP nur einmal verwendet werden.
-
-
-
-
- 3 Bedienung des Simulators
-
-
- Der Simulator kann nur vom CLI durch folgendes Kommando gestartet
- werden:
-
- sim <name>
-
- name ist dabei der Name der Textdatei, in der die Verschaltungsliste
- definiert ist.
-
- Nach der korrekten Übersetzung der Verschaltungsliste werden zwei
- Fenster geöffnet. Das obere Fenster stellt das Schalterfeld dar.
- Es enthält vier 16 Bit breite Schalterleisten und zwei Hex-Einsteller.
- Zu Beginn haben alle Schalter und Einsteller auf ihren Ausgängen log.
- 0-Pegel. Die Schalter werden durch Anklicken betätigt und ändern dabei
- jeweils ihre Stellung. Die einzelnen Ziffern der Hex-Einsteller können
- durch Anklicken der Plus- oder Minusgadgets erhöht oder erniedrigt
- werden. Normalerweise wird jede Betätigung eines Schalters oder Ein-
- stellers vom Simulator registriert und verarbeitet. Um mehrere Schal-
- teränderungen gleichzeitig zu ermöglichen, kann der Scan-Mode geändert
- werden. Dazu muß das nebenliegende Gadget betätigt werden. Der Scan-
- Mode wechselt dann zu 'all'. Damit werden alle folgenden Schalter- oder
- Einstellerbetätigungen nur gespeichert aber nicht zum Simulator über-
- tragen. Die Übertragung wird erst bei einem erneuten Anklicken des
- Scan-Mode-Gadgets vollzogen.
-
- Das untere Fenster stellt das Lampenfeld dar. Es sind vier 16 Bit
- breite Pegelanzeigen und zwei vierstellige Hex-Anzeigen verfügbar.
- Bis zum ersten Setzen werden irrelevante Werte angezeigt. Über den
- Anzeigen befinden sich die Run-Mode-Gadgets. Es sind folgende Zustände
- möglich:
-
- RUN Es findet eine kontinuierliche Simulation des Register-
- Transfer-Netzes statt.
-
- CYCLE Es werden alle Bausteine bis zum nächsten Wechsel des
- Systemtakts berechnet. Danach geht der Simulator in den
- STOP-Zustand über.
-
- STEP Es wird nur der nächste Baustein berechnet. Anschließend
- stopt die Simulation.
-
- STOP Die Simulation ist gestopt.
-
-
- Die ersten drei Zustände werden durch Umrandung des jeweiligen Gadgets
- verdeutlicht. Im STOP-Modus ist kein Gadget umrandet. Der Wechsel des
- Run-Mode wird durch Anklicken des entsprechenden Gadgets vorgenommen.
-
- Nach dem Anklicken des DEBUG-Gadgets erscheint ein Requester. Darin
- kann der Name einer Leitung angegeben. Nach Betätigung der RETURN-Taste
- oder des show-Gadgets werden die Pegel und der Hex-Wert dieser Leitung
- angezeigt. Diese Funktion dient der Fehlersuche in der Verschaltungs-
- liste. Durch Anklicken des DEBUG-Gadgets wird der Simulator in den
- STOP-Modus gebracht.
-
- Die Betätigung des RESET-Gadgets versetzt den Simulator in den Zustand
- zurück, den er direkt nach dem Laden des Programms innehatte.
-
- Der log. 1-Pegel des Systemtakts wird im rechten oberen Eck des LAMP-
- Fenster durch den Schriftzug CLOCK dargestellt.
-
- Der Simulator wird durch Anklicken des CLOSE-Gadgets im SWITCH-Fenster
- verlassen.
-
- Der Simulator verbraucht im STOP-Modus aktiv keine Rechenzeit.
-
-
-
-
- 4 Bausteine
- 4.1 Liste der verfügbaren Bausteine
-
-
- AND (in0,in1,...,inx),out[,init]
- NAND (in0,in1,...,inx),out[,init]
- OR (in0,in1,...,inx),out[,init]
- NOR (in0,in1,...,inx),out[,init]
- XOR (in0,in1,...,inx),out[,init]
- NOT in,out[,init]
- BUFFER in,ctrl,out[,init]
- BUF_INV in,ctrl,out[,init]
- MUX (in0,in1,...,inx),slct,out[,init]
- DEMUX in,slct,(out0,out1,...,outx)[,init_slct,init]
- REG_PE clk,in,out,not_out[,init]
- REG_NE clk,in,out,not_out[,init]
- JK_REG_P clk,j,k,s,r,out,not_out[,init]
- JK_REG_N clk,j,k,s,r,out,not_out[,init]
- REG_PL clk,in,out,not_out[,init]
- REG_NL clk,in,out,not_out[,init]
- LAMP B0,B1,B2,B3,H0,H1
- SWITCH B0,B1,B2,B3,H0,H1
- ADD in0,in1,c_in,out,c_out[,init[,c_init]]
- COUNT clk,set,delta,reset,load,dir,out[,init]
- COMPARE llimit,hlimit,in,out[,init]
- ASSIGN in_maske,out_maske,in,out[,init]
- ROTATE in,bits,out[,init]
- RAM ([name]),len,write,cs,addr,data[,init]
- ROM name,len,cs,addr,data[,init]
- STOP ((in0,cond,in1),(in2,cond,in3),...,(inx-1,cond,inx))
- PAT_GEN name,len,repeat,clk,out[,init]
- RECORDER name,clk,in
- REG_SET_P len,wrclk,wraddr,rdaddr,in,out[,init]
- REG_SET_N len,wrclk,wraddr,rdaddr,in,out[,init]
-
-
-
-
- 4.2 Beschreibung der Bausteine
- 4.2.1 AND-Gatter
-
-
- AND (in0,in1,...,inx),out[,init]
-
-
- in0,...,inx Eingangsleitungen des AND-Gatters
- out Ausgangsleitung
- init Initialisierungswert der Ausgangsleitung (Konstante)
-
-
- Funktion: Die Eingangsleitungen werden bitweise AND-verknüpft.
- Das Ergebnis wird der Ausgangsleitung zugewiesen.
-
-
-
-
- 4.2.2 NAND-Gatter
-
-
- NAND (in0,in1,...,inx),out[,init]
-
-
- in0,...,inx Eingangsleitungen des NAND-Gatters
- out Ausgangsleitung
- init Initialisierungswert der Ausgangsleitung (Konstante)
-
-
- Funktion: Die Eingangsleitungen werden bitweise NAND-verknüpft.
- Das Ergebnis wird der Ausgangsleitung zugewiesen.
-
-
-
-
- 4.2.3 OR-Gatter
-
-
- OR (in0,in1,...,inx),out[,init]
-
-
- in0,...,inx Eingangsleitungen des OR-Gatters
- out Ausgangsleitung
- init Initialisierungswert der Ausgangsleitung (Konstante)
-
-
- Funktion: Die Eingangsleitungen werden bitweise OR-verknüpft.
- Das Ergebnis wird der Ausgangsleitung zugewiesen.
-
-
-
-
- 4.2.4 NOR-Gatter
-
-
- NOR (in0,in1,...,inx),out[,init]
-
-
- in0,...,inx Eingangsleitungen des NOR-Gatters
- out Ausgangsleitung
- init Initialisierungswert der Ausgangsleitung (Konstante)
-
-
- Funktion: Die Eingangsleitungen werden bitweise NOR-verknüpft.
- Das Ergebnis wird der Ausgangsleitung zugewiesen.
-
-
-
-
- 4.2.5 XOR-Gatter
-
-
- XOR (in0,in1,...,inx),out[,init]
-
-
- in0,...,inx Eingangsleitungen des XOR-Gatters
- out Ausgangsleitung
- init Initialisierungswert der Ausgangsleitung (Konstante)
-
-
- Funktion: Die Eingangsleitungen werden bitweise exclusiv-
- verknüpft. Das Ergebnis wird der Ausgansleitung
- zugewiesen.
-
-
-
-
- 4.2.6 Invertierer
-
-
- NOT in,out[,init]
-
-
- in Eingangsleitung des Invertierers
- out Ausgangsleitung
- init Initialisierungswert der Ausgangsleitung (Konstante)
-
-
- Funktion: Die Eingangsleitung wird bitweise invertiert. Das
- Ergebnis wird der Ausgangsleitung zugewiesen.
-
-
-
-
- 4.2.7 Tri-State-Buffer
-
-
- BUFFER in,ctrl,out[,init]
-
-
- in Eingangsleitung des Buffers
- ctrl Steuerleitung
- out Ausgangsleitung
- init Intialisierungswert der Ausgangsleitung (Konstante)
-
-
- Funktion: Der Wert der Eingangsleitung wird der Ausgangsleitung
- zugewiesen, solange Bit 0 der Steuerleitung auf log. 1
- liegt. Wenn dieses Bit zu log. 0 wird, besteht keine
- Verbindung mehr zwischen Ein- und Ausgangsleitung.
- Die Ausgangsleitung kann dann von einem anderen Bau-
- stein als Ausgang benutzt werden (bis dahin hält out
- den zuletzt zugewiesenen Wert).
-
-
-
-
- 4.2.8 Tri-State-Buffer invertierend
-
-
- BUF_INV in,ctrl,out[,init]
-
-
- Siehe BUFFER. Der Wert der Eingangsleitung wird vor der Zuweisung
- zur Ausgangsleitung bitweise invertiert.
-
-
-
-
- 4.2.9 Multiplexer
-
-
- MUX (in0,in1,...,inx),slct,out[,init]
-
-
- in0,..,inx Eingangsleitungen des Multiplexers
- slct Auswahlleitung
- out Ausgangsleitung
- init Initialisierungswert der Ausgangsleitung (Konstante)
-
-
- Funktion: Die Eingangsleitungen werden entsprechend der Reihen-
- folge in der Eingangsliste mit 0 beginnend durchnumiert.
-
- Die Eingangsleitung, deren Nummer dem Wert der Auswahl-
- leitung entspricht, wird der Ausgangsleitung zugewiesen.
-
- Wenn der Wert der Auswahlleitung keine vorhandene
- Eingangsleitung bezeichnet, wird die Ausgangsleitung
- auf 0 gesetzt.
-
-
-
-
- 4.2.10 Demultiplexer
-
-
- DEMUX in,slct,(out0,out1,...,outx)[,init_slct,init]
-
-
- in Eingangsleitung des Demultiplexers
- slct Auswahlleitung
- out0,..,outx Ausgangsleitungen
- init_slct Nummer des zu initialisierenden Ausgang (Konstante)
- init Initialisierungswert des gewählten Ausgangs
-
-
- Funktion: Die Ausgangsleitungen werden entsprechend der Reihen-
- folge in der Ausgangsliste mit 0 beginnend durchnumiert.
-
- Der Wert der Eingangsleitung wird der Ausgangsleitung
- zugewiesen, deren Nummer dem Wert der Auswahlleitung
- entspricht. Alle übrigen Ausgangsleitungen werden auf 0
- gesetzt.
-
- Wenn der Wert der Auswahlleitung keine vorhandene Aus-
- gangsleitung bezeichnet, werden alle Ausgangsleitungen
- auf 0 gesetzt.
-
-
-
-
- 4.2.11 Register vorderflankengetaktet
-
-
- REG_PE clk,in,out,not_out[,init]
-
-
- clk Taktleitung
- in Eingangsleitung
- out Ausgangsleitung
- not_out invertierte Ausgangsleitung
- init Initialisierungswert des Zustands und der
- Ausgangsleitung (Konstante)
-
-
- Funktion: Das Register besteht aus 16 D-Flipflops. Der Wert der
- Eingangsleitung wird der Ausgangsleitung bei einer
- 0-1-Flanke auf Bit 0 der Taktleitung zugewiesen und bis
- zur nächsten 0-1-Flanke gespeichert.
-
- Zur korrekten Funktion des Simulators sollte als Takt-
- leitung die vordefinierte Leitung CLOCK gewählt werden.
-
-
-
-
- 4.2.12 Register rückflankengetaktet
-
-
- REG_NE clk,in,out,not_out[,init]
-
-
- siehe REG_PE. Das Register wird mit einer 1-0-Flanke getaktet.
-
-
-
-
- 4.2.13 J-K-Register vorderflankengetaktet
-
-
- JK_REG_P clk,j,k,s,r,out,not_out[,init]
-
-
- clk Taktleitung
- j j-Eingangsleitung
- k k-Eingangsleitung
- s asynchrone Setzleitung
- r asynchrone Rücksetzleitung
- out Ausgangsleitung
- not_out invertierte Ausgangsleitung
- init Initialisierungswert des Zustands und der
- Ausgangsleitung (Konstante)
-
-
- Funktion:
-
-
- Bit 0 (-----------Bit i-----------)
- clk j k s r out | out+
- ------------------------------+------
- x x x 0 0 q | q
- x x x 0 1 x | 0
- x x x 1 0 x | 1
- x x x 1 1 q | ?
- ^ 0 0 0 0 q | q
- ^ 0 1 0 0 x | 0
- ^ 1 0 0 0 x | 1
- ^ 1 1 0 0 q | -q
-
- ?: nicht definiert
- x: beliebiger Pegel
- ^: 0-1-Flanke
-
- Das Register besteht aus 16 J-K-Flipflop. Die einzelnen
- Flipflops arbeitet bis auf die gemeinsame Taktung völ-
- lig unabhängig voneinander.
-
-
-
-
- 4.2.14 J-K-Register rückflankengetaktet
-
-
- JK_REG_N clk,j,k,s,r,out,not_out[,init]
-
-
- siehe JK_REG_N. Das Register wird mit einer 1-0-Flanke getaktet.
-
-
-
-
- 4.2.15 Register positiv pegelgetaktet
-
-
- REG_PL clk,in,out,not_out[,init]
-
-
- clk Taktleitung
- in Eingangsleitung
- out Ausgangsleitung
- not_out invertierte Ausgangsleitung
- init Initialisierungswert der Ausgangsleitung (Konstante)
-
-
- Funktion: Das Register besteht aus 16 D-Flipflops. Der Wert der
- Eingangsleitung wird der Ausgangsleitung zugewiesen
- solange Bit 0 der Taktleitung auf log. 1 Pegel liegt.
- Nach einer 1-0-Flanke wird der zuletzt zugewiesene
- Wert gespeichert.
-
-
-
-
- 4.2.16 Register negativ pegelgetaktet
-
-
- REG_NL clk,in,out,not_out[,init]
-
-
- siehe REG_PL. Die Übertragung vom Eingang zum Ausgang erfolgt bei
- log. 0 Pegel auf Bit 0 der Taktleitung.
-
-
-
-
- 4.2.17 Lampenfeld
-
-
- LAMP B0,B1,B2,B3,H0,H1
-
-
- B0,...,B3 Eingangsleitungen zur binären Darstellung
- H0,H1 Eingangsleitungen zur hexadezimalen Darstellung
-
-
- Funktion: Die Werte der Eingangsleitungen werden im Lampenfeld
- des Simulators angezeigt.
-
- Der LAMP-Baustein darf nur einmal in einer Verschal-
- tungsliste verwendet werden.
-
-
-
-
- 4.2.18 Schalterfeld
-
-
- SWITCH B0,B1,B2,B3,H0,H1
-
-
- B0,...,B3 Ausgangsleitungen der binären Schalter
- H0,H1 Ausgangsleitungen der hexadezimalen Einsteller
-
-
- Funktion: Die Schalterstellungen werden bei jedem Pegelwechsel
- des Systemtakts CLOCK abgefragt und den Ausgangslei-
- tungen zugewiesen.
-
- Der SWITCH-Baustein muß der erste Baustein in einer
- Verschaltungsliste sein und darf auch nur einmal ver-
- wendet werden.
-
-
-
-
- 4.2.19 Addierer
-
-
- ADD in0,in1,c_in,out,c_out[,init[,c_init]]
-
-
- in0,in1 Eingangsleitungen
- c_in Eingangsübertrag
- out Ausgangsleitung
- c_out Ausgangsübertrag
- init Initialisierungswert der Ausgangsleitung (Konstante)
- c_init Initialisierungswert des Ausgangsübertrags (Konstante)
-
-
- Funktion: out := in0 + in1 + (Bit 0 von c_in)
- Der Übertrag beeinflußt Bit 0 von c_out
-
-
-
-
- 4.2.20 Zähler
-
-
- COUNT clk,set,delta,reset,load,dir,out[,init]
-
-
- clk Taktleitung des Zählers
- set Setzwertleitung
- delta Zählwertleitung
- reset Rücksetzen
- load Laden
- dir Zählrichtung
- out Ausgangsleitung
- init Initialisierungswert des Zählers (Konstante)
-
-
- Funktion:
-
-
- Bit 0 der Leitungen |
- reset load dir clk | out
- -----------------------+----------
- x x x 0 | out
- x x x 1 | out
- 1 x x ^ | 0
- 0 1 x ^ | set
- 0 0 1 ^ | out+delta
- 0 0 0 ^ | out-delta
-
- x : beliebiger Pegel
- ^ : 0-1-Flanke auf Bit 0
-
- Für eine korrekte Funktion des Zählers sollte zur
- Taktung der Systemtakt CLOCK verwendet werden.
-
-
-
-
- 4.2.21 Vergleicher
-
-
- COMPARE llimit,hlimit,in,out[,init]
-
-
- llimit untere Grenze
- hlimit obere Grenze
- in Eingangsleitung
- out Ausgangsleitung
- init Initialisierungswert der Ausgangsleitung (Konstante)
-
-
- Funktion: Wenn der Wert der Eingangsleitung größer oder gleich
- dem Wert von llimit und kleiner oder gleich dem Wert
- von hlimit ist, werden alle Bits der Ausgangsleitung
- auf 1 gesetzt. Anderfalls werden alle Bits auf 0 ge-
- setzt.
-
-
-
-
- 4.2.22 Leitungszusammenführung
-
-
- ASSIGN in_maske,out_maske,in,out[,init]
-
-
- in_maske Bitmaske der Eingangsleitung (Konstante)
- out_maske Bitmaske der Ausgangsleitung (Konstante)
- in Eingangsleitung
- out Ausgangsleitung
- init Initialisierungswert der Ausgangsleitung (Konstante)
-
-
- Funktion: Mit diesem Baustein ist es möglich eine Leitungs-
- zusammenführung zu simulieren. Dabei werden ent-
- sprechend der Eingangsbitmaske Eingangsbits den durch
- die Ausgangsbitmaske bestimmten Ausgangsbits zugewiesen.
- Die Zuweisung beginnt mit den niederwertigsten Bits.
- Zu Beginn wird also das niederwertigste Bit der Ein-
- gangsleitung, dessen Referenzbit in der Eingangsmaske
- gesetzt ist, dem niederwertigsten Bit der Ausgangslei-
- tung, dessen Referenzbit in der Ausgangsmaske gesetzt
- ist, zugewiesen. Anschließend wird in der Ein- und Aus-
- gangsmaske jeweils das nächste gesetzte Bit gesucht und
- die entsprechende Zuweisung vorgenommen. Dieser Vorgang
- endet, sobald keine gesetzten Bits mehr in den Masken
- gefunden werden.
-
-
- Beispiel: in_maske = 4a1a (hex) = 0100101000011010 (bin)
- out_maske = 90c5 (hex) = 1001000011000101 (bin)
-
-
- Eingangsleitung: Ausgangsleitung:
-
- 15 +------------------------> 15
- 14 -----------------+ 14
- 13 13
- 12 +-------------> 12
- 11 ----------------------------+ 11
- 10 10
- 9 ----------------------+ 9
- 8 | 8
- 7 +--------------------> 7
- 6 +------------------------> 6
- 5 | 5
- 4 ------------------+ 4
- 3 ----------------------------+ 3
- 2 +--------------> 2
- 1 ------------------------+ 1
- 0 +------------------> 0
-
-
-
-
- 4.2.23 Rotation nach links
-
-
- ROTATE in,bits,out[,init]
-
-
- in Eingangsleitung
- bits Anzahl der zu verschiebenden Bits (Konstante)
- out Ausgangsleitung
- init Initialisierungswert der Ausgangsleitung
-
-
- Funktion: Der Wert der Eingangsleitung wird so oft zyklisch nach
- links rotiert, wie durch die Konstante Bits angegeben
- wird. Die links herausgeschobenen Bits werden dabei
- rechts wieder hereingeschoben. Das Ergebnis der Rota-
- tion wird der Ausgangsleitung zugewiesen.
-
- Die Konstante bits darf nur im Bereich 0 bis 15 liegen.
-
-
- Beispiel: in = 369b (hex)
- bits = 5
- out = d366 (hex)
-
-
-
-
- 4.2.24 Schreib-Lese-Speicher
-
-
- RAM ([name]),len,write,cs,addr,data[,init]
-
-
- name Name des RAM
- len Anzahl der Speicherzellen (je 16 Bit) (Konstante)
- write Schreib-Lese-Leitung
- cs Auswahlleitung
- addr Adreßleitung
- data Datenleitung
- init Initialisierungswert der Datenleitung (Konstante)
-
-
- Funktion: Das RAM ist nur aktiv, wenn Bit 0 der Auswahlleitung
- auf log. 1 liegt.
-
- Wenn Bit 0 der Schreib-Lese-Leitung auf log. 1 liegt,
- wird bei einer 0-1-Flanke auf Bit 0 der Auswahlleitung
- der momentane Wert der Datenleitung in die, durch
- die Adreßleitung bestimmte, Speicherzelle geschrieben.
- Wenn Bit 0 der Schreib-Lese-Leitung auf log. 0 liegt,
- wird der Wert der Speicherzelle auf die Datenleitung
- gelegt.
-
- Wenn das RAM eine Vorbelegung erhalten soll, muß eine
- Datei mit dem angegebenen Namen vorhanden sein.
-
- Diese Datei enthält die Vorbelegungen als 16-bit-
- Zahlen. Diese werden als Hexadezimalzahlen interpre-
- tiert und müssen mindestens durch einen Leerschritt,
- ein Tabulator-, ein Wagenrücklauf- oder ein Neue-Zeile-
- Zeichen ("whitespace") getrennt sein.
-
- Beispiel: 3f5a 126c d094
- 73e1 893a b012
-
- Nicht vorbelegte Speicherzellen werden mit 0 initiali-
- siert. Dies geschieht auch bei fehlender Vorbelegungs-
- datei.
-
- Verläßt die Adreßleitung den zugelassenen Bereich
- (0 ... len-1), so ist das RAM inaktiv. Der Wert auf der
- Datenleitung bleibt erhalten, bis er überschrieben wird.
-
-
-
-
- 4.2.25 Festwertspeicher
-
-
- ROM name,len,cs,addr,data[,init]
-
-
- Siehe RAM. Die Vorbelegungsdatei muß jedoch exitieren. Außerdem ist
- natürlich kein Schreibzugriff möglich.
-
-
-
-
- 4.2.26 Stopbedingung
-
-
- STOP ((in0,cond,in1),(in2,cond,in3),...,(inx-1,cond,inx))
-
-
- in0,..,inx Eingangsleitungen
- cond Bedingungen
-
-
- Funktion: Falls alle aufgeführten Stopbedingungen erfüllt sind,
- wird die Simulation gestopt.
-
- Es sind folgende Bedingungen möglich:
-
- == : gleich
- != : ungleich
- > : größer
- >= : größer oder gleich
- < : kleiner
- <= : kleiner oder gleich
-
- Die Stopbedingung sollte nur zu Testzwecken verwendet
- werden, da sie die Simulationgeschwindigkeit erheblich
- verringern kann.
-
-
-
-
- 4.2.27 Mustergenerator
-
-
- PAT_GEN name,len,repeat,clk,out[,init]
-
-
- name Name der Datei, die das Muster enthält
- len Länge der Datei (Konstante)
- repeat Modus bei Überlauf (Konstante)
- clk Taktleitung
- out Ausgangsleitung
- init Initialisierungswert des Ausgangs (Konstante)
-
-
- Funktion: Mit diesem Baustein läßt sich auf der Ausgangsleitung
- ein beliebiges Signalmuster erzeugen. Der Ablauf wird
- in der Datei name definiert. Der Inhalt der Datei muß
- den Anforderungen der RAM- und ROM-Dateien entsprechen.
- Bei jeder Änderung eines Bits der Taktleitung wird ein
- neues Muster erzeugt. Wenn das Ende der Datei erreicht
- ist, bestimmt repeat das nächste Muster. Bei repeat
- gleich 0 behält die Ausgangsleitung ihren letzten Wert
- und ändert sich auch bei erneuten Flanken von clk nicht
- mehr. Falls repeat dagegen ungleich 0 ist, wird nach
- dem Ende der Datei wieder mit ihrem Anfang begonnen. Auf
- diese Weise läßt sich zum Beispiel ein Pseudo-Zufalls-
- generator erstellen.
-
-
-
-
- 4.2.28 Rekorder
-
-
- RECORDER name,clk,in
-
-
- name Name der Aufnahmedatei
- clk Taktleitung
- in Eingangsleitung
-
-
- Funktion: Bei jeder Änderung eines Bits der Taktleitung wird der
- Wert der Eingangsleitung in die Aufnahmedatei geschrie-
- ben.
-
-
-
-
- 4.2.29 Registersatz positiv pegelgetaktet
-
-
- REG_SET_P len,wrclk,wraddr,rdaddr,in,out[,init]
-
-
- len Anzahl der Register (Konstante)
- wrclk Schreibtaktleitung
- wraddr Schreibadreßleitung
- rdaddr Leseadreßleitung
- in Dateneingang
- out Datenausgang
- init Initialisierungswert des Datenausgangs (Konstante)
-
-
- Funktion: Der Registersatz kann gleichzeitig gelesen und beschrie-
- ben werden. Sobald Bit 0 der Schreibtaktleitung logisch
- 1 wird, werden die Daten auf der Leitung in unter der
- Adresse wraddr abgelegt.
- Die Daten, die unter der Adresse rdaddr stehen, werden
- kontinuierlich der Leitung out zugewiesen.
- Der Registersatz wird inaktiv (nicht schreib- oder les-
- bar), wenn die jeweiligen Werte auf den Adreßleitungen
- nicht im zugelassenen Bereich (0 .. len-1) liegen.
-
-
-
-
- 4.2.30 Registersatz negativ pegelgetaktet
-
-
- REG_SET_N len,wrclk,wraddr,rdaddr,in,out[,init]
-
-
- Siehe REG_SET_P. Der Registersatz wird mit logisch-0-Pegel auf wrclk
- getaktet.
-
-
-
-
-
- 5 Warnungen und Fehlermeldungen
- 5.1 Warnungen
-
-
- - Warning: Lead <name> is only used as an output
-
- Die Warnung wird erzeugt, falls die Leitung <name> nur als Aus-
- gang eines Bausteins verwendet wurde. Dies könnte auf einen
- Schreibfehler hindeuten. Die Simulation wird trotzdem gestartet.
-
-
- 5.2 Fehlermeldungen
-
- - Bad arguments
-
- Der Aufruf des Simulator entspricht nicht: "sim <name>"
-
-
- - File not found : <name>
-
- Die angegebene Verschaltungsliste existiert nicht.
-
-
- - LOW MEMORY
-
- Es ist nicht genügend Speicher vorhanden, um die Verschaltungs-
- liste zu übersetzen und die Verschaltungsstruktur aufzubauen.
-
-
- - '(' expected
-
- Es fehlt eine öffnende Klammer.
-
-
- - ')' expected
-
- Es fehlt eine schließende Klammer.
-
-
- - ',' expected
-
- Leitungsnamen müssen durch Komma getrennt werden.
-
-
- - Lead name expected
-
- Es wird ein Leitungsname erwartet.
-
-
- - Init value expected
-
- Es wird ein Initialisierungswert (Konstante) erwartet.
-
-
- - Constant expected
-
- Es wird eine Konstante erwartet.
-
-
- - Condition expected (==,!=,>,>=,<,<=)
-
- Es wird eine der aufgeführten Bedingungen erwartet.
-
-
- - Output lead name expected
-
- Es wurde eine Konstante als Ausgang angegeben.
-
-
- - No constant allowed as output lead
-
- Bei Ausgangsleitungen dürfen keine Konstanten angegeben werden
-
-
- - Too many characters (max. 255)
-
- Die maximal zulässige Zeilenlänge wurde überschritten.
-
-
- - Unknown device
-
- Unbekannter Bausteinname.
-
-
- - Too many lead names
-
- Es wurden mehr Anschlußleitungen angegeben als zulässig sind.
-
-
- - Out of range (0..0FFFF)
-
- Der Wert der angegebenen Konstanten ist nicht mehr als
- vorzeichenlose 16-Bit-Zahl darstellbar.
-
-
- - Out of range (0..0F)
-
- Die Konstante bits des Bausteins ROTATE liegt außerhalb des
- erlaubten Bereichs.
-
-
- - Device cannot be used more than onetime
-
- Die Baustein SWITCH und LAMP dürfen nur einmal in jeder Ver-
- schaltungsliste verwendet werden.
-
-
- - SWITCH must be used
-
- Der Baustein SWITCH muß verwendet werden.
-
-
- - SWITCH must be the FIRST device
-
- Der Baustein SWITCH muß der erste Baustein in der Verschaltungs-
- liste sein.
-
-
- - No such data file for RAM/ROM/PAT_GEN
-
- Die angegebene Datei existiert nicht.
-
-
- - Error in data file for RAM/ROM/PAT_GEN
-
- Es ist ein Lesefehler aufgetreten oder der Inhalt der Datei
- entspricht nicht den Voraussetzungen.
-
-
- - Unable to write to recorder file
-
- Die Datei zur Aufnahme der aufgezeichneten Signale konnte
- nicht erzeugt oder zum Schreiben geöffnet werden.
-
-
- - Bad statement
-
- Die Bausteindefinition entspricht nicht den Voraussetzungen.
- Meistens wurde ein nicht zulässiges Zeichen in einem Leitungs-
- namen benützt.
-
-
- - Error while opening intuition.library
-
- Die Intuition-Bibliothek konnte nicht geöffnet werden.
-
-
- - Error while opening graphics.library
-
- Die Grafik-Bibliothek konnte nicht geöffnet werden.
-
-
- - Error while opening LAMP-window
-
- Das Lampenfeld-Fenster konnte nicht geöffnet werden.
-
-
- - Error while opening SWITCH-window
-
- Das Schalterfeld-Fenster konnte nicht geöffnet werden.
-
-
- - Error while creating new task
-
- Die Hintergrund-Task konnte nicht erzeugt werden.
-
-
- - Unable to load/create process
-
- Die Datei, in der ein externer Baustein definiert wird, konnte
- nicht geladen werden, bzw. es konnte kein Prozeß mit dieser Da-
- tei erzeugt werden.
-
-
- - Different versions of Sim and external device definition
-
- Der Simulator und die Übersetzer für externe Bausteine haben
- nicht die gleiche Versions- und Revisionsnummer.
-
-
- Bei Fehlern während der Übersetzung wird die verursachende Zeile der
- Verschaltungsliste zumindest auszugsweise dargestellt und die Stelle
- markiert, an der der Fehler entdeckt wurde. Der eigentliche Fehler
- liegt dann entweder direkt an der markierten Stelle oder am voraus-
- gehenden Zeichen bzw. im vorausgehenden Namen.
-
- Nach je fünf Übersetzungsfehlern wird gefragt, ob die Übersetzung fort-
- gesetzt werden soll. Bei Abbruch bzw. Ende der Übersetzung wird die
- Zahl der bislang entdeckten Fehler ausgegeben.
-
-
-
-