From 8e6f2bb42c851a9304475fc28ca4aaf5bc6f23b0 Mon Sep 17 00:00:00 2001 From: hneemann Date: Wed, 14 Jul 2021 15:51:47 +0200 Subject: [PATCH] adds italian translation --- src/main/resources/lang/lang_en.xml | 36 +- src/main/resources/lang/lang_es_ref.xml | 17 +- src/main/resources/lang/lang_fr_ref.xml | 24 +- src/main/resources/lang/lang_it.xml | 2077 +++++++++++++++- src/main/resources/lang/lang_it_ref.xml | 2130 ++++++++++++++++- src/main/resources/lang/lang_pt_ref.xml | 17 +- src/main/resources/lang/lang_zh_ref.xml | 14 +- .../neemann/digital/lang/LanguageUpdater.java | 75 +- .../de/neemann/digital/lang/TypoFixer.java | 84 + 9 files changed, 4386 insertions(+), 88 deletions(-) create mode 100644 src/test/java/de/neemann/digital/lang/TypoFixer.java diff --git a/src/main/resources/lang/lang_en.xml b/src/main/resources/lang/lang_en.xml index dbd2a40bd..b1c605997 100644 --- a/src/main/resources/lang/lang_en.xml +++ b/src/main/resources/lang/lang_en.xml @@ -1,4 +1,4 @@ - + Address Table of Contents @@ -90,10 +90,9 @@ XNOr A combination of XOR and NOT. The inputs are combined with the XOR operation. - The result of this operation than is inverted. + The result of this operation is then inverted. It is also possible to use buses with several bits per input. In this case, the operation is applied to each - bit of the inputs. - + bit of the inputs. Not Inverts the input value. A 1 becomes a 0 and a 0 becomes 1. It is also possible to use a bus with several bits per input. In this case, the operation is applied to each @@ -125,8 +124,7 @@ Can be used to display an output signal in a circuit. This element is also used to connect a circuit to an embedding circuit. In this case the connection is bidirectional. - Is also used to assign an pin number, if code for a CPLD or FPGA is generated. - + Is also used to assign a pin number, if the code for a CPLD or FPGA is generated. This value is used for the output connection. LED A LED can be used to visualize an output value. Accepts a single bit. @@ -141,7 +139,7 @@ The blue color channel. LED with two connections. - LED with connections for the cathode and the anode. The LED lights up, + LED with connections for the cathode and the anode. The LED lights up if the anode is connected to high and the cathode is connected to low. This LED cannot be used as a pull-down resistor. It acts solely as a display element. The shown resistor is only meant to symbolize the required series resistor to limit the current. @@ -161,13 +159,12 @@ The output value of the switch. Clock Input - A clock signal. Its possible to control it by a real-time clock. + A clock signal. It's possible to control it by a real-time clock. Depending on the complexity of the circuit, the clock frequency achieved may be less than the selected value. If the frequency is greater than 50Hz, the graphic representation of the circuit will no longer be updated at every clock cycle so that the wire colors will no longer be updated. If the real-time clock is not activated, the clock can be controlled by mouse clicks. - Is also used to assign an pin number, if code for a CPLD or FPGA is generated. - + Is also used to assign an pin number, if code for a CPLD or FPGA is generated. Switches between 0 and 1 with the selected clock frequency. Button A simple push button which goes back to its original state when it is released. @@ -261,9 +258,8 @@ A separate window is opened for the text input. Clock. A rising edge removes the oldest character from the buffer. - If high the output D is active and one character is output. - It also enables the clock input. - + If high, the output D is active and one character is output. + It also enables the clock input. The last typed character, or zero if no character is available. Output is the 16 bit Java char value. @@ -809,8 +805,8 @@ Input a to compare. Input b to compare. Output is 1 if input a equals input b - Output is 1 if input a is greater then input b - Output is 1 if input a is less then input b + Output is 1 if input a is greater than input b + Output is 1 if input a is less than input b Negation Neg Negation in the 2th complement @@ -1093,12 +1089,12 @@ No test data found. It's not allowed to connect a pull up and a pull down resistor to a single wire. Could not open the browser. - Could not create folder "{0}"! + Could not create folder "{0}"! It is not allowed to connect only inputs to a switch. The file {0} exists multiple times under {1}. Could not find the file {0}. - Error during execution of "{0}". - The process "{0}" does not return! + Error during execution of "{0}". + The process "{0}" does not return! The process returns the non zero value {0}: {1} Error starting the external fitter! There are no minimized equations! @@ -1146,7 +1142,7 @@ There must be more input bits than output bits! It is not possible to set physical pins to constant values! The string {0} is not a valid number (pos {1})! - The name "{0}" is not allowed! + The name "{0}" is not allowed! No white space is allowed in the name of the TT2 file! The table has too many columns! Error writing the ZIP file. @@ -2061,7 +2057,7 @@ All test cases are executed, but not all results are shown. The evaluation of the test result is nevertheless correct! The editing of the circuit is disabled. You can remove the lock at - "{0} -> {1} -> {2}". + "{0} -> {1} -> {2}". However, copying of components and the configuration of diodes and FGFETs with the [P] key is also possible in the locked mode. diff --git a/src/main/resources/lang/lang_es_ref.xml b/src/main/resources/lang/lang_es_ref.xml index 2c0212469..6399e68b6 100644 --- a/src/main/resources/lang/lang_es_ref.xml +++ b/src/main/resources/lang/lang_es_ref.xml @@ -89,7 +89,7 @@ In the file howTo.md you can find more details about translations. bit of the inputs. XNOr A combination of XOR and NOT. The inputs are combined with the XOR operation. - The result of this operation than is inverted. + The result of this operation is then inverted. It is also possible to use buses with several bits per input. In this case, the operation is applied to each bit of the inputs. Not @@ -117,7 +117,7 @@ In the file howTo.md you can find more details about translations. Can be used to display an output signal in a circuit. This element is also used to connect a circuit to an embedding circuit. In this case the connection is bidirectional. - Is also used to assign an pin number, if code for a CPLD or FPGA is generated. + Is also used to assign a pin number, if the code for a CPLD or FPGA is generated. This value is used for the output connection. LED A LED can be used to visualize an output value. Accepts a single bit. @@ -139,7 +139,7 @@ In the file howTo.md you can find more details about translations. Simple DIP switch that can output either high or low. The output value of the switch. Clock Input - A clock signal. Its possible to control it by a real-time clock. + A clock signal. It's possible to control it by a real-time clock. Depending on the complexity of the circuit, the clock frequency achieved may be less than the selected value. If the frequency is greater than 50Hz, the graphic representation of the circuit will no longer be updated at every clock cycle so that the wire colors will no longer be updated. @@ -168,7 +168,7 @@ In the file howTo.md you can find more details about translations. Connection Connection LED with two connections. - LED with connections for the cathode and the anode. The LED lights up, + LED with connections for the cathode and the anode. The LED lights up if the anode is connected to high and the cathode is connected to low. This LED cannot be used as a pull-down resistor. It acts solely as a display element. The shown resistor is only meant to symbolize the required series resistor to limit the current. @@ -222,9 +222,8 @@ In the file howTo.md you can find more details about translations. A separate window is opened for the text input. Clock. A rising edge removes the oldest character from the buffer. - If high the output D is active and one character is output. - It also enables the clock input. - + If high, the output D is active and one character is output. + It also enables the clock input. The last typed character, or zero if no character is available. Output is the 16 bit Java char value. @@ -641,8 +640,8 @@ In the file howTo.md you can find more details about translations. Input a to compare. Input b to compare. Output is 1 if input a equals input b - Output is 1 if input a is greater then input b - Output is 1 if input a is less then input b + Output is 1 if input a is greater than input b + Output is 1 if input a is less than input b Negation Neg Input of the data word to be negated in 2th complement diff --git a/src/main/resources/lang/lang_fr_ref.xml b/src/main/resources/lang/lang_fr_ref.xml index bfb2653a1..b6b1a058c 100644 --- a/src/main/resources/lang/lang_fr_ref.xml +++ b/src/main/resources/lang/lang_fr_ref.xml @@ -97,10 +97,9 @@ In the file howTo.md you can find more details about translations. XNOr A combination of XOR and NOT. The inputs are combined with the XOR operation. - The result of this operation than is inverted. + The result of this operation is then inverted. It is also possible to use buses with several bits per input. In this case, the operation is applied to each - bit of the inputs. - + bit of the inputs. Not Inverts the input value. A 1 becomes a 0 and a 0 becomes 1. It is also possible to use a bus with several bits per input. In this case, the operation is applied to each @@ -129,8 +128,7 @@ In the file howTo.md you can find more details about translations. Can be used to display an output signal in a circuit. This element is also used to connect a circuit to an embedding circuit. In this case the connection is bidirectional. - Is also used to assign an pin number, if code for a CPLD or FPGA is generated. - + Is also used to assign a pin number, if the code for a CPLD or FPGA is generated. This value is used for the output connection. LED A LED can be used to visualize an output value. Accepts a single bit. @@ -155,13 +153,12 @@ In the file howTo.md you can find more details about translations. Simple DIP switch that can output either high or low. The output value of the switch. Clock Input - A clock signal. Its possible to control it by a real-time clock. + A clock signal. It's possible to control it by a real-time clock. Depending on the complexity of the circuit, the clock frequency achieved may be less than the selected value. If the frequency is greater than 50Hz, the graphic representation of the circuit will no longer be updated at every clock cycle so that the wire colors will no longer be updated. If the real-time clock is not activated, the clock can be controlled by mouse clicks. - Is also used to assign an pin number, if code for a CPLD or FPGA is generated. - + Is also used to assign an pin number, if code for a CPLD or FPGA is generated. Switches between 0 and 1 with the selected clock frequency. Button A simple push button which goes back to its original state when it is released. @@ -196,7 +193,7 @@ In the file howTo.md you can find more details about translations. Connection Connection LED with two connections. - LED with connections for the cathode and the anode. The LED lights up, + LED with connections for the cathode and the anode. The LED lights up if the anode is connected to high and the cathode is connected to low. This LED cannot be used as a pull-down resistor. It acts solely as a display element. The shown resistor is only meant to symbolize the required series resistor to limit the current. @@ -251,9 +248,8 @@ In the file howTo.md you can find more details about translations. A separate window is opened for the text input. Clock. A rising edge removes the oldest character from the buffer. - If high the output D is active and one character is output. - It also enables the clock input. - + If high, the output D is active and one character is output. + It also enables the clock input. The last typed character, or zero if no character is available. Output is the 16 bit Java char value. @@ -770,8 +766,8 @@ In the file howTo.md you can find more details about translations. Input a to compare. Input b to compare. Output is 1 if input a equals input b - Output is 1 if input a is greater then input b - Output is 1 if input a is less then input b + Output is 1 if input a is greater than input b + Output is 1 if input a is less than input b Negation Neg Input of the data word to be negated in 2th complement diff --git a/src/main/resources/lang/lang_it.xml b/src/main/resources/lang/lang_it.xml index 30a688c69..e3757256b 100644 --- a/src/main/resources/lang/lang_it.xml +++ b/src/main/resources/lang/lang_it.xml @@ -1,2 +1,2077 @@ - + Indirizzo + Indice + Generale + Revisione + Data + Di seguito la descrizione delle impostazioni del simulatore disponibili. + Massimo + Attributi + Circuito Aperto + Circuito incluso: + Apre il circuito in una nuova finestra. + Aiuto + Mostra una breve descrizione di questo elemento. + Base + Avanzato + Scarta Modifiche + Modifica + Continua a modificare + Carica + Salva + Crea + Crea un circuito in una finestra separata + Modifica separatamente + Apre il dialogo in una finestra non modale + Apre il testo di aiuto nel browser. Consente di stampare il testo + Pulisci + Tutti i valori sono stati impostati a zero! + Transizioni + Tutte le transizioni possibili sono aggiunte come test case. Utilizzato per creare dei test case per testare il simulatore stesso. + Nuovo Nome + Salva comunque + Sovrascrivi + Applica + Modifica il contenuto della ROM/EEPROM selezionata + Rimuove i dati memorizzati per la ROM selezionata. Il contenuto che è memorizzato nella ROM direttamente è invece utilizzato. + Crea un template SVG che può poi essere modificato con Inkscape. + Importa + Importa un file SVG. Per creare un file SVG, è più facile prima creare un template SVG e poi modificarlo. + Avvertimento + Annulla + Espressione + Ingressi + Uscite + Attributi + cerca + Errore durante l'incollamento dei dati! + Il {0}. valore di ingresso per l''operazione logica. + Restituisce il risultato dell'operazione logica. + Porta AND binaria. Restituisce alto se e solo se tutti gli ingressi sono impostati ad alto. Si possono anche usare i + bus con più bit come ingresso ed uscita. In tal caso, una AND bit-a-bit è applicata ad ogni ingresso. + Una combinazione di AND e NOT. Restituisce basso solo se tutti gli ingressi sono impostati ad alto. Se + uno degli ingressi è impostato a basso, l'uscita è impostata alta. Si possono anche utilizzare i bus con più + bit. In tal caso, una NAND bit-a-bit è applicata ad ogni ingresso. + Porta OR. Restituisce alto se almeno uno degli ingressi è alto. Se tutti gli ingressi sono bassi, l'uscita + sarà anch'essa bassa. Si possono anche utilizzare i bus con più bit. In tal caso, una OR bit-a-bit è applicata + ad ogni ingresso. + Una combinazione di OR e NOT. Restituisce basso se uno degli ingressi è alto. Se tutti gli ingressi sono bassi, + allora anche l'uscita sarà bassa. Si possono anche utilizzare i bus con più bit. In tal caso, una NOR bit-a-bit + è applicata ad ogni ingresso. + Se si utilizzano solo due ingressi, l'uscita è bassa se i bit di ingresso sono uguali. Altrimenti l'uscita è alta. + Se si utilizzano più, allora si comporta come una cascata di porte XOR ( A XOR B XOR C = (A XOR B) + XOR C ). Si possono anche utilizzare i bus con più bit. In tal caso, una XOR bit-a-bit è applicata ad ogni ingresso. + Una combinazione di XOR e NOT. Gli ingressi sono combinati con l'operazione XOR. Il risultato è poi negato. + Si possono anche usare i bus con più bit. In tal caso, una XNOR bit-a-bit è applicata ad ogni ingresso. + Inverte il valore dell'ingresso. Un valore alto diventa basso e viceversa. Si possono anche usare i bus con + più bit. In tal caso, una NOT bit-a-bit è applicata ad ogni ingresso. + L'ingresso della porta NOT. + L'ingresso invertito. + Tabella di Lookup + Ottiene il valore dell'uscita da una tabella memorizzata. Così, questa porta può emulare ogni + porta combinatoria. + Ingresso {0}. Questo ingresso in combinazione con tutti gli altri definisce + l''indirizzo del valore memorizzato che deve essere restituito. + Restituisce il valore memorizzato all'indirizzo impostato tramite gli ingressi. + Ritardo. + Ritarda il segnale di un tempo di ritardo di propagazione. Ritarda un segnale per un numero di + ritardo della porta configurabile. Tutti gli altri componenti in Digital hanno un ritardo di + porta equivalente ad un ritardo di propagazione. Questo componente può essere utilizzato per + realizzare in qualsiasi tempo di propagazione necessario. + Ingresso del segnale su cui applicare un ritardo. + L'ingresso del segnale ritardato di un certo ritardo porta. + Uscita + Può essere utilizzato per visualizzare il segnale d'uscita di un circuito. Questo elemento è anche utilizzato per + connettere un circuito al suo padre. In questo caso la connessione è bidirezionale. Tramite questo si può anche assegnare + un numero del pin, se il codice per CPLD o FPGA è generato. + Questo valore è usato per la connessione dell'uscita. + Un LED può essere utilizzato per visualizzare il valore di uscita. Accetta un bit singolo. + Si illumina se l'ingresso è alto. + Ingresso del LED. Si illumina se l'ingresso è alto. + LED RGB + Un LED RGB il cui colore può essere controllato tramite tre ingressi. + In ognuno dei tre ingressi, un canale del colore è connesso. + Il canale rosso del colore. + Il canale verde del colore. + Il canale blu del colore. + Ingresso + Può essere utilizzato per manipolare in forma interattiva un segnale di ingresso in un + circuito con il mouse. Questo elemento è anche utilizzato per connettere un circuito al suo + padre. In questo caso, la connessione è bidirezionale. Tramite questo si può anche assegnare + un numero del pin, se il codice per CPLD o FPGA è generato. + Restituisce il valore che è connesso a questo ingresso. + Interruttore DIP + Semplice interruttore DIP il cui output può essere solo alto o basso. + Il valore d'uscita dell'interruttore. + Ingresso Clock + Un segnale di clock. Lo si può controllare da un clock a tempo reale. A seconda della complessità del circuito, la + frequenza del clock raggiunta potrebbe essere minore di quella selezionata. Se la frequenza è più alta di 50Hz, + la rappresentazione del circuito non sarà più aggiornata per ogni ciclo di clock in modo tale da non aggiornare + più i colori dei cavi. Se il clock a tempo reale non è attivato, il clock stesso può essere controllato da click + del mouse. Tramite questo si può anche assegnare un numero del pin, se il codice per CPLD o FPGA è generato. + Alterna da basso ad alto all'interno della frequenza di clock selezionata. + Bottone + Un semplice bottone a pressione che ritorna al suo stato originale una volta rilasciato. + Il segnale di uscita del bottone. + Bottone con LED + Un semplice bottone a pressione che ha un LED che può essere attivato da un segnale di ingresso. + Il segnale di uscita del bottone. + L'ingresso per controllare il LED del bottone. + Testo + Mostra un testo all'interno del circuito. Non ha alcun effetto sulla simulazione. Il testo può essere cambiato nel dialogo + degli attributi. + Rettangolo + Mostra un rettangolo nel circuito. + Sonda + Un velore di misurazione che può essere mostrato nel grafico dei dati o nella tabella delle misurazioni. + Questo componente può essere usato per osservare facilmente i valori nei circuiti incorporati. + Il valore della misurazione. + Lampada + Una lampada con due connessione. Se la corrente scorre, la lampada si illumina. La direzione della corrente non + importa. La lampada si accende quando gli ingressi hanno valori differenti. La lampada si comporta in maniera + simile ad una porta XOR. + Connessione + Connessione + LED con due connessioni. + Un LED con connessioni per anodo e catodo. Il LED si illumina se l'anodo è connesso ad un segnale alto + ed il catodo ad un segnale basso. Questo LED non può essere utilizzato come un resistore pull-down. Agisce solamente + come un elemento visivo. Il resistore è mostrato solo per simboleggiare il resistore in serie per limitare la corrente. + La connessione all'anodo del LED + La connessione al catodo del LED + Display a Sette Segmenti + Display a sette segmenti, ogni segmento ha il suo ingresso di controllo. + Questo ingresso controlla la linea orizzontale in alto. + Questo ingresso controlla la linea verticale in alto a destra. + Questo ingresso controlla la linea verticale in basso a destra. + Questo ingresso controlla la linea orizzontale in basso. + Questo ingresso controlla la linea verticale in basso a sinistra. + Questo ingresso controlla la linea verticale in alto a sinistra + Questo ingresso controlla la riga orizzontale in mezzo. + Questo ingresso controlla il punto decimale. + Catodo comune. Per accendere i LED, questo ingresso deve essere basso. + Anodo comune. Per accendere i LED, questo ingresso deveo essere alto. + Display a Sette Segmenti Esadecimale + Display a sette segmenti con un ingresso a 4 bit esadecimali + Il valore in questo ingresso è visualizzata nel display. + Questo ingresso controlla il punto decimale. + Display a 16 Segmenti + Questo ingresso LED ha 16 bit che controllano i segmenti. Il secondo ingresso controlla il punto decimale. + Bus a 16 bit per controllare i LED. + Questo ingresso controlla il punto decimale. + Matrice di LED + Una matrice di LED. I LED sono mostrati in una finestra separata. I LED di una colonna del display sono controllati da + una parola di bit. In un altro ingresso, la colonna corrente è selezionata. Quindi un display multiplexato è + realizzato. I LED potrebbero rimanere accesi indefinitamente nella simulazione per prevenire sfarfallio del display. + Lo stato della riga dei LED di una colonna. Ciascun bit in questa parola di bit rappresenta lo stato di una riga + della colonna corrente. + Il numero della colonna corrente il cui stato è attualmente visibile nell'altro ingresso. + Grafico Dati + Mostra un grafico all'interno del pannello del circuito. Puoi graficare cicli di clock completi o semplici cambiamenti + delle porte. Non ha alcun effetto sulla simulazione. + Grafico Dati ad Attivazione + Oscilloscopio + Mostra un grafico di valori misurati, dove ogni valore misurato è memorizzato soltanto se il segnale di ingresso + cambia. La memorizzazione avviene quando il circuito si è stabilizzato. L'attivazione non dà origine alla misurazione + come in un vero oscilloscopio, ma ogni evento di attivazione fa memorizzare un singolo valore di misurazione per ogni + segnale mostrato. Come ingresso diretto c'è soltanto l'attivazione. Gli ingressi ed uscite del circuito, flip-flop e registri e i + componenti sondi possono essere utilizzati come segnali. Questo può essere abilitato nei rispettivi componenti. + Un cambiamento in questo ingresso causa la memorizzazione di un valore di misurazione. + Trasduttore di Posizione a Rotella + Rotella con codificatore. Utilizzato per rilevare rotazioni. + segnale A del codificatore + segnale B del codificatore + Tastiera + Una tastiera può essere utilizzata per inserire del testo. Questo componente bufferizza l'ingresso, che può poi + essere letto. Una finestra separata sarà aperta per inserire il testo. + Clock. Un fronte di salita rimuove il carattere più vecchio dal buffer. + Se impostato alto, l'uscita D diventa attiva ed un carattere si presenta nell'uscita. Abilita anche l'ingresso del clock. + L'ultimo carattere scritto, oppure zero se nessun carattere è disponibile. L'uscita è il valore a 16 bit assegnato da Java. + Questa uscita indica che dei caratteri sono disponibili. Può essere utilizzata per attivare un interrupt. + Terminale + Puoi scrivere caratteri ASCII nel terminale. Il terminale apre la propria finestra per visualizzare l'output. + Clock. Un fronte di salita scrive il valore dell'ingresso nella finestra del terminale. + Il dato da scrivere nel terminale + Un valore alto in questo ingresso abilita l'input del clock. + Telnet + Abilita una connessione Telnet al circuito. Si può ricevere ed inviare caratteri tramite Telnet. + Uscita Dati + Inserisce nell'uscita un dato, se presente. + I dati da inviare. + Input del clock + Se impostato, il byte nell'ingresso dati viene inviato. + Se impostato, il byte ricevuto viene visualizzato. + Monitor VGA + VGA + Analizza i segnali video in ingresso e visualizza la grafica corrispondente. Visto che la simulazione non può essere + eseguita in tempo reale, il clock dei pixel è richiesto in aggiunta ai segnali video. + Il componente rosso del colore + Il componente verde del colore + Il componente blu del colore + Il segnale di sincronizzazione orizzontale + Il segnale di sincronizzazione verticale + Il clock dei pixel + Utilizza il sistema MIDI per riprodurre delle note. + Nota + Volume + Se impostato, questo si traduce nella pressione di un tasto nella tastiera (evento tasto premuto), se non impostato + allora questo si traduce nel rilascio (evento tasto rilasciato). + Abilita il componente + Se alto, il valore in N è utilizzato per cambiare il programma (strumento). + Motore Passo-Passo Unipolare + Motore passo-passo unipolare con due finecorsa. Sono supportati azionamento + a passo completo, mezzo passo e passo d'onda. + Finecorsa 0, diventa alto quando l'angolo del motore è di 0°. + Finecorsa posizione 1, diventa alto quando l'angolo del motore è di 180°. + Fase 0 + Fase 1 + Fase 2 + Fase 3 + Collegamento comune della bobina centrale + Motore Passo-Passo Bipolare + Motore passo-passo bipolare con due finecorsa. Sono supportati azionamento + a passo completo, mezzo passo e passo d'onda. + Finecorsa 0, diventa alto quando l'angolo del motore è 0°. + Finecorsa 1, diventa alto quando l'angolo del motore è 180°. + Bobina A, positivo + Bobina A, negativo + Bobina B, positivo + Bobina B, negativo + Massa + Una connessione a massa. L'uscita è sempre zero. + L'uscita restituisce sempre bassa. + Tensione di alimentazione + Una connessione alla tensione di alimentazione. L'uscita è sempre alta. + Questa uscita è sempre alta. + Non Connesso + Questo componente può essere usato per impostare un cavo ad alta impedenza. Se un ingresso di una porta logica è + impostato ad alta impedenza, il valore in lettura è indefinito. Nota che in realtà in molti casi un eccessivo + consumo di corrente e anche danneggiamento può verificarsi se un ingresso difitale non è impostato ad alto o + basso ma rimane scollegato. + Questa uscita è sempre ad alta impedenza. + Il simbolo NonConnesso non è consentito qua! + Valore costante + Un componente che restituisce un valore come una semplice costante. Il valore può essere impostato nel dialogo degli attributi. + Restituisce il valore sotto forma di costante. + Connette componenti senza un cavo. Tutti i componenti tunnel, che hanno lo stesso nome della rete, sono connessi + insieme. Funziona soltanto localmente, quindi non è possibile connettere circuiti differenti. I tunnel senza + nome sono silenziosamente ignorati. + La connessione al tunnel. + Divide o crea un insieme di cavi o un bus dati con più di un bit. Con un bus è per esempio possibile generare + connessioni a 16 bit senza aver bisogno di piazzare 16 cavi individuali. Tutte le 16 connessioni possono essere + unite in un unico cavo. Lo splitter ha una direzione, ovvero può trasmettere segnali soltanto verso una direzione. + I bit di ingresso {0}. + Il bit di ingresso {0}. + I bit di uscita {0}. + Il bit di uscita {0}. + Splitter Bidirezionale + Può essere usato per i bus dati e semplifica in particolare la costruzione di un modulo di memoria in un package DIL, + visto che l'implementazione del bus dati è semplificata. + Quando impostato, il valore al terminale dati comune D è messo nell'uscita binaria D[i], altrimenti + i bit D[i] sono inseriti nell'uscita comune D. + La connessione dati comune. + Il bit dati {0} dello splitter del bus. + Restitore di Pull-Up + Un segnale alto "debole". + Se una rete è in uno stato di alta impedenza, questo resistore porta la rete ad un valore alto. + In qualsiasi altro caso, questo componente non ha effetto. + Resistore di Pull-Down + Un segnale basso "debole". + Se la rete è in uno stato di alta impedenza, questo resistore porta la rete ad un valore basso. + In qualsiasi altro caso, questo componente non ha effetto. + Un driver può essere usato per connettere un valore di un segnale ad un altro cavo. + Se l'ingresso di selezione è basso, l'uscita è in alta impedenza. + Se l'ingresso di selezione è alto, l'uscita è impostata al valore in ingresso. + Il valore in ingresso del driver. + Se l'ingresso di selezione è alto, l'ingresso è assegnato a questa uscita. + Se l'ingresso di selezione è basso, questa uscita è in alta impedenza. + Pin per controllare il driver. + Se il valore è alto, l'ingresso è impostato all'uscita. + Se il valore è basso, l'uscita è in alta impedenza. + Driver, selezione invertita + Un driver può essere utilizzato per connettere un valore di un segnale ad un altro cavo. + Se l'ingresso di selezione è alto, l'uscita è in alta impedenza. + Se l'ingresso di selezione è basso, l'uscita è impostata al valore di ingresso. + Il valore in ingresso del driver. + Pin per controllare il driver. + Se il valore è basso, l'ingresso è impostato all'uscita. + Se il valore è alto, l'uscita è in alta impedenza. + Se l'ingresso di selezione è basso, l'ingresso è assegnato a questa uscita. + Se l'ingresso di selezione è alto, questa uscita è in alta impedenza. + Controllo del Pin + Logica di controllo per un pin bidirezionale. + Questo componente è necessario soltanto nel contesto di una generazione VHDL o Verilog, per creare una porta + HDL bidirezionale. Se non vuoi usare una porta di I/O bidirezionale su una FPGA, non usare questo componente! + Questo componente non può essere usato in un circuito incorporato, ma solo nel circuito principale (ovvero quello di più + alto livello). + Il dato da mettere nell'uscita. + Attiva l'uscita. + Il dato da leggere. + Il connettore per il pin. Solo una singola uscita deve essere collegata. + Un componente che usa il valore di un pin di selezione per decidere quale valore + di ingresso impostare nell'uscita. + Il {0}. ingresso dati del multiplexer. + Il valore dell'ingresso selezionato. + Questo ingresso è utilizzato per selezionare l'ingresso da riflettere nell'uscita. + Un componente che può mettere il valore in ingresso ad una delle sue uscite. Tutte le altre sono + impostate al valore predefinito. + Questo pin seleziona l'uscita da usare. + Il valore di questo ingresso è dato all'uscita dati selezionata. + Uscita dati {0}. + Decodificatore + Un pin dell'output selezionabile è impostato ad alto, tutte le altre uscite a basso. + Uscita {0}. Questa è alta se è selezionata dall''ingresso selezione. + Questo ingresso seleziona l'uscita abilitata. + L'uscita selezionata è impostata ad alto, tutte le altre a basso. + Selettore del Bit + Seleziona un singolo bit da un bus dati. + Il bus in ingresso + Questo ingresso seleziona il bit + Il bit selezionato. + Codificatore a Priorità + Priorità + Se uno degli ingressi è impostato, il suo numero è l'uscita. + Se più di un ingresso è impostato simultaneamente, il numero più alto diventa l'uscita. + Numero dell'ingresso impostato. + Se questa uscita è impostata, almeno uno degli ingressi è impostato. + Il {0}. ingresso del codificatore a priorità. + Un componente per memorizzare un singolo bit. Fornisce funzioni di "set" (memorizzazione di un valore alto) e "reset" + (impostazione di un valore basso). Se entrambe gli ingressi sono alti, anche tutte e due le uscite saranno alte. + Se entrambe gli ingressi sono reimpostati a basso nello stesso momento, lo stato finale è imprevedibile. + L'ingresso di "set". + L'ingresso di "reset". + Restituisce il valore memorizzato. + Restituisce il valore memorizzato, negato. + RS-Flip-flop con Clock + Un componente per memorizzare un singolo bit. Fornisce funzioni di "set" (memorizzazione di un valore alto) e "reset" + (impostazione di un valore basso). Se entrambe gli ingressi (S, R) sono impostati nel fronte di salita del clock, lo + stato finale è imprevedibile. + L'ingresso di "set". + L'ingresso del clock. Un fronte di salita indica una transizione di stato. + L'ingresso di "reset". + Restituisce il valore memorizzato. + Restituisce il valore memorizzato, negato. + Ha la possibilità di memorizzare (J=K=0), impostare (J=1, K=0), resettare (J=0, K=1) o invertire (J=K=1) il + valore memorizzato. Un cambiamento di stato ha luogo soltanto nel fronte di salita del clock all'ingresso C. + L'ingresso di "set" del flip-flop. + L'ingresso del clock. Un fronte di salita indica una transizione di stato. + L'ingresso di "reset" del flip-flop. + Restituisce il valore memorizzato. + Restituisce il valore memorizzato, negato. + Un componente usato per memorizzare un valore. + Il valore nel pin D è memorizzato nel fronte di salita del clock C. + Il numero di bit può essere selezionato, il ché consente di memorizzare più di un bit. + L'ingresso del bit da memorizzare. + L'ingresso del clock per memorizzare un valore. + Il valore nell'ingresso D è memorizzato durante un fronte di salita su questo pin. + Restituisce il valore memorizzato. + Restituisce il valore memorizzato, negato. + Memorizza un singolo bit. Inverte lo stato con un fronte di salita sul clock C. + Abilita la funzione di inversione. + Ingresso del clock. Un fronte di salita inverte l'uscita, se l'ingresso T è alto. + Restituisce il valore memorizzato. + Restituisce il valore memorizzato, negato. + JK-Flip-flop, asincrono + Ha la possibilità di memorizzare (J=K=0), impostare (J=1, K=0), resettare (J=0, K=1) o invertire (J=K=1) il valore + memorizzato. Un cambiamento di stato ha luogo soltanto durante il fronte di salita nell'ingresso del clock C. + Ci sono due ingressi aggiuntivi che impostati o resettano il valore memorizzato immediatamente senza un segnale di clock. + L'ingresso "set" del flip-flop. + L'ingresso del clock. Un fronte di salita inizia un cambiamento di stato. + L'ingresso "reset" del flip-flop. + Restituisce il valore memorizzato. + Restituisce il valore memorizzato, negato. + "set" asincrono. Un valore alto effettua un "set" immediato nel flip-flop. + "clear" asincrono. Un valore alto effettua un "clear" immediato nel flip-flop. + D-Flip-flop, asincrono + Un componente utilizzato per memorizzare un valore. + Il valore nel pin D è memorizzato durante un fronte di salita del pin del clock C. + Ci sono due ingressi aggiuntivi che impostano o resettano lo stato immediatamente senza un segnale di clock. + Il numero di bit può essere selezionato, il ché consente di memorizzare più bit. + Ingresso del bit da memorizzare. + Pin din controllo per memorizzare un bit. Il bit nell'ingresso D è memorizzato durante un fronte di salita di questo pin. + Restituisce il valore memorizzato. + Restituisce il valore memorizzato, negato. + "set" asincrono. Un valore alto imposta tutti i bit memorizzati ad un valore alto. + "clear" asincrono. Un valore alto imposta tutti i bit memorizzati ad un valore basso. + Il monoflop è impostato ad un fronte di salita del clock. + Dopo un tempo di ritardo configurabile, il monoflop sarà resettato automaticamente. + Il monoflop può essere riattivato. Può essere usato soltanto se c'è esattamente un solo componente di clock presente + nel circuito. + Questo componente di clock è utilizzato come la base temporale con cui vengono misurati ritardi di tempo. + Ingresso del reset. Un valore alto resetta il monoflop. + Ingresso del clock. Un fronte di salita imposta il monoflop. + uscita + uscita invertita + Registro + Un componente utilizzato per memorizzare valori. Il numero di bit della parola dati può essere selezionato. + Al contrario di un D-Flip-flop, il registro forniisce un ingresso che abilita il clock. + Pin di ingresso della parola dati da memorizzare. + Ingresso del clock. Un fronte di salita memorizza il valore presente nel pin D. + Pin di enable. La memorizzazione di un valore funziona soltanto se questo pin è impostato ad alto. + Restituisce il valore memorizzato. + Un componente di memoria non-volatile. I dati memorizzati possono essere modificati dal dialogo degli attributi. + Questo pin definisce un indirizzo della parola dati da mettere nell'uscita. + La parola dati selezionata se l'ingresso di selezione è alto. + Se l'ingresso di selezione è alto, l'uscita è abilitata. Se è basso, l'uscita è in alta impedenza. + ROM a doppia porta + Un componente di memoria non-volatile. I dati memorizzati possono essere modificati dal dialogo degli attributi. + Questo pin definisce l'indirizzo della parola dati da mettere nell'uscita su D1. + La parola dati selezionata se l'ingresso S1 è alto. + Se l'ingresso è alto, l'uscita D1 è attivata. Se è basso, l'uscita dati è in alta impedenza. + Questo pin definisce l'indirizzo della parola dati da mettere nell'uscita D2. + La parola dati selezionata se l'ingresso di S2 è alto. + Se l'ingresso è alto, l'uscita D2 è attivata. Se è basso, l'uscita dati è in alta impedenza. + RAM, porte separate + Un modulo RAM con ingressi separati per memorizzare e uscite per leggere i dati memorizzati. + L'indirizzo da cui leggere o scrivere. + Ingresso del clock + I dati da memorizzare nella RAM. + Il pin dell'uscita dati + Se questo ingresso è alto allora l'uscita è attivata e i dati sono visibili. + Se questo ingresso è alto quando c'è un fronte di salita nel clock, i dati sono memorizzati. + RAM, asincrona + Fino a quando il write-enable è impostato, l'ingresso è memorizzato. Corrisponde ad una semplice RAM, dove le linee di dati ed + indirizzi sono direttamente connesse ai decodificatori delle celle di memoria. + L'indirizzo in cui la lettura o scrittura ha luogo. + I dati da memorizzare. + Write enable. Fino a quando l'ingresso è alto, il valore applicato a D è memorizzato nell'indirizzo applicato su A in + qualsiasi caso in cui A o D cambia. + Uscita corrispondente ai dati memorizzati. + Block-RAM, porte separate + Un modulo RAM con ingressi di memorizzazione e uscite di lettura dati separati. La RAM aggiorna le sue + uscite durante un fronte di salita del clock. Questo consente l'utilizzo di una Block-RAM su una FPGA. + L'indirizzo da cui leggere o scrivere. + L'ingresso del clock. + I dati da memorizzare nella RAM. + Il pin dell'uscita dati. + Se questo ingresso è alto e c'è un fronte di salita del clock, i dati sono memorizzati. + EEPROM, porte separate + Un modulo EEPROM con ingressi per memorizzazione e uscite per lettura dati separati. + L'indirizzo da cui leggere o scrivere. + L'ingresso del clock + I dati da memorizzare nella EEPROM. + Il pin di uscita dati. + Se questo ingresso è alto l'uscita è attivata e i dati diventano visibili. + Se questo ingresso è alto e c'è un fronte di salita del clock, i dati sono memorizzati. + RAM, porte bidirezionali + Un modulo RAM con pin bidirezionali per lettura e scrittura dei dati. + L'indirizzo di scrittura o lettura dati. + Connessione bidirezionale per i dati. + Se l'ingresso è alto l'uscita è attivata e i dati diventano visibili. + Se l'ingresso è alto e c'è un fronte di salita del clock, i dati sono memorizzati. + Un modulo RAM con una connessione bidirezionale per la lettura e scrittura dati. + Se l'ingresso chip-select è basso, il componente è disabilitato. + Questo consente la costruzione di una RAM più grande a partire da tanti altri moduli RAM più piccooli tramite + l'utilizzo di un decodificatore di indirizzi. + Il ciclo di scrittura funziona in questo modo: mettendo chip-select ad alto, il componente diventa selezionato; + un fronte di salita nel write-enable scrive l'indirizzo e il fronte di discesa successivo memorizza i dati. + L'indirizzo di lettura e scrittura dati. + Se impostato ad alto, i dati sono scritti nella RAM. + La connessione dati bidirezionale. + Se impostato ad alto, questo modulo di RAM è abilitato. Altrimenti l'uscita sarà sempre in alta impedenza. + Se impostato ad alto, il valore memorizzato è presente nell'uscita. + Un modulo RAM con una connessione bidirezionale per la lettura e scrittura dati. + Se l'ingresso chip-select è basso, il componente è disabilitato. + I dati sono memorizzati come in una ROM. Vengono quindi preservati quando la simulazione termina e/o è riavviata. + Il ciclo di scrittura funziona in questo modo: mettendo chip-select ad alto, il componente diventa selezionato; + un fronte di salita nel write-enable scrive l'indirizzo e il fronte di discesa successivo memorizza i dati. + L'indirizzo di lettura o scrittura dati. + Se impostato ad alto, i dati sono scritti nella EEPROM. + La connessione dati bidirezionale. + Se impostato ad alto, la EEPROM è abilitata. Altrimenti l'uscita è sempre in alta impedenza. + Se impostato ad alto, il valore memorizzato è presente nell'uscita. + RAM Grafica + Utilizzato per mostrare una immagine grafica. Questo elemento si comporta come una RAM. In aggiunta, + mostra il suo contenuto in uno schermo grafico. Ogni pixel è rappresentato da un indirizzo di memoria. Il valore + memorizzato definisce il colore del pixel, usando una paletta di colori prefissata. Ci sono due buffer dello schermo + implementati per supportare il page flipping. L'ingresso B seleziona quale buffer sarà mostrato. Quindi, la memoria + totale sarà dx * dy * 2 parole. + La paletta di colori utilizzata è strutturata come segue: gli indici 0-9 corrispondono ai colori bianco, nero, + rosso, verde, blu, giallo, azzurro, viola, arancio e rosa. Gli indici 32-63 mappano valori di grigio e gli indici + 64-127 mappano 64 valori di colore ciascuno con due bit per canale. + Questo risulta in una semplice paletta che può essere indirizzata con solo 7 bit. Se l'architettura supporta un + indice a 16 bit, dall'indice 0x8000, una modalità di "high-color" con 5 bit per canale può essere usata, per un + totale di 32768 colori. + L'indirizzo di lettura o scrittura dati. + Se impostato ad alto quando c'è un fronte di salita del clock, i dati sono memorizzati. + Se impostato ad alto, l'uscita è attivata e i dati sono resi visibili nell'uscita. + Seleziona il buffer da visualizzare nello schermo. + La connessione dati bidirezionale. + RAM, Doppia Porta + Una RAM con una porta che consente di scrivere e leggere ed una seconda porta di sola lettura. + Questa seconda porta può essere sata per fornire un accesso ai contenuti della memoria per la logica grafica. In + questo modo, un processore può scrivere nella memoria video e la logica grafica visualizzerà il contenuto letto + dalla RAM simultaneamente. + Porta di uscita 1 + Porta di uscita 2 + L'indirizzo in cui la porta 1 è letta o scritta. + L'indirizzo utilizzato per leggere dalla porta 2. + I dati da memorizzare nella RAM. + Se impostato ad alto, l'uscita è attivata e i dati sono resi visibili nell'uscita 1D. + Se impostato ad alto quando c'è un fronte di salita nel clock, i dati sono memorizzati. + File Registro + Registro + Memoria con una oprta che consente di scrivere e due porte che consentono di leggere dalla memoria simultaneamente. + Può essere usata per implementare i registri di un processore. Due registri possono essere letti simultaneamente + ed un terzo può essere scritto. + -Porta d'uscita A + Porta d'uscita B + Il registro visibile nella porta A. + Il registro visibile nella porta B. + Il registro in cui i dati sono scritti. + Se impostato ad alto, durante un fronte di salita del clock, i dati sono memorizzati. + I dati da memorizzare nel registro Rw. + Contatore + Contatore + Un semplice contatore. L'ingresso del clock incrementa il contatore. + Può essere resettato a zero con l'ingresso CLR. Il numero di bit può essere impostato nel dialogo degli attributi. + L'ingresso del clock. Un fronte di salita incrementa il contatore. + Reset sincrono del contatore se impostato ad alto. + Uscita dell'overflow. Questo pin è impostato ad un valore alto se il contantore è al suo valore + massimo e anche l'ingresso è impostato ad alto. + Restituisce il valore del contatore. + Se impostato ad alto, il contatore è abilitato. + Contatore con preset + Un contatore il cui valore può essere impostato. In aggiunta, un valore massimo e una direzione + di conteggio possono essere specificate. + Contatore + Restituisce il valore del contatore. + Uscita dell'overflow. Questo viene impostato ad alto se l'ingresso "en" è alto e se il contatore + raggiunge il suo massimo valore quando conta verso l'alto oppure se ha raggiunto lo zero contando + verso il basso. + L'ingresso del clock. Un fronte di salita incrementa o decrementa il contatore. + Reset sincrono del contatore se impostato ad alto. + Se impostato ad alto il contatore è abilitato. + Specifica la direzione del conteggio. Un valore basso significa un conteggio in avanti. + Se impostato, il valore all'ingresso "in" è memorizzato nel contatore al prossimo segnale di clock. + Questa parola dati è memorizzata nel contatore quando "ld" è impostato. + Sommatore + Un componente per semplici addizioni. Effettua l'addizione tra i due ingressi + numerici interi A e B (A+B). Il risultato sarè incrementato di uno se l'ingresso del riporto è impostato. + Primo ingresso da sommare. + Secondo ingresso da sommare. + Il risultato dell'addizione. + Ingresso del riporto. Se impostato questo fa incrementare il risultato di uno. + Uscita del riporto. Impostato se si è verificato un overflow. + Sottrattore + Un componente per semplici sottrazioni. + Sottrae numeri binari negli ingressi A e B (A-B). + Se l'ingresso di riporto è impostato ad alto, allora il risultato è decrementato di uno. + Ingresso del riporto. Se impostato questo fa decrementare il risultato di uno. + Ingresso A per la sottrazione. + Ingresso B per la sottrazione. + Il risultato della sottrazione. + Impostato ad alto se si è verificato un underflow. + Moltiplicatore + Un componente per la moltiplicazione. + Moltiplica i numeri interi negli ingressi A e B. + Ingresso A per la moltiplicazione. + Ingresso B per la moltiplicazione. + Uscita per il risultato della moltiplicazione. + Divisore + Un componente per la divisione. + Divide il numer intero applicato all'ingresso A per l'altro numero intero applicato all'ingresso B. + Se il divisore è zero, è diviso per uno. + Nella divisione con segno, il resto è sempre positivo. + dividendo + divisore + quoziente + resto + Un componente per lo scorrimento dei bit. Scorre i bit del valore di ingresso per un numero specificato + dall'ingresso dello scorrimento bit. + L'ingresso dati contenente i bit da scorrere. + L'ingresso che indica di quanti bit scorrere i dati. + L'uscita con il valore sul quale è stato applicato lo scorrimento dei bit. + Comparatore + Un componente per comparare valori binari. + Compara i numeri binari nei due ingressi A e B ed imposta le rispettive uscite. + Ingresso A da comparare. + Ingresso B da comparare. + L'uscita è alta se i due ingressi sono uguali. + L'uscita è alta se l'ingresso A è più grande dell'ingresso B. + L'uscita è alta se l'ingresso A è più piccolo dell'ingresso B. + Negazione + Ingresso della parola dati da negare con il complemento a due. + Restituisce il valore della negazione con complemento a due. + Negazione nel complemento a due. + Estenditore del segno + Incrementa il numero di bit di un numero intero con segno mantenendo il segno. + Se l'ingresso è un singolo bit, quel bit sarà impostato per ogni bit nell'uscita. + Valore di ingresso. + Il numero di bit nell'ingresso deve essere più piccolo del numero di bit nell'uscita! + Valore di ingresso esteso. + Il numero di bit nell'ingresso deve essere più piccolo del numero di bit nell'uscita! + Contatore di bit + Restituisce il numero di bit ad 1 nel valore di ingresso. + L'ingresso da cui i bit a 1 sono conteggiati. + L'uscita con il numero di bit ad 1. + Generatore di Numeri Casuali + Può essere utilizzato per generare numeri casuali. + Quando la simulazione viene avviata, il generatore è reinizializzato così che una nuova sequenza di + numeri pseudo-casuali verrà generata. + Il generatore può essere inizializzato durante una simulazione già avviata con un seme per generare una + sequenza di numeri predefinita e deterministica. + Nuovo valore del seme per il generatore. + Se impostato, il generatore è reinizializzato con il nuovo seme al prossimo fronte di salita del clock. + Se impostato, un nuovo numero casuale è impostato nell'uscita al prossimo fronte di salita del clock. + L'ingresso del clock. + Uscita del numero pseudo-casuale. + Diodo a VDD + Un semplice diodo unidirezionale, usato per portare un cavo a VDD. + Viene utilizzato per implementare una OR cablata. + Quindi è necessario connettere un restistore pull-down all'uscita dei diodi. + Nella simulazione i diodi si comportano come una porta attiva con una tabella di verità trivalente: + Se l'ingresso è alto, l'uscita è anche alta. In tutti gli altri casi (ingresso basso o ad alta impedenza) l'uscita è + in alta impedenza. + Quindi due diodi anti-paralleli possono tenersi nello stato alto a vicenda, cosa che non è possibile con + dei diodi reali. + Questo è un diodo ideale: non c'è caduta di tensione in un diodo a polarizzazione diretta. + Se l'ingresso è alto anche l'uscita lo sarà. In tutti gli altri casi l'uscita è in alta impedenza. + Se l'ingresso è alto anche l'uscita lo sarà. In tutti gli altri casi l'uscita è in alta impedenza. + Diodo a Massa + Un semplice diodo unidirezionale, usato per portare un cavo a massa. + Viene utilizzato per implementare una AND cablata. + Quindi è necessario connettere un restistore pull-up all'uscita dei diodi. + Nella simulazione i diodi si comportano come una porta attiva con una tabella di verità trivalente: + Se l'ingresso è basso, l'uscita è anche bassa. In tutti gli altri casi (ingresso alto o ad alta impedenza) l'uscita è + in alta impedenza. + Quindi due diodi anti-paralleli possono tenersi nello stato alto a vicenda, cosa che non è possibile con + dei diodi reali. + Questo è un diodo ideale: non c'è caduta di tensione in un diodo a polarizzazione diretta. + Se l'ingresso è basso l'uscita lo è anche. In tutti gli altri casi l'uscita è in alta impedenza. + Se l'ingresso è basso l'uscita lo è anche. In tutti gli altri casi l'uscita è in alta impedenza. + Interruttore + Una delle connessioni all'interruttore. + Un semplice interruttore. Non c'è nessun ritardo di porta. Un cambiamento di segnale è propagato immediatamente. + Interruttore a Doppio Contatto + Un semplice interruttore. Non c'è nessun ritardo di porta. Un cambiamento di segnale è propagato immediatamente. + Fusibile + Un fusibile è usato per costruire una memoria programmabile una sola volta. + Una delle connessioni del fusibile. + Una delle connessioni del fusibile. + Un relay è un interruttore che può essere controllato da una bobina. + Se una corrente scorre nella bobina, l'interruttore è chiuso o aperto. + Non c'è nessun diodo di protezione quindi la direzione della corrente non importa. + L'interruttore è attuato se gli ingressi hanno valori differenti. + Il relay si comporta in maniera simile ad una porta XOR. + Uno degli ingressi per controllare il relay. + Uno degli ingressi per controllare il relay. + Relay a Doppio Contatto + Un relay è un interruttore che può essere controllato da una bobina. + Se una corrente scorre nella bobina, l'interruttore è chiuso o aperto. + Non c'è nessun diodo di protezione quindi la direzione della corrente non importa. + L'interruttore è attuato se gli ingressi hanno valori differenti. + Il relay si comporta in maniera simile ad una porta XOR. + Uno degli ingressi per controllare il relay. + Uno degli ingressi per controllare il relay. + FET a Canale P + Transistore ad effetto di campo a canale P. + Il bulk è connesso alla corsia di tensione positiva ed il transistore è simulato senza un diodo di body. + FET a Canale N + Transistore ad effetto di campo a canale N. + Il bulk è connesso alla massa ed il transistore è simulato senza un diodo di body. + FET a Canale P con Floating Gate + Transistore ad effetto di campo a canale P con floating gate. + Il bulk è connesso alla massa ed il transistore è simulato senza un diodo di body. + FET a Canale N con Floating Gate + Transistore ad effetto di campo a canale P con floating gate. + Il bulk è connesso alla massa ed il transistore è simulato senza un diodo di body. + Se c'è una carica immagazzinata nella floating gate, il FET non conduce anche se il gate è impostato ad alto. + Una vera transmission gate è costruita da due soli transistor. Quindi, è spesso usato per risparmiare + transistor durante l'implementazione su silicio. + ingresso A + ingresso B + ingresso di controllo. + ingresso di controllo invertito + Descrive un test case. + In un test case puoi descrivere come un circuito dovrebbe comportarsi. Si può quindi controllare automaticamente + che il comportamento corrisponda alla descrizione forniita. Se c'è una discrepanza, un messaggio di errore + viene mostrato. + Inizializzazione Generica + Codice che è eseguito per avviare un circuito generico direttamente. + Se un circuito generico è avviato direttamente, questo componente deve essere presente. + Codice + Codice che può essere eseguito quando un circuito generico viene reso concreto. + Può essere usato, per esempio, per aggiungere componenti o cavi ad un circuito. + Temporizzazione Asincrona + Consente la configurazione della temporizzazioen di un circuito sequenziale asincrono come per esempio una + pipeline Muller. Il circuito deve essere avviato in modalità di porta a passo singolo e deve essere in grado di + raggiungere uno stato stabile durante l'avvio. Il circuito sequenziale può quindi essere avviato interattivamente + o con una porta di reset. + Non viene consentito l'utilizzo di un clock in questa modalità. + Alimentazione + Non ha alcuna funzionalità. Si assicura che alimentazione e massa siano connessi. + Può essere usato nei circuiti 74xx per generare i pin per l'alimentazione, che sono testati per una corretta + cablatura. + Deve essere connesso all'alimentazione! + Deve essere connesso alla massa! + Uscita di Reset. + L'uscita di questo componente è mantenuta alta durante l'inizializzazione del circuito. + Dopo che il circuito si è stabilizzato, l'uscita diventa bassa. + Se l'uscita viene invertita si comporta nel modo opposto. + Interruzione + Ferma la simulazione veloce se un fronte di salita viene individuato. + Se questo componente è usato nel circuito, il bottone "Avvia fino all'interruzione" tra "Avvia" ed "Interrompi" + è abilitato. Il bottone fa funzionare il circuito fino a quando un fronte di salita nel componente viene + rilevato. Questo elemento può essere usato per effettuare il debugging del circuito in qualsiasi punto di + interruzione (breakpoint). In questo modo una istruzione in assembly BRK può essere implementata. Questo + consente l'esecuzione di un programma fino al raggiungimento di questo comando. Questa funzione può essere + utilizzata soltanto se il clock a tempo reale è disattivato. + Fermata + Un fronte di salita in questo componente ferma la simulazione. + Ha lo stesso effetto del bottone "Stop" nella barra degli strumenti. + Un fronte di salita ferma la simulazione. + Esterno + Un componente che esegue un processo esterno per il calcolo della funzione logica. + Può essere usato per specificare il comportamento di un componente da VHDl o Verilog. + L'attuale comportamento della simulazione deve essere fatto da un simulatore esterno. + Al momento soltanto il simulatore VHDL "ghdl" ed il simulatore Verilog "Icarus Verilog" sono supportati. + L'etichetta del componente deve essere corrispondente al nome dell'entità o modulo! + File Esterno + Un componente che esegue un processo esterno per il calcolo della funzione logica. + Può essere usato per specificare il comportamento di un componente da VHDl o Verilog. + L'attuale comportamento della simulazione deve essere fatto da un simulatore esterno. + Al momento soltanto il simulatore VHDL "ghdl" ed il simulatore Verilog "Icarus Verilog" sono supportati. + L'etichetta del componente deve essere corrispondente al nome dell'entità o modulo! + Diodo + Diodo bidirezionale semplificato. Viene usato per implementare una AND o OR cablata. + Questo è un diodo ideale: non c'è caduta di tensione in un diodo a polarizzazione diretta. + Errore + Pin {0} nel componente {1} non è un ingresso o uscita. + Un singolo clock è necessario. Tutti i flip-flop devono usare questo segnale. + Il circuito non ha alcun ingresso etichettato. + Il circuito non ha alcuna uscita etichettata. + Nessuna interruzione rilevata dopo {0} cicli nel breakpoint "{1}". Probabilmetne il numero di cicli + di timeout nel componente di interruzione deve essere incrementato. + L''espressione {0} non è supportata. + L''operazione {0} non è supportata. + Errore nella creazione della tabella di lookup. + Più di una uscita è attiva sul cavo, causando un corto circuito. + Non è consentito connettere un resistore pull-up ed uno pull-down alla stessa rete. + Impossibile analizzare il nodo {0} + Contiene [var] e [not var] + Il pin "{0}" nel componente "{1}" esiste due volte. + Il componente {0} non è stato trovato + Esattamente {0} valori sono necessari, non {1} + Il flip-flop deve essere connesso al clock. + Formato del file invalido + La logica è già stata inizializzata + Un tunnel {0} non è connesso. + C'è più di un clock. + Il componente clock non è stato usato! + Ci sono {0} bit richiesti, ma {1} sono stati trovati + La rete del pin {0} non è stata trovata + Nessun clock trovato nella logica del circuito + Nessun ingresso disponibile per l'impostazione + Nessuna figura trovata per il componente {0} + Non c''è niente connesso all''ingresso "{0}" nel componente "{1}". Ingressi aperti non sono consentiti. + Non tutte le uscite connesse hanno lo stesso numero di bit + Se uscite multiple sono connesse insieme, tutte devono essere uscite a tre stati. + Nessuna uscita connessa al cavo ({0}). Lo stato del cavo è indefinito. + Tabella troppo piccola: un risultato è richiesto! + Uscita {0} non definita + Nessuna etichetta per il pin {0} + Pin {0} assegnato due volte! + Pin {0} non è un ingresso! + Pin {0} non è un''uscita! + Nessun = trovato! + Troppi ingressi utilizzati! + Troppe uscite utilizzate! + Pin non presente + Trovato un pin senza un'etichetta. + Trovato un clock senza etichetta. Se il clock è incorporato, allora anch'esso ha bisogno di un'etichetta. + Pin {0} non trovato nel componente {1} + Pin {0} non trovato + La figura personalizzata non definisce un pin {0} + Pin {0} sconosciuto + La logica sembra oscillare. Per analizzarla puoi avviare il circuito in modalità di porta a passo singolo. + La porta remota è in uso! C'è un'altra istanza in esecuzione? + Il numero di ingressi non corrisponde al numero di bit del selettore + Errore di sintassi nella definizione dello splitter {0} + Numero di bit dello splitter non corrispondente + Non tutti gli ingressi sono stati definiti! + I bit di ingresso sono stati definiti più volte! + Solo 64 bit sono consentiti nello splitter! + Due ingressi sono richiesti! + Troppe variabili (ingressi + flip-flop), {0} sono consentite ma {1} sono state trovate. + Troppe variabili utilizzate in {0}, {1} sono consentite ma {2} sono state trovate. + La variabile {0} non è consentita nel sorgente CUPL! + La variabile {0} non è definita + Carattere inaspettato {0} + Parentesi chiusa mancante + Il valore {0} nella riga {1} non è un numero! + Ci si aspettava {0} ma sono stati trovati {1} valori nella riga {2}! + Carattere inaspettato ({0}) nella riga {1}. + Variabile {0} non trovata! + Nessun segnale di ingresso è stato definito nel test vector! + Nessun segnale di uscita è stato definito nel test vector! + Nessun dato di test trovato. + Non è consentito connettere un resistore pull-up e pull-down ad un singolo cavo. + Impossibile aprire il browser. + Impossibile creare la cartella "{0}"! + Non è consentito connettere soltanto ingressi ad uno switch. + Il file {0} esiste più volte sotto {1}. + Impossibile trovare il file {0}. + Errore durante l''esecuzione di "{0}". + Il processo "{0}" non termina! + Il rpocesso restituisce un valore diverso dallo zero {0}: {1} + Errore nell'avvio del fitter esterno! + Non c'è alcuna equazione minimizzata. + Le equazioni stanno venendo calcolate. Per favore, attendi un momento! + La variabile {0} è usata due volte! + Il file deve essere salvato! + Il circuito {0} importa sé stesso! + Il risultato della minimizzazione non è corretto! I nomi delle variabili potrebbero non essere unici. + Troppe iterazioni in un ciclo. + Il diodo ha bisogno di un resistore pull-up nell'uscita! + Il diodo ha bisogno di un resistore pull-down nell'uscita! + Il segnale di test {0} non è stato trovato nel circuito! + Soltanto {1} bit sono consentiti, ma {0} sono stati trovati! + I flip-flop con più di un bit non sono consentiti! + I due ingressi di controllo di una porta di trasmissione devono essere invertiti! + Il segnale {0} è usato due volte! + Errore nell'interpretazione dei dati di test. + Il modello del componente {0} non può essere analizzato. + Errore nel cablaggio dell''alimentazione in {0}. + Il pin numero {0} non è un intero! + Errore durante l'esportazione in VHDL. + Nessun codice VHDL disponibile per {0}! + Nessun codice Verilog disponibile per {0}! + Errore nella creazione di un test bench! + I valori di tipo {0} non sono consentiti! + Un nome manca. Tutte le etichette dei pin sono state impostate, per esempio? + Più uscite sono connesse tra di loro. Questo tipo di interconnessione non è supportata per una + esportazione in HDL. ({0}, {1}, {2}). + I test case con una parametrizzazione generica non sono supportati per una esportazione HDL. + rete senza nome + Troppe variabili! + Espressione invalida! + Funzione {0} non trovata nella linea {1}! + Il numero di argomenti nella funzione {0} nella riga {1} non è corretto ({2} trovati, {3} previsti)! + Valore {0} invalido nella funzione {1}! + Il nome {0} non è una componente di un percorso. + Errore durante il caricamento di una libreria. + Il file JAR non contiene un manifest! + Il manifest non contiene il campo Main-Class! + Impossibile trovare la classe {0}! + Impossibile creare un''istanza della classe {0}! + Ci devono essere più bit di ingresso che uscita! + Non è possibile impostare pin fisici a valori costanti! + La stringa {0} non è un numero valido (posizione {1})! + Il nome "{0}" non è consentito! + Nessuno spazio bianco consentito nel nome di un file TT2! + La tabella ha troppe colonne! + Errore durante la scrittura del file ZIP. + Soltanto un componente di clock ad alta frequenza è consentito. + Il circuito contiene cicli. Non è possibile analizzare tale circuito. I cicli sorgono quando un'uscita di + una porta è collegata ad uno degli ingressi della stesssa porta. L'utilizzo di interruttori, FET o relay + può causare cicli. + Se un monoflop è utilizzato, deve esserci esattamente un solo componente di clock! + Impossibile creare un componente di tipo {0}! + Le ROM definite nelle impostazioni non sono supportate! + Il nome "{0}" non è unico! + Impossibile scrivere i valori al processo esterno! + Impossibile leggere i valori dal processo esterno! + Impossibile creare il processo esterno! + Tempo scaduto durante la lettura dei dati dal processo esterno! + {0} + Non abbastanza dati ricevuti! + {0} + I dati testuali ricevuti contengono un carattere invalido: {0}! + {1} + Il processo ha terminato inaspettatamente! + {0} + Impossibile terminare il processo! + Impossibile lanciare il processo: {0} + Il valore di uscita dell''applicazione non è zero ma {0}: + {1} + Il codice esterno è supportato soltanto se è VHDL! + Il codice esterno è supportato soltanto se è Verilog! + Se un componente esterno è usato più volte, il codice deve essere identico! Effetti: {0} + Impossibile scrivere sullo standard output: + {0} + Il simulatore di VHDL "ghdl" non sembra essere installato. Installa ghdl (http://ghdl.free.fr/) e riprova. + Se ci sono ancora problemi, controlla che il percorso in cui si trova l'eseguibile di ghdl sia nelle impostazioni + di Digital. + Il simulatore di Verilog "Icarus" non sembra essere installato. Installa IVerilog (http://iverilog.icarus.com/) + e riprova. Se ci sono ancora problemi, controlla che il percorso in cui si trova l'eseguibile di IVerilog sia nelle + impostazioni di Digital. + Errore nel caricare il file HDL {0} + Un'etichetta vuota non è consentita! + Errore nell''analisi del circuito: {0} + Ogni ROM ha bisogno di un'etichetta unica per essere esportata! + Ogni LUT ha bisogno di un'etichetta unica per essere esportata! + Il contatore ha bisogno di almeno due bit. + Gli elementi con clock non possono essere usati in modalità asincrona. + Errore durante l'esportazione a Verilog. + Nessuna memoria "{0}" trovata nel modello! + Più memorie "{0}" trovate nel modello! + Errore durante il caricamento dei dati in ROM. + Errore durante l'interpretazione del file SVG. + Il file SVG contiene dei pin che non esistono nel circuito. + Tutte le memorie dove i dati saranno memorizzati hanno bisogno di un numero di bit uguale. + Se i programmi devono essere caricati in più RAM, tutte le RAM devono avere nomi differenti. L'ordine + lessicografico determina l'ordine delle RAM. + Il sistema MIDI non è disponibile. + Il canale MIDI {0} non è disponibile. + Lo strumento MIDI {0} non è disponibile. + Gli strumenti MIDI non sono disponibili. + Durante l''esecuzione dei test "{0}" si è verificato un errore! + HDL non noto: {0} + Errore nel lancio del comando {0} + C'è un ingresso o uscita senza nome! + Il nome del segnale "{0}" è invalido o usato più volte! + Errore durante la sostituzione dei componenti per l'analisi. + Errore nella valutazione del codice generico del circuito. Il codice + {1} + nel componente: {0} + Errore durante l'interpretazione del codice generico- + Nessuna inizializzazione del codice per i componenti generici è stata trovata. + Un rispettivo componente deve essere aggiunto al circuito per farlo partire. + Più codici di inizializzazione per componenti generici sono stati trovati. + Errore durante l'analisi del codice generico di inizializzazione. + Le variabili globali possono essere dichiarate soltanto nel codice dei componenti. + La modalità video non è stata rilevata ({0}) + Non c'è nessun nome file specificato per il ricaricamento automatico! + Il segnale virtuale {0} è stato dichiarato due volte nella linea {1}! + Nessuna intestazione trovata! + Nessun valore di uscita trovato! + Non ci sono abbastanza valori per una linea! + Troppi valori per una linea! + Errore durante la scrittura del file {0}. + Il circuito non contiene componenti! + Impossibile avviare il server! + Bit di Indirizzo + Numero dei bit di indirizzo utilizzati. + Bit di Dati + Colore + Il colore dell'elemento. + Colore di Sfondo + Il colore di sfondo del circuito quando viene incorporato dentro un altro circuito. Non è utilizzato per + package DIL. + Cicli di Timeout + Se questo numero di cicli di timeout è raggiunto senza un segnale di interruzione, un errore viene generato. + Dati + I valori memorizzati in questo elemento. + Predefinito + Questo valore è impostato quando il circuito viene avviato. + Nel demultiplexer, questo valore è impostato per uscite non selezionate. + Predefinito + Questo valore è impostato se il circuito è avviato. Una "Z" significa uno stato di alta impedenza. + Ingresso a tre stati + Se impostato, all'ingresso viene consentito di essere in alta impedenza. Questo viene consentito anche all'ingresso + del componente se l'alta impedenza ("Z") è impostata come valore predefinito. + Nessuna uscita bassa. + Evita un'uscita bassa. Questo è specialmente utile quando si impostano circuiti di relay. + Può essere attivato soltanto se una uscita ad alta impedenza è consentita. + Descrizione + Una breve descrizione di questo elemento e del suo utilizzo. + Frequenza/Hz + La frequenza in tempo reale utilizzata per questo clock. + Utilizza forme IEEE 91-1984 + Utilizza forme IEEE 91-1984 anziché forme rettangolari + Numero delle uscite + Numero di ingressi utilizzati. Ogni ingresso deve essere connesso. + Etichetta + Il nome di questo elemento. + Dimensione + La dimensione della figura del circuito. + Piccola Figura + Se selezionato, una figura più piccola sarà utilizzata. + Lingua + La lingua dell'interfaccia. Cambierà soltanto dopo un riavvio. + Nome di rete + Tutte le reti hanno un nome identico se connesse insieme. + Splitting dell'ingresso + Se per esempio quattro bit, due bit e due altri bit sono usati per l'ingresso, questo può essere configurato + come "4,2,2". Il numero indica il numero di bit. Per convenienza, l'asterisco può essere usato con "[Bit]*[Numero]" + come "1*16". Si può anche specificare i bit da utilizzare direttamente in qualsiasi ordine. Per esempio "4-7,0-3" + configura i bit 4-7 e 0-3. Questa notazione consente qualsiasi configurazione di bit. + I bit di ingresso devono essere specificati completamente e senza ambiguità. + Se per esempio quattro bit, due bit e due altri bit sono usati per l'ingresso, questo può essere configurato + come "4,2,2". Il numero indica il numero di bit. Per convenienza, l'asterisco può essere usato con "[Bit]*[Numero]" + come "1*16". Si può anche specificare i bit da utilizzare direttamente in qualsiasi ordine. Per esempio "4-7,0-3" + configura i bit 4-7 e 0-3. Questa notazione consente qualsiasi configurazione di bit. + I bit di ingresso devono essere specificati completamente e senza ambiguità. + Numero dei bit di Selezione + Numero dei bit utilizzati per l'input di selezione. + Operazione con Segno + Se selezionato l'operazione è effettuata con il segno (complemento a due). + Resto sempre positivo + Se impostato, il resto di una operazione con segno sarà sempre positivo. + Chiuso + Imposta lo stato iniziale dell'interruttore. + Valore + Il valore della costante. + Larghezza + Larghezza del simbolo se questo circuito è utilizzato come un componente in un altro circuito. + Altezza + Altezza del simbolo se questo circuito è utilizzato come un componente in un altro circuito. + Ricarica all'avvio del modello + Ricarica il file esadecimale ogni volta che il modello viene avviato. + Il file da caricare nella ROM. + Inverti la posizione del selettore + Questa opzione ti consente di spostare il pin di selezione dal lato opposto del plexer. + Formato Numerico + Il formato utilizzato per mostrare i numeri. + Binario + Decimale + Decimale con segno + Predefinito + Esadecimale + Ottale + A virgola fissa + A virgola fissa con segno + A virgola mobile + Cifre decimali + Il numero delle cifre decimali binarie + L'ingresso del registro a scorrimento ha il segno + L'ingresso dati del registro a scorrimento ha il formato in complemento a due + Modalità + Modalità del registro a scorrimento + Logica + Rotazione + Aritmetica + Direzione + Imposta la direzione. + sinistra + destra + Massimo numero dei passaggi da mostrare + Il massimo numero dei valori memorizzati. Quando il massimo viene raggiunto il valore più vecchio è scartato. + Mostra i passaggi singoli. + Mostra tutti i passaggi singoli nel grafico. + Rotazione + L'orientazione dell'elemento nel circuito. + Specchio + Specchia il componente nel circuito. + Avvia il clock a tempo reale + Se abilitato, il clock a tempo reale è avviato quando il circuito è avviato + Mostra il grafico delle misurazioni durante l'avvio della simulazione. + Quando la simulazione si avvia, un grafico con i valori misurati viene mostrato. + Mostra il grafico della misurazione in modalità a passo singolo all'avvio della simulazione + Quando la simulazione si avvia, il grafico con i valori misurati nella modalità a passo + singolo viene mostrato. Tutti i cambiamenti delle porte sono inclusi nel grafico. + Mostra nel Grafico Misurazioni + Mostra il valore nel grafico delle misurazioni. + Mostra i valori di misurazione all'avvio della simulazione. + Quando la simulazione si avvia, una tabella con i valori misurati è mostrata. + Linee + Il numero di linee da mostrare. + Caratteri per Linea + Il numero di caratteri mostrato per una singola linea. + Usa come valore di misurazione + Se impostato, il valore è una misurazione e appare nel grafico e nella tabella dati. + In aggiunta, una etichetta deve essere specificata che serve per l'identificazione del valore. + Dati di Test + La descrizione del test case. + Dettagli della sintassi possono essere trovati nel dialogo di aiuto dell'editor dei dati di test. + Larghezza in pixel + La larghezza dello schermo in pixel. + Altezza in pixel + L'altezza dello schermo in pixel. + Memorial del Programma + Rende questa ROM una memoria del programma. In questo modo può essere programmata da un IDE esterno. + Rende questo registro un "program counter". Il valore di questo registro è restituito all'assemblatore + o IDE esterno per marcare la linea di codice corrente durante il debug. + Programmato + Se impostato, il diodo è impostato come "esploso" o "programmato". In un FET a floating gate, la floating + gate è caricata. Puoi cambiare questa impostazione con il tasto [P]. + Formato + Formato delle espressioni nello schermo. + Il relay è normalmente chiuso. + Se impostato il relay è chiuso se l'ingresso è basso. + Numero di poli + Numero dei poli disponibili. + Connessione Comune + Se selezionato, anche un ingresso catodo o anodo comune è simulato. + Comune + Tipologia di connessione comune. + Catodo + Anodo + Evita lo Sfarfallio + Non è possibile incrementare la frequenza così tanto da far sparire lo sfarfallio. Per sopprimerlo, un "afterglow" + può essere impostato come attivo per i LED con questa opzione. + Se abilitato, i LED rimangono accesi anche se uno dei pin cambia valore verso alta impedenza. + Questo simula una frequenza al di sopra della soglia di frequenza di fusione dello sfarfallio. + Percorso al fitter per il ATF15xx. + Inserisci la cartella che contiene il file fit15xx.exe fornito da Microchip (precedentemente ATMEL). + Numero del pin + Un campo vuoto significa che il segnale non è assegnato ad un pin. + Righe + Specifica il numero di righe tramite la specifica del numero di bit nella parola della riga. + Bit di indirizzo delle colonne + Indirizza le colonne individualmente. Tre bit significano otto colonne. + Modifica bloccata + Il circuito è bloccato. Si può configurare diodi e FGF-FET. + Numero del pin + Numero di questo pin. Usato per la rappresentazione di un circuito in un package DIL e per l'assegnazione + del pin durante la programmazione di un CPLD. + Se ci sono più bit, tutti i numeri di pin possono essere specificati in una lista separata da virgola. + Numero di pin DIL + Numero dei pin. Uno zero significa che il numero dei pin è determinato automaticamente. + La vista della gerarchia dei componenti è visibile all'avvio. + Se impostato, la vista della gerarchia dei componenti è visibile all'avvio. + Ingressi invertiti + Puoi selezionare gli ingressi che devono essere invertiti. + Dimensione del Font dei Menù [%] + Dimensione dei font utilizzati nel menù espressa in percentuale rispetto a quella predefinita. + Ingresso Enable + Se abilitato un ingresso enable (T) è disponibile. + Unidirezionale + I transistori unidirezionali propagano un segnale soltanto dal source al drain. Sono molto più veloci da + simulare piuttosto che quelli bidirezionali. Visto che non c'è nessun feedback da drain a source, in + questa modalità il transistore non fa corto circuito con i cavi connessi quando conduce. Quindi, questa modalità + è necessaria per simulare certi circuiti CMOS. + Attivo Basso + Se selezionato l'uscita è bassa se il componente è attivo. + Libreria + La cartella che contiene la libreria con dei circuiti predefiniti. + Contiene, per esempio, i componenti della serie 74xx. Puoi anche aggiungere i tuoi circuiti posizionandoli + in questa cartella. + Bisogna assicurarsi che tutti i nomi dei file e sottocartelle siano univoci. + Mostra la Griglia + Mostra una griglia nella finestra principale. + Suggerimenti sui Cavi. + Se impostato, le linee sono evidenziate quando il cursore passa sopra di esse. + Mappa a tastiera + Un bottone è mappato alla tastiera. Per usare i tasti del cursore, usa UP (Sù), DOWN (Giù), RIGHT (Destra) + e LEFT (Sinistra) come etichette. + Libreria Java + Un file JAR contenente componenti aggiuntivi implementati in Java. + Mostra il numero di cavi in un bus. + ATTENZIONE: Il valore è aggiornato solamente quando la simulazione viene avviata. + Numero dei Bit in Ingresso + Il numero dei bit in uscita deve essere più grande di quello in ingresso. + Numero di Bit in Uscita + Il numero dei bit in uscita deve essere più grande di quello in ingresso. + Dimensione del Font + Imposta la dimensione del font per questo testo. + Durata + Tempo di ritardo in unità del ritardo di propagazione di porta comune. + Uscita invertita + Se selezionato l'uscita è invertita. + Larghezza dell'Impulso + La larghezza dell'impulso è misurata in cicli di clock. + Configura lo spreading degli ingressi ed uscite nel circuito. + Contenuto delle ROM + Contenuto di tutte le ROM utilizzate + Applicazione + Definisce quale applicazione utilizzare. + Generica + Ingressi + Gli ingressi del processo esterno. + Questa è una lista di nomi di segnali separati da virgola. Per ogni nome, un numero di bit separato + da un due punti (:) può essere specificato. Gli ingressi di un sommatore ad 8 bit potrebbero essere quindi + specificati come "a:8,b:8,c_in". + Uscite + Le uscite del processo esterno. + Questa è una lista di nomi di segnali separati da virgola. Per ogni nome, un numero di bit separato + da un due punti (:) può essere specificato. Le uscite di un sommatore ad 8 bit potrebbero essere quindi + specificate come "s:8,c_out". + Codice del Programma + Il codice del programma da eseguire dall'applicazione esterna. + Codice del Programma + Il file contenente il codice del programma da eseguire dall'applicazione esterna. + Opzioni + Percorso all'eseguibile GHDL. Solamente necessario se si vuole usare GHDL per simulare i componenti + definiti con VHDL. + Opzioni GHDL + Opzioni che sono utilizzate per tutti i passi di processo da GHDL. + Opzioni IVerilog. + Opzioni che sono utilizzate per tutti i passi di processo da IVerilog. + Percorso all'eseguibile IVerilog. Solamente necessario se si vuole usare IVerilog per simulare i componenti + definiti con VHDL. + Valore Massimo + Se uno zero è inserito, il valore massimo è usato (tutti i bit ad uno). + Uscita Alta + Il valore d'uscita predefinito di un interruttore DIP quando la simulazione parte. + Utilizza il click del mouse di macOS. + Utilizza Ctrl+Click anziché il click destro. + Nessun suggerimento mostrato per i componenti nel pannello principale + Se impostato, nessun suggerimento è mostrato per i componenti nel pannello principale. + Specialmente in una presentazione, questi suggerimenti possono risultare noiosi. + Mostra il dialogo per rinominare automaticamente i tunnel. + Se impostato, una finestra di dialogo viene mostrata per rinominare automaticamente i tunnel con lo stesso nome + dopo aver rinominato un tunnel. + Percorso dell'eseguibile atmisp.exe. Se impostato, il software ATMISP può essere avviato automaticamente! + Figura Personalizzata + Importa un file SVG + Precarica la memoria contenente il programma all'avvio. + Quando si simula un processore che utilizza una RAM come la memoria per il programma, è difficile avviare iil + processore perché il contenuto della RAM è sempre inizializzato con zeri all'avvio della simulazione. + Questa impotazione consente il caricamento dei dati durante l'avvio. + La memoria va indicata come tale. + File del Programma + Il file che deve essere caricato nella memoria del programma all'avvio della simulazione. + Larghezza + Larghezza in unità di griglia + Altezza + Altezza in unità di griglia + Testo Contenuto + Testo contenuto all'interno del rettangolo. + Testo in basso + Testo in fondo al rettangolo. + Testo a destra + Testo a destra del rettangolo. + Figura Larga + Utilizza una figura più larga per visualizzare la porta. + Figura + La figura da utilizzare per la rappresentazione del circuito in un circuito che lo incorpora. + Nella modalità "semplice", gli ingressi sono rappresentati sulla sinista e le uscite sulla destra di un + semplice rettangolo. + Con la modalità "layout", la posizione degli ingressi e delle uscite e la loro orientazione nel circuito + determina il posizionamento dei pin. Qui è possibile avere pin in alto o in basso. + Quando si seleziona "chip DIL", un alloggiamento DIL è utilizzato per mostrare il circuito. I numeri dei pin + degli ingressi e delle uscite determina la posizione dei pin nel case. + Predefinita + Semplice + Chip DIL + Definita dall'Utente + Orientamento + Posizione delle coordinate relative al testo. + in basso a sinistra + in basso al centro + in basso a destra + a destra al centro + in alto a destra + in alto al centro + in alto a sinistra + a sinistra al centro + centrato + Canale MIDI + Seleziona il canale MIDI da usare. + Strumento MIDI + Seleziona lo strumento MIDI da usare. + Consenti la modifica del programma + Aggiunge un nuovo ingresso PC. Se questo ingresso è altoo, il valore all'ingresso N è utilizzare + per cambiare il programma (strumento). + Abilitato + Abilita o disabilita questo componente. + Configurazione della Toolchain + Utilizzato per configurare l'integrazione di una toolchain. Consente l'utilizzo di strumenti esterno, come per + esempio la programmazione di una FPGA. + Parametrizzazione Generica + Dichiarazioni utilizzate per rendere generico il circuito. + Il circuito è generico + Consente di creare un circuito generico + Mostra il tutorial all'avvio + Abilita il tutorial. + L'interruttore si comporta come un ingresso + Se il modello è analizzato, l'interruttore si comporta come un ingresso dove "aperto" corrisponde a zero e + "chiuso" corrisponde ad uno. + Impostazioni di esportazione SVG + Testo in notazione LaTeX + Il testo è inserito in notazione LaTeX. Inkscape è richiesto per ulteriore processamento. + Etichette dei pin in modalità matematica + Per le etichette dei pin, utilizza la modalità matematica anche se nessun indice è contenuto. + Nascondi i test case + I test case non sono esportati. + Figure vuote + Poligoni vuoti. + Ingressi ed uscite piccole + Gli ingressi e le uscite sono rappresentate da piccoli cerchietti. + Ometti Marcatore del Pin + I marcatori rossi e blu del pin nei simboli sono omessi. + Contrasto Elevato + I cavi e il testo dei pin sono visualizzati in nero- + Monocromo + Soltanto sfumature di grigio sono utilizzate. + Linee Sottili + Se impostato, le linee sono disegnate leggermente più sottile. + Usa il Tasto Uguale + Utilizza il tasto "Uguale" piuttosto che il tasto "Più". Questo è sempre utile se il segno più non è una + chiave primaria, ma la seconda assegnazione del carattere uguale come per esempio nelle tastiere francesi + ed americane. + Allinea alla Griglia + Se impostato, il componente è allineato alla griglia. + Separazione tra i Pin + Utilizzato dal tipo di forma della figura. Imposta la distanza rispetto al pin precedente. + Attivatore + Condizione di attivazione per la registrazione dei dati. + fronte di salita + fronte di discesa + entrambe i fronti + Modalità di Visualizzazione + Definisce se il valore o un contatore viene mostrato. + Mostra Valore + Conteggia i Fronti di Salita + Conteggia i Fronti di Discesa + Conteggia Entrambe i Fronti + Modalità Telnet + Se impostato, i comandi di controllo Telnet sono valutati. + In aggiunta, il server invia i comandi SGA e ECHO. Se questa opzione è disabilitata, + il server è un semplice server TCP. + Porta + La porta che viene aperta dal server. + Schema di colori + Normale + Scuro + Daltonismo Rosso/Verde + Definito dall'Utente + Colori Definiti dall'Utente + Sfondo + Principale + Cavi + Cavo con valore alto + Cavo con valore basso + Valore del cavo + Uscita + Cavo in alta impedenza + Errore + Pin + Griglia + Disabilitato + Asincrono + Evidenziato + Cavo inserito. + Inserisci dalla clipboard. + Valore "{0}" nel componente "{1}" modificato. + Attributi del componente "{0}" modificati. + Cavo eliminato. + Componente "{0}" spostato o ruotato. + Cavo spostato. + Selezione eliminata. + Componente "{0}" inserito. + Componente "{0}" eliminato. + Cavo inserito. + Selezione spostata. + Annulla: {0} + Rifai: {0} + Modificati gli attributi del circuito. + Misurazioni ordinate. + Modificati gli attributi dei componenti selezionati. + Divide un singolo cavo in due cavi. + Cambiamenti effettuati dalla simulazione avviata. + Logica + Aritmetica + Flip-Flop + Memoria + Plexer + Cavi + Interruttori + Schermi + Meccanici + Periferiche + Altro + di più + Decorazioni + Generici + Interfaccia a Linea di Comando + L''argomento obbligatorio {0} è mancante. + Il valore {0} non è un booleano. + Il valore {0} non è un numero. + L''argomento {0} non è definito. + Non ci sono abbastanza argomenti. + Ci sono troppi argomenti. + Tipo invalido. + Il comando {0} non ha nessun sottocomando {1}. + Opzioni: + Il primo nome di file specifica il circuito da testare. + Se un secondo nome di file è specificato, i test case sono eseguiti da questo file. + Se nessun secondo nome è specificato, i test case sono eseguiti dal primo file. + Nome del file da testare. + Nome di un file con i test case. + Consente la mancanza di ingressi nel circuito definiti nel test case. Questo può essere utile quando ci + sono più possibili soluzioni che possono dipendere da ingressi differenti. + Se impostato, la tabella dei valori viene visualizzata nel caso di un errore. + I test hanno fallito. + Un errore si è verificato durante l'esecuzione dei test. + Può essere utilizzato per creare un file SVG da un circuito. + Il nome del file che rappresenta il circuito. + Il nome del file SVG che verrà scritto. + Usa i simboli IEEE. + Errore durante la creazione del file SVG! + Crea un file SVG che contiene le statistiche del circuito. + Tutti i componenti sono elencati nel file CSV. + Nome del file del circuito. + Nome del file CSV da creare. Se questa opzione manca, la tabella è scritta nello standard output. + Errore durante la creazione dei file di statistica! + Finestre + Informazioni su + Analisi + Analizza il circuito corrente + Taglia + Copia + Copia nella clipboard + Personalizzato + Libreria + Elimina componenti + Elimina il componente singolo selezionato o il gruppo di componenti. + Modifica + Impostazioni specifiche del circuito + Le impostazioni specifiche del circuito hanno effetto sul comportamento del circuito aperto. + Per esempio, la figura che rappresenta il circuito quando è incorporato in altri circuiti. + Queste impostazioni sono memorizzate insieme al circuito. + Impostazioni + Le impostazioni globali del simulatore specificano, tra l'altro, la lingua, il formato dei simboli + da utilizzare e i percorsi per strumenti esterni. + Ferma la Simulazione + Ferma la simulazione e consente la modifica del circuito. + Componenti + Esporta + Esporta in formato PNG grande + Esporta in formato PNG piccolo + Esporta in formato SVG + Esporta in formato GIF animata + Esegui fino all'Interruzione + Esegue la logica del circuito fino a quando una interruzione viene identificata da un componente BRK. + Aiuto + Aggiorna + Aggiorna il menù dei componenti. + Adatta alla Finestra + Porta a Passo Singolo + Esegue il circuito in modalità porta a passo singolo + Nuovo + Crea un nuovo circuito vuoto. + Nuovo Circuito Incorporato + Apre una nuova finestra per creare un nuovo circuito incorporato, che può essere poi usato in questo circuito. + Apri + Apri Recente + Apre Recente in una Nuova Finestra + Apri in una Nuova Finestra + Apre un circuito in una nuova finestra + Ordina Ingressi + Ordina gli ingressi per l'uso in un circuito incorporato. + Ordina i valori di misurazione + Ordina i valori di misurazione nella vista grafica e nella tabella + Ordina Uscite + Ordina le uscite nell'uso di un circuito incorporato. + Incolla + Ruota + Simulazione + Avvia la Simulazione + Avvia la simulazione del circuito. + Salva + Salva Come + Salva Dati + Salva Dati come File CSV + Test di Velocità + Esegue un test di velocità calcolando la frequenza massima. + Avanza di un Passo + Calcola un singolo passo della porta + Esegui fino all'Interruzione in Modalità Passo Singolo + Esegue tutti i passi singoli della porta fino a quando un fronte di salita è individuato su un + componente di interruzione. Se non c'è tale componente, i passi rimanenti sono anch'essi eseguiti. + Sintesi + Genera le minime espressioni booleane descritte dalla tabella di verità. + Imposta la Scala + {0} variabili + Crea + Crea un file sorgente CUPL contenente la definizione del circuito. + Crea un file sorgente contenente la definizione del circuito in maniera simile al formato + Berkeley Logic Interchange Format (BLIF). Dopo questo, il fitter ATMEL è avviato per creare il file JEDEC. + Circuito + Crea un circuito che riproduce le tabelle di verità. + Circuito con Flip-Flop JK + Crea un circuito che riproduce le tabelle di verità. Utilizza i flip-flop JK. + Circuito con LUT + Crea un circuito che riproduce le tabelle di verità. Utilizza le tabelle di lookup per creare le espressioni. + Circuito con porte NAND + Circuito con porte NAND con due ingressi + Utilizza soltanto porte NAND con due ingressi. + Crea un circuito che riproduce le tabelle di verità utilizzando soltanto porte NAND. + Circuito con porte NOR + Circuito con porte NOR con due ingressi + Utilizza soltanto porte NOR con due ingressi. + Crea un circuito che riproduce le tabelle di verità utilizzando soltanto porte NOR. + Circuito con due porte di ingresso + Crea un circuito utilizzando soltanto porte con due ingresssi + Circuito con porte a tre ingressi + Crea un circuito utilizzando soltanto porte con tre ingressi + Dispositivo + Crea un file JEDEC per il dispositivo + Esporta LaTeX + Esporta in Testo Semplice + Esporta Test Case + Crea una descrizione del test case che può essere utilizzata in un test case. + Il test case è funzionale se e solo se il circuito è combinatorio. + Esadecimale + Puoi caricare il file esadecimale all'interno di una ROM o tabella di lookup. + Un file CSV contenente la tabella di verità completa. + CSV, Implicanti Primi + Un file CSV contenente soltanto gli implicanti primi. + Nuovo + Combinatorio + Sequenziale + Sequenziale Bidirezionale + Riordina/Elimina Variabili d'Ingresso + Riordina/Elimina Colonne d'Uscita + Aggiungi Colonna d'Uscita + Aggiunge una nuova colonna risultato alla tabella. + Aggiungi Variabile d'Ingresso + Aggiunge una nuova variabile d'ingresso alla tabella. + Imposta X a zero + Imposta i valori non importanti a zero. + Imposta X a uno + Imposta i valori non importanti a uno. + Crea espressioni J/K + Imposta tutto ad X + Imposta tutto a valore non importante. + Imposta tutto a zero + Imposta tutti i valori a zero. + Imposta tutto a uno + Imposta tutti i valori ad uno + Inverti tutti i bit + Un'uno diventa uno zero e viceversa. Il resto rimane uguale. + Mostra la finestra di dialogo dei risultati + Mostra la finestra di dialogo dei risultati se è stata chiusa manualmente. + Elimina + Elimina i contenuti del terminale. + Visualizza + Incrementa Zoom + Decrementa Zoom + Espressione + Crea un circuito da un'espressione. + Esegui Test + Esegue tutti i test case del circuito + Imposta gli Ingressi Predefiniti + Utilizza i valori correnti degli ingressi come valori predefiniti. + Resetta tutti i diodi e FGFET + Resetta tutti i diodi (fusibili) e FGFET allo stato "non programmato". La configurazione + corrente dei fusibili viene persa! + Programma Diodo + Componenti + Mostra una lista di tutti i componenti disponibili. + Visualizza Aiuto + Mostra la finestra di dialogo dell'aiuto che descrive il circuito corrente. + Memoria + Mostra i contenuti della memoria per il componente. + Incolla in una nuova finestra + I contenuti della clipboard sono incollati in una nuova finestra. + Vista Gerarchia Componenti + Mostra una vista gerarchica dei componenti disponibili nel lato sinistro. + Funzioni 74xx Speciali + Aggiungi Prefisso IO + Un prefisso è aggiunto a tutti gli ingressi e le uscite selezionate. + Viene utilizzato per simplificare il raddoppiamento dei circuiti all'interno di un circuito 74xx. + Rimuovi Prefisso IO + Il primo carattere dalle etichette degli ingressi ed uscite viene rimosso. + Viene utilizzato per simplificare il raddoppiamento dei circuiti all'interno di un circuito 74xx. + Procedura Guidata Pin + Una procedura guidata per applicare un numero ai pin degli ingressi ed uscite. + Rimuovi Numeri dei Pin + Rimuove tutti i numeri dei pin del circuito. + Annulla + Annulla l'ultima modifica. + Rifai + Riapplica l'ultima modifica annullata. + Mostra Grafico + Mostra i dati sotto forma di grafico. + Mostra Tabella + Mostra i dati sotto forma di tabella. + Aggiungi alimentazione + Aggiunge una alimentazione al circuito. + Esporta a VHDL + Esporta il circuito nel formato VHDL + Esporta a Verilog + Esporta il circuito nel formato Verilog + Mostra una mappa di Karnaugh della tabella! + Documentazione + Apri {0} + Mostra la tabella dei valori di misurazione + Mostra la tabella con i valori misurati in una finestra separata. + Mostra grafico delle misurazioni. + Mostra un grafico con i valori misurati in una finestra separata. + Esporta a file ZIP + Esporta il circuito sotto forma di file ZIP. + Il file ZIP contiene tutti i file necessari per l'operazione del circuito. + Etichetta Ingressi ed Uscite + Applica un'etichetta a tutti gli ingressi e le uscite che sono senza. + Avvia Tutorial + Avvia il tutorial per principianti. + Statistiche Circuito + Mostra una lista dei componenti utilizzati. + Numeri + Componenti + Ingressi + Bit + Bit di Indirizzo + Errore durante l'apertura del file PDF! + <h1>Digital</h1> + <p>Un semplice simulatore per circuiti digitali.</p> + <p>Scritto da H. Neemann nel 2016-2021.</p> + <p>Le icone sono prese dal <a href="http://tango.freedesktop.org">Tango Desktop Project</a>.</p> + <p>Visita il progetto su <a href="https://github.com/hneemann/[[name]]">GitHub</a>. + Su Github puoi anche <a href="https://github.com/hneemann/[[name]]/releases/latest">scaricare</a> + l'ultima versione.</p> + <p>Puoi anche inviare un <a href="https://github.com/hneemann/[[name]]/issues/new?body=version:%20[[version]]&labels=bug">problema</a> + o suggerire + un <a href="https://github.com/hneemann/[[name]]/issues/new?labels=enhancement">miglioramento</a>.</p> + {0} nodi + Errore durante l'analisi del circuito + Colore + Errore nel calcolo del passo + Errore nella creazione del circuito + Errore durante la semplificazione + Errore durante la creazione della configurazione dell'hardware. + Errore nella modifica di un valore dell'attributo. + Errore nell''importazione del circuito {0}! + Errore durante l'aggiornamento della libreria componenti! + Errore nella lettura del file + Comando {0} sconosciuto! + Errore nella scrittura del file + La frequenza massima è {0} kHz + Manca la figura {0} + Assegnazione Pin + Un riavvio è richiesto per applicare le modifiche! + Inserisci un'espressione: + Errore durante l'esecuzione dei test: + Risultato dei test + {0} passati + {0} falliti + (Troppi risultati!) + Tutti i test case sono stati eseguiti ma non tutti i risultati sono mostrati. + La valotazione dei test case è comunque corretta! + P: {0} / T: {1} + Errore nella creazione dell'aiuto! + La clipboard non contiene dati importabili! + Seleziona una cartella vuota! + Messaggio dal fitter esterno + Esecuzione del fitter esterno + Circuito Attuale + Il nome file selezionato non è importabile dal progetto corrente! + Il nome file non è unico! + Tutti i file nella cartella di lavoro e tutte le sotto cartelle devono avere nomi unici. Questo si applica anche + alle cartelle delle librerie. Se la tua cartella di lavoro ha un file 7400.dig, non puoi usare questo nome o il + file 7400.dig dalla libreria, perché questo nome file non può più essere assegnato univocamente. + Ci sono più file con lo stesso nome, che non possono essere assegnati univocamente! Quelli coinvolti sono: + ed altri {0}. + Il file non è ancora stato importato. + Il file {0} esiste già. Vuoi sovrascriverlo? + La modifica del circuito è disabilitata. Puoi togliere il blocco a "{0} -> {1} -> {2}". La copia dei componenti + e la configurazione dei diodi e FGFET con il tasto [p] è possibile anche in modalità di modifica bloccata. + Errore durante il test di velocità. + Procedura Guidata di Numerazione + Seleziona il pin {0}: + Frame scritti: {0} + Errore durante la scrittura del file GIF! + Pronta + Il file GIF è stato finalizzato e chiuso. + Esportazione GIF + causato da + Ingressi da invertire + nessuno + Impossibile determinare i nomi dei pin. + Verificatosi nel file {0}. + Quelli coinvolti sono: {0}. + Segnale {0} + Nessun numero di pin è stato assegnato ai pin {0}! + I pin liberi vengono automaticamente assegnati. Il circuito non può quindi essere usato su hardware reale nella + maggior parte dei casi! + Puoi esportare soltanto un circuito senza errori! + Nessuna mappa KV disponibile! + I dati non saranno più aggiornati! + Modifica questo Valore + Uno dei campi contiene un valore invalido! + Creazione del file CHN. + La tabella è molto grande; l'esportazione potrebbe richiedere un po' di tempo. Procedere con l'esportazione? + Per creare una descrizione dell'hardware, un circuito deve prima essere creato ed analizzato. + Una tabella di verità individuale non può essere utilizzata per generare una descrizione dell'hardware. + nessun dato + Impossibile chiudere il processo esterno! + Risultato della Verifica: + Verifica + Avvia l'applicazione per verificare che il codice inserito sia corretto. Se il codice non è corretto, il messaggio + di errore dall'applicazione esterna viene visualizzato. Se possibile, le definizioni degli ingressi ed uscite + sono anch'esse adattate al codice corrente. + Le definizioni degli ingressi ed uscite non possono essere create automaticamente. + Per favore, controlla le impostazioni! + File eseguibile "{0}" non trovato! + Inserisci il Testo! + Avvia ATMISP + Avvia il programma esterno ATMISP. Questo deve essere stato precedentemente installato. + Errore durante l'avvio di ATMISP! + Il percorso corretto al file eseguibile atmisp.exe è stato specificato nelle impostazioni? + ATMISP è ancora in esecuzione! + Quando questa finestra di dialogo viene chiusa, ATMISP verrà terminato! + Assicurati che il processo di flash sia completo prima di chiudere questa finestra! + Avvia Tutti i Test + Esegue tutti i test nella cartella corrente. + {0} righe di test passate + File Testati + Tabella di Verità + Valori Separati da Virgola, CSV + Errore durante l'importazione del file SVG. + Errore nella creazione del template SVG. + Le statistiche non sono state create. + Crea Test Case per Dispositivo Comportamentale + Crea una fixture comportamentale dal circuito. + Una fixture comportamentale è un test case che risolve il comportamento corrente. + Fixture: {0} + Crea Fixture + Crea una nuova fixture nel test case. + Completa + Crea il componente di test case + Errore nella creazione del test case. + Errore durante la lettura della configurazione della toolchain {0}. + Il comando "{0}" è stato avviato! Il processo potrebbe richiedere un po'' di tempo! + Il comando "{0}" ha finito! + Rinomina Rete + Ci sono {0} altri tunnel con il nome di rete "{1}". Vuoi rinominare tutti {0} a "{2}"? + Vuoi veramente scartare le modifiche nel campo "{0}"? + Copia il testo nella clipboard. + Esportabile su VHDL/Verilog. + Errore nell'impostazione della riga del test case. + Interrompi dopo {0} mezzi cicli nel punto di interruzione "{1}". + Elimina l'elemento selezionato + Muove l'elemento in basso + Muove l'elemento in alto + Tutte le possibili soluzioni + Dati di test {0} + Dati + Conferma l'uscita! + Misurazioni + Misurazioni a passo di clock completo + Misurazione a passo di porta singolo + Salvare le Modifiche? + Stato Cambiato! + Tabella + Esporta + Seleziona + Ingresso {0} + Mappa di Karnaugh + ROM Incluse + Aiuto + Nome da utilizzare nei circuiti generici: {0} + Crea Circuito Concreto + Crea + Crea un circuit concreto da questo generico utilizzando i parametri specificati nell'elemento. + Errore durante la creazione del circuito concreto! + Contenuto ROM Centrale + <html> + <h3>Motivazione</h3> + Quando un circuito contenente un componente ROM viene incorporato più volte, i contenuti della ROM + sono normalmente utilizzati per ogni istanza del circuito. Sotto alcune circostanze però, + potrebbe essere desiderabile per tale circuito essere incorporato più volte ma utilizzare contenuti della + ROM differenti per ogni istanza. + Questo problema si verifica quando per esempio una ROM 74xx viene utilizzata più volte con differenti + valori di memoria.<br/> + <h3>Funzione</h3> + A questa locazione pertanto, i contenuti della memoria possono essere definiti per tutte le ROM nel circuito. + Quando il modello di simulazione viene generato, ogni ROM è inizializzata con i contenuti memorizzati + direttamente nelle rispettive memorie. Viene poi verificato se un contenuto alternativo è stato definito. Se + è il caso, il contenuto definito qua viene caricato nella ROM rispettiva. + <h3>Utilizzo</h3> + Si noti che ogni ROM richiede un nome univoco per essere identificata. + Per fare ciò, l'asterisco ("*") può essere utilizzato come nome. L'asterisco è successivamente sostituito con + il percorso completo costruito dai nomi dei circuiti incorporati. + Se il circuito contiene soltanto una ROM, allora è sufficente utilizzare l'asterisco come una etichetta. + Tutti i circuiti incorporati devono essere nominati per far sì che un nome univoco possa essere generato + automaticamente per ogni ROM. + </html> + <html> + <h1>Nuova versione {0} disponibile</h1> + <p>C''è una nuova versione del simulatore disponibile.</p> + <p>Nelle <a href="https://github.com/hneemann/[[name]]/releases/latest">note di rilascio</a> + puoi trovare i cambiamenti ed i miglioramenti.</p> + <p>Qui puoi <a href="https://github.com/hneemann/[[name]]/releases/latest">scaricare</a> la nuova versione.</p> + </html> + Espressioni + <p>Per definire un'espressione puoi utilizzare tutte le notazioni più comuni:</p> + <p> + AND: "&", "&&", "*", "∧"<br/> + OR: "|", "||", "+", "∨", "#"<br/> + XOR: "^", "⊻"<br/> + NOT: "!", "~", "¬" + </p> + <p>Come al solito, una AND precede OR e XOR.</p> + <p>Espressioni multiple possono essere separate con "," o ";". + Se vuoi dare un nome alle espressioni, puoi usare il comento let: "let U=A+B, let V=A*B".</p> + Test Vector + <html> + <head><style>pre { background-color: #E0E0E0;}</style></head> + <body> +<h3>Generale</h3> +<p>La prima linea deve contenere i nomi degli ingressi ed uscite. +Le linee successive devono contenere i valori che ci si aspetta. +Una "X" rappresenta un valore qualsiasi, una "Z" rappresenta un valore di alta impedenza. +Se una "C" è utilizzata, all'inizio tutti gli altri valori vengono impostati, dopodiché un ciclo di clock viene +eseguito e i valori sono comparati. Così è più facile verificare la logica sequenziale. +Una linea che inizia con un cancelletto ("#") è un commento.</p> + +<p>Un test per un contatore a due bit potrebbe essere scritto così:</p> + +<pre> +C Q1 Q0 +0 0 0 +C 0 1 +C 1 0 +C 1 1 +C 0 0 +</pre> + +<p>I test sono eseguiti da Esegui->Esegui Test.</p> +<p> +Per rendere più semplice la creazione di questi test vector, c'è una dichiarazione "repeat([n])": +Se una linea inizia con quello, [n] linee di test sono generate. La variabile "n" può essere usata per generare i dati +di test. Con "repeat(16)", 16 linee verranno create, con n che va da 0 a 15. Se ci sono ingressi a più bit e questi devono +essere impostati insieme ad un valore binario, si può usare la dichiarazione "bits([bits], [value])". Questo crea [bits] bit +con il valore [value].</p> + +<p>Il seguente è un esempio con un sommatore a 4 bit:</p> + +<pre> + C_i-1 A_3 A_2 A_1 A_0 B_3 B_2 B_1 B_0 C_i S_3 S_2 S_1 S_0 +repeat(256) 0 bits(4,n>>4) bits(4,n) bits(5,(n>>4)+(n&15)) +repeat(256) 1 bits(4,n>>4) bits(4,n) bits(5,(n>>4)+(n&15)+1) +</pre> + +<p> +I segnali di ingresso sono il carry (C_i-1) e gli otto bit A_3-A_0 e B_3-B_0. +I quattro bit di ingresso sono generati con l'istruzione "bits". Il risutato (C_i, S_3-S_0) è anch'esso +generato dall'istruzione "bits". +Questo si verifica una volta quando C_i-1=0 e nella linea successiva con C_i-1=1. +In questo modo, 512 linee di test vengono generate che coprono tutte le possibili configurazioni di ingresso.</p> +<p> +Se più linee devono venir ripetute, o se cicli annidati sono richiesti, la dichiarazione "loop" può essere utilizzata. +L'esempio soprastante può infatti essere realizzato come segue:</p> + +<pre> + C_i-1 A_3 A_2 A_1 A_0 B_3 B_2 B_1 B_0 C_i S_3 S_2 S_1 S_0 +loop(a,16) + loop(b,16) + 0 bits(4,a) bits(4,b) bits(5,a+b) + 1 bits(4,a) bits(4,b) bits(5,a+b+1) + end loop +end loop +</pre> + +<p> +In alcune circostanze potrebbe essere necessario reagire allo stato iniziale del +circuito. Quindi i segnali forniti nel circuito possono essere utilizzati all'interno +del test case. Per esempio, se un contatore che parte in uno stato indefinito deve +essere testato, può essere impostato ad un valore definito dopo il clock:</p> + +<pre>C Q_3 Q_2 Q_1 Q_0 + +# contatore clock a 1111 +while(!(Q_3 & Q_2 & Q_1 & Q_0)) +C x x x x +end while + +# inizio dell'esecuzione del test +repeat(16) C bits(4,n) +</pre> + +<p> +Può essere utile generare numeri casuali nei test case. +Questi possono essere creati con la funzione "random([n])". Il numero generato è +compreso tra zero e [n]-1. Considerando un moltiplicatore a 16 bit come esempio, +un test completo non può essere generato visto che ci sono 2^32 combinazioni di +ingressi. IN questo caso un test di regressione può moltiplicare 10000 numeri casuali:</p> + +<pre> + A B Y +loop(i,100000) + let a = random(1&lt;&lt;16); + let b = random(1&lt;&lt;16); + (a) (b) (a*b) +end loop +</pre> + +<p> +Un ingresso che consente valori ad alta impedenza può anche essere usato come risultato del test. +In questo caso, il nome del segnale deve essere scritto con "_out" alla fine per la lettura e verifica del valore attuale. +Per questa cosa, l'ingresso corrispondente deve essere impostato al valore di alta impedenza ("Z").</p> + +<pre>OE CLK D D_out +0 0 0 0 +0 C 1 1 +1 0 z 1 +0 C 0 0 +1 0 z 0 +</pre> + +<p> +Il circuito per questo test ha soltanto un ingresso "D", ma esso può essere impostato in alta impedenza. +Quindi, il segnale "D_out" è anche disponibile per controllare il valore in questo caso.</p> + +<p> +In situazioni particolare, potrebbe essere desiderabile utilizzare dei segnali che sono forniti dal circuito +per derivare un nuovo segnale, che è poi testato. Un esempio potrebbe essere un segnale del bus con più bit, dove +solo un singolo bit deve essere testato e non tutti quanti. In questo caso, un nuovo segnale può essere generato nel test +stesso, che contiene questo singolo bit.</p> +<p>Questo è fatto con la dichiarazione "declare":</p> +<pre>A B Bit + +declare Bit = (Bus>>3)&1; + +0 0 0 +0 1 0 +1 0 1 +1 1 0 +</pre> +<p>In questo esempio, il terzo bit è isolato dal segnale "Bus" e reso disponibile come segnale "Bit" per il test. Il +circuito stesso non contiene un'uscita "Bit".</p> +<h3>Funzioni</h3> +<p>Le funzioni disponibili sono: +<dl> +<dt>signExt([bits],[value])</dt> +<dd>Estende il valore [value] preservando il segno a [bits] bit.</dd> +<dt>random([max])</dt> +<dd>Restituisce un numero intero casuale. Il valore massimo è specificato con [max].</dd> +<dt>ite([cond],[then],[else])</dt> +<dd>Se la condizione [cond] è vera, il valore [then] è restituito, altrimenti [else].</dd> +</dl> +</p> + +<h3>Processori</h3> +<p> +Se i processori devono essere testati, una inizializzazione del processore è di solito richiesta. +Si può effettuare questa inizializzazione all'interno del test case. +In questo modo, più test possono trovarsi in un circuito ed ogni test utilizza la sua inizializzazione. +Ci sono tre istruzioni per effettuare questa inizializzazione:</p> +<ul> +<li> +La dichiarazione "program" può essere usata per sovrascrivere la memoria del programma del processore. +L'istruzione <pre>program(0x8000,0x2d11,0x8000,0x2f21)</pre> scrive quattro parole di bit all'inizio della memoria +del programma. Tutte le altre sono impostate a zero.</li>. +<li> +L'istruzione "memory" può essere utilizzata per scrivere in un componente RAM: +<pre>memory mem(3)=7;</pre> +Questo esempio scrive 7 bit nella memoria con etichetta "mem" all'indirizzo 3.</li> +<li> +Un registro con nome può essere sovrascritto con l'istruzione "init". +<pre>init R0=22;</pre> +Questa istruzione sovrascrive iil valore del registro con etichetta "R0" col valore 22.</li> +</ul> +<p> +Si noti che tutte le inizializzazioni sono applicate una volta prima dell'esecuzione del test. Non importa in che riga +del test case queste dichiarazioni si trovano. +Comunque, non devono trovarsi sopra la riga di intestazione che elenca i nomi dei segnali.</p>. +</body></html> + Macchina a Stati Finiti + Nessun movimento + Transizioni + Transizioni e Stati + insieme {0} + Macchina a Stati Finiti + Apre una finestra di dialogo per modificare una macchina a stati finiti. + Crea + Tabella delle Transizioni degli Stati + Crea un Contatore + {0} Stati + Aiuto per l'operazione dell'editor delle macchine a stati finiti. + Numero dello Stato + Il numero che rappresenta questo stato. + Stato Iniziale + Se impostato, questo stato diventerà quello di partenza. + Uscite + Definisce i valori di uscita. + Con assegnazioni semplici come "A=1, B=0" le uscite possono essere impostate. + Con istruzioni come "A=101", uscite a bit multipli possono essere create. + Le uscite che non sono definite qua avranno un valore a zero. + Per le transizioni, le uscite non specificate rimangono invariate. + Condizione + Un'espressione booleana + Raggio + Raggio del cerchio nel diagramma + La macchina a stati finiti non è deterministica: {0} + Numero di stato {0} utilizzato due volte. + Non c'è nessuno stato iniziale (stato con numero zero). + Stato "{0}" non trovato! + Assegnazione errata per l''uscita ("{0}")! + Errore nella condizione "{0}"! + Errore nel caricamento di un file! + Errore nella memorizzazione di un file! + Transizione + Stato + Nuovo Stato + Impossibile creare la tabella della transizione di stati. + Aiuto dell'Editor FSM + Ottimizzatore FSM + Ottimizza il Numero di Stati + Ottimizza il numero di stati così che una implementazione abbia il numero minimo di lavoro da effettuare. + L'esecuzione aumenta molto velocemente con l'aumentare della complessità della macchina (O(n!)). + Errore durante l'ottimizzazione! + Complessità iniziale: + Miglior risultato fino ad ora: + <html><head></head> +<body> + <h3>Operazioni col Mouse:</h3> + <dl> + <dt>Crea uno stato:</dt> + <dd>Clicca con il tasto destro su un'area libera.</dd> + <dt>Creazione di una transizione:</dt> + <dd>Premi il tasto destro sull'inizio dello stato e trascinamento verso lo stato di destinazione.</dd> + <dt>Eliminazione di uno stato o transizione:</dt> + <dd>Sposta il mouse sull'oggetto e premi il tasto [Del].</dd> + <dt>Spostare una transizione o stato:</dt> + <dd>Premi il tasto sinistro sull'oggetto e trascina.</dd> + <dt>Editing a state or a transition:</dt> + <dd>Clicca con il tasto destro su una transizione o stato.</dd> + </dl> + <h3>Funzione di Posizionamento Assistito</h3> + <dl> + <dt>Nessun movimento:</dt> + <dd>La funzione di posizionamento assistito è disabilitata.</dd> + <dt>Transizioni:</dt> + <dd>La funzione sposta le frecce di transizione per evitare sovrapposizioni.</dd> + <dt>Transizioni e Stati:</dt> + <dd>La funzione sposta le frecce di transizione per evitare sovrapposizioni ed anche gli stati per creare un grafo + bilanciato.</dl> + <h3>Interpretazione delle Transizioni:</h3> + Per semplificare la generazione di un automa deterministico, transizioni senza condizioni sono trattate in un modo + speciale: una transizione senza condizione è eseguita soltanto se nessun'altra transizione soddisfa la condizione + della transizione. + Quindi ci può essere sia una transizione con che senza condizione che partono dallo stesso stato. + Una transizione senza condizione determina quindi in che stato la macchina a stati verrà messa se nessun'altra + condizione di transizione viene raggiunta. + Se non ci sono transizioni senza condizione da uno stato, la macchina a stati starà in quello stato fino a quando + una condizione viene verificata. +</body></html> + Il grafico delle misurazioni + <html><body> + <h3>Cosa può essere mostrato nel grafico?</h3> + Al contrario di un vero analizzatore di logica, l'asse X delle misurazioni non mostra il tempo. + Invece, un contatore è visualizzato che conteggia i cambiamenti di stato nel circuito. + Quando c'è un cambiamento nello stato, il contanto viene incrementato e il nuovo stato visualizzato. + Puoi anche pensarla come un analizzatore di logica classico, dove non vengono salvati dati per + l'ottimizzazione se nulla è cambiato nel circuito. + Comunque, questo significa anche ch enon è possibile leggere dal grafico fino a quando troppo o troppo poco + tempo è passato tra due cambiamenti nel circuito.<br/> + Questo comportamento è causato dalla natura della simulazione: la simulazione del circuito non conosce + il concetto di tempo. Un cambiamento è applicato sul circuito, il nuovo stato del circuito viene calcolato + e così via. Questi cambiamenti sono conteggiati e il valore del contatore è mostrato nell'asse X del grafico.<br/> + Tra l'altro, questo significa anche che su un circuito non può essere fatto overclocking, perché gli effetti del + fronte di discesa del clock non sono calcolati fino a quando il circuito si è stabilizzato dopo il precedente + fronte di salita. + </body></html> + In questo breve tutorial capirai come creare il tuo primo circuito: + + Prima, inserisci un ingresso nel circuito. Troverai l'ingresso nel menù Componenti▸IO. + Ora aggiungi un secondo ingresso al circuito. Puoi anche cliccare sull'ingresso dalla barra degli strumenti. + + Si ritiene che sia ottimale piazzare il secondo ingresso leggermente sotto il primo. + Puoi spostare il circuito tenendo premuto il tasto destro del mouse. + Cliccando sui componenti potrai spostarli. + Ora, una porta "XOR" deve essere inserita. + Puoi trovare questa porta sotto il menù Componenti▸Logica. + Posiziona questo componente con un po' di distanza dalla destra degli ingressi. + L'ultimo componente da inserire è un'uscita. + Posiziona questo componente con un po' di distanza rispetto alla destra della porta XOR. + Per completare il circuito, i cavi di connessione devono essere disegnati. + + Clicca sul punto rosso nel primo ingresso e connettilo all'ingresso della porta XOR, + cliccando sul punto blu della stessa porta XOR. + Non trascinare con il bottone del mouse premuto! + Connetti il punto rosso del secondo ingresso al secondo punto blu della porta XOR e l'uscita con punto + rosso della porta XOR all'uscita con punto blu. + Il tuo primo circuito è ora funzionale. + Per avviare la simulazione, puoi cliccare sul pulsante Avvia nella barra degli strumenti. + Se sposti il cursore sopra la barra, i suggerimenti ti verranno mostrati. + La simulazione è ora attiva. Inverti gli ingressi cliccando sopra di essi. + Per fermare la simulazione, clicca nel pulsante Interrompi nella barra degli strumenti. + Per completezza, gli ingressi e le uscite dovrebbero essere etichettate. + + Fai click destro su un ingresso per aprire la finestra di dialogo. Su macOS, Control-click viene usato. + Qui l'ingresso può essere nominato. + Etichetta tutti gli ingressi ed uscite. + Gli ingressi e le uscite devono sempre essere nominati univocamente. + Salta il tutorial + diff --git a/src/main/resources/lang/lang_it_ref.xml b/src/main/resources/lang/lang_it_ref.xml index 30a688c69..6eab82852 100644 --- a/src/main/resources/lang/lang_it_ref.xml +++ b/src/main/resources/lang/lang_it_ref.xml @@ -1,2 +1,2130 @@ - + Address + Table of Contents + General + Revision + Date + The following describes the available settings of the simulator. + maximum + Attributes + Open Circuit + Included circuit: + Opens the circuit in a new window. + Help + Shows a short description of this element. + Basic + Advanced + Discard Changes + Edit + Continue editing + Load + Save + Create + Create a circuit in a separate window + Edit detached + Opens the dialog as a non modal dialog + Opens help text in the browser. Allows to print the text. + Clear + All values are set to zero! + Transitions + All possible transitions are added as test cases. Is used to create test cases to test the simulator itself. + New Name + Save anyway + Overwrite + Apply + Edits the content of the selected ROM/EEPROM + Removes the stored data for the selected ROM. The content which is stored in the ROM directly is used instead. + Creates an SVG template which can then be edited with Inkscape. + Import + Import an SVG file. To create a suitable SVG file, it is easiest to first create + a SVG template and then edit it. + Warning + Cancel + Expression + Inputs + Outputs + Attributes + search + Error at pasting data! + The {0}. input value for the logic operation. + Returns the result of the logic operation. + Binary AND gate. Returns high only if all inputs are also set high. + It is also possible to use buses with several bits as inputs and output. In this case, a bitwise AND is executed. + This means that the lowest bits of all inputs are connected with AND and is output as the lowest bit at the output. + The same happens with bit 1, bit 2 and so on. + A combination of AND and NOT. + Returns 0 only if all inputs are set to 1. If one of the inputs is set to 0 the output is set to 1. + It is also possible to use buses with several bits per input. In this case, the operation is applied to each + bit of the inputs. + Binary OR gate. Returns a 1 if one of the inputs is set to 1. + If all inputs are set to 0 the output is also set to 0. + It is also possible to use buses with several bits as inputs and output. In this case, a bitwise OR is executed. + This means that the lowest bits of all inputs are connected with OR and is output as the lowest bit at the output. + The same happens with bit 1, bit 2 and so on. + A combination of OR and NOT. + Returns a 0 if one of the inputs is set to 1. If all inputs are set to 0 the output is also set to 1. + It is also possible to use buses with several bits per input. In this case, the operation is applied to each + bit of the inputs. + If two inputs are used, the output is 0 if both input bits are equal. + Otherwise the output in set to 1. + If more than two inputs are used, it behaves like cascaded XOR gates ( A XOR B XOR C = (A XOR B) XOR C ). + It is also possible to use buses with several bits per input. In this case, the operation is applied to each + bit of the inputs. + A combination of XOR and NOT. The inputs are combined with the XOR operation. + The result of this operation is then inverted. + It is also possible to use buses with several bits per input. In this case, the operation is applied to each + bit of the inputs. + Inverts the input value. A 1 becomes a 0 and a 0 becomes 1. + It is also possible to use a bus with several bits per input. In this case, the operation is applied to each + bit of the inputs. + The input of the NOT gate. + The inverted input value. + Lookup Table + Gets the output value from a stored table. + So this gate can emulate every combinatorial gate. + Input {0}. This input in combination with all other inputs defines the + address of the stored value to be returned. + Returns the stored value at the address set via the inputs. + Delay + Delays the signal by one propagation delay time. + Delays a signal for an adjustable number of gate delays. + All other components in Digital have a gate delay of one propagation delay time. + This component can be used to realize any necessary propagation delay. + Input of the signal to be delayed. + The input signal delayed by one gate delay time. + Output + Can be used to display an output signal in a circuit. + This element is also used to connect a circuit to an embedding circuit. + In this case the connection is bidirectional. + Is also used to assign a pin number, if the code for a CPLD or FPGA is generated. + This value is used for the output connection. + A LED can be used to visualize an output value. Accepts a single bit. + Lights up if the input is set to 1. + LED Input. LED lights up if the input is set to 1. + RGB-LED + An RGB LED whose color can be controlled via three inputs. + At each of the three inputs, a color channel is connected. + The red color channel. + The green color channel. + The blue color channel. + Input + Can be used to interactively manipulate an input signal in a circuit with the + mouse. This element is also used to connect a circuit to an embedding circuit. + In this case the connection is bidirectional. + Is also used to assign an pin number, if code for a CPLD or FPGA is generated. + Gives the value which is connected to this input. + DIP Switch + Simple DIP switch that can output either high or low. + The output value of the switch. + Clock Input + A clock signal. It's possible to control it by a real-time clock. + Depending on the complexity of the circuit, the clock frequency achieved may be less than the selected value. + If the frequency is greater than 50Hz, the graphic representation of the circuit will no longer be updated at + every clock cycle so that the wire colors will no longer be updated. + If the real-time clock is not activated, the clock can be controlled by mouse clicks. + Is also used to assign an pin number, if code for a CPLD or FPGA is generated. + Switches between 0 and 1 with the selected clock frequency. + Button + A simple push button which goes back to its original state when it is released. + The output signal of the button. + Button with LED + A simple push button which goes back to its original state when it is released. + The push button has an LED which can be switched via an input signal. + The output signal of the button. + Input for controlling the LED. + Text + Shows a text in the circuit. + Does not affect the simulation. + The text can be changed in the attribute dialog. + Rectangle + Shows a rectangle in the circuit. + Does not affect the simulation. If a minus sign is used as the heading, the heading is omitted. + Probe + A measurement value which can be shown in the data graph or measurement table. + This component can be used to easily observe values from embedded circuits. + Does not affect the simulation. + The measurement value. + Light Bulb + Light bulb with two connections. If a current flows, the bulb lights up! + The direction of the current does not matter. The lamp lights when the inputs have different values. + The bulb behaves similar to an XOr gate. + Connection + Connection + LED with two connections. + LED with connections for the cathode and the anode. The LED lights up + if the anode is connected to high and the cathode is connected to low. + This LED cannot be used as a pull-down resistor. It acts solely as a display element. + The shown resistor is only meant to symbolize the required series resistor to limit the current. + The anode connection of the LED. + The cathode connection of the LED. + Seven-Segment Display + Seven Segment Display, every segment has its own control input. + This input controls the upper, horizontal line. + This input controls the upper, right, vertical line. + This input controls the lower, right, vertical line. + This input controls the lower horizontal line. + This input controls the lower, left, vertical line. + This input controls the upper, left, vertical line. + This input controls the middle, horizontal line. + This input controls the decimal point. + Common cathode. To turn on the LEDs, this input needs to be low. + Common anode. To turn on the LEDs, this input needs to be high. + Seven-Segment Hex Display + Seven Segment Display with a 4 bit hex input + The value at this input is visualized at the display. + This input controls the decimal point. + 16-Segment Display + The LED input has 16 bits which control the segments. The second input controls the decimal point. + 16-bit bus for driving the LEDs. + This input controls the decimal point. + LED-Matrix + A matrix of LEDs. The LEDs are shown in a separate window. + The LEDs of a column of the display are controlled by a data word. At another input, the current column is + selected. So a multiplexed display is realized. + The LEDs are able to light up indefinitely in the simulation to prevent the display from flickering. + The row state of the LEDs of a column. + Each bit in this data word represents the state of a row of the current column. + The number of the current column whose state is currently visible at the other input. + Data Graph + Shows a data plot inside of the circuit panel. + You can plot complete clock cycles or single gate changes. + Does not affect the simulation. + Triggered Data Graph + Scope + Shows a graph of measured values, whereby measured values are only stored if + the input signal changes. Storing takes place when the circuit has stabilized. + The trigger does not start the measurement like in a real scope, but each trigger event stores a single + measurement value for each of the shown signals. + As direct input there is only the trigger. The inputs and outputs of the circuit, flip-flops and registers and the + probe component can be used as signals. This can be activated in the respective components. + A change at this input causes measured values to be stored. + Rotary Encoder + Rotary knob with rotary encoder. Used to detect rotational movements. + encoder signal A + encoder signal B + Keyboard + A keyboard that can be used to enter text. + This component buffers the input, which can then be read out. + A separate window is opened for the text input. + Clock. A rising edge removes the oldest character from the buffer. + If high, the output D is active and one character is output. + It also enables the clock input. + The last typed character, or zero if no character is available. + Output is the 16 bit Java char value. + This output indicates that characters are available. + It can be used to trigger an interrupt. + Terminal + You can write ASCII characters to this terminal. + The terminal opens its own window to visualize the output. + Clock. A rising edge writes the value at the input to the terminal window. + The data to write to the terminal + A high at this input enables the clock input. + Telnet + Allows a Telnet connection to the circuit. + It is possible to receive and send characters via Telnet. + Data output + Outputs a one if data is present. + The data to be sent. + Clock input + If set, the input data byte is sent. + If set, a received byte is output. + VGA Monitor + VGA + Analyzes the incoming video signals and displays the corresponding graphic. + Since the simulation cannot run in real time, the pixel clock is required in addition to the video signals. + The red color component + The green color component + The blue color component + The horizontal synchronization signal + The vertical synchronization signal + The pixel clock + Uses the MIDI system to play notes. + Note + Volume + If set, this translates to pressing a keyboard key (key down event), + if not set, this translates to releasing the key (key up event). + Enables the component + If high, the value at N is used to change the program (instrument). + Stepper Motor, unipolar + Unipolar stepper motor with two limit position switches. + Full step drive, half step drive and wave drive are supported. + Limit position switch 0, becomes 1 when the motor angle is 0°. + Limit position switch 1, becomes 1 when the motor angle is 180°. + Phase 0 + Phase 1 + Phase 2 + Phase 3 + Common center coil connection + Stepper Motor, bipolar + Bipolar stepper motor with two limit position switches. + Full step drive, half step drive and wave drive are supported. + Limit position switch 0, becomes 1 when the motor angle is 0°. + Limit position switch 1, becomes 1 when the motor angle is 180°. + Coil A, positive + Coil A, negative + Coil B, positive + Coil B, negative + Ground + A connection to ground. Output is always zero. + Output always returns 0. + Supply voltage + A connection to the supply voltage. Output is always one. + This output always returns 1. + Not Connected + This component can be used to set a wire to High-Z. + If an input of a logical gate is set to high-Z, the read value is undefined. + Note that in reality in many cases excessive current consumption and even damage can + occur if a digital input is not set to high or low but remains unconnected. + This output always outputs High-Z. + The NotConnected symbol is not allowed here! + Constant value + A component which returns a given value as a simple constant value. The value can be set in the attribute dialog. + Returns the given value as a constant. + Connects components without a wire. All tunnel elements, which have the same net name, + are connected together. Works only locally, so it is not possible to connect different circuits. + Unnamed tunnels are ignored silently. + The connection to the tunnel. + Splits or creates a wire bundle or a data bus with more than one bit. + With a bus it is e.g. possible to generate 16-bit connections without having to route 16 individual wires. + All 16 connections can be merged into one wire. + The splitter has a direction, meaning it can only transmit signals in one direction. + The input bits {0}. + The input bit {0}. + The output bits {0}. + The output bit {0}. + Bidirectional Splitter + Can be used for data buses and simplifies especially the construction of + memory modules in a DIL package, as the implementation of the data bus is simplified. + When set, the value at the common data terminal D is output to the bit + outputs D[i], if not, the bits D[i] are output to the common output D. + The common data connection. + The data bit {0} of the bus splitter. + Pull-Up Resistor + A "weak high". + If a net is in a HighZ state, this resistor pulls the net to high. + In any other case this component has no effect. + Pull-Down Resistor + A "weak low". + If the net is in a HighZ state, this resistor pulls the net to ground. + In any other case this component has no effect. + A driver can be used to connect a signal value to another wire. + The driver is controlled by the sel input. + If the sel input is low, the output is in high z state. + If the sel input is high, the output is set to the input value. + The input value of the driver. + If the sel input is 1 the input is given to this output. + If the sel input is 0, this output is in high z state. + Pin to control the driver. + If its value is 1 the input is set to the output. + If the value is 0, the output is in high z state. + Driver, inverted select + A driver can be used to connect a data word to another line. + The driver is controlled by the sel input. + If the sel input is high, the output is in high z state. + If the sel input is low, the output is set to the input value. + The input value of the driver. + Pin to control the driver. + If its value is 0 the input is given to the output. + If the value is 1, the output is in high z state. + If the sel input is 0 the input is given to this output. + If the sel input is 1, this output is in high z state. + Pin Control + Control logic for a bidirectional pin. + This component is necessary only in the context of VHDL or Verilog generation, in order to create a + bidirectional HDL port! + If you don't want to use a bidirectional IO-port on an FPGA, don't use this component! + The PinControl component cannot be used in an embedded circuit! It is only allowed at the top level circuit! + The data to be output. + Activates the output. + The data to be read. + The connector for the actual pin. Only a single output should be connected + here. + A component which uses the value of the sel pin to decide which input value is + set to the output. + The {0}. data input of the multiplexer. + The value of the selected input. + This input is used to select the data input which is output. + A component that can output the input value to one of the outputs. + The other outputs are set to the default value. + This pin selects the output to use. + The value of this input is given to the selected data output. + Data output {0}. + Decoder + One selectable output pin is 1, all other outputs are set to 0. + Output {0}. This output is 1 if selected by the sel input. + This input selects the enabled output. + The selected output is set to 1. All other outputs are set to 0. + Bit Selector + Selects a single bit from a data bus. + The input bus + This input selects the bit + The selected bit. + Priority Encoder + Priority + If one of the inputs is set, its number is output. + If several inputs are set at the same time, the highest number is output. + Number of the set input. + If this output is set, at least one of the inputs is set. + The {0}. input of the priority encoder. + A component to store a single bit. + Provides the functions "set" and "reset" to set or reset the stored bit. + If both inputs are switched to one, both outputs also output a one. + If both inputs switch back to zero at the same time, the final state is random. + The set input. + The reset input. + Returns the stored value. + Returns the inverted stored value. + RS-Flip-flop, clocked + A component to store a single bit. + Provides the functions "set" and "reset" to set or reset the stored bit. + If both inputs (S, R) are set at the rising edge of the clock, the final state is random. + The set input. + The clock input. A rising edge initiates a state transition. + The reset input. + Returns the stored value. + Returns the inverted stored value. + Has the possibility to store (J=K=0), set (J=1, K=0), reset (J=0, K=1) or toggle (J=K=1) the stored value. + A change of state takes place only at a rising edge at the clock input C. + The set input of the flip-flop. + The clock input. A rising edge initiates a state change. + The reset input of the flip-flop. + Returns the stored value. + Returns the inverted stored value. + A component used to store a value. + The value on pin D is stored on a rising edge of the clock pin C. + The bit width can be selected, which allows to store multiple bits. + Input of the bit to be stored. + Clock pin to store a value. + The value on input D is stored on a rising edge of this pin. + Returns the stored value. + Returns the inverted stored value. + Stores a single bit. Toggles the state on a rising edge at input C. + Enables the toggle function. + Clock input. A rising edge toggles the output, if input T is set to 1. + Returns the stored value. + Returns the inverted stored value. + JK-Flip-flop, asynchronous + Has the possibility to store (J=K=0), set (J=1, K=0), reset (J=0, K=1) or toggle (J=K=1) the stored value. + A change of state takes place only at a rising edge at the clock input C. + There are two additional inputs which set or reset the state immediately without a clock signal. + The set input of the flip-flop. + The Clock input. A rising edge initiates a state change. + The reset input of the flip-flop. + Returns the stored value. + Returns the inverted stored value. + asynchronous set. A high value at this input sets the flip-flop. + asynchronous clear. A high value at this input clears the flip-flop. + D-Flip-flop, asynchronous + A component used to store a value. + The value on pin D is stored on a rising edge of the clock pin C. + There are two additional inputs which set or reset the state immediately without a clock signal. + The bit width can be selected, which allows to store multiple bits. + Input of the bit to be stored. + Control pin to store a bit. The bit on input D is stored on a rising edge of this pin. + Returns the stored value. + Returns the inverted stored value. + asynchronous set. If set to one, all stored bits are set to one. + asynchronous clear. If set to one, all stored bits are set to zero. + The monoflop is set at a rising edge at the clock input. + After a configurable delay time, the monoflop will be cleared automatically. + The monoflop is retriggerable. It can only be used if there is exactly one clock component present in the circuit. + This clock component is used as time base to measure the time delay. + Reset Input. A high value clears the monoflop. + The Clock input. A rising edge sets the monoflop. + output + inverted output + Register + A component to store values. The bit width of the data word can be selected. + Unlike a D flip-flop, the register provides an input which enables the clock. + Input pin of the data word to be stored. + Clock input. A rising edge stores the value at the D pin. + Enable pin. Storing a value works only if this pin is set high. + Returns the stored value. + A non-volatile memory component. + The stored data can be edited in the attributes dialog. + This pin defines the address of data word to be output. + The selected data word if the sel input is high. + If the sel input is high, the output is activated. If it is low, the data output is in high Z state. + ROM dual port + A non-volatile memory component. + The stored data can be edited in the attributes dialog. + This pin defines the address of data word to be output on D1. + The selected data word if the s1 input is high. + If the input is high, the output D1 is activated. If it is low, the data output is in high Z state. + This pin defines the address of data word to be output on D2. + The selected data word if the s2 input is high. + If the input is high, the output D2 is activated. If it is low, the data output is in high Z state. + RAM, separated Ports + A RAM module with separate inputs for storing and output for reading the stored data. + The address to read from or write to. + Clock input + The data to be stored in the RAM. + The data output pin + If this input is high the output is activated and the data is visible at the output. + If this input is high and when the clock becomes high, the data is stored. + RAM, async. + As long as we is set, it is stored. Corresponds to a very simple RAM, where the + address and data lines are directly connected to the decoders of the memory cells. + The address at which reading or writing takes place. + The data to be stored. + Write enable. As long as this input is set to 1, the value applied to D is + stored at the address applied to A whenever A or D is changed. + Output of the stored data. + Block-RAM, separated ports + A RAM module with separate inputs for storing and output for reading the + stored data. This RAM only updates its output on a rising edge of the clock input. + This allows the usage of Block RAM on an FPGA. + The address to read from or write to. + Clock input + The data to be stored in the RAM. + The data output pin + If this input is high and when the clock becomes high, the data is + stored. + EEPROM, separated Ports + A EEPROM module with separate inputs for storing and output for reading the stored data. + The address to read from or write to. + Clock input + The data to be stored in the EEPROM. + The data output pin + If this input is high the output is activated and the data is visible at the output. + If this input is high and when the clock becomes high, the data is + stored. + RAM, bidirectional Port + A RAM module with a bidirectional pin for reading and writing the data. + The address to read and write. + The bidirectional data connection. + If this input is high the output is activated and the data is visible at the output. + If this input is high when the clock becomes high, the data is stored. + A RAM module with a bidirectional connection for reading and writing the data. + If the CS input is low, the component is disabled. + This allows to build a larger RAM from some smaller RAMs and a address decoder. + The write cycle works as follows: By setting CS to high, the component is selected. + A rising edge at WE latches the address, and the following falling edge at WE stores the data. + The address to read and write. + If set to high the data is written to the RAM. + The bidirectional data connection. + If this input is high, this RAM is enabled. Otherwise the output is always in high Z state. + If this input is high, the stored value is output. + A EEPROM module with a bidirectional connection for reading and writing the data. + If the CS input is low, the component is disabled. + The data content is stored like in a ROM. It is thus preserved when the simulation is terminated and restarted. + The write cycle works as follows: By setting CS to high, the component is selected. + A rising edge at WE latches the address, and the following falling edge at WE stores the data. + The address to read and write. + If set to high the data is written to the EEPROM. + The bidirectional data connection. + If this input is high, this EEPROM is enabled. Otherwise the output is always in high Z state. + If this input is high, the stored value is output. + Graphic RAM + Used to show a bitmap graphic. This element behaves like a RAM. In addition it + shows its content on a graphic screen. Every pixel is represented by a memory address. The value stored defines + the color of the pixel, using a fixed color palette. There are two screen buffers implemented to support page + flipping. The input B selects which buffer is shown. Thus, the total memory size is dx * dy * 2 words. + The palette used is structured as follows: The indices 0-9 correspond to the colors white, black, red, green, + blue, yellow, cyan, magenta, orange and pink. The indices 32-63 map gray values and the indices 64-127 + represent 64 color values each with two bits per color channel. + This results in a simple palette that can be addressed with only 7-bit. + If the architecture supports a 16-bit index, from Index 0x8000, a high-color mode with 5 bits per color channel + can be used, which enables 32768 colors. + The address to read and write. + If this input is high when the clock becomes high, the data is stored. + If this input is high the output is activated and the data is visible at the output. + Selects the screen buffer to show. + The bidirectional data connection. + RAM, Dual Port + RAM with one port that allows to write to and read from the RAM, and a second + read only port. + This second port can be used to give some graphic logic access to the memory contents. In this way, a processor + can write to the RAM, and a graphics logic can simultaneously read from the RAM. + Output Port 1 + Output Port 2 + The address at which port 1 is read or written. + The address used to read via port 2. + The data to be stored in the RAM. + If this input is high the output is activated and the data is visible at the output 1D. + If this input is high and when the clock becomes high, the data is + stored. + Register File + Register + Memory with one port that allows to write and two ports that allow to read from + the memory simultaneously. Can be used to implement processor registers. + Two registers can be read simultaneously and a third can be written. + Output Port a + Output Port b + The register which is visible at port a. + The register which is visible at port b. + The register into which the data is written. + If this input is high and when the clock becomes high, the data is stored. + The data to be stored in the register Rw. + Counter + Counter + A simple counter component. The clock input increases the counter. + Can be reset back to 0 with the clr input. + The number of bits can be set in the attribute dialog. + The clock input. A rising edge increases the counter. + Synchronous reset of the counter if set to 1. + Overflow output. This pin is set to 1 if the counter is on its maximal value + and the en input is set to 1. + Returns the counted value. + If set to 1 the counter is enabled! + Counter with preset + A counter whose value can be set. In addition, a maximum value and a counting + direction can be specified. + Counter + Returns the counted value. + Overflow output. It is set to 1 if the 'en' input is set to 1 and if the + counter reaches its maximum value when counting up, or has reached 0 when counting down. + The clock input. A rising edge increases or decreases the counter. + Synchronous reset of the counter if set to 1. + If set to 1 the counter is enabled! + Specifies the counting direction. A 0 means upwards. + If set, the value at input 'in' is stored in the counter at the next clock + signal. + This data word is stored in the counter when ld is set. + Adder + A component for simple add calculations. + Adds the two integer values from input a and input b (a+b). + The result will be incremented by one if the carry input is set. + First input to add. + Second input to add. + The result of the addition + Carry input, if set the result is incremented by one. + Carry output. If set there was an overflow. + Subtract + A component for simple subtractions. + Subtracts binary numbers on input a and input b (a-b). + If the carry input is set to 1 the result is decremented by 1. + Carry input, if set the result is decremented by one. + Input a for subtraction. + Input b for subtraction. + Output returns the result of the subtraction. + Output returns 1 if an overflow occurred. + Multiply + A component for multiplication. + Multiplies the integer numbers on input pin a and input pin b. + Input a for multiplication. + Input b for multiplication. + Output for the result of the multiplication. + Division + A component for division. + Divides the integer applied to input a by the integer applied to input b. + If the divisor is zero, it is divided by one instead. + In signed division, the remainder is always positive. + dividend + divisor + quotient + remainder + A component for bit shifting. + Shifts the input value by the number of bits given by the shift input. + Input with bits to be shifted. + Input with shift width. + Output with shifted value. + Comparator + A component for comparing bit values. + Compares the binary numbers on input pin a and input pin b and sets the corresponding outputs. + Input a to compare. + Input b to compare. + Output is 1 if input a equals input b + Output is 1 if input a is greater than input b + Output is 1 if input a is less than input b + Negation + Input of the data word to be negated in 2th complement + Returns the result of the negation in 2th complement. + Negation in the 2th complement + Sign extender + Increases the bit width of a signed value keeping the values sign. + If the input is a single bit, this bit will be output on all output bits. + Input value. + The input bit width must be smaller than the output bit width! + Extended input value. + The input bit width must be smaller than the output bit width! + Bit counter + Returns the number of 1-bits in the input value. + The input which 1-bits are counted. + Outputs the number of 1-bits. + Random Number Generator + Can be used to generate random numbers. + When the simulation is started, the generator is reinitialized so that a new pseudo-random number + sequence is generated at each start. + The generator can be initialized in the running simulation with a defined seed value to generate + a defined pseudo-random number sequence. + New seed value of the generator. + If set, the random number generator is reinitialized with the new seed value at the next rising clock edge. + If set, a new random number is output at the next rising clock edge. + The clock input. + Output of the pseudorandom number. + Diode to VDD + A simplified unidirectional diode, used to pull a wire to VDD. + It is used to implement a wired OR. + So it is necessary to connect a pull down resistor to the diodes output. + In the simulation the diode behaves like an active gate with a trivalent truth table: + If the input high, the output is also high. In all other cases (input is low or high z) the output is in high z + state. + So two anti parallel connected diodes can keep each other in high state, which is not possible with real diodes. + This is an ideal diode: There is no voltage drop across a forward-biased diode. + If the input is high also the output is high. In all other cases the output is in high z state. + If the input is high also the output is high. In all other cases the output is in high z state. + Diode to Ground + A simplified unidirectional diode, used to pull a wire to ground. It is used to + implement a wired AND. + So it is necessary to connect a pull up resistor to the diodes output. + If the input low, the output is also low. In the other cases (input is high or high z) the output is in high z + state. + So two anti parallel connected diodes can keep each other in low state, which is not possible with real diodes. + So this is a ideal diode: There is no voltage drop across a forward-biased diode. + If the input is low also the output is low. In all other cases the output is in high z state. + If the input is low also the output is low. In all other cases the output is in high z state. + Switch + One of the connections of the switch. + Simple switch. + There is no gate delay: A signal change is propagated immediately. + Double Throw Switch + Double Throw Switch. + There is no gate delay: A signal change is propagated immediately. + Fuse + A fuse used to build a one time programmable memory. + One of the connections of the fuse. + One of the connections of the fuse. + A relay is a switch which can be controlled by a coil. + If a current flows through the coil, the switch is closed or opened. + There is no flyback diode so the current direction does not matter. + The switch is actuated if the inputs have different values. + The relay behaves similar to an XOr gate. + One of the inputs to control the relay. + One of the inputs to control the relay. + Double Throw Relay + A relay is a switch which can be controlled by a coil. + If a current flows through the coil, the switch is closed or opened. + There is no flyback diode so the current direction does not matter. + The switch is actuated if the inputs have different values. + The relay behaves similar to an XOr gate. + One of the inputs to control the relay. + One of the inputs to control the relay. + P-Channel FET + P-Channel Field Effect Transistor. + The bulk is connected to the pos. voltage rail and the transistor is simulated without a body diode. + N-Channel FET + N-Channel Field Effect Transistor. + The bulk is connected to ground and the transistor is simulated without a body diode. + P-Channel floating gate FET + P-Channel Floating Gate Field Effect Transistor. + The bulk is connected to ground and the transistor is simulated without a body diode. + If there is a charge stored in the floating gate, the fet isn't conducting even if the gate is low. + N-Channel floating gate FET + N-Channel Floating Gate Field Effect Transistor. + The bulk is connected to ground and the transistor is simulated without a body diode. + If there is a charge stored in the floating gate, the fet isn't conducting even if the gate is high. + A real transmission-gate is build from only two transistors. + Therefore, it is often used to save transistors during implementation on silicon. + input A + input B + control input. + inverted control input + Describes a test case. + In a test case you can describe how a circuit should behave. It can then be automatically checked whether the + behavior of the circuit actually corresponds to this description. If this is not the case, an + error message is shown. + The help text of the test case editor describes in detail how such a test case can be created. + Generic Initialization + Code that is executed to start a generic circuit directly. + If a generic circuit is to be started directly, such a component must be present. + Code + Code that is executed when a generic circuit is made concrete. + Can be used, for example, to add components or wires to a circuit. + Asynchronous Timing + Allows configuration of the timing of an asynchronous sequential circuit such as a + Muller-pipeline. The circuit must be started in single gate step mode and must be able to reach a stable state + at startup. The sequential circuit can then be started interactively or with a reset gate. + It is not allowed to use a regular clock component in this mode. + Power + Has no function. Makes sure that VDD and GND are connected. + Can be used in 74xx circuits to generate the pins for the voltage supply, which are tested for correct wiring. + Must be connected to VDD! + Must be connected to GND! + Reset Output. + The output of this component is held high during the initialisation of the circuit. + After the circuit has stabilized the output goes to low. + If the output is inverted it behaves the opposite way. + Break + Stops the fast simulation clocking if a rising edge is detected. + If this component is used in the circuit, the "Run To Break" button between "Start" + and "Stop" is enabled. This button clocks the circuit until a rising edge on the input of this component is + detected. This element can be used for debugging by clocking the circuit to any breakpoint. + Also an assembler command BRK can be implemented. This allows to execute a program up to the next BRK command. + This function can only be used if the real-time clock is deactivated! + Stop + A rising edge at the input stops the simulation. + Has the same effect as pressing the Stop button in the toolbar. + A rising edge stops the simulation. + External + Component to execute an external process to calculate the logic function. + Is used to specify the behaviour of a component by VHDL or Verilog. + The actual simulation of the behavior must be done with an external simulator. + At present only the VHDL simulator ghdl and the verilog simulator Icarus Verilog are supported. + The label of the component must match the name of the entity or module! + External File + Component to execute an external process to calculate the logic function. + Is used to specify the behaviour of a component by VHDL or Verilog. + The actual simulation of the behavior must be done with an external simulator. + At present only the VHDL simulator ghdl and the verilog simulator Icarus Verilog are supported. + The label of the component must match the name of the entity or module! + Diode + Simplified bidirectional diode. It is used to implement a wired AND or a wired OR. + This is a ideal diode: There is no voltage drop across a forward-biased diode. + Error + Pin {0} in component {1} is not a input or output + A single clock component is necessary. All flip-flops must use this clock signal. + The circuit has no labeled inputs + The circuit has no labeled outputs + No break detected after {0} cycles at break point ''{1}''. + Possibly the number of timeout cycles in the break component should be increased. + Expression {0} not supported + Operation {0} not supported + Error creating the lookup table. + More than one output is active on a wire, causing a short circuit. + It is not allowed to connect a pull-up and pull-down resistor to the same net. + Cannot analyse Node {0} + Contains [var] and [not var] + Pin ''{0}'' in component ''{1}'' exists twice. + Component {0} not found + Exact {0} values necessary, not {1} + Flip-flop needs to be connected to the clock. + Invalid file format + Logic is already initialized + A tunnel {0} is not connected! + There is more than one clock + The clock component is not used! + There are {0} bits needed, but {1} bits found + Net of pin {0} not found + No clock found in logic + No inputs available to set + No shape found for component {0} + Nothing connected to input ''{0}'' at component ''{1}''. Open inputs are not allowed. + Not all connected outputs have the same bit count + If multiple outputs are connected together, all of them have to be + three-state outputs. + No output connected to a wire ({0}). The state of the wire is undefined. + Table too small: One result is required! + Output {0} not defined + No label for pin {0} + Pin {0} assigned twice! + Pin {0} is not an input! + Pin {0} is not an output! + No = found! + Too many inputs used! + Too many outputs used! + Pin not present + Found a pin without a label. + Found a clock without a label. If a clock is embedded the clock also needs a + label. + Pin {0} not found at component {1} + Pin {0} not found + The custom shape does not define a pin {0} + Pin {0} unknown + Logic seems to oscillate. + To analyse you can run the circuit in single gate step mode. + The remote port is in use! Is there an other instance running? + Number of inputs does not match selector bit count + Syntax error in splitter definition {0} + Bit count of splitter is not matching + Not all input bits are defined! + Input bits are defined several times! + Only 64 bits allowed in splitter! + Two inputs are required! + Too many variables (inputs+flip-flops), {0} are allowed but {1} were + found. + Too many variables used in {0}, + {1} are allowed variables but {2} were found. + Variable {0} is not allowed in CUPL source! + Variable {0} not defined + Unexpected Token {0} + Missing closed parenthesis + Value {0} in line {1} is not a number! + Expected {0} but found {1} values in line {2}! + Unexpected token ({0}) in line {1}. + Variable {0} not found! + No input signals defined in test vector! + No output signals defined in test vector! + No test data found. + It's not allowed to connect a pull up and a pull down resistor to a single wire. + Could not open the browser. + Could not create folder "{0}"! + It is not allowed to connect only inputs to a switch. + The file {0} exists multiple times under {1}. + Could not find the file {0}. + Error during execution of "{0}". + The process "{0}" does not return! + The process returns the non zero value {0}: {1} + Error starting the external fitter! + There are no minimized equations! + Equations are being calculated! Please wait a moment! + The variable {0} is used twice! + The file needs to be saved! + The circuit {0} imports itself! + The result of the minimization is not correct! + The names of the variables may not be unique. + Too many iterations in a loop. + Diode needs a pull up resistor at its output! + Diode needs a pull down resistor at its output! + Test signal {0} not found in the circuit! + Only {1} bits allowed, but {0} bits found! + Flip-flops with more than one bit are not allowed! + The two control inputs of a transmission gate must be inverted! + Signal {0} is used twice! + Error parsing the test data. + The model component {0} can not be analysed. + Error in wiring of power supply at {0}. + The pin number {0} is not an integer! + Error during export to VHDL. + No VHDL code for {0} available! + No Verilog code for {0} available! + Error creating a test bench! + Values of type {0} are not allowed! + A name is missing. Have e.g. all pins a label set? + Several outputs are connected to each other. + This type of interconnection is not supported for HDL export. ({0}, {1}, {2}). + Test cases with generic parameterization are not supported in HDL + export! + unnamed net + Too many variables! + Invalid expression! + Function {0} not found in line {1}! + Number of arguments in function {0} in line {1} not correct (found {2}, expected {3})! + Invalid value {0} in function {1}! + The name {0} is not a path element. + Error during loading of a library. + The JAR file contains no manifest! + The manifest does not contain a Main-Class entry! + Could not find the class {0}! + Could not create an instance of the class {0}! + There must be more input bits than output bits! + It is not possible to set physical pins to constant values! + The string {0} is not a valid number (pos {1})! + The name "{0}" is not allowed! + No white space is allowed in the name of the TT2 file! + The table has too many columns! + Error writing the ZIP file. + Only one clock component with high frequency is allowed. + The circuit contains cycles. It's not possible to analyze such a circuit. + Cycles arise if an output of a gate is fed back to one of the inputs of the same gate. + The use of switches, FETs or relays also causes cycles. + If a monoflop is used, there must be exactly one clock component! + Could not create a component of type {0}! + ROMs defined in the settings are not supported! + The name "{0}" is not unique! + Could not write values to the external process! + Could not read values from the external process! + Could not create the external process! + Timeout reading data from external process! + {0} + Not enough data received! + {0} + The received text contains an invalid character: {0}! + {1} + The process has terminated unexpected! + {0} + Could not terminate the process! + Could not start process: {0} + Application exit status was not 0 but {0}: + {1} + External code can only be exported if it is VHDL! + External code can only be exported if it is Verilog! + If an external component is used multiple times, the code must be identical! Effects: {0} + Could not write to stdOut: + {0} + The VHDL simulator ghdl does not seem to be installed. Install ghdl (http://ghdl.free.fr/) and try again. + If there are still problems, check the path to the ghdl executable in the Digital settings. + The Verilog simulator Icarus does not seem to be installed. Install IVerilog (http://iverilog.icarus.com/) and + try again. + If there are still problems, check the path to the IVerilog executable in the Digital settings. + Error loading the HDL file {0} + A empty label is not allowed! + Error analysing the circuit: {0} + Every ROM needs a unique label to be exported! + Every LUT needs a unique label to be exported! + The counter needs at least two bits. + Clock elements can not be used in asynchronous mode. + Error during export to Verilog. + No memory "{0}" found in the model! + Multiple memories "{0}" found in the model! + Error loading the program memory. + Error while reading the SVG file. + The SVG file contains pins that do not exist in the circuit. + All memories into which data are to be loaded require the same bit width. + If programs are to be loaded into several RAMs, all RAMs must have + different names. The lexical order then determines the order of the RAMs. + The MIDI-System is not available. + The MIDI channel {0} is not available. + The MIDI instrument {0} is not available. + The MIDI instruments are not available. + During the execution of the tests "{0}" an error has occurred! + HDL not known: {0} + Error starting the command {0} + There is a unnamed input or output! + The signal name "{0}" is invalid or used multiple times! + Error when substituting components for the analysis. + Error in the evaluation of the generic code of the circuit. Code + {1} + at Component: {0} + Error while parsing generics code. + No initialization code for the generic components. + A respective component must be added to the circuit in order to start it. + Multiple initialization codes for the generic components. + Error in the analysis of the generic initialization code. + Global variables can only be written in code components. + Video mode was not detected ({0}) + There is no file name available for the automatic reload! + Virtual signal {0} declared twice in line {1}! + No header found! + No output values found! + Not enough values in one line! + Too many values in one line! + Error writing file {0}. + The circuit contains no components! + Could not start the server! + Address Bits + Number of address bits used. + Data Bits + Color + The Color of the element. + Background color + Background color of the circuit when it is embedded in another circuit. Is not + used for DIL packages. + Timeout cycles + If this amount of cycles is reached without a break signal, an error is created. + Data + The values stored in this element. + Default + This value is set if the circuit is started. + At the demultiplexer, this value is set for the non-selected outputs. + Default + This value is set if the circuit is started. A "Z" means high-z state. + Is three-state input + If set the input is allowed to be in high-z state. At the input component this is + also allowed if high-z ("Z") is set as the default value. + No zero output. + Avoids zero output. This is especially helpful when setting up relay circuits. + Can only be activated if a high-z output is allowed. + Description + A short description of this element and its usage. + Frequency/Hz + The real time frequency used for the real time clock + Use IEEE 91-1984 shapes + Use IEEE 91-1984 shapes instead of rectangular shapes + Number of Inputs + The Number of Inputs used. Every input needs to be connected. + Label + The name of this element. + Size + The size of the shape in the circuit. + Small Shape + If selected, a smaller shape will be used. + Language + Language of the GUI. Will only take effect after a restart. + Net name + All nets with identical name are connected together. + Input Splitting + If e.g. four bits, two bits and two further bits are to be used as inputs, + this can be configured with "4,2,2". The number indicates the number of bits. For convenience, the asterisk + can be used: 16 bits can be configured with "[Bits]*[Number]" as "1*16". + It is also possible to specify the bits to be used directly and in any order. + For example, "4-7,0-3" configures bits 4-7 and 0-3. This notation allows any bit arrangement. + The input bits must be specified completely and unambiguously. + If e.g. four bits, two bits and two further bits are to be used as outputs, + this can be configured with "4,2,2". The number indicates the number of bits. For convenience, the asterisk + can be used: 16 bits can be configured with "[Bits]*[Number]" as "1*16". + It is also possible to specify the bits to be used directly and in any order. + For example, "4-7,0-3" configures bits 4-7 and 0-3. This notation allows any bit arrangement. + Output bits can also be output several times: "0-7,1-6,4-7". + Number of Selector Bits + Number of bits used for the selector input. + Signed Operation + If selected the operation is performed with signed (2th complement) values. + Remainder always positive + If set, the remainder of a signed division is always positive. + Closed + Sets the initial state of the switch. + Value + The value of the constant. + Width + Width of symbol if this circuit is used as an component in an other circuit. + Height + Height of symbol if this circuit is used as an component in an other circuit. + Reload at model start + Reloads the HEX file every time the model is started. + File to be loaded into the ROM. + Flip selector position + This option allows you to move te selector pin to the opposite side of the + plexer. + Number Format + The format used to show the numbers. + Bin + Decimal + Signed decimal + Default + Hex + Octal + Fixed Point + Signed Fixed Point + Floating Point + fixed point digits + Number of fractional binary digits + shift input has sign + shift input data has two complement format + Mode + Mode of barrel shifter + Logical + Rotate + Arithmetic + Direction + Set direction. + left + right + Max number of steps to show + The maximal number of values stored. + If the maximum number is reached, the oldest values are discarded. + Show single gate steps + Shows all single step steps in the graphic. + Rotation + The orientation of the Element in the circuit. + Mirror + Mirrors the component in the circuit. + Start real time clock + If enabled the runtime clock is started when the circuit is started + Show measurement graph at simulation start + When the simulation is started, a graph with the measured values is shown. + Show measurement graph in single gate step mode at simulation start + When the simulation is started, a graph with the measured values in the + gate step mode is shown. All gate changes are included in the graph. + Show in Measurement Graph + Shows the value in the measurement graph. + Show measurement values at simulation start + When the simulation is started, a table with the measured values is shown. + Lines + The number of lines to show. + Characters per line + The number of characters shown in a single line. + Use as measurement value + If set the value is a measurement value and appears in the graph and data table. + In addition, a label must be specified that can serve as identification of the value. + Test data + The description of the test case. + Details of the syntax can be found in the help dialog of the test data editor. + Width in pixels + The screen width in pixels. + Height in pixels + The screen height in pixels. + Program Memory + Makes this ROM to program memory. So it can be accessed by an external IDE. + Makes this register a program counter. The value of this register is returned + to the external assembler IDE to mark the current line of code during debugging. + Programmed + If set a diode is "blown" or "programmed". + At a floating gate FET the floating gate is charged. + You can change this setting with the [P] key. + Format + Screen format of expressions. + Relay is normally closed. + If set the relay is closed if the input is low. + Pole count + Number of poles available. + Common Connection + If selected, a common cathode or anode input is also simulated. + Common + Kind of common connection. + Cathode + Anode + Avoid Flicker + It is not possible to increase the frequency so much that the flickering + disappears. + In order to suppress the flickering nevertheless, a "afterglow" can be switched on for the LEDs with this + option. + If enabled, the LEDs remain on, even if one of the pins changes to high-z. + This simulates a frequency above the critical flicker fusion frequency. + Path to the fitter for the ATF15xx. + Enter the directory which contains the fit15xx.exe files provided by Microchip (former ATMEL). + Pin number + An empty field means this signal is not assigned to a pin. + Rows + Specifies the number of rows by specifying the number of bits of the row word. + Address bits of columns + Addresses the individual columns. Three bits means eight columns. + Modification locked + The circuit is locked. It is possible to configure diodes and FGF-FETs. + Pin number + Number of this pin. Used for the representation of a circuit as a DIL package and + the pin assignment when programming a CPLD. + If there are several bits, all pin numbers can be specified as a comma-separated list. + Number of DIL pins + Number of pins. A zero means that the number of pins is determined automatically. + Component tree view is visible at startup. + If set, the component tree view is enabled at startup. + Inverted inputs + You can select the inputs that are to be inverted. + Menus Font Size [%] + Size of the fonts used in the menu in percent of the default size. + Enable Input + If set an enable input (T) is available. + Unidirectional + Unidirectional transistors propagate a signal only from source to drain. They + are + much faster to simulate than bidirectional transistors. Since there is no feedback from drain to source, in this + mode, the transistor can not short the connected wires when it is conducting. Thus, this mode is necessary to + simulate certain CMOS circuits. + Active Low + If selected the output is low if the component is active. + Library + Folder which contains the library with predefined sub circuits. + Contains, for example, the components of the 74xx series. You also can add your own circuits by storing + them at this location. + It must be ensured that the names of all files in this folder and all subfolders are unique. + Show Grid + Shows a grid in the main window. + Wire tool tips + If set, lines are highlighted when the mouse hovers over them. + Map to keyboard + Button is mapped to the keyboard. + To use the cursor keys use UP, DOWN, LEFT or RIGHT as label. + Java library + A jar file containing additional components implemented in Java. + Show the number of wires on a bus. + CAUTION: The value is only updated when the simulation starts. + Input Bit Width + The number of output bits must be greater than the number of input bits. + Output Bit Width + The number of output bits must be greater than the number of input bits. + Font Size + Sets the font size to use for this text. + Duration + Delay time in units of the common gate propagation delay. + Inverted output + If selected the output is inverted. + Pulse Width + The pulse width is measured in clock cycles. + Configures the spread of the inputs and outputs in the circuit. + Content of ROMs + Content of all used ROMs + Application + Defines which application to use. + Generic + Inputs + The inputs of the external process. + It is a comma-separated list of signal names. For each signal name, a number of bits separated by a colon + can be specified. The inputs of an 8-bit adder could thus be described as "a:8,b:8,c_in". + Outputs + The outputs of the external process. + It is a comma-separated list of signal names. For each signal name, a number of bits separated by a colon + can be specified. The outputs of an 8-bit adder could thus be described as "s:8,c_out". + Program code + The program code to be executed by the external application. + Program code + The file containing the program code to be executed by the external application. + Options + Path to the executable ghdl file. Only necessary if you want to use ghdl to simulate + components defined with VHDL. + GHDL Options + Options that are used for all processing steps by GHDL. + IVerilog Options + Options that are used for all processing steps by IVerilog. + Path to the Icarus Verilog installation folder. Only necessary if you want to use + iverilog to simulate + components defined with Verilog. + Maximum Value + If a zero is entered, the maximum possible value is used (all bits are one). + Output is High + The default output value of the DIP switch when the simulation starts. + Use macOS mouse clicks. + Uses CTRL-click instead of right-click. + No tool tips for components on the main panel. + If set, no tool tips for the components on the main panel are displayed. + Especially in a presentation, these tool tips can be very annoying. + Show dialog for automatic renaming of tunnels. + If set, a dialog for automatically renaming all tunnels of the same name is displayed after a + tunnel has been renamed. + Path to the executable file ATMISP.exe. If set, the ATMISP software can be started automatically! + Custom Shape + Import of a SVG file + Preload program memory at startup. + When simulating a processor that uses a RAM device as the program memory, + it is difficult to start this processor because the RAM contents are always initialized with zeros at the start + of the simulation. This setting allows loading data into the program memory at startup. + The program memory in the simulation must be marked as such. + Program file + File which should be loaded into the program memory at the start of the + simulation. + Width + Width in grid units + Height + Height in grid units + Text Inside + Place text inside the rectangle. + Text at the bottom + Place text at the bottom of the rectangle. + Text on the right + Place text to the right of the rectangle. + Wide Shape + Uses a wider shape to visualize the gate. + Shape + The shape to be used for the representation of the circuit in an embedding circuit. + In the "Simple" mode, the inputs are displayed on the left and the outputs on the right side of a simple + rectangle. + With "Layout", the position of the inputs and outputs and their orientation in the circuit determines + the position of the pins. Here it is possible to have pins at the top or the bottom. + When selecting "DIL-Chip", a DIL housing is used to display the circuit. The pin numbers of the inputs and + outputs + determine the position of the pins in this case. + Default + Simple + DIL-Chip + User defined + Orientation + Position of the coordinate relative to the text. + left bottom + center bottom + right bottom + right center + right top + center top + left top + left center + center center + MIDI channel + Selects the MIDI channel to use. + MIDI instrument + The MIDI instrument to use. + Allow program change + Adds a new input PC. If this input is set to high, + the value at input N is used to change the program (instrument). + Enabled + Enables or disables this component. + Toolchain Configuration + Used to configurate an integration of a toolchain. + Allows the start of external tools, e.g. to program an FPGA or similar. + Generic Parameterization + Statements used to generify a circuit. + Circuit is generic + Allows to create a generic circuit. + Show Tutorial at Startup + Enables the tutorial. + Switch behaves like an input + If the model is analyzed, the switch behaves like an input, where "open" corresponds to '0' and "closed" to '1'. + SVG Export Settings + Text in LaTeX notation + Text is inserted in LaTeX notation. Inkscape is required for further processing. + Pin labels in Math Mode + For pin labels, use math mode even if no indexes are contained. + Hide Test Cases + The test cases are not exported. + Shapes not filled + Polygons are not filled. + Small Inputs and Outputs + Inputs and outputs are represented as small circles. + Leave out Pin Marker + The blue and red pin markers on the symbols are omitted. + High Contrast + The wires and the text of the pins are displayed in black. + Monochrome + Only gray colors are used. + Thin Lines + If set, the lines are drawn slightly thinner. + Use Equals-Key + Use the equal key instead of the plus key. + This is always useful if the plus character is not a primary key, but the second assignment of the + equals character, e.g. for an American or French keyboard layout. + Snap To Grid + If set, the component is aligned with the grid. + Pin Separator + Used by the layout shape type. Sets the distance to the previous pin. + Trigger + Trigger condition for data recording. + rising edge + falling edge + both edges + Display Mode + Defines whether the value or a counter is to be displayed. + Show Value + Count on Rising Edge + Count on Falling Edge + Count both Edges + Telnet mode + If set, the Telnet control commands are evaluated. + In addition, the server sends the SGA and ECHO commands. If this option is disabled, + the server is a simple TCP server. + Port + The port to be opened by the server. + Color scheme + Normal + Dark + Red/green colorblind + User Defined + User Defined Colors + Background + Foreground + Wire + Wire HIGH + Wire LOW + Value at the wire + Output + Wire HIGH-Z + Error + Pins + Grid + Disabled + Asynchronous + Highlighted + Inserted wire. + Insert from clipboard. + Value ''{0}'' in component ''{1}'' modified. + Attributes of component ''{0}'' modified. + Wire deleted. + Component ''{0}'' moved or rotated. + Wire moved. + Selection deleted. + Component ''{0}'' inserted. + Component ''{0}'' deleted. + Wire inserted. + Selection moved. + Undo: {0} + Redo: {0} + Modified circuit attributes. + Ordered measurements. + Modified attributes of selected components. + Splits a single wire into two wires. + Changes made by the running simulation. + Logic + Arithmetic + Flip-Flops + Memory + Plexers + Wires + Switches + Displays + Mechanical + Peripherals + Misc. + more + Decoration + Generic + Command Line Interface + The non-optional argument {0} is missing. + The value {0} is not a boolean. + The value {0} is not a number. + The argument {0} is not defined. + There are not enough arguments. + There are too many arguments. + Invalid type. + The command {0} has no sub-command {1}. + Options: + The first file name specifies the circuit to be tested. + If a second file name is specified, the test cases are executed from this file. + If no second file name is specified, the tests are executed from the first file. + Name of the file to be tested. + Name of a file with test cases. + Allows the lack of inputs in the circuit which are + defined in the test case. This can be useful if there are several possible solutions which may + depend on different inputs. + If set, the value table is output in case of an error. + Tests have failed. + An error has occurred during the execution of the tests. + Can be used to create an SVG file from a circuit. + The file name of the circuit. + The name of the SVG file to be written. + Use the IEEE symbols. + Error while creating the SVG file! + Creates a CSV file which contains the circuit statistics. + All components used are listed in the CSV file. + File name of the circuit. + Name of the CSV file to be created. + If this option is missing, the table is written to stdout. + Error while creating the stats file! + Windows + About + Analysis + Analyses the current circuit + Cut + Copy + Copy to clipboard + Custom + Library + Delete components + Delete selected single component or group of components. + Edit + Circuit specific settings + The circuit specific settings affect the behavior of the + currently open circuit. + For example, the shape that represents the circuit when it is embedded in other circuits. + These settings are stored together with the circuit. + Settings + The global settings of the simulator specify, among other + things, the language, the symbol form to be used or the paths of external tools. + Stop Simulation + Stops the simulation and allows to edits the circuit. + Components + Export + Export PNG large + Export PNG small + Export SVG + Export Animated GIF + Run to Break + Runs the circuit until a break is detected by a BRK component. + Help + Update + Updates the components menu. + Fit to window + Single gate stepping + Runs the circuit in single gate step mode + New + Creates a new, empty circuit. + New embedded Circuit + Opens a new window to create a new embedded circuit, which can then be used in this + circuit. + Open + Open Recent + Open Recent in New Window + Open in New Window + Opens a circuit in a new window + Order Inputs + Order the inputs for the use as a embedded circuit + Order measurement values + Orders the measurement values in the graphical and table view + Order Outputs + Order the outputs for the use as a embedded circuit. + Paste + Rotate + Simulation + Start Simulation + Starts the simulation of the circuit. + Save + Save As + Save Data + Save data as CSV file + Speed Test + Performs a speed test by calculating the max. clock frequency. + Gate Step + Calculates a single gate step + Run To Break in Single Gate Mode + Executes all single gate steps until a rising edge is detected on a break component. + If there is no break component, the remaining single gate steps are executed. + Synthesis + Generates the minimal bool expressions described by a truth table. + Set Scaling + {0} variables + Create + Creates a CUPL source file containing the define circuit. + Creates a file containing the circuit similar to the Berkeley Logic Interchange Format (BLIF). + After that the Atmel fitter is started to create the JEDEC file. + Circuit + Creates a circuit which reproduces the truth table. + Circuit with JK flip-flops + Creates a circuit which reproduces the truth table. Uses JK flip-flops. + Circuit with LUTs + Creates a circuit which reproduces the truth table. Uses lookup tables to create the expressions. + Circuit with NAnd gates + Circuit with NAnd gates with two inputs + Use only NAnd gates with two inputs. + Creates a circuit which reproduces the truth table only with NAnd gates. + Circuit with NOr gates + Circuit with NOr gates with two inputs + Use only NOr gates with two inputs. + Creates a circuit which reproduces the truth table only with NOr gates. + Circuit with two input gates + Create circuit, use only gates with two inputs + Circuit with three input gates + Create circuit, use only gates with a maximum of three inputs + Device + Creates a JEDEC file for the device + Export LaTeX + Export Plain Text + Export Test Case + Creates a test case description that can be used in a test + case. + The test case is only functional if the circuit is + purely combinatorial! + HEX + You can load the HEX file to a ROM or a LUT. + A CSV file containing the complete truth table. + CSV, prime implicants + A CSV file containing only the prime implicants. + New + Combinatorial + Sequential + Sequential bidirectional + Reorder/Delete Input Variables + Reorder/Delete Output Columns + Add Output Column + Adds a new result column to the table. + Add Input Variable + Adds a new input variable to the table. + Set X to 0 + Sets the Don't Cares to 0. + Set X to 1 + Sets the Don't Cares to 1. + Create J/K Expressions + Set all to X + Set all values to "don't care". + Set all to 0 + Set all values to zero. + Set all to 1 + Set all values to one. + Invert all bits + A "1" becomes a "0" and vice versa. Don't cares remain unchanged. + Show results dialog + Shows the results dialog again if it was closed manually. + Delete + Delete the terminals content. + View + Zoom In + Zoom Out + Expression + Create a circuit from an expression. + Run Tests + Runs all test cases in the circuit + Set Input Defaults + Use current input values as new default values. + Reset all diodes and FGFETs + Resets all diodes (fuses) and FGFETs to the "not programed" state. The + current fuse configuration is lost! + Program diode + Components + Shows a list of all available components. + Help Dialog + Shows the help dialog describing the current circuit. + Memory + Shows the content of memory components. + Paste in new window + The content of the clipboard is pasted in a new window. + Component Tree View + Shows a tree view of available components at the left side. + Special 74xx Functions + Add IO-Prefix + A prefix is added to all selected inputs and outputs. + Is used to simplify the doubling of circuits within a 74xx circuit. + Remove IO-Prefix + The first character from the inputs and outputs labels are removed. + Is used to simplify the doubling of circuits within a 74xx circuit. + Pin Wizard + Wizard to apply pin numbers to the inputs and outputs. + Remove Pin Numbers + Remove all pin numbers in the circuit + Undo + Revert last modification + Redo + Apply last reverted modification again. + Show graph + Show the data as a Graph. + Show table + Shows values as a table. + Add power supply + Adds a power supply to the circuit. + Export to VHDL + Exports the circuit to VHDL + Export to Verilog + Exports the circuit to Verilog + Shows a K-map representation of the table! + Documentation + Open {0} + Show measurement value table + Show table with the measured values in a separate window. + Show measurement graph + Shows a graph with the measured values in a separate window. + Export to ZIP file + Exports the circuit as a ZIP file. + The ZIP file thus contains all the files that are necessary for the operation of the circuit. + Label Inputs and Outputs + Set a label to all inputs and outputs without a label. + Start Tutorial + Starts the beginner tutorial. + Circuit Statistics + Shows a list of used components. + Number + Component + Inputs + Bits + Addr. Bits + Error opening a PDF file! + <h1>Digital</h1> + <p>A simple simulator for digital circuits.</p> + <p>Written by H. Neemann in 2016-2021.</p> + <p>The icons are taken from the <a href="http://tango.freedesktop.org">Tango Desktop Project</a>.</p> + <p>Visit the project at <a href="https://github.com/hneemann/[[name]]">GitHub</a>. + At Github you can also <a href="https://github.com/hneemann/[[name]]/releases/latest">download</a> + the latest release.</p> + <p>There you also can file an <a href="https://github.com/hneemann/[[name]]/issues/new?body=version:%20[[version]]&labels=bug">issue</a> + or suggest + an <a href="https://github.com/hneemann/[[name]]/issues/new?labels=enhancement">enhancement</a>.</p> + {0} nodes + Error analysing the circuit + Color + Error calculating a step + Error creating the circuit + Error during simplification + Error during creation of hardware configuration. + Error editing a attribute value + Error importing the circuit {0}! + Error updating the component library!! + Error reading a file + Command {0} unknown! + Error writing a file + The maximum frequency is {0} kHz + Shape {0} is missing + Pin assignment + A restart is required for the changes to take effect! + Enter an expression: + Error running the tests: + Test result + {0} passed + {0} failed + (Too many entries!) + All test cases are executed, but not all results are shown. + The evaluation of the test result is nevertheless correct! + E: {0} / F: {1} + Error creating the help! + The clipboard contains no importable data! + Select an empty folder! + Message from the external fitter + Execution of external fitter + Current Circuit + The selected file name is not importable from the current project! + The file name is not unique! + All files in the working directory and all subdirectories must have unique file names. This also applies to the + library folder. If your work directory has a 7400.dig file, you cannot use this file or the 7400.dig file from + the library, because this file name can no longer be uniquely assigned. + There are several files with identical file names, which can not be + uniquely assigned! Affected are: + and {0} more. + The file has not yet been imported. + The file {0} already exists! Do you want to overwrite the file? + The editing of the circuit is disabled. You can remove the lock at + "{0} -> {1} -> {2}". + However, copying of components and the configuration of diodes and FGFETs with the [P] key is also possible in + the locked mode. + Error during speed test! + Numbering Wizard + Select pin {0}: + Written frames: {0} + Error writing to GIF file! + Ready + The GIF file is finalized and closed. + GIF Export + caused by + Inputs to invert + none + Could not determine the names of the pins. + Occurred in file {0}. + Affected are: {0}. + Signal {0} + No pin numbers assigned to the pins {0}! + Free pins are automatically assigned. The circuit can therefore not be used on real hardware in most cases! + You can only export a circuit without errors! + No KV map available! + Data will not be updated anymore! + Modify this Value + One of the fields contains a invalid value! + Creation of CHN file. + The table is very large, the export may take a while. + Start export anyway? + To create a hardware description, a circuit must first be created and analyzed. + A standalone truth table can not be used to generate a hardware description. + no data + Could not close external process! + Check Result: + Check + Starts the application to check if the entered code is correct. + If this is not the case, the error message of the external application is displayed. + If possible, the input and output definitions are also adapted to the current code. + Input and output definitions could not be created automatically. + Please check the settings! + Executable file "{0}" not found! + Enter Text! + Start ATMISP + Starts the external program ATMISP. This must have been previously installed. + Error while starting ATMISP! + Is the correct path to the executable ATMISP.exe specified in the settings? + ATMISP is still running! + When this dialog is closed, ATMISP is terminated! + Make sure the flash process is complete before closing this dialog! + Run all Tests + Executes all tests in the current folder. + {0} test rows passed + File Tested + Truth Table + Comma Separated Values, CSV + Error while importing the SVG file. + Error creating the SVG template. + Statistics could not be created. + Create Behavior Fixing Test Case + Creates a behavioral fixture from the circuit. + A behavioral fixture is a test case that fixes the current behavior. + Fixtures: {0} + Create Fixture + Creates a new fixture in the test case. + Complete + Creates the test case component + Error in the creation of the test case. + Error while reading the toolchain configuration {0} + Command "{0}" has been started! Processing may take some time! + The command "{0}" has been completed! + Rename Net + There are {0} more tunnels with the net name ''{1}''. + Do you want to rename all {0} to ''{2}''? + Do you really want to discard the changes in the "{0}" field? + Copies the text to the clipboard. + Exportable to VHDL/Verilog. + Error while setting the test case row. + Break after {0} half cycles at break point ''{1}''. + Deletes the selected item + Move the item down + Move the item up + All possible solutions + Test data {0} + Data + Confirm Exit! + Measurements + Measurements full clock step + Measurements single gate step + Save Changes? + State Changed! + Table + Export + Select + Input {0} + Karnaugh Map + Included ROMs + Help + Name to use in generic circuits: {0} + Create Concrete Circuit + Create + Creates a concrete circuit from this generic circuit using the + parameters specified in this element. + Error while creating the concrete circuit! + Central ROM Content + <html> + <h3>Motivation</h3> + When a circuit containing a ROM component is embedded multiple times, the contents of the ROM + is normally used for each instance of that circuit. Under certain circumstances, + however, it may be desirable for such a circuit to be embedded multiple times, + but different ROM contents are used for each instance.<br/> + This problem occurs e.g. if a 74xx ROM is used multiple times but with different + memory contents.<br/> + <h3>Function</h3> + At this location, therefore, contents can be defined for all ROMs in the circuit. + When the simulation model is generated, every ROM is initialized with the contents stored + directly in the respective ROM. Then it is checked whether an alternative content is + defined here. If this is the case, the content defined here is loaded into the corresponding ROM. + <h3>Usage</h3> + It should be noted that each ROM requires a unique name used to identify the ROM. + To do this, use the asterisk ('*') in the label of the ROM. The asterisk is then replaced by the complete + path constructed from the names of the embedded circuits. + If a circuit contains only one ROM component, it is sufficient to use only the asterisk as a label for it. + All embedded circuits must be named so that a unique name can be formed for each ROM component. + </html> + <html> + <h1>New Version {0} Available</h1> + <p>There is a new release of the simulator available.</p> + <p>In the <a href="https://github.com/hneemann/[[name]]/releases/latest">release notes</a> + you can find the changes and improvements.</p> + <p>Here you can <a href="https://github.com/hneemann/[[name]]/releases/latest">download</a> the new release.</p> + </html> + Expressions + <p>To define an expression you can use all most common notations:</p> + <p> + And: "&", "&&", "*", "∧"<br/> + Or: "|", "||", "+", "∨", "#"<br/> + XOr: "^", "⊻"<br/> + Not: "!", "~", "¬" + </p> + <p>As usual AND precedes OR and XOr.</p> + <p>Multiple expressions can be separated by "," or ";". + If you want to name the expressions you can use the + let command: "let U=A+B, let V=A*B".</p> + Test vectors + <html> + <head><style>pre { background-color: #E0E0E0;}</style></head> + <body> +<h3>General</h3> +<p>The first line has to contain the names of inputs and outputs. +The following lines contain the expected values. +A 'X' represents a don't care, and a 'Z' represents a high Z value. +If a 'C' is used, at first all other values are set, after that a clock cycle is performed and then the +values are compared. So it's easier to test sequential logic. +A line which starts with a number sign ('#') is a comment.</p> + +<p>So a test for a 2-bit counter could look like this:</p> + +<pre> +C Q1 Q0 +0 0 0 +C 0 1 +C 1 0 +C 1 1 +C 0 0 +</pre> + +<p>The tests are executed by Run->Run Tests.</p> +<p> +To make it easier to create a lot of test vectors there is the 'repeat([n])' statement: +If a line begins with 'repeat([n])', [n] test lines are generated. The +variable 'n' can be used to generate the test data. With 'repeat(16)', +16 lines are created, where n goes from 0 to 15. If there are multiple bit inputs, +and these are to be set together to a binary value, this can be done with the +'bits([bits], [value])' statement. This is used to create [bits] bits of the value [value].</p> + +<p>The following is an example that tests a 4-bit adder:</p> + +<pre> + C_i-1 A_3 A_2 A_1 A_0 B_3 B_2 B_1 B_0 C_i S_3 S_2 S_1 S_0 +repeat(256) 0 bits(4,n>>4) bits(4,n) bits(5,(n>>4)+(n&15)) +repeat(256) 1 bits(4,n>>4) bits(4,n) bits(5,(n>>4)+(n&15)+1) +</pre> + +<p>The input signals are the carry-in (C_i-1) and the eight input bits A_3-A_0 and B_3-B_0. +The 4 input bits are generated with the 'bits' instruction. The result (C_i, S_3-S_0) is also generated +by a 'bits' instruction. +This happens once with C_i-1 = 0 and in the next line with C_i-1 = 1. +In this way, 512 test rows are generated which cover all possible input configurations.</p> +<p>If multiple rows are to be repeated, or if nested loops are required, the loop +statement can be used. The above example could also be implemented as follows:</p> + +<pre> + C_i-1 A_3 A_2 A_1 A_0 B_3 B_2 B_1 B_0 C_i S_3 S_2 S_1 S_0 +loop(a,16) + loop(b,16) + 0 bits(4,a) bits(4,b) bits(5,a+b) + 1 bits(4,a) bits(4,b) bits(5,a+b+1) + end loop +end loop +</pre> + +<p>Under certain circumstances it may be necessary to be able to react to the initial +state of the circuit. Therefore the signals provided in the circuit can be used within +the test case. For example, if a counter that starts in an undefined state is to be +tested, it can be clocked to a defined state:</p> + +<pre>C Q_3 Q_2 Q_1 Q_0 + +# clock counter to 1111 +while(!(Q_3 & Q_2 & Q_1 & Q_0)) +C x x x x +end while + +# start the test execution +repeat(16) C bits(4,n) +</pre> + +<p>It may be helpful to generate random numbers in test cases. +These can be created with the function 'random([n])'. The generated number is greater +than or equal to zero and less than [n]. Considering a 16-bit multiplier as an example, +a full test can not be performed since it would have 2^32 input combinations. +A regression test that multiplies 100000 random numbers might look like this:</p> + +<pre> + A B Y +loop(i,100000) + let a = random(1&lt;&lt;16); + let b = random(1&lt;&lt;16); + (a) (b) (a*b) +end loop +</pre> + +<p>An input that allows high impedance as a value can also be used as a test output. +In this case, the signal name can be used with a trailing "_out" to read back and check the current value. +For this, the corresponding input must be set to high impedance ('Z').</p> + +<pre>OE CLK D D_out +0 0 0 0 +0 C 1 1 +1 0 z 1 +0 C 0 0 +1 0 z 0 +</pre> + +<p>The circuit for this test has only one input 'D', but which can be high impedance state. +Therefore, the signal 'D_out' is also available to check the value in this case.</p> + +<p>In special cases, it may be desirable to use the signals, which are provided by +the circuit, to derive a new signal, which is then tested. An example could be a bus +signal with several bits, where only a single bit should be tested, whereby the remaining +bits have no influence on the test. In this case, a new signal can be generated in the +test itself, which contains this one bit so that tests can be defined for this bit.</p> +<p>This is done with the 'declare' statement:</p> +<pre>A B Bit + +declare Bit = (Bus>>3)&1; + +0 0 0 +0 1 0 +1 0 1 +1 1 0 +</pre> +<p>In this example, the 3rd bit is isolated from the 'Bus' signal and made available as +the 'Bit' signal for the test. The circuit itself contains no output 'Bit'.</p> +<h3>Functions</h3> +<p>Available functions are: +<dl> +<dt>signExt([bits],[value])</dt> +<dd>Extends the value [value] while preserving the sign to [bits] bits.</dd> +<dt>random([max])</dt> +<dd>Returns an integer random number. The maximum value is specified with [max].</dd> +<dt>ite([cond],[then],[else])</dt> +<dd>If the condition [cond] is true, the value [then] is returned, otherwise the value [else].</dd> +</dl> +</p> + +<h3>Processors</h3> +<p>If processors are to be tested, an initialization of the processor is usually required. +It is possible to perform this initialization within the test case. +In this way, several tests can be located in one circuit and each test can use its own initialization. +There are three instructions to perform this initialization:</p> +<ul> +<li>The 'program' statement can be used to overwrite the program memory of the processor. +The instruction <pre>program(0x8000,0x2d11,0x8000,0x2f21)</pre> writes four words to the beginning +of the program memory. All other words are set to zero.</li>. +<li>The 'memory' instruction can be used to write to a RAM component: +<pre>memory mem(3)=7;</pre> +This example writes 7 to the memory with the label 'mem' at address 3.</li> +<li> A labeled register can be overwritten with the 'init' statement. +<pre>init R0=22;</pre> +This instruction overwrites the register with the label 'R0' with the value 22.</li> +</ul> +<p>It should be noted that all used initializations are only applied once before the +test execution. It does not matter in which line in the test case these statements are located. +However, they must not be used above the header line listing the signal names.</p>. +</body></html> + Finite State Machine + No movement + Transitions + Transitions+States + set {0} + Finite State Machine + Opens a Dialog to Edit a Finite State Machine. + Create + State Transition Table + Create Counter + {0} States + Help for operating the FSM editor. + State Number + The number which represents this state. + Initial State + If set, this state is the initial state. + Outputs + Defines the output values. + With simple assignments like "A=1, B=0" outputs can be set. + With instructions like "A=101", multi-bit outputs can be set. + Outputs that are not defined here are set to zero in states. + For transitions, unspecified outputs remain unchanged. + Condition + A boolean expression. + Radius + Radius of the circle in the diagram. + The FSM is not deterministic: {0} + State Number {0} used twice. + There is no initial state (state number zero). + State ''{0}'' not found! + Wrong assignment to output (''{0}'')! + Error in condition ''{0}''! + Error loading a file! + Error storing a file! + Transition + State + New State + Can not create state transition table. + Help FSM Editor + FSM-Optimizer + Optimize the State Numbers + Optimizes the state numbers so that an implementation has the + least possible effort. The runtime increases very quickly with the complexity of the machine. (O(n!)) + Error during optimization! + Initial complexity: + Best so far: + <html><head></head> +<body> + <h3>Mouse Operation</h3> + <dl> + <dt>Create a state:</dt> + <dd>Right mouse click on a free area.</dd> + <dt>Creating a transition:</dt> + <dd>Right mouse button down on the start state and dragging to the destination state.</dd> + <dt>Delete a state or a transition:</dt> + <dd>Move the mouse over the object and press the [Del] button.</dd> + <dt>Moving a state or transition:</dt> + <dd>Left mouse button down and dragging.</dd> + <dt>Editing a state or a transition:</dt> + <dd>Right mouse click on the state or the transition.</dd> + </dl> + <h3>Layout Help Function</h3> + <dl> + <dt>No movement:</dt> + <dd>The layout help function is disabled.</dd> + <dt>Transitions:</dt> + <dd>The layout help function moves the transition arrows to avoid overlaps.</dd> + <dt>Transitions+States</dt> + <dd>The layout help function moves both states and transitions to help create a well-balanced layout.</dd> + </dl> + <h3>Interpretation of Transitions</h3> + To simplify the generation of a deterministic automata, unconditional transitions are treated in a special way: + an unconditional transition is only executed if no other transition satisfies the transition condition. + So there can be an unconditional transition and conditional transitions that start in the same state. + An unconditional transition thus determines to which state the state machine is shifted if no other transition + condition is met. + If there is no unconditional transition from a state, the state machine will stay in this state if no other + transition condition is met. +</body></html> + The measurement graph + <html><body> + <h3>What can be seen in the graph?</h3> + Unlike a real logic analyzer, the X-axis of the measurement graph does not show the time. + Instead a counter is displayed which counts the changes of state in the circuit. + Whenever there is a change in the circuit, the counter is incremented and the new state is displayed.<br/> + You can also think of it as a classic logic analyzer, which does not save any data for optimization + if nothing has changed in the circuit. + However, this also means that it is not possible to read from the graph whether a lot or little time has + passed between two changes in the circuit.<br/> + This behavior is caused by the nature of the simulation: The simulation of the circuit does not know the + concept of time. A change is made to the circuit, and the change in the circuit state is calculated, until + the circuit has stabilized again. Then the next change is made, the effect of which is also is calculated + and so on. These changes are counted and the counter value is displayed on the X-axis of the graph.<br/> + Among other things, this also means that a circuit cannot be overclocked, since the effects of the falling + edge of the clock are not calculated until the circuit has stabilized after the previous rising edge. + </body></html> + In the following a short tutorial leads you to the first, simple circuit: + + First, insert an input into the circuit. You will find the input in the menu Components▸IO. + Now add a second input to the circuit. You can also click on the input + in the toolbar. + + It is best to place the second input slightly below the first input. + You can move the circuit by holding down the right mouse button. + By clicking on components you can move them. + Next, an "Exclusive Or" gate is to be inserted. + You can find this gate in the menu Components▸Logic. + Place this component with some distance to the right of the inputs. + The last component to be inserted is an output. + Place it with some distance to the right of the "Exclusive Or" gate. + In order to complete the circuit, connecting wires must be drawn. + + Click on the red dot at the first input and connect it to an input of the "Exclusive Or" gate, + by clicking on a blue dot of the "Exclusive Or" gate afterwards. + Do NOT drag with mouse button down! + Connect the red dot of the second input to the second blue dot of the + "Exclusive Or" gate and the red dot of the "Exclusive Or" gate to the blue dot of the output. + + While drawing, you can pin the wire by clicking somewhere on the canvas. + Right-click cancels the drawing of the wire (control-click on macOS). + Your first circuit is now functional. + To start the simulation, you can click on the Play button in the toolbar. + If you move the mouse over the toolbar, tool tips are shown. + The simulation is now active. Switch the inputs by clicking on them. + To stop the simulation, click on the Stop button in the toolbar. + For completeness, the inputs and outputs should be labeled. + + Right-click on an input to open a dialog. On macOS control-click is used. + Here the input can be given a name. + Label all inputs and outputs. + Inputs and outputs should always be uniquely named. + Skip Tutorial + diff --git a/src/main/resources/lang/lang_pt_ref.xml b/src/main/resources/lang/lang_pt_ref.xml index ede85bf79..96407ee4a 100644 --- a/src/main/resources/lang/lang_pt_ref.xml +++ b/src/main/resources/lang/lang_pt_ref.xml @@ -90,7 +90,7 @@ In the file howTo.md you can find more details about translations. bit of the inputs. XNOr A combination of XOR and NOT. The inputs are combined with the XOR operation. - The result of this operation than is inverted. + The result of this operation is then inverted. It is also possible to use buses with several bits per input. In this case, the operation is applied to each bit of the inputs. Not @@ -119,7 +119,7 @@ In the file howTo.md you can find more details about translations. Can be used to display an output signal in a circuit. This element is also used to connect a circuit to an embedding circuit. In this case the connection is bidirectional. - Is also used to assign an pin number, if code for a CPLD or FPGA is generated. + Is also used to assign a pin number, if the code for a CPLD or FPGA is generated. This value is used for the output connection. LED A LED can be used to visualize an output value. Accepts a single bit. @@ -132,7 +132,7 @@ In the file howTo.md you can find more details about translations. The green color channel. The blue color channel. LED with two connections. - LED with connections for the cathode and the anode. The LED lights up, + LED with connections for the cathode and the anode. The LED lights up if the anode is connected to high and the cathode is connected to low. This LED cannot be used as a pull-down resistor. It acts solely as a display element. The shown resistor is only meant to symbolize the required series resistor to limit the current. @@ -148,7 +148,7 @@ In the file howTo.md you can find more details about translations. Simple DIP switch that can output either high or low. The output value of the switch. Clock Input - A clock signal. Its possible to control it by a real-time clock. + A clock signal. It's possible to control it by a real-time clock. Depending on the complexity of the circuit, the clock frequency achieved may be less than the selected value. If the frequency is greater than 50Hz, the graphic representation of the circuit will no longer be updated at every clock cycle so that the wire colors will no longer be updated. @@ -225,9 +225,8 @@ In the file howTo.md you can find more details about translations. A separate window is opened for the text input. Clock. A rising edge removes the oldest character from the buffer. - If high the output D is active and one character is output. - It also enables the clock input. - + If high, the output D is active and one character is output. + It also enables the clock input. The last typed character, or zero if no character is available. Output is the 16 bit Java char value. @@ -641,8 +640,8 @@ In the file howTo.md you can find more details about translations. Input a to compare. Input b to compare. Output is 1 if input a equals input b - Output is 1 if input a is greater then input b - Output is 1 if input a is less then input b + Output is 1 if input a is greater than input b + Output is 1 if input a is less than input b Negation Neg Negation in the 2th complement diff --git a/src/main/resources/lang/lang_zh_ref.xml b/src/main/resources/lang/lang_zh_ref.xml index c945bbac8..4d8f83e72 100644 --- a/src/main/resources/lang/lang_zh_ref.xml +++ b/src/main/resources/lang/lang_zh_ref.xml @@ -84,7 +84,7 @@ In the file howTo.md you can find more details about translations. bit of the inputs. XNOr A combination of XOR and NOT. The inputs are combined with the XOR operation. - The result of this operation than is inverted. + The result of this operation is then inverted. It is also possible to use buses with several bits per input. In this case, the operation is applied to each bit of the inputs. Not @@ -112,7 +112,7 @@ In the file howTo.md you can find more details about translations. Can be used to display an output signal in a circuit. This element is also used to connect a circuit to an embedding circuit. In this case the connection is bidirectional. - Is also used to assign an pin number, if code for a CPLD or FPGA is generated. + Is also used to assign a pin number, if the code for a CPLD or FPGA is generated. This value is used for the output connection. LED A LED can be used to visualize an output value. Accepts a single bit. @@ -134,7 +134,7 @@ In the file howTo.md you can find more details about translations. Simple DIP switch that can output either high or low. The output value of the switch. Clock Input - A clock signal. Its possible to control it by a real-time clock. + A clock signal. It's possible to control it by a real-time clock. Depending on the complexity of the circuit, the clock frequency achieved may be less than the selected value. If the frequency is greater than 50Hz, the graphic representation of the circuit will no longer be updated at every clock cycle so that the wire colors will no longer be updated. @@ -168,7 +168,7 @@ In the file howTo.md you can find more details about translations. Connection Connection LED with two connections. - LED with connections for the cathode and the anode. The LED lights up, + LED with connections for the cathode and the anode. The LED lights up if the anode is connected to high and the cathode is connected to low. This LED cannot be used as a pull-down resistor. It acts solely as a display element. The shown resistor is only meant to symbolize the required series resistor to limit the current. @@ -215,7 +215,7 @@ In the file howTo.md you can find more details about translations. This component buffers the input, which can then be read out. A separate window is opened for the text input. Clock. A rising edge removes the oldest character from the buffer. - If high the output D is active and one character is output. + If high, the output D is active and one character is output. It also enables the clock input. The last typed character, or zero if no character is available. Output is the 16 bit Java char value. @@ -1506,8 +1506,8 @@ In the file howTo.md you can find more details about translations. Input a to compare. Input b to compare. Output is 1 if input a equals input b - Output is 1 if input a is greater then input b - Output is 1 if input a is less then input b + Output is 1 if input a is greater than input b + Output is 1 if input a is less than input b Negation Neg Input of the data word to be negated in 2th complement diff --git a/src/test/java/de/neemann/digital/lang/LanguageUpdater.java b/src/test/java/de/neemann/digital/lang/LanguageUpdater.java index 764972a25..c3633d663 100644 --- a/src/test/java/de/neemann/digital/lang/LanguageUpdater.java +++ b/src/test/java/de/neemann/digital/lang/LanguageUpdater.java @@ -24,6 +24,10 @@ import java.util.zip.ZipEntry; import java.util.zip.ZipFile; public class LanguageUpdater { + public static final Format FORMAT = Format.getPrettyFormat() + .setIndent(" ") + .setTextMode(Format.TextMode.PRESERVE); + private static final String COMMENT_REF = " IMPORTANT\nDo not edit this file directly!\n" + "This makes it very difficult for me to continue to maintain the translation.\n" + "Pull requests in which this file is modified cannot be accepted.\n" + @@ -37,6 +41,7 @@ public class LanguageUpdater { private final Document ref; private final File langFileName; private final File refFileName; + private final TypoFixer typoFixer; private int modified; private LanguageUpdater(File sourceFilename) throws JDOMException, IOException { @@ -47,6 +52,8 @@ public class LanguageUpdater { if (!langPath.exists()) throw new IOException("lang folder not found!"); + typoFixer = new TypoFixer(langPath, "lang_" + langName + "_ref.xml"); + langFileName = new File(langPath, "lang_" + langName + ".xml"); refFileName = new File(langPath, "lang_" + langName + "_ref.xml"); lang = new SAXBuilder().build(langFileName); @@ -73,9 +80,13 @@ public class LanguageUpdater { modified++; break; case "typo": - System.out.println("key: " + key); - System.out.println("en: " + enText); - throw new IOException("There is a typo in the english translation!"); + typoFixer.fix(key, enText); + if (!contains(lang, key)) { + add(ref, key, enText); + add(lang, key, transText); + modified++; + break; + } case "modified": if (replace(lang, key, transText)) { replace(ref, key, enText); @@ -169,13 +180,20 @@ public class LanguageUpdater { throw new IOException("key " + key + " not found in " + xml); } + private boolean contains(Document xml, String key) { + for (Element e : xml.getRootElement().getChildren()) { + String k = e.getAttributeValue("name"); + if (k.equals(key)) + return true; + } + return false; + } + private void update() throws IOException { + typoFixer.update(); if (modified > 0) { - Format format = Format.getPrettyFormat() - .setIndent(" ") - .setTextMode(Format.TextMode.PRESERVE); - new XMLOutputter(format).output(ref, new FileOutputStream(refFileName)); - new XMLOutputter(format).output(lang, new FileOutputStream(langFileName)); + new XMLOutputter(FORMAT).output(ref, new FileOutputStream(refFileName)); + new XMLOutputter(FORMAT).output(lang, new FileOutputStream(langFileName)); System.out.println(modified + " keys updated!"); } else { System.out.println("no modification found!"); @@ -183,28 +201,31 @@ public class LanguageUpdater { } public static void main(String[] args) throws JDOMException, IOException { - - File src = new File("/home/hneemann/Dokumente/Java/digital/src"); - if (!src.exists()) { - JFileChooser dc = new JFileChooser(); - dc.setDialogTitle("Select the Digital \"src\" Folder"); - dc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); - if (dc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { - src = dc.getSelectedFile(); + if (args.length == 1) { + new LanguageUpdater(new File(args[0])).update(); + } else { + File src = new File("/home/hneemann/Dokumente/Java/digital/src"); + if (!src.exists()) { + JFileChooser dc = new JFileChooser(); + dc.setDialogTitle("Select the Digital \"src\" Folder"); + dc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); + if (dc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { + src = dc.getSelectedFile(); + } } - } - System.setProperty("testdata", new File(src, "test/resources").getPath()); + System.setProperty("testdata", new File(src, "test/resources").getPath()); - JFileChooser fc = new JFileChooser(); - fc.setDialogTitle("Select the updated diff File"); - fc.addChoosableFileFilter(new FileNameExtensionFilter("xml", "xml")); - fc.addChoosableFileFilter(new FileNameExtensionFilter("zip", "zip")); - if (src != null) { - final File s = new File(src.getParentFile(), "target/lang_diff_pt.xml"); - fc.setSelectedFile(s); + JFileChooser fc = new JFileChooser(); + fc.setDialogTitle("Select the updated diff File"); + fc.addChoosableFileFilter(new FileNameExtensionFilter("xml", "xml")); + fc.addChoosableFileFilter(new FileNameExtensionFilter("zip", "zip")); + if (src != null) { + final File s = new File(src.getParentFile(), "target/lang_diff_pt.xml"); + fc.setSelectedFile(s); + } + if (fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) + new LanguageUpdater(fc.getSelectedFile()).update(); } - if (fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) - new LanguageUpdater(fc.getSelectedFile()).update(); } } diff --git a/src/test/java/de/neemann/digital/lang/TypoFixer.java b/src/test/java/de/neemann/digital/lang/TypoFixer.java new file mode 100644 index 000000000..b80a8b380 --- /dev/null +++ b/src/test/java/de/neemann/digital/lang/TypoFixer.java @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2021 Helmut Neemann. + * Use of this source code is governed by the GPL v3 license + * that can be found in the LICENSE file. + */ +package de.neemann.digital.lang; + +import org.jdom2.Document; +import org.jdom2.Element; +import org.jdom2.JDOMException; +import org.jdom2.input.SAXBuilder; +import org.jdom2.output.XMLOutputter; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +import static de.neemann.digital.lang.LanguageUpdater.FORMAT; + +public class TypoFixer { + private final File langPath; + private final String fileToIgnore; + private HashMap documents; + + public TypoFixer(File langPath, String fileToIgnore) { + this.langPath = langPath; + this.fileToIgnore = fileToIgnore; + } + + /** + * Replaces all en text fragments of key key with the newEnText. + * + * @param key the key + * @param newEnText the corrected en text + */ + public void fix(String key, String newEnText) throws IOException, JDOMException { + if (documents == null) + initDocuments(); + + for (Map.Entry e : documents.entrySet()) { + System.out.println("fixed typo " + key + " in " + e.getKey()); + replace(e.getValue(), key, newEnText); + } + } + + private void initDocuments() throws IOException, JDOMException { + String[] list = langPath.list((file, name) -> name.endsWith("_ref.xml") && !name.equals(fileToIgnore)); + + documents = new HashMap<>(); + load("lang_en.xml"); + for (String n : list) + load(n); + } + + private void load(String name) throws IOException, JDOMException { + File f = new File(langPath, name); + Document doc = new SAXBuilder().build(f); + documents.put(f, doc); + } + + static boolean replace(Document xml, String key, String text) throws IOException { + for (Element e : xml.getRootElement().getChildren()) { + String k = e.getAttributeValue("name"); + if (k.equals(key)) { + if (e.getText().trim().equals(text.trim())) { + return false; + } else { + e.setText(text); + return true; + } + } + } + throw new IOException("key " + key + " not found in " + xml); + } + + public void update() throws IOException { + if (documents != null) + for (Map.Entry e : documents.entrySet()) + new XMLOutputter(FORMAT).output(e.getValue(), new FileOutputStream(e.getKey())); + } +}