25 / 63 · Práctica
Práctica: prueba exhaustiva del MUX y análisis de la salida registrada
Aplique las mismas entradas a los caminos combinacional y registrado y verifique con la tabla de verdad y los instantes de captura.
Las lecciones se pueden leer gratis. Inscríbete para guardar el progreso.
Circuito y condiciones de observación
Con sel=0, y recibe a; con sel=1, recibe b. sampled_y almacena y 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 y se conserva hasta el siguiente aunque cambien las entradas.
Antes de empezar
Prepare un proyecto Desktop de Digital Design Studio y los permisos necesarios para ejecutarlo. Guarde cada ejemplo como rtl/top.sv en una carpeta independiente.
Primero haga que a y b difieran. Compruebe que sel=0 selecciona a y sel=1 selecciona b y contraste cada fila del archivo de entradas.
y = sel ? b : a
Código SystemVerilog
module top (
input logic clk,
input logic a,
input logic b,
input logic sel,
output logic y,
output logic sampled_y
);
assign y = sel ? b : a;
// Explicit observation register: y remains purely combinational.
// The register makes this design eligible for logic-netlist-1 simulation.
always_ff @(posedge clk) sampled_y <= y;
endmoduleEjecución
En New analysis, seleccione Two-state single-clock v1. Configure Clock port como clk y el periodo como 1000ps. Con los valores siguientes, ejecute Preflight y después Run RTL simulation; compare los resultados.
| Configuración | Valor |
|---|---|
| Valores iniciales de registros, desde el LSB | [false] |
| Reset port | Vacío |
| Maximum cycles / time | 8 / 8000ps |
Cada columna representa una entrada del archivo siguiente. La y combinacional esperada es 0,0,0,1,1,0,1,1. La figura predice la función en orden de entradas; no muestra cuándo se actualiza sampled_y.
Ver los datos de la forma de onda
| Señal | Forma de onda | Valores del bus |
|---|---|---|
| a | 0...1... | |
| b | 0.1.0.1. | |
| sel | 01010101 | |
| y esperado | 0..1.01. |
Estímulos de entrada
[
{
"inputs": {
"a": [
false
],
"b": [
false
],
"sel": [
false
]
}
},
{
"inputs": {
"a": [
false
],
"b": [
false
],
"sel": [
true
]
}
},
{
"inputs": {
"a": [
false
],
"b": [
true
],
"sel": [
false
]
}
},
{
"inputs": {
"a": [
false
],
"b": [
true
],
"sel": [
true
]
}
},
{
"inputs": {
"a": [
true
],
"b": [
false
],
"sel": [
false
]
}
},
{
"inputs": {
"a": [
true
],
"b": [
false
],
"sel": [
true
]
}
},
{
"inputs": {
"a": [
true
],
"b": [
true
],
"sel": [
false
]
}
},
{
"inputs": {
"a": [
true
],
"b": [
true
],
"sel": [
true
]
}
}
]Comparación de resultados
8 cycles · y=1 · sampled_y=1. Compruebe que a 3000ps y=1 y sampled_y=0.
Esta práctica usa RTL 0/1 de un solo reloj, sin bancos de pruebas con #delay, initial o X/Z. Marcar la lección como completada es un registro de aprendizaje, no un resultado real de simulación.
Escriba primero los resultados esperados
Antes de ejecutar, calcule y para la secuencia dada: . Se comprueban las ocho combinaciones posibles, una evidencia más fuerte que acertar solo el valor final.
La salida del 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 cambia en el flanco ascendente, no al aplicar un estímulo. Anote por separado y justo antes del flanco y la salida registrada justo después.
Las entradas capturadas en k definen el estado posterior , llamado sampled_y. Aunque compartan coordenada temporal, compruebe el orden de aplicación de entradas y actualización del registro.
Tres comprobaciones para distinguir los fallos
- Selección invertida: antes de cambiar a
sel ? a : b, prediga el primer vector que falla. Los vectores con no detectan el error. - Confusión del punto de observación: explique por qué comparar inmediatamente
sampled_y, en lugar dey, con la referencia combinacional puede hacer fallar un circuito correcto. - Conservación frente a entradas no seleccionadas: cambie solo la entrada no elegida y compruebe que y se conserva. Si cambia la elegida, y debe seguirla.
Registre para cada fallo entrada, instante, valor esperado y valor real. «La onda es extraña» no permite distinguir un error de selección de una latencia de un ciclo.
Ampliación
Con datos de cuatro bits, el espacio combinacional es . Sigue siendo viable probarlo todo, pero use primero 0, máximo, 0101, 1010 y patrones walking-one para revelar errores de posición. Actualice también configuración y archivo de entradas para el nuevo ancho.
Inténtalo tú
Después de capturar en un flanco ascendente, cambia solo a 1 antes del siguiente. Calcule tras el retardo lógico y sampled_y antes y después del próximo flanco.
Leer la explicación
La salida combinacional es . sampled_y conserva 0 hasta el próximo flanco ascendente y allí captura 1. Se supone que las entradas permanecen estables el tiempo requerido para la captura.