Testbench
Fa parte della sezione Fondamenti del percorso Verilog di Coddy. Lezione 90 di 90.
Sfida
Un testbench fornisce input al tuo progetto e crea un file della forma d’onda. Non ha porte proprie.
Il tuo compito
Crea un testbench che:
- Dichiara
regperclk,startedata_in(8 bit) - Dichiara
wirepertxewire [3:0]percnt - Istanzia il modulo
uart_tx, collegando tutte le porte:.clk,.start,.data_in,.tx,.cnt - Genera un clock (commuta ogni 5 unità di tempo)
- All’interno di un blocco
initial:- Crea un file della forma d’onda denominato
uart.vcdusando$dumpfilee$dumpvars - Imposta
clk = 0,start = 1,data_in = 8'b01000001al tempo 0 - Disattiva
startdopo 10 unità di tempo (start = 0) - Poi attende altre 200 unità di tempo e chiama
$finish(così la simulazione termina al tempo 210)
- Crea un file della forma d’onda denominato
Dopo aver eseguito il testbench, apri la forma d’onda per verificare il segnale tx.
Provalo tu
module uart_tx (
input clk,
input start,
input [7:0] data_in,
output reg tx,
output reg [3:0] cnt
);
reg [9:0] shift_reg;
initial begin
cnt = 0;
tx = 1;
shift_reg = 0;
end
always @(posedge clk) begin
if (cnt == 0 && start) begin
shift_reg <= {1'b1, data_in, 1'b0};
cnt <= 1;
end
else if (cnt > 0 && cnt < 9) begin
tx <= shift_reg[0];
shift_reg <= shift_reg >> 1;
cnt <= cnt + 1;
end
else if (cnt == 9) begin
tx <= shift_reg[0];
shift_reg <= shift_reg >> 1;
cnt <= 0;
end
end
endmoduleTutte 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