Contatore di bit
Fa parte della sezione Fondamenti del percorso Verilog di Coddy. Lezione 87 di 90.
Sfida
In questo capitolo costruirai un trasmettitore UART passo dopo passo. UART sta per Universal Asynchronous Receiver-Transmitter. È un semplice protocollo hardware che consente a due dispositivi di comunicare usando un solo filo (per trasmettere) e un altro filo (per ricevere).
Immaginalo come due persone che parlano al telefono: una parla (trasmette), l’altra ascolta (riceve). UART invia i dati un bit alla volta, con bit di avvio e di arresto che indicano l’inizio e la fine di ogni byte.
Un trasmettitore UART invia 10 bit: bit di avvio (1), bit di dati (8), bit di arresto (1). Per tenere traccia del bit che stiamo inviando, ci serve un contatore di bit che conti da 0 a 10.
Come funziona il contatore di bit
- Inizia da 0
- A ogni ciclo di clock, aggiungi 1
- Quando raggiunge 10, torna a 0
- Ripeti all’infinito
In questa attività non lo azzereremo ancora: lo incrementeremo soltanto.
Cosa fare:
- Crea un modulo chiamato
uart_txcon:- Un input:
clk - Un output:
cnt(4 bit, di tiporeg)
- Un input:
- All’interno del modulo:
- Imposta
cnta 0 all’inizio, all’interno di un blocco initial - Aggiungi un blocco
always @(posedge clk) - Fai in modo che
cntaumenti di 1 a ogni fronte di clock
- Imposta
Provalo tu
// TODO: Crea il modulo uart_tx con ingresso clk e uscita cnt (4 bit)
// TODO: Imposta cnt a 0 all'avvio all'interno di un blocco initial
// TODO: Aggiungi un blocco always @(posedge clk)
// TODO: Incrementa cntTutte le lezioni di Fondamenti
1Introduzione
Cos'è VerilogHardware e software a confrontoIl tuo primo moduloCommentiLivelli di astrazione della progettazione4Operatori - Parte 1
Operatori aritmeticiOperatore moduloOperatori di confrontoRiepilogo - Matematica sempliceOperatori bitwise7Assegnazioni e porte
Assegnazione continuaAssegnazioni con operatoriPrimitive di porte integratePorte AND, OR e NOTPorte XOR e XNORRiepilogo: circuito con porte logiche10Decisioni
Istruzione ifIf-ElseRiepilogo - Comparatore sempliceIstruzione caseCasex e casezRiepilogo - Progettazione di una ALU5Operatori Parte 2
Operatori logiciOperatori di riduzioneOperatori di scorrimentoOperatore di concatenazioneOperatore condizionaleRiepilogo - Sfida sugli operatori3Sistema numerico
Rappresentazione binariaNumeri con dimensione specificataNumeri senza dimensione specificataNumeri negativiValori speciali X e ZRiepilogo - Formati numerici6Moduli
Struttura di un moduloPorte di input e outputPorte InoutIstanziazione di un moduloMappatura delle porte per nomeMappatura delle porte per ordineRiepilogo - Costruire un modulo9Blocchi procedurali
Blocco alwaysBlocco initialLista di sensibilitàAssegnazione bloccanteAssegnazione non bloccanteRiepilogo: always vs initial12Progetto Multiplexer
Progettazione di un mux da 2 a 1Progettazione di un mux da 4 a 1Esercitati da solo: Compilatore Verilog online