40 / 63 · Prática
Prática: verifique o movimento serial e a ordem dos bits
Use referências binárias e inteiras para verificar direção, descarte de bits e latência após reset.
As aulas podem ser lidas gratuitamente. Inscreva-se para salvar o progresso.
Circuito e condições de observação
Em cada borda de subidaBorda de subida Instante em que o clock passa de 0 para 1. É diferente do nível alto, que abrange todo o intervalo com CLK=1. Saiba mais, os dois bits inferiores do q anterior avançam para a esquerda e din entra no bit 0. Insira 1,0,1,1 e compare o movimento.
Antes de começar
Prepare um projeto Desktop do Digital Design Studio com permissões de execução. Salve cada exemplo como rtl/top.sv em uma pasta independente.
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};
endmoduleExecução
Em New analysis, selecione Two-state single-clock v1. Configure Clock port=clk e período=1000ps. Execute Preflight e Run RTL simulation com estes valores e compare os resultados.
| Configuração | Valor |
|---|---|
| Valores iniciais dos registradores, a partir do 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 coluna registra uma borda, com entradas anteriores e estados «depois» após a atualização. O alinhamento ordena amostras, não representa propagação físicaAtraso de propagação Tempo entre uma mudança de entrada e a estabilização da saída no valor correto. Equivalência lógica e comportamento temporal são propriedades distintas. Saiba mais. A primeira coluna é resetReset Controle que retorna o estado a um valor inicial especificado. É preciso definir se é síncrono ou assíncrono e sua prioridade em relação a outros controles. Saiba mais; seu din=0 não conta como dado armazenado. Compare as quatro entradas seguintes com a ordem do JSON.
Ver os dados da forma de onda
| Sinal | Forma de onda | Valores do barramento |
|---|---|---|
| borda | 23452 | E0 → E1 → E2 → E3 → E4 |
| reset | 10... | |
| din | 0101. | |
| q depois | 23452 | 000 → 001 → 010 → 101 → 011 |
Comparação dos resultados
5 cycles · q=011. Em bordas sucessivas: 000 → 001 → 010 → 101 → 011.
Usa-se RTL 0/1 de um único clock, sem testbenches #delay, initial ou X/Z. Concluir a aula registra aprendizagem, não um resultado real de simulação.
Confira a concatenação com uma referência independente
Copiar a mesma concatenaçãoConcatenação Operação que une sequências de bits lado a lado. A largura resultante é a soma de suas larguras; não é uma soma numérica. Saiba mais do RTL na resposta esperada pode duplicar o erro. Use um modelo inteiro unsignedunsigned Interpretação de uma sequência de bits como inteiro não negativo. Com n bits, o intervalo é de 0 a 2^n−1; pode diferir da interpretação signed dos mesmos bits. Saiba mais:
Após reset, 1,0,1,1 produz . Em binário de três bits, deve coincidir com a onda. No último passo, , e manter os três bits baixos deixa 3.
| Bits recebidos | Entrada | q após a borda | Inteiro |
|---|---|---|---|
| 0 | Reset | 000 | 0 |
| 1 | 1 | 001 | 1 |
| 2 | 0 | 010 | 2 |
| 3 | 1 | 101 | 5 |
| 4 | 1 | 011 | 3 |
Com reset=0 e enable=1, selecione din=1,0,1,1 e avance uma vez a cada entrada: q será 001,010,101,011. Preveja com o controle passo a passo e depois compare com RTL real. Enable também permite testar a parada da ampliação abaixo.
O reset síncrono tem prioridade sobre enable. Com enable=0, o valor armazenado é mantido. q=000; q_next = (2q + din) mod 8
Siga um bit para verificar a direção
Após reset, insira um 1 e três zeros: 001 → 010 → 100 → 000. O primeiro 1 deve passar pelos bits 0,1,2 e sair. Usar apenas padrões de zeros ou de uns pode esconder a direção incorreta.
Se a primeira captura ocorrer em k, esse bit chega ao bit 2 após a borda k+2 de um registradorRegistrador Circuito que armazena vários bits de estado. Os registradores síncronos deste curso capturam a entrada especificada na borda de clock. Saiba mais de três estágios. Contar a partir da borda de lançamento de um registrador externo muda a origem. Indique sempre origem e destino no relatório.
Ampliação: desloque somente entradas válidas
Adicionar valid e manter q com valid=0 difere de um pipeline que desloca a cada ciclo junto com um bit valid independente. O primeiro avança por dados recebidos; o segundo, por ciclos de clock. Não verifique ambos com a mesma sequência de estados esperados.
Experimente
Após reset, os bits válidos são 1,0,1. Há um ciclo valid=0 antes e outro depois do segundo bit; neles q é mantido. Explique o q final e quando o primeiro 1 chega ao bit 2.
Ler a explicação
Apenas três entradas válidas mudam o estado: q final é 101. O primeiro 1 chega ao bit 2 na borda que armazena a terceira entrada válida. São necessários dois deslocamentos adicionais após a primeira captura; as duas pausas prolongam o tempo real.