Banco de pruebas
Parte de la sección Fundamentos del Journey de Verilog de Coddy. Lección 90 de 90.
Desafío
Un testbench proporciona entradas a tu diseño y crea un archivo de formas de onda. No tiene puertos propios.
Tu tarea
Crea un testbench que:
- Declare
regparaclk,startydata_in(8 bits) - Declare
wireparatxywire [3:0]paracnt - Instancie el módulo
uart_tx, conectando todos los puertos:.clk,.start,.data_in,.tx,.cnt - Genere un reloj (alternándolo cada 5 unidades de tiempo)
- Dentro de un bloque
initial:- Cree un archivo de formas de onda llamado
uart.vcdusando$dumpfiley$dumpvars - Establezca
clk = 0,start = 1,data_in = 8'b01000001en el tiempo 0 - Libere
startdespués de 10 unidades de tiempo (start = 0) - Después, espere otras 200 unidades de tiempo y llame a
$finish(por lo que la simulación termina en el tiempo 210)
- Cree un archivo de formas de onda llamado
Después de ejecutar el testbench, abra la forma de onda para verificar la señal tx.
Pruébalo tú mismo
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 las lecciones de Fundamentos
1Introducción
Qué es VerilogHardware frente a softwareTu primer móduloComentariosNiveles de abstracción del diseño4Operadores, parte 1
Operadores aritméticosOperador móduloOperadores de comparaciónRepaso: matemáticas simplesOperadores bit a bit7Asignaciones y compuertas
Asignación continuaAsignación con operadoresPrimitivas de compuertas integradasCompuertas AND, OR y NOTCompuertas XOR y XNORRepaso: circuito de compuertas lógicas10Toma de decisiones
Sentencia IfIf - ElseRepaso - Comparador simpleSentencia CaseCasex y CasezRepaso - Diseño de ALU5Operadores, parte 2
Operadores lógicosOperadores de reducciónOperadores de desplazamientoOperador de concatenaciónOperador condicionalRepaso: desafío de operadores11Bucles
Bucle ForBucle WhileBucle de repeticiónBucle infinitoInstrucción DisableRepaso: patrones de bucles3Sistema numérico
Representación binariaNúmeros con tamañoNúmeros sin tamañoNúmeros negativosValores especiales X y ZRepaso: formatos numéricos6Módulos
Estructura de módulosPuertos de entrada y salidaPuertos inoutInstanciación de módulosAsignación de puertos por nombreAsignación de puertos por ordenRepaso: construir un móduloPractica por tu cuenta: Compilador de Verilog online