Tabelas ROM Combinacionais
Parte da seção Design e Verificação RTL do Journey de Verilog da Coddy. Lição 21 de 38.
Uma tabela de consulta fixa descreve um mapeamento somente leitura de endereço para dados. Um case ou uma function completa pode expressar o conteúdo. Com uma leitura combinacional, alterar o endereço altera a saída sem esperar por um clock. A ferramenta de síntese escolhe uma implementação; este código-fonte não promete uma primitiva de memória FPGA específica.
Trecho relevante; as declarações e conexões circundantes são fornecidas no desafio.
function [7:0] lookup;
input [1:0] addr;
begin
case(addr)
0: lookup=3;
1: lookup=5;
2: lookup=8;
3: lookup=13;
default: lookup=0;
endcase
end
endfunctionCada endereço seleciona uma constante definida sem retenção da saída anterior.
Especifique cada entrada da tabela e diferencie a latência de consulta combinacional da latência de leitura registrada.
Desafio
MédioImplemente uma tabela de consulta combinacional de oito entradas. Os endereços de 0 a 7 retornam 3,5,8,13,21,34,55,89, respectivamente. Use uma case completa baseada em function para controlar y. Colunas de saída: y. Todos os valores de estímulo são valores binários conhecidos.
Complete design.v e preserve os nomes dos módulos e as portas. O testbench.v bloqueado fornece alterações nas entradas e imprime as saídas depois que elas se estabilizam. Ele escolhe um cenário usando um argumento do simulador, como +CASE=1; não é necessária entrada padrão. Não adicione impressão, atrasos ou encerramento da simulação ao design. A saída esperada é uma linha de valores decimais por observação, separados por um espaço e terminando com uma nova linha.
Experimente você mesmo
module dut (input [2:0] addr, output [7:0] y);
// Substitua este placeholder pelo seu design.
assign y = 0;
endmoduleEsta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Design e Verificação RTL
1RTL Combinacional Confiável
Valores padrão evitam latchesCodificadores de prioridadeValidação One-HotDecodificação segura de caseRecapitulação - Roteador de requisições4RTL Sequencial Controlado
Prioridade de Reset e EnableContadores SaturantesPipeline de Dados e ValidDetecção de Bordas AmostradasRecapitulação - Contador de Eventos7Projeto - Monitor de Amostras
Acumular AmostrasAceitar Amostras Habilitadas2Larguras e Aritmética com Sinal
Preservando Bits de CarryComparações com SinalDeslocamentos Aritméticos à DireitaOverflow e SaturaçãoRecapitulação — Diferença com Sinal5Memória e Tabelas de Consulta
Tabelas ROM CombinacionaisArmazenamento em Matriz de RegistradoresPortas de Leitura RegistradasEncaminhamento entre Leitura e EscritaRecapitulação — Banco com Duas LeiturasPratique por conta própria: Compilador de Verilog online