PDA

View Full Version : Arch.Elab. - Esercizio con SIS


shottyno
05-01-2015, 14:47
Salve ragazzi, sto preparando l'esame di Architettura dei Calcolatori e purtroppo qualche mese fa mi sono perso la lezione sui Diagrammi degli Stati ed in particolare sulla loro ottimizzazione e minimizzazione col programma SIS.
Dopo qualche giornata passata a cercare slides ed esempi, credo di averli capiti abbastanza bene, per cui vorrei semplicemente che controlliate se ho svolto bene il seguente esercizio:

Sia data la seguente specifica funzionale di una macchina a stati finiti sincrona con un ingresso X ed una uscita Z.
L’uscita Z deve essere portata a 1 se in ingresso si presenta la sequenza 1011. Sono possibili eventuali sovrapposizioni
1. Tracciare il diagramma degli stati.
2. Utilizzando il SIS
a. Sintetizzare le funzioni di stato prossimo e di uscita
b. Eseguire la minimizzazione.

Allora, io ho disegnato il diagramma degli stati e ne ho ricavato la tabella:
Quando l'input è 0:
A= A\0, B=C\0, C=A\0, D=C\0
Quando l'input è 1:
A=B\0, B=B\0, C=D\0, D=A\1
Poi ho passato i dati nel file .BLIF:
.model es4
.inputs x
.outputs z
.start_kiss
.i 1
.o 1
.s 4
0 a a 0
0 b c 0
0 c a 0
0 d c 0
1 a b 0
1 b b 0
1 c d 0
1 d a 1
.end_kiss
.end
Infine, dopo averlo letto tramite read_blif, non mi resta che dargli i comandi:
state_minimize stamina e stg_to_network per terminare l'esercizio.
Potreste dirmi se è tutto corretto?? (Purtroppo il SIS mi da un errore comune di lettura a tutti gli esempi,anche quelli trovati in rete, e non posso minimizzarlo).

Grazie mille a tutti per l'aiuto :D
Scusatemi se per caso la sezione è sbagliata e/o il titolo non è appropriato!
Buone feste a tutti! :D :D

ingframin
06-01-2015, 07:48
Sempre aggiornata l'università italiana...
Dal sito di SIS:
"SIS is currently not maintained and may be hard to use, not only compile. "
fonte: http://embedded.eecs.berkeley.edu/pubs/downloads/sis/

Cmq, vedendo gli esempi e le slide di un prof di Verona, sembra corretto.

Hai provato a farlo con abc?
http://www.eecs.berkeley.edu/~alanmi/abc/
È sviluppato dallo stesso gruppo di ricerca che ~20 anni fa fece SIS.

shottyno
06-01-2015, 12:41
:( non ti dico quante ne sto passando con SIS su win 8.1 a 64 bit :( ho dovuto eseguirlo su un win 7 a 32 bit per avere altri errori durante la lettura del file :muro:
Adesso ho provato ABC ma sembra che non abbia i comandi giusti; difatti, leggendo il file blif dell'esercizio, mi salta le righe di start_kiss, .i , .o , ecc.

Grazie mille per l'aiuto :D l'importante è che il file blif che ho scritto sia corretto...dato che la prova sarà scritta e quindi non devo necessariamente farlo funzionare da PC :D

Un'ultima domanda: Ma cosa sono le "eventuali sovrapposizioni" dell'esercizio?:mbe:

ingframin
06-01-2015, 21:17
:( non ti dico quante ne sto passando con SIS su win 8.1 a 64 bit :( ho dovuto eseguirlo su un win 7 a 32 bit per avere altri errori durante la lettura del file :muro:
Adesso ho provato ABC ma sembra che non abbia i comandi giusti; difatti, leggendo il file blif dell'esercizio, mi salta le righe di start_kiss, .i , .o , ecc.

Grazie mille per l'aiuto :D l'importante è che il file blif che ho scritto sia corretto...dato che la prova sarà scritta e quindi non devo necessariamente farlo funzionare da PC :D

Un'ultima domanda: Ma cosa sono le "eventuali sovrapposizioni" dell'esercizio?:mbe:

La sequenza 1011 genera 0001.
La possibilità di sovrapposizione significa che la sequenza 1011011011 da in uscita 0001001001.
In pratica sequenze sovrapposte devono essere riconoscibili.
È facile da fare, basta aggiungere uno stato aggiuntivo tra quello che riconosce l'ultimo 1 e lo stato iniziale. A quel punto se il bit successivo all'ultimo bit di sequenza è 0 salti direttamente allo stato successivo a quello di partenza, altrimenti torni a quello di partenza.
Io sono abbastanza arrugginito con gli automi a stati finiti, non sono neanche sicuro che lo stato in più non ti sparisca quando fai la minimizzazione.

Metto una tabella che mi spiego meglio:

Stato 0 1
S0 S0,0 S1,0
S1 S2,0 S1,0
S2 S0,0 S3,0
S3 S2,0 S4,1
S4 S2,0 S1,0


Spero che la tabella si capisca: Ho messo lo stato di partenza e nelle colonne per in=0 o in=1 ho messo Sarrivo, valoredi z.

shottyno
06-01-2015, 23:30
Insomma la sovrapposizione è quando posso immettere una sequenza tipo 1011011011...
mentre non è sovrapposto quando posso immettere 101110111011...
giusto?
Quindi soltanto se mi si chiede di non ottenere sovrapposizioni devo inserire lo stato aggiuntivo come hai spiegato?

Grazie mille davvero per l'aiuto comunque:D

ingframin
07-01-2015, 05:38
Insomma la sovrapposizione è quando posso immettere una sequenza tipo 1011011011...
mentre non è sovrapposto quando posso immettere 101110111011...
giusto?

Giusto

Quindi soltanto se mi si chiede di non ottenere sovrapposizioni devo inserire lo stato aggiuntivo come hai spiegato?

Grazie mille davvero per l'aiuto comunque


No, è il contrario: lo stato aggiuntivo che ho messo ti serve per gestire la sovrapposizione, altrimenti 4 stati sono sufficienti.

Prego, in fondo siamo in un forum di nerd, ci piace armeggiare con queste cose :D

shottyno
07-01-2015, 20:20
Tutto chiaro :D :D :D
Grazie mille!!! Se me ne esco con un 30 (ma anche un 18) hai il caffè pagato!! hahahah :p
...Ora mi tocca cominciare con l'assembly :cry:

ingframin
09-01-2015, 10:08
Tutto chiaro :D :D :D
Grazie mille!!! Se me ne esco con un 30 (ma anche un 18) hai il caffè pagato!! hahahah :p
...Ora mi tocca cominciare con l'assembly :cry:

Caro ti costa 'sto caffé...
Dai che Assembly non è difficile, anzi...
ma tu studi elettronica o informatica?