Testbench
Parte da seção Fundamentos do Journey de Verilog da Coddy. Lição 90 de 90.
Desafio
Um testbench fornece entradas ao seu design e cria um arquivo de forma de onda. Ele não possui portas próprias.
Sua tarefa
Crie um testbench que:
- Declare
regparaclk,startedata_in(8 bits) - Declare
wireparatxewire [3:0]paracnt - Instancie o módulo
uart_tx, conectando todas as portas:.clk,.start,.data_in,.tx,.cnt - Gere um clock (alternância a cada 5 unidades de tempo)
- Dentro de um bloco
initial:- Crie um arquivo de forma de onda chamado
uart.vcdusando$dumpfilee$dumpvars - Defina
clk = 0,start = 1,data_in = 8'b01000001no tempo 0 - Libere
startapós 10 unidades de tempo (start = 0) - Em seguida, aguarde mais 200 unidades de tempo e chame
$finish(assim, a simulação termina no tempo 210)
- Crie um arquivo de forma de onda chamado
Após executar o testbench, abra a forma de onda para verificar o sinal tx.
Experimente você mesmo
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
endmoduleTodas as lições de Fundamentos
1Introdução
O que é VerilogHardware vs. SoftwareSeu primeiro móduloComentáriosNíveis de abstração de projeto4Operadores Parte 1
Operadores aritméticosOperador móduloOperadores de comparaçãoRecapitulação - Matemática simplesOperadores bit a bit7Atribuições e Portas
Atribuição ContínuaAtribuição com OperadoresPrimitivas de Portas IntegradasPortas AND, OR e NOTPortas XOR e XNORRecapitulação - Circuito de Portas Lógicas10Tomada de Decisões
Declaração IfIf - ElseRevisão - Comparador SimplesDeclaração CaseCasex e CasezRevisão - Projeto de ALU2Tipos de Dados
Tipo WireTipo RegInteiro e RealVetoresArraysParâmetrosRecapitulação - Declarar Sinais5Operadores - Parte 2
Operadores lógicosOperadores de reduçãoOperadores de deslocamentoOperador de concatenaçãoOperador condicionalRevisão - Desafio de operadores3Sistema Numérico
Representação BináriaNúmeros com Tamanho DefinidoNúmeros sem Tamanho DefinidoNúmeros NegativosValores Especiais X e ZRevisão - Formatos Numéricos6Módulos
Estrutura de MódulosPortas de Entrada e SaídaPortas InoutInstanciação de MódulosMapeamento de Portas por NomeMapeamento de Portas por OrdemRecapitulação — Construindo um MóduloPratique por conta própria: Compilador de Verilog online