Menu
Coddy logo textTech

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
endfunction

Chamar 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.

challenge icon

Desafio

Médio

Implemente 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;
endmodule
quiz iconTeste seus conhecimentos

Esta 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

Pratique por conta própria: Compilador de Verilog online