Questa guida fornisce una visione d'insieme del simulatore e ne illustra aspetti e funzionalità sotto una prospettiva di utente. Questa informazione complementa quella completa e dettagliata a livello dei componenti fornita dal manuale di riferimento.
Il PLA (Programmable Logic Array) è un chip generale che consente di realizzare una varietà di circuiti logici collegando l'uscita di una schiera di porte AND ad una serie di porte OR. Le matrici di connessioni sono realizzate con dei microfusibili che possono essere bruciati selettivamente dall'utente, in modo da realizzare il circuito desiderato. Per una descrizione più completa vedi Architettura dei calcolatori di A. Tanenbaum, V edizione, §3.2.2 .
Questo simulatore ha lo scopo di apprezzare visivamente il funzionamento del PLA, mostrando la sua circuiteria interna essenziale, in particolare le porte AND e OR, le matrici di connessione, i pin di ingresso e di uscita. E' possibile simulare la programmazione, assegnare valori agli ingressi, e vedere il corrispondente effetto sulle porte interne e sui pin di uscita. Anche se il simulatore è ampiamente flessibile per quanto riguarda il numero di componenti interni e le dimensioni delle corrispondenti matrici di collegamento, la complessità dei circuiti che si intende simulare dipende dalla disponibilità di uno schermo adeguato a visualizzare l'intera circuiteria logica interna.
Per eseguire il simulatore basta posizionarsi nella directory code della distribuzione, e scrivere la seguente riga di comando:
./pla.py
La prima operazione immediatamente disponibile all'utente non appena eseguito il
simulatore è la sua programmazione, agendo sulle due matrici: quella di
connessioni tra input e porte AND, e l'analoga tra uscite delle AND e ingressi
delle porte OR. La fusione dei fusibili è simulata semplicemente cliccando con
il tasto sinistro del mouse in prossimità di un nodo delle matrici. Il
simulatore ha il pregio, rispetto al suo equivalente fisico, di consentire
all'utente anche di tornare sui suoi passi, rendendo nuovamente integro un
fusibile precedentemente bruciato, cliccandoci nuovamente sopra.
Lo stato di un fusibile è reso graficamente utilizzando la convenzione dei
circuiti elettrici, di rappresentare con un pieno la connessione di due
conduttori, e con un archetto il loro intersecarsi in isolamento.
In aggiunta alla programmazione fine fusibile per fusibile, è possibile ottenere delle configurazioni in maniera globale, utilizzando altre funzionalità che verranno descritte più avanti .
Una volta realizzata la logica desiderata, tramite la programmazione dei fusibili, il passo successivo è tipicamente la simulazione dell'attività del circuito, in risposta ai segnali di ingresso. Allo scopo basta premere il pulsante RUN posto in basso a sinistra, o in alternativa mediante i tasti R oppure r (senza necessità di premere il tasto Invio). Si vedranno i valori logici delle porte interne AND, e nei pin di uscita (che corrispondono ai risultati delle porte interne OR).
I segnali di ingresso si possono variare a piacere cliccando sui pulsanti corrispondenti ai pin, ogni click alterna il valore attuale.
Il simulatore nella barra superiore dispone di due menu: Simulation e Library. Nel primo sono presenti tre funzionalità: le prime due riguardano la programmazione logica, e permettono di ottenere con un solo comando due configurazioni estreme dei fusibili, tutti bruciati oppure tutti collegati. La terza opzione termina il simulatore. Per tutte e tre queste funzioni esistono alternative rapide con un singolo tasto, sia maiuscolo che minuscolo.
Il menu Library mette a disposizione una serie di circuiti predefiniti, selezionando i quali le matrici di fusibili si predisporranno nella configurazione che realizza tali circuiti. Vengono inoltre aggiunte ai pin di ingresso e di uscita delle etichette testuali che codificano la semantica dei segnali, mantenendo ove possibile la stessa impiegata nel testo Architettura dei calcolatori di A. Tanenbaum, V edizione. La libreria è descritta in Libreria di circuiti.
Al momento sono presenti i circuiti elencati qui a seguito, di cui si è indicata la figura nel testo di Tanenbaum, ove disponibile. Da notare che, anche quando la figura è disponibile, il circuito simulato nel PLA vi corrisponde solo funzionalmente, ma la sua implementazione è diversa, dovendo seguire solo la struttura di porte AND e OR configurabile nel PLA.
circuito | figura |
---|---|
1 bit half adder | 3.17 |
1 bit full adder | 3.18 |
2 bit adder | - |
priority encoder | - |
multiplexer | 3.11 |
majority | 3.3 |
decoder | 3.13 |
shift register | 3.16 |
comparator | 3.14 |
L'esecuzione del simulatore prevede qualche opzione da linea di comando, che consente di variare alcuni dei principali parametri strutturali. La sintassi completa è la seguente:
./pla.py [-x x_size][-a n_and][-i n_inputs][-o n_outputs][-h]
dove le diverse opzioni, tutte facoltative, hanno l'effetto riassunto in questa lista: