1) Vorrei capire a fondo il funzionamento di determinati segnali;
        prendendo ad esempio il contatore, come si utilizzano esattamente TC,
        LE, CLR? Cioè, come viene generato il TC? 
       
      Il TC viene generato semplicemente decodificando il conteggio terminale
      del contatore: in un contatore up modulo N, esso sara' la decodifica del
      conteggio N-1; in un contatore down modulo N, esso sara' la decodifica del
      conteggio 0, qualunque sia N. 
      Il TC puo' essere o meno condizionato al CE (Count Enable) del
      contatore. (Nei contatori reali disponibili in commercio, spesso esistono
      due CE, ad uno solo dei quali il TC e' condizionato; il contatore e'
      abilitato al conteggio solo se entrambi i due CE sono attivi.) Questa
      proprieta' e' legata all'uso che si fa del TC. Ad esempio, se vogliamo
      connettere due o piu' contatori in cascata, collegheremo il TC di ogni
      contatore al CE del contatore successivo -- ma in tal caso, per il
      corretto funzionamento del tutto, il TC di ogni contatore deve esere
      condizionato al proprio CE. Se invece vogliamo usare il TC per bloccare il
      contatore una volta che esso e' arrivato al massimo conteggio, allora
      connettiamo il TC negato al CE -- ma in tal caso e' evidente che TC non
      deve essere condizionato al CE, altrimenti il loop CE - TC - invertitore -
      CE entrerebbe in oscillazione! 
      
        Posso assumere che esso resta alto per tutto il periodo il cui il
        contatore è nell'ultimo stato? 
       
      Certamente, essendo appunto la decodifica di un particolare conteggio. 
      
        Ma, essendo un segnale 'sporco' per cosa posso usarlo
        effettivamente? 
       
      Ad esempio per inviarlo all'Enable di un registro D, o al Count Enable
      di un altro contatore, perche' in questi casi il segnale viene campionato
      solo all'arrivo del clock, e dunque si spera che nel frattempo il TC si
      sia assestato. 
      
        LE è un segnale sincrono, quindi potrei mandare il TC
        nell'ingresso di LE senza aver problemi? 
       
      Nei contatori commerciali LE si trova sia sincrono che asincrono, senza
      una netta prevalenza dell'uno o dell'altro. Per questa ragione, e' bene
      specificare *sempre* nei progetti quale caso si sta assumendo. 
      
        Il CLR invece, è sempre asincrono oppure può anche essere
        sincrono? 
       
      Normalmente e' asincrono; in rari casi, se la cosa ci puo' far comodo,
      possiamo assumere che sia sincrono. (E' opportuno specificare sempre, nel
      progetto, se ci troviamo in uno di questi "rari casi" oppure
      no.) 
      
        Poiché CLR è asincrono, mandare TC nel suo ingresso mi può
        creare problemi, giusto? Mi renderebbe instabile (di breve durata)
        l'ultimo stato del contatore, giusto? 
       
      Si', ma non e' detto che questo sia dannoso. Come ho fatto vedere a
      lezione nel caso generale, la decodifica di un conteggio M inviata al
      Clear asincrono consente di realizzare in maniera semplice un contatore di
      modulo M-1. Normalmente non ci sono problemi, salvo quando la frequenza di
      clock diventa eccessivamente alta e allora la durata di quello stato
      "instabile" diventa significativa. 
      
        Poiché il CE è sincrono, potrei usare tranquillamente il TC di
        un contatore per abilitare il CE di un altro contatore, giusto? 
       
      Esatto, ne abbiamo parlato anche sopra. 
      
        Può darmi dei consigli, delle 'dritte' (del tipo "cosa non
        fare mai..." o "quando conviene usare un determinato
        segnale...", ecc..), su come utilizzare al meglio i vari segnali
        sincroni e non? 
       
      Non e' facile dire, cosi' su due piedi. I segnali di controllo
      asincroni agiscono immediatamente, mentre quelli sincroni hanno effetto
      solo all'arrivo del clock; l'uno e l'altro effetto possono essere sia
      vantaggiosi che svantaggiosi, a seconda delle circostanze. 
      Un caso che mi sento di mettere in evidenza, perche' appare molto
      spesso ma altrettanto spesso viene trattato con superficialita', e' quello
      di un segnale della durata di un clock che viene applicato al Clear
      asincrono di un contatore per farlo ripartire (tipico segnale di Start).
      In questo caso c'e' da fare molta attenzione, poiche', se si analizza la
      situazione, si vedra' che lo stato 0 del contatore permane per *due*
      periodi di clock: non appena viene applicato il segnale, il contatore
      passa immediatamente a 0, poi arriva un clock e il segnale scompare subito
      dopo, e il contatore passera' al conteggio 1 soltanto dopo il prossimo
      clock! 
      
        2) Relativamente ai FF di tipo edge-triggered ed ai FF Latch: a
        parte il fatto che l'edge-triggered è sensibile solo sul fronte (salita
        o discesa) mentre il latch è sensibile su tutto lo stato di
        "1" del segnale di gate, ci sono altre differenze sostanziali? 
       
      No, non vi sono altre differenze sostanziali, non dal punto di vista
      logico, almeno. 
      
        In particolare, su quali tipi di connessioni viene preferito il
        latch all'edge-triggered e viceversa? 
       
      Il latch viene usato quando il segnale di caricamento non e' legato a
      un clock, oppure quando il clock a cui esso e' sincronizzato non e'
      disponibile. In tutti i casi in cui invece tale clock e' disponibile, e'
      raccomandabile usare il D-FF -- a meno che non sia necessario che il dato
      da catturare venga presentato immediatamente all'uscita. Tipicamente, il
      latch viene usato lato interfaccia; all'interno del circuito, dove tutto
      e' (o dovrebbe essere) sotto il controllo del progettista, raramente vi
      sono ragioni per non usare il D-FF. 
      
        So che nei sistemi che progettiamo in questo corso utilizziamo un
        solo clock di tipo a fronte; 
       
      Non e' detto. Possono anche capitare (sono capitati) progetti che
      richiedono l'uso di due o piu' clock distinti. 
      
        i latch li usiamo come registri di interfaccia (data-buffer) con i
        microprocessori (solo per le periferiche di output del microprocessore,
        giusto?), 
       
      Beh, si', le porte di input (in uscita dall'interfaccia) sono sotto il
      nostro controllo, e dunque, come ho detto sopra, raramente vi sono ragioni
      per usare latch. 
      
        di cui si può utilizzare l'AND tra i segnali IOWR e SEL come
        ingresso di sincronizzazione (gate) del latch. L'uscita del latch può
        essere collegata all'ingresso di un registro interno allo SCA
        sincronizzato con il clock del sistema. C'è altro? 
       
      Direi di no. 
      
        3) Slide di Chiari, Parte 1 - Reti Combinatorie - slide 87: in
        riferimento ai due schemi a fondo pagina che implementano le due
        funzioni cablate, ho capito che si usano porte normali prive della
        resistenza, in quanto viene utilizzata un'unica resistenza di pull-up
        sul bus che è in comune per tutte le porte connesse al bus, ma: la
        prima figura sembra un NOR, ma accanto c'è scritto NOR CABLATO, OR
        CABLATO, AND CABLATO, perchè? la seconda sembra una funzione espressa
        come OR di AND e poi negata, ma accanto c'è scritto NOR CABLATO, OR
        CABLATO, AND CABLATO, perchè? Come funzionano esattamente queste
        funzioni 'cablate'? 
       
      Intanto qui sono buffer tri-state, un po' diversi dalle porte normali
      prive di resistenza (meglio: prive dello stadio di uscita superiore che
      forza il livello "1" sull'uscita). Il funzionamento di queste
      "porte" e' molto semplice: 
      (a) se l'abilitazione del singolo buffer tri-state e' a 1, allora il
      livello logico presente al suo ingresso viene trasferito sull'uscita; 
      (b) se l'abilitazione del singolo buffer tri-state e' a 0, allora il
      livello logico presente al suo ingresso e' irrilevante e la sua uscita
      (essendo ad alta impedenza) non da' alcun contributo al livello logico
      presente sull'uscita della "porta"; 
      (c) se tutti buffer tri-state hanno i rispettivi Enable a 0, allora il
      livello di uscita viene determinato dalla tensione connessa al resistore
      di carico (che verra' chiamato di "pull-up" se la tensione e'
      positiva, e di "pull-down" se il resistore e' collegato a massa
      o a una tensione negativa) 
      Il comportamento della prima "porta", quella identificata
      come "NOR cablato", che ha buffer tri-state con ingressi a 0 e
      un resistore connesso a una tensione positiva, e' allora il seguente: 
      (a) se tutti gli Ei stanno a 0, allora l'uscita e' 1 
      (b) se almeno un Ei sta ad 1, allora l'uscita e' 0 
      che e' esattamente il comportamento di un NOR. 
      Il comportamento della seconda "porta", quella identificata
      come "OR cablato", che ha buffer tri-state con ingressi a 1 e un
      resistore connesso a una tensione negativa, e' invece il seguente: 
      (a) se tutti gli Ei stanno a 0, allora l'uscita e' 0 
      (b) se almeno un Ei sta ad 1, allora l'uscita e' 1 
      che e' esattamente il comportamento di un OR. 
      Il termina "cablato" significa che una particolare funzione
      logica di piu' ingressi viene realizzata semplicemente
      "cablando" tra di loro in parallelo le uscite di piu' circuiti. 
      
        4) Libro Reti Combinatorie. 
         
        A) Pag. 98, paragrafo III.3.5: dobbiamo studiare anche la logica
        steering dinamica? Se sì, come funziona? 
       
      No, non dobbiamo studiarla; non l'abbiamo fatta a lezione, dunque non
      si porta all'esame. (Peccato, era una cosa interessante...) 
      
        B) Pag. 115 [errate corrige?]: la seconda formula in questa pagina
        è la seguente: 
            f1 = I1 + I3 ; f2 = yz + x ; f3 = I1 + I2 
        ma non dovrebbe essere: 
        f1 = I1 + I2 ; f2 = yz + x ; f3 = I1 + I3 
       
      E' esatto, c'e' evidentemente un errore di stampa. 
      
        C) Pag. 132, figura V.6 [errate corrige]: già le avevo mostrato
        questa figura ed avevamo appurato che gli indici non erano corretti;
        comunque gliela segnalo nuovamente nel caso in cui volesse correggerli
        per l'eventuale errata corrige. 
       
      La copia del testo che io ho e' quella temporaneamente cedutami dal
      Prof. Cioffi, che ha gia' apportato parecchie correzioni a matita sugli
      indici nella figura in questione. Purtroppo, questo comporta che non
      riesco a leggere le espressioni per gli indici prima della correzione, e
      leggo con difficolta' quelle dopo la correzione. Se potesse mandarmi una
      scansione a risoluzione relativamente alta della figura, posso vedere di
      mettere a posto la cosa. 
      
        D) Pag. 142 [errate corrige?]: Alla 3° riga non mi torna la frase
        "La struttura completa di un moltiplicatore 5 x 5 è riportata in
        fig. V.16." ... la figura V.16 non mostra un moltiplicatore 5 x 5
        ....; inoltre la struttura non mi sembra completa...vedo solo il
        circuito per addizionare i prodotti parziali, ma non la matrice dei
        prodotti parziali... 
       
      Infatti, e' un generico moltiplicatore n x n. 
      
        5) Libro Reti Sequenziali. 
        A) Pag. 19 [errate corrige?]: relativamente alla seconda matrice in
        questa pagina, se ho capito bene  come funziona, all'incrocio (riga
        - colonna) B - C non dovrebbe essere 0 ? 
       
      Si', ma personalmente sono portato a ritenere che invece sia sbagliata
      la Fig. 1-13. Se ci fa caso, dallo stato A si esce con ingresso 0 sia
      verso lo stato B (con uscita 0) sia verso lo stato C (con uscita 1) -- il
      che e' impossibile (almeno per una macchina a stati finiti
      "deterministica"); la stessa cosa accade per lo stato C e
      l'ingresso 1 (e qui sono portato a ritenere che la freccia da C a B vada
      invertita, da cui segue che l'elemento della matrice delle adiacenze da
      lei citato abbia in realta' valore corretto). Temo che nella Fig. 1-13
      manchi qualche transizione, e/o che l'etichetta o la direzione di qualche
      transizione sia sbagliata. 
      
        B) Pag. 21, prime 6 righe: non riesco a capire perché l'uscita
        per una macchina di Mealy è disponibile dopo un tempo Tw, mentre per
        una macchina di Moore è disponibile dopo un tempo Tdelta + Tw ... 
       
      Basta osservare la Fig. 1-15 (pag. 20) per rendersi conto che, in una
      macchina di Mealy, una variazione in ingresso si propaga all'uscita
      passando attraverso il blocco omega (da cui Tw); mentre in una macchina di
      Moore, una variazione in ingresso deve prima provocare un cambio di stato
      (Tdelta) ed e' poi quest'ultimo che si propaga attraverso il blocco omega
      (da cui l'ulteriore tempo Tw). 
      
        C) Pag. 40 [errate corrige?]: in riferimento all'ultima riga della
        pagina, dove si ha "...alla rete è diventato sk, la macchina
        passerebbe in si.", non dovrebbe essere "...alla rete è
        diventato sk, la macchina passerebbe in sj."? 
       
      Si', secondo la tabella 2-3 la transizione avverrebbe in sj.  |