Altifigence Academy

29 / 37 · Concepto

Proyecto integrado: detector del patrón 101 con solapamiento

Aplique minimización de estados, entrada válida, salida registrada y referencia independiente en un diseño.

Fije primero los requisitos

En un flanco ascendenteFlanco ascendente Instante en que el reloj pasa de 0 a 1. Se distingue del nivel alto, que abarca todo el intervalo con CLK=1. Más información con valid=1 se acepta bit_in. Si los últimos bits aceptados terminan en 101, hit vale 1 durante el ciclo posterior. Se permite solapamiento: 10101 debe detectar en los bits 3 y 5. Con valid=0 se conserva el estado y hit=0; reset inicializa estado y hit.

Almacene solo la historia necesaria

S0 significa que no hay prefijo coincidente; S1, que el sufijo es 1; S10, que es 10. Después de completar 101, su último 1 puede iniciar otro patrón, por lo que se vuelve a S1.

Estado actualBit 0 aceptadoBit 1 aceptado
S0S0, hit=0S1, hit=0
S1S10, hit=0S1, hit=0
S10S0, hit=0S1, hit=1

Cada columna registra un flanco, con entradas previas y estados «después» actualizados. La alineación no representa propagación físicaRetardo de propagación Tiempo desde un cambio de entrada hasta que la salida se estabiliza en el valor correcto. La equivalencia lógica y el comportamiento temporal son propiedades distintas. Más información. Se parte de S0 tras reset y valid=1 en todas las columnas. Conservar S1 tras detectar el tercer bit permite detectar también el quinto.

Dos detecciones solapadas en 10101
Ver los datos de la forma de onda
Datos de la forma de onda: cada carácter es un intervalo; un punto conserva el estado anterior; p representa un ciclo de reloj.
SeñalForma de ondaValores del bus
bit aceptado10101
estado después23452S1 → S10 → S1 → S10 → S1
hit después0.101

Implemente la salida de detección registrada

SystemVerilog
module pattern_101 (
  input logic clk, rst, valid, bit_in,
  output logic hit
);
  typedef enum logic [1:0] {S0, S1, S10} state_t;
  state_t state;
  always_ff @(posedge clk) begin
    if (rst) begin
      state <= S0;
      hit <= 1'b0;
    end else begin
      hit <= 1'b0;
      if (valid) begin
        case (state)
          S0: state <= bit_in ? S1 : S0;
          S1: state <= bit_in ? S1 : S10;
          S10: begin
            state <= bit_in ? S1 : S0;
            hit <= bit_in;
          end
          default: state <= S0;
        endcase
      end
    end
  end
endmodule

hit almacena en un registroRegistro Circuito que almacena varios bits de estado. Los registros síncronos de este curso capturan la entrada especificada en el flanco de reloj. Más información el resultado calculado desde el estado y la entrada aceptada en ese flanco. No responde inmediatamente a cambios de bit_in entre flancos como una salida Mealy puramente combinacional. El ejemplo se estudia como SystemVerilog general; soporte sintáctico y evidencia de ejecución del motor didáctico de un solo reloj se comprueban aparte.

Calcule criterios de aceptación de forma independiente

Construya una cadena solo con bits aceptados y, desde longitud tres, compare sus últimos tres caracteres con 101. No hace falta copiar la codificación de estados de la FSMMáquina de estados Modelo que determina el siguiente estado y las salidas a partir del estado almacenado y las entradas. Deben definirse conjuntamente las transiciones, las salidas y el reset. Más información.

  • 101 → hit en 3.
  • 10101 → hit en 3 y 5.
  • 11101 → hit en 5.
  • 1001 → ninguna detección.
  • 1,0, luego reset y después 1 → ninguna detección.
  • Insertar valid=0 entre o después de 1,0 → mismos resultados por número de aceptación.

La práctica de secuencias comprueba la función con entradas válidas continuas. No la interprete como verificación de reset, pausas valid o temporización física.

Cambiar las entradas

Inténtalo tú

Si tras detectar 101 cambia el retorno a S0, ¿qué secuencia mínima difiere de la especificación original?

Leer la explicación
  1. El circuito correcto detecta en las entradas 3 y 5. Volver a S0 impide reutilizar el último 1 de la primera detección como inicio de la siguiente y pierde la detección 5.

Tu elección se aplica a este navegador. Puedes cambiarla en el pie de página.