Altifigence Academy

2 / 37 · Concepto

Señales y puertos: contratos de ancho, dirección y tiempo

Lea interfaces y separe los criterios de verificación de salidas combinacionales y de estado.

Lea los puertos como un contrato del circuito

input logic [7:0] data es un puerto que transmite ocho bits simultáneamente, no ocho valores sucesivos. El tipo logic tampoco crea por sí solo almacenamiento. El comportamiento depende de si lo controla una asignación combinacional o un bloque secuencial por flancos.

Además de ancho y dirección, compruebe cuándo es válida la señal, quién la controla y qué valor tiene tras reset. Sin ello, módulos correctos por separado pueden formar un sistema incorrecto.

Un mismo MUX puede tener dos clases de salida

En las prácticas observamos el resultado de selección y y su copia almacenada sampled_y.

y(t)=s(t)‾a(t)+s(t)b(t)y(t)=\overline{s(t)}a(t)+s(t)b(t)
qk+1=y(tk−)q_{k+1}=y(t_k^-)

La primera ecuación es combinacional. La segunda modela idealmente la captura síncrona de y estable justo antes del flanco. Comparar ambas salidas sin más con la entrada del instante actual puede hacer que 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 correcto parezca defectuoso.

SystemVerilog
assign y = sel ? b : a;
always_ff @(posedge clk) sampled_y <= y;

El simulador ordena eventos incluso dentro de una misma marca temporal. El dispositivo físico tiene setupSetup Tiempo mínimo durante el cual la entrada debe permanecer estable antes del flanco de captura. Si se incumple, el valor almacenado no está garantizado. Más información, hold y retardo clock-to-Q. Las ecuaciones no eliminan esas diferencias; definen el instante de observación del que parte la verificación funcional.

Las flechas indican dependencias de datos. Al cambiar a, b o sel, cambia primero y; sampled_y solo almacena un nuevo valor en el 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.

Frontera entre salida combinacional y almacenada
  1. a · b · sel: Entradas aplicadas simultáneamente
  2. MUX → y: Calcule con la selección actual
  3. DFF → sampled_y: Capture y en el flanco ascendente

Preguntas de revisión

  • ¿sel es una entrada 0/1 definida o una señal externa asíncrona?
  • Tras cambiar y, ¿la comparación con sampled_y se hace después del siguiente flanco válido?
  • ¿El valor inicial de sampled_y se determina mediante resetReset Control que devuelve el estado a un valor inicial especificado. Deben definirse su carácter síncrono o asíncrono y su prioridad frente a otros controles. Más información o mediante la inicialización de la herramienta?

Los valores iniciales explícitos de la práctica permiten reproducir un modelo 0/1. No garantizan el comportamiento real del chip al encenderlo.

Inténtalo tú

a pasa de 0 a 1 entre flancos y sel permanece en 0. ¿Cuándo cambian y y sampled_y?

Leer la explicación

y cambia después de evaluar o propagar el camino combinacional. sampled_y se actualiza en el siguiente flanco ascendente que capture ese valor. Una entrada que cambia cerca del flanco plantea setup/hold en hardware; este modelo simple no demuestra su seguridad.

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