next up previous
Next: Realizzazione finale Up: Realizzazione del circuito logico Previous: Scelta del circuito logico

Simulazione del circuito logico

Per la simulazione si è utilizzato un programma applicativo su personal computer denominato PALASM. Con tale programma è possibile scrivere delle relazioni tra ingressi ed uscite e simularne il comportamento inviando sequenze logiche predefinite agli ingressi e verificando le forme d'onda delle uscite.

Per realizzare tale struttura è necessario generare un file sorgente contenente le relazioni costitutive e le sequenze predefinite, dopodiché PALASM si occupa automaticamente della compilazione, dell'assemblaggio e della simulazione. Il file sorgente mostrato di seguito è quello relativo al circuito logico che si desidera realizzare (le righe sono state numerate per facilitarne il commento).

stepper.pds

Dopo la parte riguardante l'autore ed il tipo di componente (righe 1-9), nelle righe 10 e 11 si definiscono i nomi dei terminali partendo dal primo. Nella prima riga sono definiti gli ingressi e la massa, nella seconda riga l'alimentazione, il terminale per l'abilitazione delle uscite e le uscite stesse.

Per vedere meglio la denominazione dei terminali è possibile utilizzare un file generato da PALASM che realizza il disegno del componente con i nomi dei terminali; tale file ha l'estensione .pin ed il contenuto è mostrato nella pagina successiva. I nomi dati ai terminali sono significativi e vengono quindi analizzati. Ricordando il circuito di fig.3.20 si ha che CLK è il terminale di arrivo degli impulsi, DIR discrimina la direzione, CLR è il reset; JC e KC sono gli ingressi del terzo flipflop. Tutti gli altri ingressi non sono significativi per l'applicazione.

Passando alle uscite il discorso si complica leggermente perché ne esistono di tipi diversi, le quattro uscite finali del sistema sono I12, ${\rm {\overline{QB}}}$, I11 e ${\rm {\overline{QA}}}$. La complicazione è dovuta al fatto che alcune uscite sono di tipo combinatorio mentre altre sono di tipo sequenziale. Facendo riferimento alla fig.3.21 si ha che i terminali bidirezionali (iniziano con la lettera B) possono essere determinati da equazioni combinatorie, mentre i terminali di uscita devono avere equazioni sequenziali.

stepper.pin

Passando alle equazioni si nota come ne esistano di due tipi: se il simbolo '=' è isolato si tratta di un'equazione combinatoria, se è preceduto da ':' (cioè ':=') si tratta di un'equazione sequenziale. Si analizzano ora le varie formule seguendo un ordine logico. Partendo dalle equazioni per I11 e I12 (descritte nelle righe 16 e 14) si ha:

\begin{displaymath}
I11(t+1) = {\rm {\overline{CLR}}}(t)\cdot {\rm {\overline{KC...
...{\overline{CLR}}}(t)\cdot JC(t)\cdot {\rm {\overline{I11}}}(t)
\end{displaymath}


\begin{displaymath}
I12(t+1)= {\rm {\overline{I11}}}(t+1)
\end{displaymath}

Tali formule sono l'espressione analitica delle uscite di un flipflop JK in funzione degli ingressi. Le due uscite vengono collegate con gli omonimi ingressi del driver.

Si prosegue analizzando tutte le altre equazioni che riguardano la catena superiore del circuito mostrato in fig.3.20. I terminali che finiscono con la lettera A riguardano il flipflop di sinistra, mentre i terminali con la lettera B sono di quello a destra.

\begin{displaymath}
QA(t+1) = {\rm {\overline{CLR}}}(t)\cdot {\rm {\overline{KA}...
... {\overline{CLR}}}(t)\cdot JA(t)\cdot {\rm {\overline{QA}}}(t)
\end{displaymath}


\begin{displaymath}
KB(t) = {\rm {\overline{(DIR(t)\cdot QA(t) + {\rm {\overline{DIR}}}(t)\cdot {\rm {\overline{QA}}}(t))}}}
\end{displaymath}


\begin{displaymath}
QB(t+1) = {\rm {\overline{CLR}}}(t)\cdot {\rm {\overline{KB}...
...)\cdot {\rm {\overline{KB}}}
(t)\cdot {\rm {\overline{QB}}}(t)
\end{displaymath}


\begin{displaymath}
JA(t) = {\rm {\overline{(DIR(t)\cdot QB(t) + {\rm {\overline{DIR}}}(t)\cdot {\rm {\overline{QB}}}(t))}}}
\end{displaymath}


\begin{displaymath}
KA(t) = {\rm {\overline{JA}}}(t)
\end{displaymath}

L'uscita ${\rm {\overline{QA}}}$ viene collegata con il terminale FASE 1 del driver, ${\rm {\overline{QB}}}$ con il terminale FASE 2.

La verifica della correttezza delle equazioni può essere fatta utilizzando l'ultima sezione del programma denominata 'SIMULATION' (riga 42). In tale sezione si ha la possibilità di generare una sequenza di valori logici per gli ingressi e di verificare il valore corrispondente delle uscite. Il comando indicato con 'SETF' permette di applicare il valore logico alto ad un ingresso. Il comando 'CLOCKF' permette di cambiare lo stato logico dell'ingresso CLK.

Nelle pagine successive viene visualizzato il risultato della simulazione.

stepper.hst

Come si può notare dalle sequenze generate nelle pagine precedenti, sull'asse verticale vengono disposti i 20 terminali del dispositivo, mentre sull'asse orizzontale vengono rappresentati gli istanti di tempo significativi. A partire dai valori logici degli ingressi, in determinati istanti di tempo, si ricava il valore delle uscite. Il termine H significa livello logico alto, il termine L significa livello logico basso, il termine X significa valore indeterminato. L'interesse della simulazione consiste nel verificare se le uscite I11, QB, I12, QA si comportino nel modo desiderato quando gli ingressi CLK, DIR, CLR, JC e KC sono configurati in un certo modo. Dopo aver analizzato la simulazione si giunge alla conclusione che le uscite selezionate per agire sul driver si comportano nel modo desiderato.

Giunti a questo punto il passo successivo consiste nel programmare il componente. Per fare ciò si è utilizzato un programmatore universale, denominato ALLPRO, che si interfaccia con un normale personal computer e tramite un applicativo software permette all'utente di scegliere il tipo di dispositivo da programmare e di eseguire tale programmazione.


next up previous
Next: Realizzazione finale Up: Realizzazione del circuito logico Previous: Scelta del circuito logico
Marco Delaurenti
1999-06-25