VHDL é uma linguagem de programação utilizada para o desenvolvimento de circuitos digitais que a serem implementados em FPGA's e CPLD's.
Para a descrição do funcionamento dos circuitos lógicos são necessários ferramentas de programação, depuração e síntese, cada fabricante de FPGA ou CPLD disponibiliza suas ferramentas para download, mas nós vamos utilizar uma software livre conhecido por ZAMIACAD, essa ferramenta possibilita realizar a programação e a depuração do código VHDL, a síntese é um processo que deve ser realizada utilizando as ferramentas disponibilizadas pelos fabricantes desses componentes eletrônicos.
ZAMIACAD
O ZamiaCAD é uma ferramenta utilizada na programação e depuração de código VHDL, ele é um software livre sendo assim uma ferramenta gratuita.
O link para o site da ferramenta é esse:
http://zamiacad.sourceforge.net/web/
O link para o repositório de download é esse:
http://sourceforge.net/projects/zamiacad/files/win32.win32.x86/
A IDE do zamiaCAD foi construída utilizando-se o Eclipse, então os usuários do Eclipse já familiarizados não terão problemas em se adaptar.
A figura a seguir mostra a tela com projetos e arquivos abertos:
Criando um projeto
Para se criar um projeto no ZamiaCAD devemos seguir os passos a seguir:
1 - Clique no menu em destaque na figura:
2 - Agora dê um nome ao projeto que será criado e clique em "Next":
4 - Dê um nome à ARCHITECTURE que será utilizada como mesa de testes ou como Top Level Hierarchy:
Obs.: Em VHDL os circuitos podem ser desenvolvidos através de pequenas estruturas que são agregadas hierarquicamente para formar circuitos mais complexos, ou seja, desenvolve-se blocos funcionais básicos que irão, numa concepção maior, realizar a composição do projeto, como se fossem peças para formarem as imagens em um grande quebra-cabeça. Da mesma forma, um bloco de função pode ser formado por outros blocos, até dar origem a um nível hierárquico que será o resultado final da composição dos níveis mais baixos. O nível hierárquico que englobará todas as funções dando origem ao circuito digital final é chamado de "Top Level Hierarchy". Por exemplo: Um relógio pode ser formado por um bloco que irá gerar os pulsos de clock para a base de tempo, outro bloco decodificador, um bloco contador, etc., até ser formado o bloco que irá agregar e conectar todas essas funções, enfim, poderíamos denominá-lo propriamente como bloco relógio.
5 - Finalize a criação do projeto clicando em "Finish".
Agora teremos um projeto para ser editado, para começarmos a edição teremos que adicionar no mínimo um arquivo VHDL que será uma mesa de testes, esse arquivo deve ter o mesmo nome da ARCHITECTURE especificada nos passos anteriores, se o nome dado era "WORK.MAIN" (Work porque o arquivo está dentro do diretório de trabalho, MAIN é o nome do arquivo com a ARCHTECTURE), o nome do arquivo vhdl será "main.vhdl".
7 - Para criar esse arquivo "main.vhdl" seguiremos os passos da imagem a seguir clicando com o botão direito do mouse sobre a pasta do projeto "Tutorial" na árvore de projetos, em seguida em "New", e por último, "Source File". (Os locais estão indicados na figura):
8 - Troque o nome do arquivo para "MAIN.vhdl" e clique em "FINISH":
O arquivo "MAIN.vhdl" irá aparecer na árvore de projetos agora, iremos editá-lo posteriormente.
Vamos definir um projeto para ser desenvolvido agora.
PROJETO 1 - PORTA LÓGICA NOT
Para construir o projeto que irá implementar uma porta lógica NOT devemos definir as entradas e saídas desse bloco funcional, para isso definimos uma entity, da seguinte forma:
1) Comece a digitar "en" e pressione juntas as teclas "CNTRL+SPACE", em seguida dê "ENTER", este recurso se chama "TEMPLATE", que nada mais é do que textos pré-definidos contendo a forma padrão dos comandos da linguagem VHDL, isso agiliza a edição do código, tendo apenas que modificar as partes do texto que não lhe são convenientes. A tecla "TAB" irar alternar entre os campos de edição. O texto deve ficar conforme