1 / 37 · Conceito
RTL: descrever circuitos concorrentes
Separe a ordem do software da estrutura paralela e especifique estado atual, próximo estado e observação.
As aulas podem ser lidas gratuitamente. Inscreva-se para salvar o progresso.
O circuito continua operando
RTL descreve valores passando entre registradores através de lógica combinacional. Um módulo delimita hardware; duas instâncias formam estruturas que interagem, não chamadas executadas uma após outra. O circuito permanece ativo quando entradas mudam. Transforme portas, armazenamento e máquinas de estados em interfaces SystemVerilog explícitas e verificações reproduzíveis. Antes de implementar, explique largura, acionamento, validade e reset de cada sinal.
Separe estado atual e próximo
O módulo completo acumula sample sem sinal de quatro bits em um registrador de oito. Reset síncrono, ativo alto, tem prioridade sobre enable. Uma borda habilitada soma, as demais mantêm sum. A aritmética retorna ao início módulo 256.
module accumulator (
input logic clk, rst, enable,
input logic [3:0] sample,
output logic [7:0] sum
);
logic [7:0] next_sum;
assign next_sum = sum + {4'b0000, sample};
always_ff @(posedge clk) begin
if (rst) sum <= 8'b0;
else if (enable) sum <= next_sum;
end
endmodulenext_sum é combinacional: pode mudar com sum ou sample sem borda de clock. sum armazena estado e muda na subida. Declarar ambos logic não lhes dá o mesmo papel. A ausência do else final neste bloco com clock mantém o registrador; uma atribuição ausente no combinacional pode exigir latch. Primeiro identifique o bloco.
Calcule uma tabela antes de simular
Use estado e entradas anteriores à borda e observe depois das atualizações não bloqueantes.
| Borda | rst | enable | sample | sum antes | sum depois |
|---|---|---|---|---|---|
| E0 | 1 | 1 | 9 | Desconhecido | 0 |
| E1 | 0 | 1 | 3 | 0 | 3 |
| E2 | 0 | 0 | 7 | 3 | 3 |
| E3 | 0 | 1 | 5 | 3 | 8 |
| E4 | 1 | 1 | 15 | 8 | 0 |
Em E4, reset vence e não há soma. Com sum anterior 250 e sample aceito 10, os oito bits dão 4. Preservar um nono bit exige mudar interface e contrato aritmético.
Ordem local e concorrência estrutural
Atribuições bloqueantes = no procedimento combinacional seguem ordem procedural. Procedimentos separados e atribuições contínuas são processos concorrentes. As não bloqueantes <= calculam o lado direito com valores disponíveis ao executar e agendam atualizações. A ordem textual não especifica latência. Não use #10 no acumulador para esperar um clock: atrasos e geração de clock pertencem ao banco de simulação geral. Transição sintetizável usa bordas e estado, não sleep.
Prática: altere um requisito
Troque o retorno por saturação em 255. Estenda operandos e some em nove bits; se o bit 8 for 1, guarde 255, senão 7:0. Mantenha prioridades. Teste 0+0,250+5,250+6, borda desabilitada e reset/enable simultâneos: espere 0,255,255, estado mantido,0. Só 250+5 não revela perda de carry; inclua 250+6. Guarde fonte, tabela e expectativas. Marcar a aula concluída registra estudo, não uma execução de simulador.