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 >
Text File  |  1989-07-20  |  36KB  |  1,138 lines

  1.  
  2.  
  3.             SIM - ein Simulator für Register-Transfer-Netze
  4.  
  5.  
  6.  
  7.       Inhaltsverzeichnis:
  8.  
  9.  
  10.       1  Einführung
  11.  
  12.       2  Syntaxregeln der Verschaltungsliste
  13.  
  14.       3  Bedienung des Simulators
  15.  
  16.       4  Bausteine
  17.       4.1  Liste der verfügbaren Bausteine
  18.       4.2  Beschreibung der Bausteine
  19.          4.2.1   AND-Gatter
  20.          4.2.2   NAND-Gatter
  21.          4.2.3   OR-Gatter
  22.          4.2.4   NOR-Gatter
  23.          4.2.5   XOR-Gatter
  24.          4.2.6   Invertierer
  25.          4.2.7   Tri-State-Buffer
  26.          4.2.8   Tri-State-Buffer invertierend
  27.          4.2.9   Multiplexer
  28.          4.2.10  Demultiplexer
  29.          4.2.11  Register vorderflankengetaktet
  30.          4.2.12  Register rückflankengetaktet
  31.          4.2.13  J-K-Register vorderflankengetaktet
  32.          4.2.14  J-K-Register rückflankengetaktet
  33.          4.2.15  Register positiv pegelgetaktet
  34.          4.2.16  Register negativ pegelgetaktet
  35.          4.2.17  Lampenfeld
  36.          4.2.18  Schalterfeld
  37.          4.2.19  Addierer
  38.          4.2.20  Zähler
  39.          4.2.21  Vergleicher
  40.          4.2.22  Leitungszusammenführung
  41.          4.2.23  Rotation nach links
  42.          4.2.24  Schreib-Lese-Speicher
  43.          4.2.25  Festwertspeicher
  44.          4.2.26  Stopbedingung
  45.          4.2.27  Mustergenerator
  46.          4.2.28  Rekorder
  47.          4.2.29  Registersatz positiv pegelgetaktet
  48.          4.2.30  Registersatz negativ pegelgetaktet
  49.  
  50.       5  Warnungen und Fehlermeldungen
  51.       5.1  Warnungen
  52.       5.2  Fehlermeldungen
  53.  
  54.  
  55.  
  56.  
  57.  
  58.       1  Einführung
  59.  
  60.  
  61.       Register-Transfer-Netze dienen der Beschreibung von Hardwaresystemen.
  62.       Sie lassen sich mit digitalen Schaltbildern vergleichen. Ihre Bausteine
  63.       können in drei Klassen einteilt werden:
  64.  
  65.             - Register (Schaltwerke) mit innerem Zustand
  66.  
  67.             - Verknüpfungsglieder (Schaltnetze) ohne inneren Zustand
  68.  
  69.             - Leitungsbündel zur Verschaltung der Bausteine
  70.  
  71.  
  72.       Zur Simulation eines Register-Transfer-Netzes muß eine Verschaltungs-
  73.       liste angegeben werden. Dies geschieht durch die Aufzählung der ver-
  74.       wendeten Bausteine. Die Verschaltungen der Bausteine wird anhand der
  75.       Verbindungsleitungen zwischen den Bausteinen definiert. Die Leitungen
  76.       stellen jeweils 16 Bit breite Drahtbündel dar. Für jeden Anschluß
  77.       eines Bausteins muß ein Leitungsname angegeben werden.
  78.  
  79.       Da bei der Simulation einer Hardwareschaltung deren Funktionen zwangs-
  80.       sequentialisiert werden müssen, kann das entstehende Modellsystem sehr
  81.       stark 'hazard'- bzw. 'race'-empfindlich sein. Daher sind kombinato-
  82.       rische Hazards und Races möglichst durch geeignete Schaltungsumfor-
  83.       mungen zu verhindern.
  84.  
  85.  
  86.  
  87.  
  88.       2  Syntaxregeln der Verschaltungsliste
  89.  
  90.  
  91.       Jeder Bausteinaufruf muß mit dem Namen des Bausteins beginnen. Die
  92.       vordefinierten Namen dürfen nur aus Großbuchstaben bestehen und müssen
  93.       von der Liste der Leitungsnamen mindestens durch ein Leerzeichen oder
  94.       Tabulatorzeichen getrennt sein.
  95.  
  96.       Die Leitungsnamen sind frei wählbar. Es wird zwischen Groß- und Klein-
  97.       buchstaben unterschieden. Folgende Zeichen sind zugelassen:
  98.          'a'...'z','A'...'Z','0'...'9','_'  (keine Umlaute)
  99.       Ein Name darf nicht mit einer Ziffer beginnen.
  100.  
  101.       Die Leitungsnamen müssen durch Komma getrennt werden. Zusätzliche Leer-
  102.       oder Tabulatorzeichen sind erlaubt. Wenn ein Baustein eine Liste
  103.       variabler Länge von Anschlußleitungen gleicher Art benötigt, muß diese
  104.       Liste durch '(' und ')' einggegrenzt werden. Es muß jedoch mindestens
  105.       ein Name angegeben werden.
  106.  
  107.       Bei Eingangsleitungen eines Bausteins darf auch eine Konstante ange-
  108.       geben werden. Diese Zahl wird als Hexadezimalzahl interpretiert, wenn
  109.       sie mit einer '0' beginnt, sonst als Dezimalzahl.
  110.  
  111.       In '[' ']' gesetzte Parameter eines Bausteins sind optionale Angaben.
  112.       Sie stellen meist die Intialisierungskonstanten der Ausgänge zu Beginn
  113.       der Simulation dar. Bei fehlenden Initailisierungswerten wird der Aus-
  114.       gang zu Beginn auf 0 gesetzt. (Die '[' und ']' dürfen natürlich nicht
  115.       mit angegeben werden.)
  116.  
  117.       Sofern der Wert einer Leitung neben der Darstellung als Pegel auf einem
  118.       16 Bit breiten Drahtbündel als Zahl relevant ist, wird der Wert als
  119.       vorzeichenlose 16-Bit-Zahl interpretiert.
  120.  
  121.       Kommentarzeilen müssen durch ein Semikolon eingeleitet werden. Das
  122.       Semikolon muß das erste Nicht-Leerzeichen dieser Zeile sein, d.h.
  123.       nach einem Bausteinaufruf kann kein Kommentar angehängt werden.
  124.  
  125.       Neben den vom Benutzer zu definierenden Leitung existiert die vordefi-
  126.       nierte Taktleitung CLOCK. Sie dient als Modellzeit und mit ihr sollten
  127.       zur korrekten Funktion der Simulation alle Register getaktet werden.
  128.       Die Taktleitung ist als Ausgang eines Zählers realisiert. Bit 0 dieser
  129.       Leitung kann dann als Takt verwendet werden.
  130.  
  131.       Die Taktleitung wird durch den Baustein SWITCH bereitgestellt. Dieser
  132.       Baustein muß der erste aufgeführte Baustein in der Verschaltungsliste
  133.       sein. Er darf ebenso wie der Baustein LAMP nur einmal verwendet werden.
  134.  
  135.  
  136.  
  137.  
  138.       3  Bedienung des Simulators
  139.  
  140.  
  141.       Der Simulator kann nur vom CLI durch folgendes Kommando gestartet
  142.       werden:
  143.  
  144.             sim  <name>
  145.  
  146.       name ist dabei der Name der Textdatei, in der die Verschaltungsliste
  147.       definiert ist.
  148.  
  149.       Nach der korrekten Übersetzung der Verschaltungsliste werden zwei
  150.       Fenster geöffnet. Das obere Fenster stellt das Schalterfeld dar.
  151.       Es enthält vier 16 Bit breite Schalterleisten und zwei Hex-Einsteller.
  152.       Zu Beginn haben alle Schalter und Einsteller auf ihren Ausgängen log.
  153.       0-Pegel. Die Schalter werden durch Anklicken betätigt und ändern dabei
  154.       jeweils ihre Stellung. Die einzelnen Ziffern der Hex-Einsteller können
  155.       durch Anklicken der Plus- oder Minusgadgets erhöht oder erniedrigt
  156.       werden. Normalerweise wird jede Betätigung eines Schalters oder Ein-
  157.       stellers vom Simulator registriert und verarbeitet. Um mehrere Schal-
  158.       teränderungen gleichzeitig zu ermöglichen, kann der Scan-Mode geändert
  159.       werden. Dazu muß das nebenliegende Gadget betätigt werden. Der Scan-
  160.       Mode wechselt dann zu 'all'. Damit werden alle folgenden Schalter- oder
  161.       Einstellerbetätigungen nur gespeichert aber nicht zum Simulator über-
  162.       tragen. Die Übertragung wird erst bei einem erneuten Anklicken des
  163.       Scan-Mode-Gadgets vollzogen.
  164.  
  165.       Das untere Fenster stellt das Lampenfeld dar. Es sind vier 16 Bit
  166.       breite Pegelanzeigen und zwei vierstellige Hex-Anzeigen verfügbar.
  167.       Bis zum ersten Setzen werden irrelevante Werte angezeigt. Über den
  168.       Anzeigen befinden sich die Run-Mode-Gadgets. Es sind folgende Zustände
  169.       möglich:
  170.  
  171.          RUN      Es findet eine kontinuierliche Simulation des Register-
  172.                   Transfer-Netzes statt.
  173.  
  174.          CYCLE    Es werden alle Bausteine bis zum nächsten Wechsel des
  175.                   Systemtakts berechnet. Danach geht der Simulator in den
  176.                   STOP-Zustand über.
  177.  
  178.          STEP     Es wird nur der nächste Baustein berechnet. Anschließend
  179.                   stopt die Simulation.
  180.  
  181.          STOP     Die Simulation ist gestopt.
  182.  
  183.  
  184.       Die ersten drei Zustände werden durch Umrandung des jeweiligen Gadgets
  185.       verdeutlicht. Im STOP-Modus ist kein Gadget umrandet. Der Wechsel des
  186.       Run-Mode wird durch Anklicken des entsprechenden Gadgets vorgenommen.
  187.  
  188.       Nach dem Anklicken des DEBUG-Gadgets erscheint ein Requester. Darin
  189.       kann der Name einer Leitung angegeben. Nach Betätigung der RETURN-Taste
  190.       oder des show-Gadgets werden die Pegel und der Hex-Wert dieser Leitung
  191.       angezeigt. Diese Funktion dient der Fehlersuche in der Verschaltungs-
  192.       liste. Durch Anklicken des DEBUG-Gadgets wird der Simulator in den
  193.       STOP-Modus gebracht.
  194.  
  195.       Die Betätigung des RESET-Gadgets versetzt den Simulator in den Zustand
  196.       zurück, den er direkt nach dem Laden des Programms innehatte.
  197.  
  198.       Der log. 1-Pegel des Systemtakts wird im rechten oberen Eck des LAMP-
  199.       Fenster durch den Schriftzug CLOCK dargestellt.
  200.  
  201.       Der Simulator wird durch Anklicken des CLOSE-Gadgets im SWITCH-Fenster
  202.       verlassen.
  203.  
  204.       Der Simulator verbraucht im STOP-Modus aktiv keine Rechenzeit.
  205.  
  206.  
  207.  
  208.  
  209.       4  Bausteine
  210.       4.1  Liste der verfügbaren Bausteine
  211.  
  212.  
  213.          AND         (in0,in1,...,inx),out[,init]
  214.          NAND        (in0,in1,...,inx),out[,init]
  215.          OR          (in0,in1,...,inx),out[,init]
  216.          NOR         (in0,in1,...,inx),out[,init]
  217.          XOR         (in0,in1,...,inx),out[,init]
  218.          NOT         in,out[,init]
  219.          BUFFER      in,ctrl,out[,init]
  220.          BUF_INV     in,ctrl,out[,init]
  221.          MUX         (in0,in1,...,inx),slct,out[,init]
  222.          DEMUX       in,slct,(out0,out1,...,outx)[,init_slct,init]
  223.          REG_PE      clk,in,out,not_out[,init]
  224.          REG_NE      clk,in,out,not_out[,init]
  225.          JK_REG_P    clk,j,k,s,r,out,not_out[,init]
  226.          JK_REG_N    clk,j,k,s,r,out,not_out[,init]
  227.          REG_PL      clk,in,out,not_out[,init]
  228.          REG_NL      clk,in,out,not_out[,init]
  229.          LAMP        B0,B1,B2,B3,H0,H1
  230.          SWITCH      B0,B1,B2,B3,H0,H1
  231.          ADD         in0,in1,c_in,out,c_out[,init[,c_init]]
  232.          COUNT       clk,set,delta,reset,load,dir,out[,init]
  233.          COMPARE     llimit,hlimit,in,out[,init]
  234.          ASSIGN      in_maske,out_maske,in,out[,init]
  235.          ROTATE      in,bits,out[,init]
  236.          RAM         ([name]),len,write,cs,addr,data[,init]
  237.          ROM         name,len,cs,addr,data[,init]
  238.          STOP        ((in0,cond,in1),(in2,cond,in3),...,(inx-1,cond,inx))
  239.          PAT_GEN     name,len,repeat,clk,out[,init]
  240.          RECORDER    name,clk,in
  241.          REG_SET_P   len,wrclk,wraddr,rdaddr,in,out[,init]
  242.          REG_SET_N   len,wrclk,wraddr,rdaddr,in,out[,init]
  243.  
  244.  
  245.  
  246.  
  247.       4.2  Beschreibung der Bausteine
  248.       4.2.1  AND-Gatter
  249.  
  250.  
  251.       AND   (in0,in1,...,inx),out[,init]
  252.  
  253.  
  254.       in0,...,inx    Eingangsleitungen des AND-Gatters
  255.       out            Ausgangsleitung
  256.       init           Initialisierungswert der Ausgangsleitung (Konstante)
  257.  
  258.  
  259.       Funktion:      Die Eingangsleitungen werden bitweise AND-verknüpft.
  260.                      Das Ergebnis wird der Ausgangsleitung zugewiesen.
  261.  
  262.  
  263.  
  264.  
  265.       4.2.2  NAND-Gatter
  266.  
  267.  
  268.       NAND   (in0,in1,...,inx),out[,init]
  269.  
  270.  
  271.       in0,...,inx    Eingangsleitungen des NAND-Gatters
  272.       out            Ausgangsleitung
  273.       init           Initialisierungswert der Ausgangsleitung (Konstante)
  274.  
  275.  
  276.       Funktion:      Die Eingangsleitungen werden bitweise NAND-verknüpft.
  277.                      Das Ergebnis wird der Ausgangsleitung zugewiesen.
  278.  
  279.  
  280.  
  281.  
  282.       4.2.3  OR-Gatter
  283.  
  284.  
  285.       OR   (in0,in1,...,inx),out[,init]
  286.  
  287.  
  288.       in0,...,inx    Eingangsleitungen des OR-Gatters
  289.       out            Ausgangsleitung
  290.       init           Initialisierungswert der Ausgangsleitung (Konstante)
  291.  
  292.  
  293.       Funktion:      Die Eingangsleitungen werden bitweise OR-verknüpft.
  294.                      Das Ergebnis wird der Ausgangsleitung zugewiesen.
  295.  
  296.  
  297.  
  298.  
  299.       4.2.4  NOR-Gatter
  300.  
  301.  
  302.       NOR   (in0,in1,...,inx),out[,init]
  303.  
  304.  
  305.       in0,...,inx    Eingangsleitungen des NOR-Gatters
  306.       out            Ausgangsleitung
  307.       init           Initialisierungswert der Ausgangsleitung (Konstante)
  308.  
  309.  
  310.       Funktion:      Die Eingangsleitungen werden bitweise NOR-verknüpft.
  311.                      Das Ergebnis wird der Ausgangsleitung zugewiesen.
  312.  
  313.  
  314.  
  315.  
  316.       4.2.5  XOR-Gatter
  317.  
  318.  
  319.       XOR   (in0,in1,...,inx),out[,init]
  320.  
  321.  
  322.       in0,...,inx    Eingangsleitungen des XOR-Gatters
  323.       out            Ausgangsleitung
  324.       init           Initialisierungswert der Ausgangsleitung (Konstante)
  325.  
  326.  
  327.       Funktion:      Die Eingangsleitungen werden bitweise exclusiv-
  328.                      verknüpft. Das Ergebnis wird der Ausgansleitung
  329.                      zugewiesen.
  330.  
  331.  
  332.  
  333.  
  334.       4.2.6  Invertierer
  335.  
  336.  
  337.       NOT   in,out[,init]
  338.  
  339.  
  340.       in             Eingangsleitung des Invertierers
  341.       out            Ausgangsleitung
  342.       init           Initialisierungswert der Ausgangsleitung (Konstante)
  343.  
  344.  
  345.       Funktion:      Die Eingangsleitung wird bitweise invertiert. Das
  346.                      Ergebnis wird der Ausgangsleitung zugewiesen.
  347.  
  348.  
  349.  
  350.  
  351.       4.2.7  Tri-State-Buffer
  352.  
  353.  
  354.       BUFFER   in,ctrl,out[,init]
  355.  
  356.  
  357.       in             Eingangsleitung des Buffers
  358.       ctrl           Steuerleitung
  359.       out            Ausgangsleitung
  360.       init           Intialisierungswert der Ausgangsleitung (Konstante)
  361.  
  362.  
  363.       Funktion:      Der Wert der Eingangsleitung wird der Ausgangsleitung
  364.                      zugewiesen, solange Bit 0 der Steuerleitung auf log. 1
  365.                      liegt. Wenn dieses Bit zu log. 0 wird, besteht keine
  366.                      Verbindung mehr zwischen Ein- und Ausgangsleitung.
  367.                      Die Ausgangsleitung kann dann von einem anderen Bau-
  368.                      stein als Ausgang benutzt werden (bis dahin hält out
  369.                      den zuletzt zugewiesenen Wert).
  370.  
  371.  
  372.  
  373.  
  374.       4.2.8  Tri-State-Buffer invertierend
  375.  
  376.  
  377.       BUF_INV   in,ctrl,out[,init]
  378.  
  379.  
  380.       Siehe BUFFER. Der Wert der Eingangsleitung wird vor der Zuweisung
  381.       zur Ausgangsleitung bitweise invertiert.
  382.  
  383.  
  384.  
  385.  
  386.       4.2.9  Multiplexer
  387.  
  388.  
  389.       MUX   (in0,in1,...,inx),slct,out[,init]
  390.  
  391.  
  392.       in0,..,inx     Eingangsleitungen des Multiplexers
  393.       slct           Auswahlleitung
  394.       out            Ausgangsleitung
  395.       init           Initialisierungswert der Ausgangsleitung (Konstante)
  396.  
  397.  
  398.       Funktion:      Die Eingangsleitungen werden entsprechend der Reihen-
  399.                      folge in der Eingangsliste mit 0 beginnend durchnumiert.
  400.  
  401.                      Die Eingangsleitung, deren Nummer dem Wert der Auswahl-
  402.                      leitung entspricht, wird der Ausgangsleitung zugewiesen.
  403.  
  404.                      Wenn der Wert der Auswahlleitung keine vorhandene
  405.                      Eingangsleitung bezeichnet, wird die Ausgangsleitung
  406.                      auf 0 gesetzt.
  407.  
  408.  
  409.  
  410.  
  411.       4.2.10  Demultiplexer
  412.  
  413.  
  414.       DEMUX    in,slct,(out0,out1,...,outx)[,init_slct,init]
  415.  
  416.  
  417.       in             Eingangsleitung des Demultiplexers
  418.       slct           Auswahlleitung
  419.       out0,..,outx   Ausgangsleitungen
  420.       init_slct      Nummer des zu initialisierenden Ausgang (Konstante)
  421.       init           Initialisierungswert des gewählten Ausgangs
  422.  
  423.  
  424.       Funktion:      Die Ausgangsleitungen werden entsprechend der Reihen-
  425.                      folge in der Ausgangsliste mit 0 beginnend durchnumiert.
  426.  
  427.                      Der Wert der Eingangsleitung wird der Ausgangsleitung
  428.                      zugewiesen, deren Nummer dem Wert der Auswahlleitung
  429.                      entspricht. Alle übrigen Ausgangsleitungen werden auf 0
  430.                      gesetzt.
  431.  
  432.                      Wenn der Wert der Auswahlleitung keine vorhandene Aus-
  433.                      gangsleitung bezeichnet, werden alle Ausgangsleitungen
  434.                      auf 0 gesetzt.
  435.  
  436.  
  437.  
  438.  
  439.       4.2.11  Register vorderflankengetaktet
  440.  
  441.  
  442.       REG_PE   clk,in,out,not_out[,init]
  443.  
  444.  
  445.       clk            Taktleitung
  446.       in             Eingangsleitung
  447.       out            Ausgangsleitung
  448.       not_out        invertierte Ausgangsleitung
  449.       init           Initialisierungswert des Zustands und der
  450.                      Ausgangsleitung (Konstante)
  451.  
  452.  
  453.       Funktion:      Das Register besteht aus 16 D-Flipflops. Der Wert der
  454.                      Eingangsleitung wird der Ausgangsleitung bei einer
  455.                      0-1-Flanke auf Bit 0 der Taktleitung zugewiesen und bis
  456.                      zur nächsten 0-1-Flanke gespeichert.
  457.  
  458.                      Zur korrekten Funktion des Simulators sollte als Takt-
  459.                      leitung die vordefinierte Leitung CLOCK gewählt werden.
  460.  
  461.  
  462.  
  463.  
  464.       4.2.12  Register rückflankengetaktet
  465.  
  466.  
  467.       REG_NE   clk,in,out,not_out[,init]
  468.  
  469.  
  470.       siehe REG_PE. Das Register wird mit einer 1-0-Flanke getaktet.
  471.  
  472.  
  473.  
  474.  
  475.       4.2.13  J-K-Register vorderflankengetaktet
  476.  
  477.  
  478.       JK_REG_P   clk,j,k,s,r,out,not_out[,init]
  479.  
  480.  
  481.       clk            Taktleitung
  482.       j              j-Eingangsleitung
  483.       k              k-Eingangsleitung
  484.       s              asynchrone Setzleitung
  485.       r              asynchrone Rücksetzleitung
  486.       out            Ausgangsleitung
  487.       not_out        invertierte Ausgangsleitung
  488.       init           Initialisierungswert des Zustands und der
  489.                      Ausgangsleitung (Konstante)
  490.  
  491.  
  492.       Funktion:
  493.  
  494.  
  495.                      Bit 0  (-----------Bit i-----------)
  496.                       clk   j    k    s    r   out | out+
  497.                      ------------------------------+------
  498.                        x    x    x    0    0    q  |  q
  499.                        x    x    x    0    1    x  |  0
  500.                        x    x    x    1    0    x  |  1
  501.                        x    x    x    1    1    q  |  ?
  502.                        ^    0    0    0    0    q  |  q
  503.                        ^    0    1    0    0    x  |  0
  504.                        ^    1    0    0    0    x  |  1
  505.                        ^    1    1    0    0    q  | -q
  506.  
  507.                      ?: nicht definiert
  508.                      x: beliebiger Pegel
  509.                      ^: 0-1-Flanke
  510.  
  511.                      Das Register besteht aus 16 J-K-Flipflop. Die einzelnen
  512.                      Flipflops arbeitet bis auf die gemeinsame Taktung völ-
  513.                      lig unabhängig voneinander.
  514.  
  515.  
  516.  
  517.  
  518.       4.2.14  J-K-Register rückflankengetaktet
  519.  
  520.  
  521.       JK_REG_N   clk,j,k,s,r,out,not_out[,init]
  522.  
  523.  
  524.       siehe JK_REG_N. Das Register wird mit einer 1-0-Flanke getaktet.
  525.  
  526.  
  527.  
  528.  
  529.       4.2.15  Register positiv pegelgetaktet
  530.  
  531.  
  532.       REG_PL   clk,in,out,not_out[,init]
  533.  
  534.  
  535.       clk            Taktleitung
  536.       in             Eingangsleitung
  537.       out            Ausgangsleitung
  538.       not_out        invertierte Ausgangsleitung
  539.       init           Initialisierungswert der Ausgangsleitung (Konstante)
  540.  
  541.  
  542.       Funktion:      Das Register besteht aus 16 D-Flipflops. Der Wert der
  543.                      Eingangsleitung wird der Ausgangsleitung zugewiesen
  544.                      solange Bit 0 der Taktleitung auf log. 1 Pegel liegt.
  545.                      Nach einer 1-0-Flanke wird der zuletzt zugewiesene
  546.                      Wert gespeichert.
  547.  
  548.  
  549.  
  550.  
  551.       4.2.16  Register negativ pegelgetaktet
  552.  
  553.  
  554.       REG_NL   clk,in,out,not_out[,init]
  555.  
  556.  
  557.       siehe REG_PL. Die Übertragung vom Eingang zum Ausgang erfolgt bei
  558.       log. 0 Pegel auf Bit 0 der Taktleitung.
  559.  
  560.  
  561.  
  562.  
  563.       4.2.17  Lampenfeld
  564.  
  565.  
  566.       LAMP  B0,B1,B2,B3,H0,H1
  567.  
  568.  
  569.       B0,...,B3      Eingangsleitungen zur binären Darstellung
  570.       H0,H1          Eingangsleitungen zur hexadezimalen Darstellung
  571.  
  572.  
  573.       Funktion:      Die Werte der Eingangsleitungen werden im Lampenfeld
  574.                      des Simulators angezeigt.
  575.  
  576.                      Der LAMP-Baustein darf nur einmal in einer Verschal-
  577.                      tungsliste verwendet werden.
  578.  
  579.  
  580.  
  581.  
  582.       4.2.18  Schalterfeld
  583.  
  584.  
  585.       SWITCH   B0,B1,B2,B3,H0,H1
  586.  
  587.  
  588.       B0,...,B3      Ausgangsleitungen der binären Schalter
  589.       H0,H1          Ausgangsleitungen der hexadezimalen Einsteller
  590.  
  591.  
  592.       Funktion:      Die Schalterstellungen werden bei jedem Pegelwechsel
  593.                      des Systemtakts CLOCK abgefragt und den Ausgangslei-
  594.                      tungen zugewiesen.
  595.  
  596.                      Der SWITCH-Baustein muß der erste Baustein in einer
  597.                      Verschaltungsliste sein und darf auch nur einmal ver-
  598.                      wendet werden.
  599.  
  600.  
  601.  
  602.  
  603.       4.2.19  Addierer
  604.  
  605.  
  606.       ADD   in0,in1,c_in,out,c_out[,init[,c_init]]
  607.  
  608.  
  609.       in0,in1        Eingangsleitungen
  610.       c_in           Eingangsübertrag
  611.       out            Ausgangsleitung
  612.       c_out          Ausgangsübertrag
  613.       init           Initialisierungswert der Ausgangsleitung (Konstante)
  614.       c_init         Initialisierungswert des Ausgangsübertrags (Konstante)
  615.  
  616.  
  617.       Funktion:      out := in0 + in1 + (Bit 0 von c_in)
  618.                      Der Übertrag beeinflußt Bit 0 von c_out
  619.  
  620.  
  621.  
  622.  
  623.       4.2.20  Zähler
  624.  
  625.  
  626.       COUNT   clk,set,delta,reset,load,dir,out[,init]
  627.  
  628.  
  629.       clk            Taktleitung des Zählers
  630.       set            Setzwertleitung
  631.       delta          Zählwertleitung
  632.       reset          Rücksetzen
  633.       load           Laden
  634.       dir            Zählrichtung
  635.       out            Ausgangsleitung
  636.       init           Initialisierungswert des Zählers (Konstante)
  637.  
  638.  
  639.       Funktion:
  640.  
  641.  
  642.                        Bit 0 der Leitungen  |
  643.                      reset load   dir   clk |    out
  644.                      -----------------------+----------
  645.                        x     x     x     0  |    out
  646.                        x     x     x     1  |    out
  647.                        1     x     x     ^  |     0
  648.                        0     1     x     ^  |    set
  649.                        0     0     1     ^  | out+delta
  650.                        0     0     0     ^  | out-delta
  651.  
  652.                      x : beliebiger Pegel
  653.                      ^ : 0-1-Flanke auf Bit 0
  654.  
  655.                      Für eine korrekte Funktion des Zählers sollte zur
  656.                      Taktung der Systemtakt CLOCK verwendet werden.
  657.  
  658.  
  659.  
  660.  
  661.       4.2.21  Vergleicher
  662.  
  663.  
  664.       COMPARE   llimit,hlimit,in,out[,init]
  665.  
  666.  
  667.       llimit         untere Grenze
  668.       hlimit         obere Grenze
  669.       in             Eingangsleitung
  670.       out            Ausgangsleitung
  671.       init           Initialisierungswert der Ausgangsleitung (Konstante)
  672.  
  673.  
  674.       Funktion:      Wenn der Wert der Eingangsleitung größer oder gleich
  675.                      dem Wert von llimit und kleiner oder gleich dem Wert
  676.                      von hlimit ist, werden alle Bits der Ausgangsleitung
  677.                      auf 1 gesetzt. Anderfalls werden alle Bits auf 0 ge-
  678.                      setzt.
  679.  
  680.  
  681.  
  682.  
  683.       4.2.22  Leitungszusammenführung
  684.  
  685.  
  686.       ASSIGN   in_maske,out_maske,in,out[,init]
  687.  
  688.  
  689.       in_maske       Bitmaske der Eingangsleitung (Konstante)
  690.       out_maske      Bitmaske der Ausgangsleitung (Konstante)
  691.       in             Eingangsleitung
  692.       out            Ausgangsleitung
  693.       init           Initialisierungswert der Ausgangsleitung (Konstante)
  694.  
  695.  
  696.       Funktion:      Mit diesem Baustein ist es möglich eine Leitungs-
  697.                      zusammenführung zu simulieren. Dabei werden ent-
  698.                      sprechend der Eingangsbitmaske Eingangsbits den durch
  699.                      die Ausgangsbitmaske bestimmten Ausgangsbits zugewiesen.
  700.                      Die Zuweisung beginnt mit den niederwertigsten Bits.
  701.                      Zu Beginn wird also das niederwertigste Bit der Ein-
  702.                      gangsleitung, dessen Referenzbit in der Eingangsmaske
  703.                      gesetzt ist, dem niederwertigsten Bit der Ausgangslei-
  704.                      tung, dessen Referenzbit in der Ausgangsmaske gesetzt
  705.                      ist, zugewiesen. Anschließend wird in der Ein- und Aus-
  706.                      gangsmaske jeweils das nächste gesetzte Bit gesucht und
  707.                      die entsprechende Zuweisung vorgenommen. Dieser Vorgang
  708.                      endet, sobald keine gesetzten Bits mehr in den Masken
  709.                      gefunden werden.
  710.  
  711.  
  712.       Beispiel:      in_maske  = 4a1a (hex) = 0100101000011010 (bin)
  713.                      out_maske = 90c5 (hex) = 1001000011000101 (bin)
  714.  
  715.  
  716.          Eingangsleitung:                               Ausgangsleitung:
  717.  
  718.                 15                  +------------------------> 15
  719.                 14 -----------------+                          14
  720.                 13                                             13
  721.                 12                             +-------------> 12
  722.                 11 ----------------------------+               11
  723.                 10                                             10
  724.                  9 ----------------------+                      9
  725.                  8                       |                      8
  726.                  7                       +--------------------> 7
  727.                  6                   +------------------------> 6
  728.                  5                   |                          5
  729.                  4 ------------------+                          4
  730.                  3 ----------------------------+                3
  731.                  2                             +--------------> 2
  732.                  1 ------------------------+                    1
  733.                  0                         +------------------> 0
  734.  
  735.  
  736.  
  737.  
  738.       4.2.23  Rotation nach links
  739.  
  740.  
  741.       ROTATE   in,bits,out[,init]
  742.  
  743.  
  744.       in             Eingangsleitung
  745.       bits           Anzahl der zu verschiebenden Bits (Konstante)
  746.       out            Ausgangsleitung
  747.       init           Initialisierungswert der Ausgangsleitung
  748.  
  749.  
  750.       Funktion:      Der Wert der Eingangsleitung wird so oft zyklisch nach
  751.                      links rotiert, wie durch die Konstante Bits angegeben
  752.                      wird. Die links herausgeschobenen Bits werden dabei
  753.                      rechts wieder hereingeschoben. Das Ergebnis der Rota-
  754.                      tion wird der Ausgangsleitung zugewiesen.
  755.  
  756.                      Die Konstante bits darf nur im Bereich 0 bis 15 liegen.
  757.  
  758.  
  759.       Beispiel:      in   = 369b (hex)
  760.                      bits = 5
  761.                      out  = d366 (hex)
  762.  
  763.  
  764.  
  765.  
  766.       4.2.24  Schreib-Lese-Speicher
  767.  
  768.  
  769.       RAM   ([name]),len,write,cs,addr,data[,init]
  770.  
  771.  
  772.       name           Name des RAM
  773.       len            Anzahl der Speicherzellen (je 16 Bit) (Konstante)
  774.       write          Schreib-Lese-Leitung
  775.       cs             Auswahlleitung
  776.       addr           Adreßleitung
  777.       data           Datenleitung
  778.       init           Initialisierungswert der Datenleitung (Konstante)
  779.  
  780.  
  781.       Funktion:      Das RAM ist nur aktiv, wenn Bit 0 der Auswahlleitung
  782.                      auf log. 1 liegt.
  783.  
  784.                      Wenn Bit 0 der Schreib-Lese-Leitung auf log. 1 liegt,
  785.                      wird bei einer 0-1-Flanke auf Bit 0 der Auswahlleitung
  786.                      der momentane Wert der Datenleitung in die, durch
  787.                      die Adreßleitung bestimmte, Speicherzelle geschrieben.
  788.                      Wenn Bit 0 der Schreib-Lese-Leitung auf log. 0 liegt,
  789.                      wird der Wert der Speicherzelle auf die Datenleitung
  790.                      gelegt.
  791.  
  792.                      Wenn das RAM eine Vorbelegung erhalten soll, muß eine
  793.                      Datei mit dem angegebenen Namen vorhanden sein.
  794.  
  795.                      Diese Datei enthält die Vorbelegungen als 16-bit-
  796.                      Zahlen. Diese werden als Hexadezimalzahlen interpre-
  797.                      tiert und müssen mindestens durch einen Leerschritt,
  798.                      ein Tabulator-, ein Wagenrücklauf- oder ein Neue-Zeile-
  799.                      Zeichen ("whitespace") getrennt sein.
  800.  
  801.                      Beispiel:         3f5a 126c d094
  802.                                        73e1 893a b012
  803.  
  804.                      Nicht vorbelegte Speicherzellen werden mit 0 initiali-
  805.                      siert. Dies geschieht auch bei fehlender Vorbelegungs-
  806.                      datei.
  807.  
  808.                      Verläßt die Adreßleitung den zugelassenen Bereich
  809.                      (0 ... len-1), so ist das RAM inaktiv. Der Wert auf der
  810.                      Datenleitung bleibt erhalten, bis er überschrieben wird.
  811.  
  812.  
  813.  
  814.  
  815.       4.2.25  Festwertspeicher
  816.  
  817.  
  818.       ROM   name,len,cs,addr,data[,init]
  819.  
  820.  
  821.       Siehe RAM. Die Vorbelegungsdatei muß jedoch exitieren. Außerdem ist
  822.       natürlich kein Schreibzugriff möglich.
  823.  
  824.  
  825.  
  826.  
  827.       4.2.26  Stopbedingung
  828.  
  829.  
  830.       STOP  ((in0,cond,in1),(in2,cond,in3),...,(inx-1,cond,inx))
  831.  
  832.  
  833.       in0,..,inx     Eingangsleitungen
  834.       cond           Bedingungen
  835.  
  836.  
  837.       Funktion:      Falls alle aufgeführten Stopbedingungen erfüllt sind,
  838.                      wird die Simulation gestopt.
  839.  
  840.                      Es sind folgende Bedingungen möglich:
  841.  
  842.                            ==  : gleich
  843.                            !=  : ungleich
  844.                            >   : größer
  845.                            >=  : größer oder gleich
  846.                            <   : kleiner
  847.                            <=  : kleiner oder gleich
  848.  
  849.                      Die Stopbedingung sollte nur zu Testzwecken verwendet
  850.                      werden, da sie die Simulationgeschwindigkeit erheblich
  851.                      verringern kann.
  852.  
  853.  
  854.  
  855.  
  856.       4.2.27  Mustergenerator
  857.  
  858.  
  859.       PAT_GEN  name,len,repeat,clk,out[,init]
  860.  
  861.  
  862.       name           Name der Datei, die das Muster enthält
  863.       len            Länge der Datei (Konstante)
  864.       repeat         Modus bei Überlauf (Konstante)
  865.       clk            Taktleitung
  866.       out            Ausgangsleitung
  867.       init           Initialisierungswert des Ausgangs (Konstante)
  868.  
  869.  
  870.       Funktion:      Mit diesem Baustein läßt sich auf der Ausgangsleitung
  871.                      ein beliebiges Signalmuster erzeugen. Der Ablauf wird
  872.                      in der Datei name definiert. Der Inhalt der Datei muß
  873.                      den Anforderungen der RAM- und ROM-Dateien entsprechen.
  874.                      Bei jeder Änderung eines Bits der Taktleitung wird ein
  875.                      neues Muster erzeugt. Wenn das Ende der Datei erreicht
  876.                      ist, bestimmt repeat das nächste Muster. Bei repeat
  877.                      gleich 0 behält die Ausgangsleitung ihren letzten Wert
  878.                      und ändert sich auch bei erneuten Flanken von clk nicht
  879.                      mehr. Falls repeat dagegen ungleich 0 ist, wird nach
  880.                      dem Ende der Datei wieder mit ihrem Anfang begonnen. Auf
  881.                      diese Weise läßt sich zum Beispiel ein Pseudo-Zufalls-
  882.                      generator erstellen.
  883.  
  884.  
  885.  
  886.  
  887.       4.2.28  Rekorder
  888.  
  889.  
  890.       RECORDER    name,clk,in
  891.  
  892.  
  893.       name           Name der Aufnahmedatei
  894.       clk            Taktleitung
  895.       in             Eingangsleitung
  896.  
  897.  
  898.       Funktion:      Bei jeder Änderung eines Bits der Taktleitung wird der
  899.                      Wert der Eingangsleitung in die Aufnahmedatei geschrie-
  900.                      ben.
  901.  
  902.  
  903.  
  904.  
  905.       4.2.29  Registersatz positiv pegelgetaktet
  906.  
  907.  
  908.       REG_SET_P   len,wrclk,wraddr,rdaddr,in,out[,init]
  909.  
  910.  
  911.       len            Anzahl der Register (Konstante)
  912.       wrclk          Schreibtaktleitung
  913.       wraddr         Schreibadreßleitung
  914.       rdaddr         Leseadreßleitung
  915.       in             Dateneingang
  916.       out            Datenausgang
  917.       init           Initialisierungswert des Datenausgangs (Konstante)
  918.  
  919.  
  920.       Funktion:      Der Registersatz kann gleichzeitig gelesen und beschrie-
  921.                      ben werden. Sobald Bit 0 der Schreibtaktleitung logisch
  922.                      1 wird, werden die Daten auf der Leitung in unter der
  923.                      Adresse wraddr abgelegt.
  924.                      Die Daten, die unter der Adresse rdaddr stehen, werden
  925.                      kontinuierlich der Leitung out zugewiesen.
  926.                      Der Registersatz wird inaktiv (nicht schreib- oder les-
  927.                      bar), wenn die jeweiligen Werte auf den  Adreßleitungen
  928.                      nicht im zugelassenen Bereich (0 .. len-1) liegen.
  929.  
  930.  
  931.  
  932.  
  933.       4.2.30  Registersatz negativ pegelgetaktet
  934.  
  935.  
  936.       REG_SET_N   len,wrclk,wraddr,rdaddr,in,out[,init]
  937.  
  938.  
  939.       Siehe REG_SET_P. Der Registersatz wird mit logisch-0-Pegel auf wrclk
  940.       getaktet.
  941.  
  942.  
  943.  
  944.  
  945.  
  946.       5  Warnungen und Fehlermeldungen
  947.       5.1  Warnungen
  948.  
  949.  
  950.       -  Warning: Lead <name> is only used as an output
  951.  
  952.             Die Warnung wird erzeugt, falls die Leitung <name> nur als Aus-
  953.             gang eines Bausteins verwendet wurde. Dies könnte auf einen
  954.             Schreibfehler hindeuten. Die Simulation wird trotzdem gestartet.
  955.  
  956.  
  957.       5.2  Fehlermeldungen
  958.  
  959.       -  Bad arguments
  960.  
  961.             Der Aufruf des Simulator entspricht nicht:  "sim  <name>"
  962.  
  963.  
  964.       -  File not found : <name>
  965.  
  966.             Die angegebene Verschaltungsliste existiert nicht.
  967.  
  968.  
  969.       -  LOW MEMORY
  970.  
  971.             Es ist nicht genügend Speicher vorhanden, um die Verschaltungs-
  972.             liste zu übersetzen und die Verschaltungsstruktur aufzubauen.
  973.  
  974.  
  975.       -  '(' expected
  976.  
  977.             Es fehlt eine öffnende Klammer.
  978.  
  979.  
  980.       -  ')' expected
  981.  
  982.             Es fehlt eine schließende Klammer.
  983.  
  984.  
  985.       -  ',' expected
  986.  
  987.             Leitungsnamen müssen durch Komma getrennt werden.
  988.  
  989.  
  990.       -  Lead name expected
  991.  
  992.             Es wird ein Leitungsname erwartet.
  993.  
  994.  
  995.       -  Init value expected
  996.  
  997.             Es wird ein Initialisierungswert (Konstante) erwartet.
  998.  
  999.  
  1000.       -  Constant expected
  1001.  
  1002.             Es wird eine Konstante erwartet.
  1003.  
  1004.  
  1005.       -  Condition expected (==,!=,>,>=,<,<=)
  1006.  
  1007.             Es wird eine der aufgeführten Bedingungen erwartet.
  1008.  
  1009.  
  1010.       -  Output lead name expected
  1011.  
  1012.             Es wurde eine Konstante als Ausgang angegeben.
  1013.  
  1014.  
  1015.       -  No constant allowed as output lead
  1016.  
  1017.             Bei Ausgangsleitungen dürfen keine Konstanten angegeben werden
  1018.  
  1019.  
  1020.       -  Too many characters (max. 255)
  1021.  
  1022.             Die maximal zulässige Zeilenlänge wurde überschritten.
  1023.  
  1024.  
  1025.       -  Unknown device
  1026.  
  1027.             Unbekannter Bausteinname.
  1028.  
  1029.  
  1030.       -  Too many lead names
  1031.  
  1032.             Es wurden mehr Anschlußleitungen angegeben als zulässig sind.
  1033.  
  1034.  
  1035.       -  Out of range (0..0FFFF)
  1036.  
  1037.             Der Wert der angegebenen Konstanten ist nicht mehr als
  1038.             vorzeichenlose 16-Bit-Zahl darstellbar.
  1039.  
  1040.  
  1041.       -  Out of range (0..0F)
  1042.  
  1043.             Die Konstante bits des Bausteins ROTATE liegt außerhalb des
  1044.             erlaubten Bereichs.
  1045.  
  1046.  
  1047.       -  Device cannot be used more than onetime
  1048.  
  1049.             Die Baustein SWITCH und LAMP dürfen nur einmal in jeder Ver-
  1050.             schaltungsliste verwendet werden.
  1051.  
  1052.  
  1053.       -  SWITCH must be used
  1054.  
  1055.             Der Baustein SWITCH muß verwendet werden.
  1056.  
  1057.  
  1058.       -  SWITCH must be the FIRST device
  1059.  
  1060.             Der Baustein SWITCH muß der erste Baustein in der Verschaltungs-
  1061.             liste sein.
  1062.  
  1063.  
  1064.       -  No such data file for RAM/ROM/PAT_GEN
  1065.  
  1066.             Die angegebene Datei existiert nicht.
  1067.  
  1068.  
  1069.       -  Error in data file for RAM/ROM/PAT_GEN
  1070.  
  1071.             Es ist ein Lesefehler aufgetreten oder der Inhalt der Datei
  1072.             entspricht nicht den Voraussetzungen.
  1073.  
  1074.  
  1075.       -  Unable to write to recorder file
  1076.  
  1077.             Die Datei zur Aufnahme der aufgezeichneten Signale konnte
  1078.             nicht erzeugt oder zum Schreiben geöffnet werden.
  1079.  
  1080.  
  1081.       -  Bad statement
  1082.  
  1083.             Die Bausteindefinition entspricht nicht den Voraussetzungen.
  1084.             Meistens wurde ein nicht zulässiges Zeichen in einem Leitungs-
  1085.             namen benützt.
  1086.  
  1087.  
  1088.       -  Error while opening intuition.library
  1089.  
  1090.             Die Intuition-Bibliothek konnte nicht geöffnet werden.
  1091.  
  1092.  
  1093.       -  Error while opening graphics.library
  1094.  
  1095.             Die Grafik-Bibliothek konnte nicht geöffnet werden.
  1096.  
  1097.  
  1098.       -  Error while opening LAMP-window
  1099.  
  1100.             Das Lampenfeld-Fenster konnte nicht geöffnet werden.
  1101.  
  1102.  
  1103.       -  Error while opening SWITCH-window
  1104.  
  1105.             Das Schalterfeld-Fenster konnte nicht geöffnet werden.
  1106.  
  1107.  
  1108.       -  Error while creating new task
  1109.  
  1110.             Die Hintergrund-Task konnte nicht erzeugt werden.
  1111.  
  1112.  
  1113.       -  Unable to load/create process
  1114.  
  1115.             Die Datei, in der ein externer Baustein definiert wird, konnte
  1116.             nicht geladen werden, bzw. es konnte kein Prozeß mit dieser Da-
  1117.             tei erzeugt werden.
  1118.  
  1119.  
  1120.       -  Different versions of Sim and external device definition
  1121.  
  1122.             Der Simulator und die Übersetzer für externe Bausteine haben
  1123.             nicht die gleiche Versions- und Revisionsnummer.
  1124.  
  1125.  
  1126.       Bei Fehlern während der Übersetzung wird die verursachende Zeile der
  1127.       Verschaltungsliste zumindest auszugsweise dargestellt und die Stelle
  1128.       markiert, an der der Fehler entdeckt wurde. Der eigentliche Fehler
  1129.       liegt dann entweder direkt an der markierten Stelle oder am voraus-
  1130.       gehenden Zeichen bzw. im vorausgehenden Namen.
  1131.  
  1132.       Nach je fünf Übersetzungsfehlern wird gefragt, ob die Übersetzung fort-
  1133.       gesetzt werden soll. Bei Abbruch bzw. Ende der Übersetzung wird die
  1134.       Zahl der bislang entdeckten Fehler ausgegeben.
  1135.  
  1136.  
  1137.  
  1138.