VHDL como linguagem para sistemas embarcados e circuitos reprogramáveis
Muitas faculdades de engenharia, principalmente engenharia elétrica, ensinam diversas linguagens de programação para seus alunos. Algumas das mais complexas incluem Assembly e VHDL, esta última é a que discutiremos nesse artigo.
O VHDL, acrônimo para “Linguagem de descrição de hardware VHSIC”, do inglês Very High Speed Integrated Circuits, é uma linguagem de processamento paralelo de alta performance e velocidade, utilizada para construção de circuitos digitais por meio de hardwares FPGA, ASICs e CPLDs. A versão mais recente do protocolo padronizado é a IEEE 1076-2008. Semelhantemente às linguagens sequenciais, o VHDL também possui pacotes (packages) que traz libraries prontas.
Boa parte da descrição de um código VHDL é feito diretamente para manipular portas lógicas, como os comandos wait, after, shift left logical, entre outros. Na prática, a manipulação de portas lógicas é útil pois os circuitos integrados vendidos em lojas de eletrônicos são imutáveis, ou seja, sua construção não permite alteração das portas lógicas, a única coisa que pode ser feita é a construção de blocos de diversos CIs para a montagem de um circuito digital completo. Alguns exemplos de circuitos integrados e suas respectivas portas lógicas são:
- 7400: quatro portas NAND de duas entradas
- 7430: uma porta NAND de oito entradas
- 7402: quatro portas NOR de duas entradas
- 7404: seis inversores com porta NOT
- 7419: seis inversores Schmitt trigger
- 7408: quatro portas AND de duas entradas
- 7411: três portas AND de três entradas
- 7425: duas portas NOR de quatro entradas com strobe
- 7442: decodificador BCD para Decimal
O VHDL, além de manipular portas lógicas criando novos circuitos integrados a cada mudança no código, também permite na sua linguagem a utilização de operadores aritméticos, condicionais (como if then), entre outros. A utilização de vhdl para sistemas embarcados é útil pelo fato dos sistemas embarcados serem sistemas computacionais completos e independentes de outras conexões, diferentemente dos computadores de propósito geral (mais complexos), e se encarregam de executar apenas determinadas tarefas pré-definidas, repetidas vezes.
Outra definição para esse tipo de sistema é “sistema embutido”, pois nele constam todos os encapsulamentos e dedicações ao dispositivo controlado. Alguns exemplos de sistemas embarcados incluem: câmera digital, televisão, aparelho de som, brinquedos digitais, modems ADSL, e basicamente qualquer dispositivo com foco em uma única tarefa principal. Os sistemas embarcados surgiram quando a eletrônica como um todo barateou os equipamentos e possibilitou a construção de inúmeros aparelhos portáteis que há 20 anos atrás seriam considerados “de outro mundo”.
Geralmente, a ligação entre o VHDL e o sistema embarcado se inicia na programação feita em um computador desktop que transfere o código para o sistema embarcado nos estágios finais de desenvolvimento, por meio de uma porta USB ou mesmo através da gravação de um chip EPROM (erasable programmable read-only memory).