Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Verilog

Diseño de un Flip-Flop T en Verilog: Implementación RTL y Testbench

Diseño

module tff (
  input clk,
  input rstn,
  input t,
  output reg q
);
  always @ (posedge clk) begin
    if (!rstn) q <= 0;
    else if (t) q <= ~q;
    else q <= q;
  end
endmodule

Testbench

module tb;
  reg clk;
  reg rstn;
  reg t;
  tff u0 (
    .clk(clk),
    .rstn(rstn),
    .t(t),
    .q(q)
  );
  always #5 clk = ~clk;
  initial begin
    {rstn, clk, t} <= 0;
    $monitor ("T=%0t rstn=%0b t=%0d q=%0d", $time, rstn, t, q);
    repeat(2) @(posedge clk);
    rstn <= 1;
    for (integer i = 0; i < 20; i = i+1) begin
      reg [4:0] dly = $random;
      #(dly) t <= $random;
    end
    #20 $finish;
  end
endmodule

Registro de simulación

ncsim> run
T=0 rstn=0 t=0 q=x
T=5 rstn=0 t=0 q=0
T=15 rstn=1 t=0 q=0
T=19 rstn=1 t=1 q=0
T=25 rstn=1 t=1 q=1
T=35 rstn=1 t=1 q=0
T=43 rstn=1 t=0 q=0
T=47 rstn=1 t=1 q=0
T=55 rstn=1 t=0 q=1
T=59 rstn=1 t=1 q=1
T=65 rstn=1 t=1 q=0
T=67 rstn=1 t=0 q=0
T=71 rstn=1 t=1 q=0
T=75 rstn=1 t=0 q=1
T=79 rstn=1 t=1 q=1
T=83 rstn=1 t=0 q=1
T=87 rstn=1 t=1 q=1
T=95 rstn=1 t=0 q=0
La simulación finalizó vía $finish(1) en el tiempo 115 NS + 0

Verilog

  1. Dominar Verilog: Tutorial completo para diseño de circuitos digitales
  2. Dominar la concatenación en Verilog: Guía práctica
  3. Comprender las asignaciones en Verilog: tipos, sintaxis y mejores prácticas
  4. Bloqueante vs. No bloqueante en Verilog: Diferencias clave explicadas
  5. Dominar las funciones en Verilog para diseño RTL eficiente
  6. Comprender las Tasks en Verilog: Funciones vs Tasks, sintaxis y uso
  7. Generador de reloj en Verilog: Guía de diseño e implementación
  8. Dominar las funciones matemáticas en Verilog para diseño de hardware eficiente
  9. Dominar $timeformat en Verilog: Control de precisión y visualización
  10. Comprender e imprimir timescales de Verilog en cualquier alcance
  11. Dominando la E/S de Archivos en Verilog: Abrir, Leer, Escribir y Cerrar