Funções Combinacionais
Parte da seção Design e Verificação RTL do Journey de Verilog da Coddy. Lição 11 de 38.
Uma function Verilog encapsula um cálculo de tempo zero para reutilização dentro de um módulo. Declare a largura do retorno, os argumentos de entrada e as variáveis locais; em seguida, assign o resultado ao nome da function. Funções combinacionais não contêm atrasos nem controles de eventos; um loop com limites fixos pode descrever uma lógica repetida.
Trecho relevante; as declarações e conexões ao redor são fornecidas no desafio.
function [7:0] gray;
input [7:0] value;
begin gray = value ^ (value >> 1); end
endfunctionChamar a function calcula uma expressão sem adicionar tempo de simulação.
Atribua o resultado da function em todos os caminhos e mantenha as funções combinacionais livres de controles de temporização.
Desafio
MédioImplemente uma function Verilog chamada gray que converta um valor binário sem sinal de 8 bits em código Gray usando value XOR (value deslocado uma posição para a direita). Atribua y chamando a function com a. Colunas de saída: y. Todos os valores de estímulo são valores binários conhecidos.
Complete design.v e preserve os nomes e as portas de seus módulos. O testbench.v bloqueado fornece alterações nas entradas e imprime as saídas após elas se estabilizarem. 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 [7:0] a, 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 Sinal3RTL Reutilizável
Funções CombinacionaisParâmetros Seguros quanto à LarguraLaços de GeraçãoGeração CondicionalRecapitulação - Máscara de Bits ReutilizávelPratique por conta própria: Compilador de Verilog online