Altifigence Academy
Progettazione digitaleGratuito · Introduttivo

Circuiti logici digitali

Dai segnali digitali e dalle porte AND, OR, XOR alla progettazione di circuiti combinatori, latch, flip-flop, contatori e macchine a stati. Collegate tabelle, formule, circuiti e forme d’onda e verificate con esercitazioni RTL. Gli approfondimenti facoltativi estendono il percorso ai datapath e alle interfacce.

Logica combinatoria e sequenzialeSystemVerilogAnalisi delle forme d’onda
Il mio apprendimento

Che cosa imparerai

  • Distinguere valori logici e tensioni e spiegare tabelle, simboli e circuiti equivalenti di otto tipi di porte.
  • Progettare circuiti combinatori dalla specifica con SOP, POS e mappe di Karnaugh e verificarli esaustivamente.
  • Definire condizioni d’ingresso e confini di encoder, decoder, MUX, DEMUX, sommatori e comparatori.
  • Distinguere latch e flip-flop e progettare le regole di aggiornamento di reset, enable e clock.
  • Implementare contatori, shift e macchine a stati in RTL e analizzare timing, ingressi asincroni e debounce.
  • Verificare con riferimenti indipendenti e completare un rilevatore di pattern 101 sovrapposti.
  • Estendere il percorso ad ALU, memorie, FIFO, pipeline e interfacce negli approfondimenti facoltativi.

Prima di iniziare

Gli esercizi nel browser usano modelli didattici e non compilano né eseguono HDL. Per eseguire il codice separatamente, segui la guida Digital Design Studio del tuo sistema operativo e accedi quando l’operazione lo richiede.

Installazione e primo avvio ↗ · Download ↗

Programma

  1. Segnali digitali e rappresentazione dei numeri
    • Segnali digitali: quando una tensione rappresenta 0 o 1Concetto

      Distinguere valori logici e tensioni e calcolare soglie d’ingresso, margini di rumore e ritardi di propagazione.

    • Sistemi numerici e rappresentazioni a larghezza fissaConcetto

      Oltre alla conversione di base, calcolare intervalli rappresentabili, bit necessari ed errori di troncamento.

  2. Porte logiche e tabelle di verità
    • Porte fondamentali: AND, OR, NOT e BUFFERConcetto

      Collegare simboli e tabelle di verità e comporre condizioni con più porte.

    • Leggere NAND, NOR e i simboli d’inversioneConcetto

      Distinguere l’ambito della negazione e collegare simboli e formule equivalenti tramite De Morgan.

    • XOR e XNOR: uguaglianza, differenza e paritàConcetto

      Distinguere XOR a due ingressi e parità a più ingressi e spiegare i limiti della rilevazione degli errori.

    • Porte universali: costruire circuiti con sole NANDConcetto

      Dimostrare costruttivamente la completezza funzionale di NAND e NOR e verificare i segnali intermedi di XOR.

  3. Dalle formule logiche al progetto dei circuiti
    • Algebra booleana, equivalenza e costo d’implementazioneConcetto

      Trasformare circuiti con De Morgan e fattorizzazione, distinguendo equivalenza logica e temporizzazione.

    • Dalla tabella alle formule: mintermini, maxtermini, SOP e POSConcetto

      Derivare la stessa funzione dalle righe a 1 e a 0 e collegarla alla notazione delle mappe di Karnaugh.

    • Mappe di Karnaugh e condizioni dei don’t-careConcetto

      Semplificare con l’adiacenza Gray ed esplicitare le ipotesi sugli ingressi inutilizzati.

    • Esercitazione: dalla specifica alla maggioranza a tre ingressiEsercitazione

      Convertire una specifica testuale in una tabella completa e collegare minimizzazione, realizzazione e verifica esaustiva.

  4. Indirizzamento e circuiti di selezione
    • Decoder, selezione one-hot e ingressi validiConcetto

      Convertire indirizzi binari in selezioni e progettare enable, intervalli e invarianti.

    • Encoder e priorità: scegliere fra più richiesteConcetto

      Distinguere l’ipotesi one-hot dai risultati di un encoder prioritario: valid e selezione.

    • DEMUX e decoder: inviare dati sul percorso selezionatoConcetto

      Confrontare direzioni e ruoli di MUX, DEMUX e decoder e verificare le condizioni one-hot e «al massimo un 1».

    • Segnali e porte: contratto di larghezza, direzione e tempoConcetto

      Leggere le interfacce distinguendo i criteri di verifica delle uscite combinatorie e di stato.

    • Dalla tabella di verità a MUX ed espansione di ShannonConcetto

      Derivare la selezione e decomporre funzioni logiche generali con MUX.

  5. Aritmetica e confronti
    • Sommatori e propagazione del riportoConcetto

      Derivare le formule del sommatore completo e analizzare funzione, larghezza e ritardo del ripple-carry.

    • Complemento a due, estensione del segno e overflowConcetto

      Distinguere interpretazione signed e overflow dell’addizione con formule e controesempi.

    • Comparatori e specifiche dei valori limiteConcetto

      Distinguere confronti unsigned e signed degli stessi bit e verificare le condizioni limite.

  6. Latch, flip-flop e memoria dello stato
    • L’inizio della memoria: retroazione e latch SR/DConcetto

      Comprendere i due stati stabili dell’accoppiamento e spiegare ingressi SR vietati e trasparenza del latch D.

    • Flip-flop D: dal livello al fronteConcetto

      Confrontare l’aggiornamento di latch e flip-flop collegandolo a registri, setup e hold.

    • Flip-flop, enable e priorità di controlloConcetto

      Definire mantenimento, caricamento e reset come stato successivo ed evitare clock gating involontario.

    • Transizioni sincrone e ruolo del clockConcetto

      Interpretare un sistema sincrono come registri che leggono lo stesso stato precedente.

  7. Implementazione e verifica RTL del MUX
    • Latenza della selezione combinatoria e delle uscite registrateConcetto

      Analizzare come cambiano interfaccia e latenza quando si registra il risultato del MUX.

    • RTL combinatorio e assegnazioni completeConcetto

      Esprimere la stessa funzione con operatore condizionale e always_comb e trovare omissioni che generano latch.

    • Laboratorio: verifica esaustiva del MUX e uscita registrataEsercitazione

      Applicare gli stessi ingressi ai percorsi combinatorio e registrato e verificarli con tabella e istante di campionamento.

    • Campionamento e causalità nelle forme d’ondaConcetto

      Leggere le forme d’onda separando assestamento combinatorio, acquisizione e ordine degli eventi.

    • Verifica del MUX: esaustività e proprietàConcetto

      Verificare separatamente copertura combinatoria e memoria e minimizzare i controesempi.

    • Verifica del progetto: equivalenza della selezione e osservazioneVerifica

      Distinguere verifiche basate sulla sola tabella da quelle che richiedono osservazione del clock.

  8. Contatori e aggiornamento sincrono dello stato
    • Numero di stati, larghezza del contatore e codici inutilizzatiConcetto

      Ricavare la larghezza dal campo di conteggio e definire il recupero degli stati invalidi.

    • Stato successivo del contatore e priorità del resetConcetto

      Unire incremento, mantenimento, reset e ritorno in una specifica e calcolare ogni fronte.

    • Assegnazioni non bloccanti e aggiornamento simultaneoConcetto

      Separare valori precedenti e successivi per leggere correttamente pipeline e contatori.

    • Laboratorio: reset, ritorno e invarianti del contatoreEsercitazione

      Confrontare ogni fronte con un riferimento e separare effetti di inizializzazione, reset e larghezza.

    • Contatori modulari, saturanti e impulso terminaleConcetto

      Progettare la gestione del massimo e il ciclo esatto del terminal count.

    • Debug del contatore e controesempi minimiConcetto

      Progettare test brevi che distinguano errori di reset, enable e ritorno.

    • Verifica del progetto: larghezza, priorità e ritornoVerifica

      Valutare confini e controlli simultanei dalla specifica delle transizioni.

  9. Registri a scorrimento e flusso dati
    • Indici dei vettori, ordine dei bit e segnoConcetto

      Leggere il datapath separando numerazione, ordine seriale e interpretazione aritmetica.

    • Ingresso seriale e confini dei frameConcetto

      Definire ordine e fronti validi e calcolare la disposizione nella conversione seriale-parallela.

    • Equazioni di stato del registro a scorrimentoConcetto

      Esprimere lo scorrimento come transizione vettoriale e collegare profondità e latenza.

    • Larghezze di slice, concatenazione e ripetizioneConcetto

      Costruire datapath calcolando larghezza complessiva e conservazione del valore.

    • Laboratorio: movimento seriale e ordine dei bitEsercitazione

      Verificare direzione, bit persi e latenza dopo reset con sequenze binarie e riferimento intero.

    • Distinguere latenza in cicli e throughputConcetto

      Definire il riferimento di una linea a N stadi e calcolare latenza e throughput.

    • Verifica dello scorrimento e allineamento dati-validConcetto

      Rilevare errori nascosti da schemi simmetrici e disallineamenti di valid di un ciclo.

    • Verifica del progetto: latenza, allineamento e conservazioneVerifica

      Verificare direzione, numero di spostamenti validi e riferimento d’osservazione.

  10. Timing, ingressi reali e macchine a stati
    • Setup, hold e bilancio temporaleConcetto

      Separare cammini massimi e minimi e calcolare hold indipendentemente dalla frequenza.

    • Hazard logici e limiti delle formule equivalentiConcetto

      Analizzare come circuiti equivalenti a regime producano transitori diversi per i ritardi.

    • Confini dei domini di clock e metastabilitàConcetto

      Comprendere i limiti della sincronizzazione a due stadi distinguendo bit, impulsi brevi e bus.

    • Pulsanti reali: sincronizzazione, debounce e singolo eventoConcetto

      Distinguere sincronizzazione e rimbalzi e progettare debounce su campioni consecutivi.

    • Macchine a stati: separare stato, transizioni e usciteConcetto

      Costruire FSM da tabelle e confrontare Moore/Mealy, stati illegali e politica delle richieste.

    • Piano di verifica, coverage e riferimenti indipendentiConcetto

      Distinguere test superati e specifica soddisfatta collegando confini, incroci e controesempi.

    • Progetto integrato: rilevatore di 101 sovrappostiConcetto

      Applicare minimizzazione dello stato, validità, uscita registrata e verifica indipendente.

  11. Approfondimento facoltativo · datapath aritmetici
    • ALU e flag zero, negative, carry e overflowConcetto

      Realizzare ADD/SUB con un sommatore condiviso e derivare confronti separando carry e overflow.

    • Barrel shifter e MUX a stadiConcetto

      Realizzare shift variabili con stadi MUX 1/2/4/8, direzione condivisa, segno e distanze fuori campo.

    • Virgola fissa, arrotondamento e saturazioneConcetto

      Definire il campo W, F e progettare ties-to-even con guard/sticky e saturazione successiva.

    • Moltiplicatore unsigned shift-add multicicloConcetto

      Accumulare prodotti parziali in W clock verificando accettazione, fine, ultimo accumulo, larghezza e invariante.

  12. Approfondimento facoltativo · memorie e FIFO
    • Memoria sincrona e contratto delle collisioniConcetto

      Definire risposta registrata, read-first/write-first/no-change e responsabilità distinte di valid e inizializzazione.

    • File di registri con due letture, una scrittura e bypassConcetto

      Implementare letture indipendenti e scrittura sincrona verificando bypass, inizializzazione e valid.

    • Puntatori e politiche di confine della FIFO a clock singoloConcetto

      Implementare puntatori e occupazione di quattro posti e definire accettazione simultanea a vuoto/pieno.

    • Piano di verifica FIFO/memorie e scoreboard indipendenteConcetto

      Costruire un riferimento queue indipendente dai puntatori e pianificare confini, reset, valid e letture non inizializzate.

  13. Approfondimento facoltativo · pipeline e interfacce
    • Ready/valid e buffer elastico da un postoConcetto

      Progettare trasferimenti senza perdite o duplicazioni e ingressi/uscite simultanei con arresti.

    • Pipeline moltiplicazione-addizione e allineamentoConcetto

      Suddividere ai registri mantenendo dati, valid e operandi ausiliari nella stessa transazione.

    • Pipeline arrestabile e backpressureConcetto

      Calcolare ready per stadio evitando perdite, duplicazioni e ricalcoli durante stop e avanzamenti simultanei.

    • Interfaccia registri e istante degli effettiConcetto

      Specificare indirizzi, byte e stop di risposta affinché ogni accettazione produca un solo effetto.

    • Laboratorio integrato: trasmettitore UART e tempi del frameConcetto

      Unire divisore, registro e controllo di flusso per 8N1 verificando i confini dei bit.

La scelta vale per questo browser. Puoi modificarla in qualsiasi momento dal piè di pagina.