Introdução
Neste tutorial, abordaremos o desenvolvimento de designs digitais utilizando VHDL e o framework Vivado da Xilinx, juntamente com simulações na ferramenta ModelSim. O objetivo é guiar você em todas as etapas do processo de desenvolvimento em FPGA, desde a criação do projeto até a verificação da funcionalidade do hardware através de simulações. Se você é um desenvolvedor que deseja aprofundar seus conhecimentos em design digital e FPGAs, este artigo fornece uma abordagem prática e direta, permitindo que você implemente e teste suas ideias em um ambiente controlado.
Etapas
Configuração do Ambiente de Desenvolvimento
Instale o software Vivado e ModelSim em seu computador. O Vivado pode ser baixado diretamente do site da Xilinx após criar uma conta gratuita, enquanto o ModelSim exigirá uma instalação separada. Certifique-se de seguir as instruções do instalador para configurar as ferramentas corretamente.
commands# Download do Vivado
https://www.xilinx.com/support/download/index.html
# Download do ModelSim
https://www.mentor.com/products/hybrid/featured/model-simCriando um Novo Projeto no Vivado
Abra o Vivado e crie um novo projeto. Selecione a opção para criar um projeto em branco, forneça um nome e um local para o projeto, e escolha a família de dispositivos FPGA desejada de acordo com o seu hardware. Na próxima tela, selecione a opção para criar um arquivo VHDL de design.
commands# Abrir Vivado
# Criar Novo Projeto
File -> New ProjectEscrevendo o Código VHDL
No editor do Vivado, crie um novo arquivo VHDL para o design. Neste exemplo, implementaremos um contador de 4 bits. O código a seguir define um contador simples que conta de 0 a 15.
contador.vhdlibrary IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity contador is Port ( clk : in STD_LOGIC; rst : in STD_LOGIC; count : out STD_LOGIC_VECTOR (3 downto 0)); begin process(clk, rst) begin if rst = '1' then count <= (others => '0'); elsif rising_edge(clk) then count <= count + 1; end if; end process; end contador;
Compilando o Projeto no Vivado
Após escrever seu código VHDL, você precisa sintetizá-lo e implementá-lo. No Vivado, vá até a aba ‘Flow Navigator’, clique em ‘Synthesize’, aguarde a síntese ser concluída e, em seguida, clique em ‘Implement Design’.
commands# Syntetizar o Design
Clique em 'Synthesize'
# Implementar o Design
Clique em 'Implement Design'Realizando Simulações com ModelSim
Após a implementação, exporte seu design para o ModelSim para verificar a funcionalidade. Crie um banco de testes em VHDL para simular o contador. O código a seguir representa um banco de testes básico para o contador.
bancoteste.vhdlibrary IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity bancoteste is end bancoteste; architecture behavior of bancoteste is signal clk : STD_LOGIC := '0'; signal rst : STD_LOGIC := '0'; signal count : STD_LOGIC_VECTOR (3 downto 0); constant clk_period : time := 10 ns; begin uut: entity work.contador port map ( clk => clk, rst => rst, count => count); clk_process :process begin clk <= '0'; wait for clk_period/2; clk <= '1'; wait for clk_period/2; end process clk_process; stim_proc: process begin rst <= '1'; wait for 20 ns; rst <= '0'; wait; end process stim_proc; end behavior;
Executando a Simulação
Com o banco de testes criado, inicie o ModelSim, compile o design e o banco de testes, e em seguida execute a simulação. Observe as saídas no console e utilize a ferramenta Wave para visualizar o sinal ‘count’.
commands# Iniciar ModelSim
# Compilar o design e o banco de testes
vcom contador.vhd
vcom bancoteste.vhd
# Executar a simulação
vsim work.bancotesteOtimização do Design
A partir dos resultados das simulações, identifique áreas que podem ser melhoradas. Isso pode incluir alterações na lógica de contagem, otimização do uso de recursos ou ajustes nas temporizações. A prática constante ajuda a desenvolver designs mais eficientes.
commands# Revisar e otimizar o código
# Re-execute a simulação após otimizações
Conclusão
Neste tutorial, você aprendeu a desenvolver um design digital em VHDL para FPGA utilizando o Vivado e a realizar simulações com o ModelSim. Através da criação de um contador simples, ilustramos todo o fluxo desde a concepção do projeto até a simulação e otimização. Com as habilidades adquiridas, você agora está capacitado para explorar projetos mais complexos e aplicar as melhores práticas em design digital e desenvolvimento de FPGAs.