home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frozen Fish 1: Amiga
/
FrozenFish-Apr94.iso
/
bbs
/
alib
/
d2xx
/
d229
/
sim.lha
/
Sim
/
german.docs
/
Sim.doc
< prev
next >
Wrap
Text File
|
1989-07-20
|
36KB
|
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.