Altifigence Academy

2 / 37 · Conceito

Sinais e portas: contratos de largura, direção e tempo

Leia interfaces e separe os critérios de verificação de saídas combinacionais e de estado.

Leia as portas como um contrato do circuito

input logic [7:0] data é uma porta que transmite oito bits simultaneamente, não oito valores sucessivos. O tipo logic também não cria armazenamento por si só. O comportamento depende de ser acionado por uma atribuição combinacional ou por um bloco sequencial sensível à borda.

Além de largura e direção, confira quando o sinal é válido, quem o aciona e qual é seu valor após reset. Sem isso, módulos corretos isoladamente podem formar um sistema incorreto.

Um mesmo MUX pode ter duas classes de saída

Nas práticas, observamos o resultado de seleção y e sua cópia armazenada sampled_y.

y(t)=s(t)‾a(t)+s(t)b(t)y(t)=\overline{s(t)}a(t)+s(t)b(t)
qk+1=y(tk−)q_{k+1}=y(t_k^-)

A primeira equação é combinacional. A segunda modela idealmente a captura síncrona de y estável logo antes da borda. Comparar ambas as saídas diretamente com a entrada do instante atual pode fazer 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 correto parecer defeituoso.

SystemVerilog
assign y = sel ? b : a;
always_ff @(posedge clk) sampled_y <= y;

O simulador ordena eventos mesmo dentro de uma mesma marca temporal. O dispositivo físico tem setupSetup Tempo mínimo durante o qual a entrada deve permanecer estável antes da borda de captura. Se for violado, o valor armazenado não é garantido. Saiba mais, hold e atraso clock-to-Q. As equações não eliminam essas diferenças; definem o instante de observação que inicia a verificação funcional.

As setas indicam dependências de dados. Quando a, b ou sel mudam, y muda primeiro; sampled_y só armazena um novo valor na 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.

Fronteira entre saída combinacional e armazenada
  1. a · b · sel: Entradas aplicadas simultaneamente
  2. MUX → y: Calcule com a seleção atual
  3. DFF → sampled_y: Capture y na borda de subida

Perguntas de revisão

  • sel é uma entrada 0/1 definida ou um sinal externo assíncrono?
  • Após mudar y, a comparação com sampled_y acontece depois da próxima borda válida?
  • O valor inicial de sampled_y é definido por 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 ou pela inicialização da ferramenta?

Os valores iniciais explícitos da prática permitem reproduzir um modelo 0/1. Eles não garantem o comportamento real do chip ao ligá-lo.

Experimente

a passa de 0 para 1 entre bordas e sel permanece em 0. Quando y e sampled_y mudam?

Ler a explicação

y muda após a avaliação ou propagação do caminho combinacional. sampled_y é atualizado na próxima borda de subida que capture esse valor. Uma entrada que muda perto da borda envolve setup/hold no hardware; este modelo simples não comprova sua segurança.

Sua escolha vale neste navegador. Altere-a a qualquer momento no rodapé.