diff --git a/src/test/resources/docu/static_de.xml b/src/test/resources/docu/static_de.xml index 032ac69fa..4135fb372 100644 --- a/src/test/resources/docu/static_de.xml +++ b/src/test/resources/docu/static_de.xml @@ -494,24 +494,22 @@ Es kommt vor, dass eine Teilschaltung erstellt wurde, und diese soll in veschiedenen Varianten verwendet werden. Vorstellbar ist z.B. ein spezieller Zähler, der für verschiedene Bitbreiten benötigt wird. Würde man nun je eine Teilschaltung für 4,5 und 6 Bits erstellen, wäre die - Pflege der Schaltung in Zukunft schwierig, da man immer mehrere Teilschaltungen bearbeiten muss, die bis auf - einen Parameter - die Bitbreite - identisch sind. + Pflege der Schaltung in Zukunft schwierig, da bei jeder Änderung mehrere Teilschaltungen zu bearbeiten sind, + die bis auf einen Parameter - die Bitbreite - identisch sind. Um dies zu verhindern, kann eine generische Teilschaltung erstellt werden, die sich parametrisieren lässt. Dazu muss in den Schaltungseinstellung der Schaltung das Häckchen "Schaltung ist generisch" gesetzt werden. Danach enthält der Parameter-Dialog jeder Komponente der Schaltung das zusätzliche Feld - "generische Parametrisierung". In diesem Feld kann Programmcode eingegeben werden, welcher die Parameter + "generische Parametrisierung". In diesem Feld kann Programmcode angegeben werden, welcher die Parameter der Komponente verändern kann. Jeder Parameter hat einen Namen und kann als Attribut des Feldes this modifiziert werden. Wie die Parameter benannt sind, kann dem Hilfedialog der Komponente entnommen werden. - Möchte man die Bitbreite eines Addierers ändern, kann die Zeile this.Bits=int(1); verwendet werden. - Konstanten - hier die Eins - sind immer vom Typ long, die Bitbreite ist aber ein int. Daher - ist die Typkonvertierung auf ein int erforderlich. + Möchte man die Bitbreite eines Addierers ändern, kann die Zeile this.Bits=1; verwendet werden. Auf diese Weise kann man jedoch noch keine parametrisierbare Schaltung erstellen. Es ist noch erforderlich auf Parameter zuzugreifen, die gesetzt werden, wenn die Schaltung verwendet wird. Dies geschieht über das - Feld "args". Will man die Bitbreite von außen setzen, kann man schreiben: this.Bits=int(args.bitWidth);. + Feld "args". Will man die Bitbreite von außen setzen, kann man schreiben: this.Bits=args.bitWidth;. Der Name des Argumentes - hier bitWidth - ist dabei beliebig. Wenn diese Teilschaltung verwendet wird, ist dieses Argument zu setzen. @@ -521,10 +519,34 @@ verwendende Bitbreite gesetzt werden. - Auf diese Weise können keine Leitungen oder Komponenten entfernt oder hinzugefügt werden. Dennoch lassen - sich mit einem Trick viele Schaltungen umsetzen. Erreicht wird dies, indem, abhängig von den Argumenten, - eine Schaltung durch eine andere ersetzt wird. Zu diesem Zweck steht die Funktion setCircuit([Name]) - zur Verfügung. Wird sie im Definitionsteil einer Teilschaltung aufgerufen, kann die einzufügende Schaltung + Wenn eine generische Schaltung direkt gestartet werden soll, ist das ohne Weiteres nicht möglich, da die + erforderlichen Argumente fehlen, die bei der Einbettung der Schaltung angegeben werden müssen. + Diese fehlenden Argumente würden zu entsprechenden Fehlermeldungen führen. + Um den Test der Schaltung zu vereinfachen, kann daher die + Komponente Generische Initialisierung der Schaltung hinzugefügt werden. In dieser Komponente lassen sich + die Argumente setzen, die aus einer einbettenden Schaltung kommen würden. + Auf diese Weise kann auch eine generische Schaltung direkt simuliert werden, was die Erstellung sehr + erleichtert. Wird die Schaltung eingebettet, wird diese Komponente ignoriert. + Sie wird nur für den direkten Start der Simulation benötigt. + + + Unter Umständen kann es sinnvoll sein, nicht nur die Attribute der Komponenten einer Schaltung zu verändern, + sondern ganz neue Komponenten und Leitungen abhängig von den übergebenen Argumenten hinzuzufügen. + Dazu kann die Komponente Code verwendet werden. Wird sie der Schaltung hinzugefügt, wird der enhaltene + Code beim Start der Simulation ausgeführt. + Hier kann mit der Funktion addWire([x1],[y1],[x2],[y2]) eine Leitung hinzugefügt werden und über + die Funktionen addComponent([Name],[x],[y]) kann eine neue Komponente [Name] an der + Position ([x],[y]) hinzugefügt werden. Der Rückgabewert der Funktion addComponent([Name],[x],[y]) + erlaubt das Setzen der Parameter der Komponente. + + + Die Beispielschaltung examples/generic/modify/Conway/GenericConway.dig zeigt, wie auf diese Weise + auch eine komplexere Schaltung zusammengesetzt werden kann. + + + Eine andere Möglichkeit eine Schaltung zu erzeugen ist Rekursion: Es ist möglich, abhängig von den Argumenten, + eine Schaltung durch eine andere zu ersetzen. Zu diesem Zweck steht die Funktion setCircuit([Name]) + zur Verfügung. Wird sie im Definitionsteil einer eingebetteten Schaltung aufgerufen, kann die einzufügende Schaltung durch eine andere ersetzt werden. Dies erlaubt die rekursive Definition einer Schaltung. Wie in anderen Programmiersprachen auch, ist auf eine geeignete Abbruchbedingung zu achten. diff --git a/src/test/resources/docu/static_en.xml b/src/test/resources/docu/static_en.xml index e019e4464..23da47105 100644 --- a/src/test/resources/docu/static_en.xml +++ b/src/test/resources/docu/static_en.xml @@ -470,15 +470,13 @@ parameterization". In this field program code can be entered, which can change the parameters of the component. Each parameter has a name and can be modified as an attribute of the field this. The names of the parameters can be found in the help dialog of the component. - If you want to change the bit width of an adder, the line this.Bits=int(1); can be used. - Constants - here the one - are always of type long, but the bit width is an int. - Therefore the type conversion to an int is necessary. + If you want to change the bit width of an adder, the line this.Bits=1; can be used. In this way, however, it is not yet possible to create a circuit that can be parameterized. It is still necessary to access parameters that are set when the circuit is used. This is done via the field "args". If you want to set the bit width from outside, you can write: - this.Bits=int(args.bitWidth);. The name of the argument - here bitWidth is arbitrary. + this.Bits=args.bitWidth;. The name of the argument - here bitWidth is arbitrary. If such a subcircuit is used, this argument must be set. @@ -487,9 +485,32 @@ bitWidth:=5;. - In this way, no wires or components can be removed or added. Nevertheless, many circuits can be - realized with a trick. This is achieved by replacing one circuit with another, depending on the - arguments. For this purpose the function setCircuit([Name]) is available. + If a generic circuit is to be started directly, this is not possible straight away, since the required + arguments are missing, which have to be specified when embedding the circuit. These missing arguments + would lead to corresponding error messages. + Therefore, to simplify the testing of the circuit, the Generic Initialization component can be + added to the circuit. In this component you can set the arguments that would come from an embedding circuit. + In this way, a generic circuit can also be simulated directly. + If the circuit is embedded, this component is ignored. + It is only needed for the direct start of the simulation. + + + Under certain circumstances it may be useful not only to change the attributes of the components of a + circuit, but to add completely new components and wires depending on the passed arguments. + The Code component can be used for this purpose. If it is added to the circuit, the contained + Code will be executed when the simulation is started. + Here, a wire can be added using the addWire([x1],[y1],[x2],[y2]) function, and using the function + addComponent([name],[x],[y]) a new component [name] can be added at the position ([x],[y]). + The return value of the addComponent([Name],[x],[y]) function allows to set the parameters of the + component. + + + The example circuit examples/generic/modify/Conway/GenericConway.dig shows how a more complex + circuit can be assembled in this way. + + + Another way to create a circuit is recursion: it is possible, depending on the arguments, to replace one + circuit by another. For this purpose the function setCircuit([Name]) is available. If it is called in the definition part of a subcircuit, the circuit to be inserted can be replaced by another circuit. This allows the recursive definition of a circuit. As in other programming languages, a suitable termination condition must be ensured. diff --git a/src/test/resources/docu/static_fr.xml b/src/test/resources/docu/static_fr.xml index 38ba4214c..8a82bc686 100644 --- a/src/test/resources/docu/static_fr.xml +++ b/src/test/resources/docu/static_fr.xml @@ -479,15 +479,13 @@ nommé "paramétrisation générique". Dans ce champ, un code de programme peut être entré, celui-ci servant à changer les paramètres de la composante. Chaque paramètre a un nom et peut être modifié comme un attribut du champ this. Le nom des paramètres peut être trouvé dans le dialogue d'aide de la composante. - Pour changer la largeur binaire d'un additionneur, la ligne this.Bits=int(1); peut être utilisée. - Les constantes, comme le 1 ici, sont toujours du type long, mais la largeur binaire est un int. - Donc, une conversion vers le type int est nécessaire. + Pour changer la largeur binaire d'un additionneur, la ligne this.Bits=1; peut être utilisée. Cependant, cela en tant que tel ne permet pas encore de paramétrer le circuit. Il encore nécessaire de pouvoir accéder aux paramètres établis lorsque le circuit est utilisé. Ceci est fait grâce au champ "args". Si vous voulez accéder à la largeur binaire de l'extérieur, vous pouvez écrire: - this.Bits=int(args.largeurBinaire);. Le nom de l'argument, largeurBinaire ici, est arbitraire. + this.Bits=args.largeurBinaire;. Le nom de l'argument, largeurBinaire ici, est arbitraire. Si le sous-circuit est utilisé, cet argument doit être mis. diff --git a/src/test/resources/docu/static_fr_ref.xml b/src/test/resources/docu/static_fr_ref.xml index 9db509335..18378a17b 100644 --- a/src/test/resources/docu/static_fr_ref.xml +++ b/src/test/resources/docu/static_fr_ref.xml @@ -470,15 +470,13 @@ parameterization". In this field program code can be entered, which can change the parameters of the component. Each parameter has a name and can be modified as an attribute of the field this. The names of the parameters can be found in the help dialog of the component. - If you want to change the bit width of an adder, the line this.Bits=int(1); can be used. - Constants - here the one - are always of type long, but the bit width is an int. - Therefore the type conversion to an int is necessary. + If you want to change the bit width of an adder, the line this.Bits=1; can be used. In this way, however, it is not yet possible to create a circuit that can be parameterized. It is still necessary to access parameters that are set when the circuit is used. This is done via the field "args". If you want to set the bit width from outside, you can write: - this.Bits=int(args.bitWidth);. The name of the argument - here bitWidth is arbitrary. + this.Bits=args.bitWidth;. The name of the argument - here bitWidth is arbitrary. If such a subcircuit is used, this argument must be set.