40 / 63 · Esercitazione
Laboratorio: movimento seriale e ordine dei bit
Verificare direzione, bit persi e latenza dopo reset con sequenze binarie e riferimento intero.
Le lezioni sono gratuite. Iscriviti per salvare i progressi.
Oggetto del laboratorio e osservazione
A ogni fronte di salitaFronte di salita Passaggio del clock da 0 a 1, distinto dall’intero intervallo di livello CLK=1. Approfondisci i due bit bassi del vecchio q scorrono a sinistra e din entra al bit 0. Confrontate il percorso inserendo 1,0,1,1.
Prima di iniziare
Preparate un progetto Desktop in Digital Design Studio e assicuratevi di avere autorizzazioni di esecuzione valide. Salvate ogni esempio come rtl/top.sv in una cartella separata.
Sorgente 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};
endmoduleEsecuzione
In New analysis selezionate Two-state single-clock v1. Clock port è clk e il periodo è 1000ps. Con i valori seguenti eseguite Preflight, poi Run RTL simulation, e confrontate i risultati.
| Impostazione | Valore |
|---|---|
| Valori iniziali dei registri, dal LSB | [false, false, false] |
| Reset port | rst · Active high · 1 cycle |
| Maximum cycles / time | 5 / 5000ps |
Stimoli d'ingresso
[
{
"inputs": {
"din": [
false
]
}
},
{
"inputs": {
"din": [
true
]
}
},
{
"inputs": {
"din": [
false
]
}
},
{
"inputs": {
"din": [
true
]
}
},
{
"inputs": {
"din": [
true
]
}
}
]Ogni colonna registra un fronte di salitaFronte di salita Passaggio del clock da 0 a 1, distinto dall’intero intervallo di livello CLK=1. Approfondisci. Gli ingressi sono quelli immediatamente precedenti; gli stati indicati con «after» sono quelli subito dopo l’aggiornamento. Le colonne indicano l’ordine dei campioni, non il ritardo fisico di propagazioneRitardo di propagazione Tempo dalla variazione d’ingresso all’assestamento corretto dell’uscita. Equivalenza logica e proprietà temporali sono distinte. Approfondisci. La prima colonna è resetReset Controllo che riporta allo stato iniziale specificato. Occorre definirne sincronicità e priorità rispetto agli altri controlli. Approfondisci: din=0 non conta come dato acquisito. Confrontate i quattro ingressi successivi con l'ordine JSON.
Mostra i dati della forma d’onda
| Segnale | Forma d’onda | Valori del bus |
|---|---|---|
| edge | 23452 | E0 → E1 → E2 → E3 → E4 |
| reset | 10... | |
| din | 0101. | |
| q after | 23452 | 000 → 001 → 010 → 101 → 011 |
Confronto dei risultati
5 cycles · q=011. A ogni fronte: 000 → 001 → 010 → 101 → 011.
Il laboratorio usa RTL 0/1 con un solo clock. Non include testbench con #delay, initial o X/Z. Il contrassegno di completamento documenta l’apprendimento, non un risultato di simulazione reale.
Verificare la concatenazione indipendentemente
Copiare la concatenazioneConcatenazione Accoda sequenze di bit. La larghezza risultante è la somma delle larghezze, non un’addizione numerica. Approfondisci RTL come risposta del test può duplicare l'errore. Usate un riferimento basato su interi unsignedUnsigned Interpretazione dei bit come intero non negativo. Il campo a n bit è 0–2^n−1 e può differire dalla lettura signed degli stessi bit. Approfondisci.
Dopo reset, 1,0,1,1 danno . In binario a tre bit devono coincidere con la forma d'onda. Nell'ultimo passo ; conservando tre bit bassi resta 3.
| Bit ricevuti | Ingresso | q dopo il fronte | Intero |
|---|---|---|---|
| 0 | Reset | 000 | 0 |
| 1 | 1 | 001 | 1 |
| 2 | 0 | 010 | 2 |
| 3 | 1 | 101 | 5 |
| 4 | 1 | 011 | 3 |
Con reset=0, enable=1 scegliete din=1,0,1,1 e avanzate ogni volta: q=001,010,101,011. Prevedete con questo modello a passi, poi confrontate il risultato RTL reale. Enable permette anche di provare lo stop nell'estensione.
Il reset sincrono ha priorità su enable. Con enable=0, il valore memorizzato viene mantenuto. q=000; q_next = (2q + din) mod 8
Seguire un solo bit per verificare la direzione
Dopo reset inserite una volta 1 e tre volte 0: 001 → 010 → 100 → 000. Il primo 1 attraversa bit 0,1,2 e scompare. Schemi uniformi di soli 0 o 1 possono nascondere la direzione errata.
Se il primo ingresso viene acquisito al fronte , in un registroRegistro Memorizza uno stato di più bit. I registri sincroni del corso acquisiscono gli ingressi specificati al fronte di clock. Approfondisci a tre stadi raggiunge il bit 2 al fronte . Contando invece dal lancio di un registro esterno cambia il riferimento: dichiarate partenza e arrivo nel rapporto.
Estensione: spostare solo ingressi validi
Supponete di aggiungere valid. Mantenere q con valid=0 differisce da una pipeline che muove ogni ciclo dati e un valid separato. La prima avanza secondo i bit accettati, la seconda secondo i cicli trascorsi. Non verificate entrambe con la stessa sequenza di stati attesi.
Prova tu
Dopo reset i bit validi sono 1,0,1. Prima e dopo il secondo c’è un ciclo invalid che mantiene q. Spiegate q finale e l’arrivo del primo 1 al bit 2.
Leggi la spiegazione
Solo tre ingressi validi cambiano lo stato: q finale=101. Il primo 1 raggiunge bit 2 al fronte del terzo dato valido. Dopo la prima acquisizione servono due spostamenti aggiuntivi; i due cicli invalid allungano il tempo reale.