Guida utente

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 (disponibile anche in versione pdf).


Introduzione

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

Programmazione logica

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 .


Attivazione del circuito

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.


I menu

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.


Libreria di circuiti

Al momento sono presenti i circuiti elencati qui a seguito, di cui si è indicata la figura nel testo di Tanenbaum e nel testo di C. Hamacher, Z. Vranesic, S. Zaky, N. Manjikian, 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 Tanenbaum figura Hamacher
1 bit half adder 3.17 -
1 bit full adder 3.18 9.2 (a)
2 bit adder - -
6-bit ones' complement - -
4-bit twos' complement - -
2 bit multiplicator - -
6 bit square root floor - -
reductor 3-2 - -
multiple logic gate - -
priority encoder - -
multiplexer 3.11 A.38
majority 3.3 -
decoder 3.13 A.36
decoder 4 bit - 7 segment - A.37
shift register 3.16 A.33
comparator 3.14 -
one step flip-flop SR - A.24
one step flip-flop T - A.30
one step flip-flop JK - A.31
Parity check (CRC-1) - -
CRC-3-GSM - -

I polinomi generatori dei codici CRC realizzati in circuiti sono:

codice CRC polinomio generatore
CRC-1 x+1
CRC-3-GSM x³+x+1

Opzioni da linea di comando

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:




home page