40 / 63 · Práctica
Práctica: verifique el movimiento serie y el orden de bits
Use referencias binarias y enteras para verificar dirección, descarte de bits y latencia tras reset.
Las lecciones se pueden leer gratis. Inscríbete para guardar el progreso.
Circuito y condiciones de observación
En cada 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, los dos bits inferiores de la q anterior avanzan a la izquierda y din entra en el bit 0. Introduzca 1,0,1,1 y compare el movimiento.
Antes de empezar
Prepare un proyecto Desktop de Digital Design Studio con permisos de ejecución. Guarde cada ejemplo como rtl/top.sv en una carpeta independiente.
Código SystemVerilog
module top (
input logic clk,
input logic rst,
input logic din,
output logic [2:0] q
);
// Old q[1:0] and din are captured together at each rising edge.
always_ff @(posedge clk)
if (rst) q <= 3'b000;
else q <= {q[1:0], din};
endmoduleEjecución
En New analysis, seleccione Two-state single-clock v1. Configure Clock port=clk y periodo=1000ps. Ejecute Preflight y Run RTL simulation con estos valores y compare resultados.
| Configuración | Valor |
|---|---|
| Valores iniciales de registros, desde el LSB | [false,false,false] |
| Reset port | rst · Active high · 1 cycle |
| Maximum cycles / time | 5 / 5000ps |
Estímulos de entrada
[
{
"inputs": {
"din": [
false
]
}
},
{
"inputs": {
"din": [
true
]
}
},
{
"inputs": {
"din": [
false
]
}
},
{
"inputs": {
"din": [
true
]
}
},
{
"inputs": {
"din": [
true
]
}
}
]Cada columna registra un flanco, con entradas anteriores y estados «después» posteriores a actualizarse. La alineación ordena muestras, 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. La primera columna es 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; su din=0 no cuenta como dato almacenado. Compare las cuatro entradas siguientes con el orden del JSON.
Ver los datos de la forma de onda
| Señal | Forma de onda | Valores del bus |
|---|---|---|
| flanco | 23452 | E0 → E1 → E2 → E3 → E4 |
| reset | 10... | |
| din | 0101. | |
| q después | 23452 | 000 → 001 → 010 → 101 → 011 |
Comparación de resultados
5 cycles · q=011. En flancos sucesivos: 000 → 001 → 010 → 101 → 011.
Se usa RTL 0/1 de un solo reloj, sin bancos #delay, initial o X/Z. Completar la lección registra aprendizaje, no un resultado real de simulación.
Compruebe la concatenación con una referencia independiente
Copiar la misma concatenaciónConcatenación Operación que une secuencias de bits una junto a otra. El ancho resultante es la suma de sus anchos; no es una suma numérica. Más información del RTL en la respuesta esperada puede duplicar el error. Use un modelo entero unsignedunsigned Interpretación de una secuencia de bits como entero no negativo. Con n bits, el rango es de 0 a 2^n−1; puede diferir de la interpretación signed de los mismos bits. Más información:
Tras reset, 1,0,1,1 produce . En binario de tres bits debe coincidir con la onda. En el último paso, y conservar los tres bits bajos deja 3.
| Bits recibidos | Entrada | q después del flanco | Entero |
|---|---|---|---|
| 0 | Reset | 000 | 0 |
| 1 | 1 | 001 | 1 |
| 2 | 0 | 010 | 2 |
| 3 | 1 | 101 | 5 |
| 4 | 1 | 011 | 3 |
Con reset=0 y enable=1, seleccione din=1,0,1,1 y avance un flanco para cada valor: q será 001,010,101,011. Prediga con el control paso a paso y después compare con RTL real. Enable permite probar también la parada de la ampliación siguiente.
El reset síncrono tiene prioridad sobre enable. Con enable=0, se conserva el valor almacenado. q=000; q_next = (2q + din) mod 8
Siga un bit para verificar la dirección
Después de reset, introduzca un 1 y tres ceros: 001 → 010 → 100 → 000. El primer 1 debe pasar por los bits 0,1,2 y salir. Usar solo patrones de todo ceros o todo unos puede ocultar la dirección incorrecta.
Si la primera captura ocurre en k, ese bit llega al bit 2 tras el flanco k+2 de 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 de tres etapas. Contar desde el flanco de lanzamiento de un registro externo cambia el origen. Indique siempre origen y destino en el informe.
Ampliación: desplace solo entradas válidas
Añadir valid y conservar q con valid=0 difiere de un pipeline que desplaza cada ciclo junto con un bit valid independiente. El primero avanza por datos recibidos; el segundo, por ciclos de reloj. No verifique ambos con la misma secuencia de estados esperados.
Inténtalo tú
Tras reset, los bits válidos son 1,0,1. Hay un ciclo valid=0 antes y otro después del segundo bit; en ellos q se conserva. Explique la q final y cuándo llega el primer 1 al bit 2.
Leer la explicación
Solo tres entradas válidas cambian el estado: q final es 101. El primer 1 llega al bit 2 en el flanco que almacena la tercera entrada válida. Requiere dos desplazamientos adicionales tras la primera captura; las dos pausas prolongan el tiempo real.