• Nenhum resultado encontrado

Linguagens de descrição de hardware

No documento Máquina virtual Java em FPGA (páginas 77-81)

As linguagens de descrição de hardware facilitam a conceção, desenvolvimento, análise/simulação, documentação e fabrico de sistemas digitais. Um sistema

desta natureza pode ser descrito a níveis de detalhe muito diferentes: requisitos, comportamental e estrutural. Assim, um sistema pode ser descrito desde o nível mais alto até ao nível das portas lógicas como uma rede de elementos de com- plexidade variável, incluindo diagramas de tempos, comportamento e estrutura. A descrição de um computador digital pode ser realizada a qualquer nível, no entanto, a quantidade de informação de baixo nível é demasiado extensa para o Homem poder descrever o sistema só com base nessa informação, e as linguagens de alto nível são usadas para abstrair ou esconder detalhes de implementação, re- sultando numa descrição do projeto ao nível do sistema, descrição de alto nível, portanto [29]:.

O processo de desenho, seja de um sistema (software/hardware), circuito eletrónico ou de um dispositivo mecânico, tem um conjunto de necessidades comum: trans- mitir dados entre diferentes empresas que fabricam partes distintas do projeto de- senvolvido e encorajar a criação de novas e inovadoras ferramentas de design de projetos. A comunicação e integração de dados é simplificada quando é utilizada representação standard de dados para cada parte de um projeto. Além disso, um esquema conceptual para dados partilhados por vários produtos, relacionando o ambiente de desenvolvimento elétrico com o ambiente de design mecânico, pode simplificar os processos de desenvolvimento, fabrico e manutenção de sistemas [29].

O ambiente de desenvolvimento elétrico tem descrições ao nível da arquitetura, funcionalidade, circuitos, tem parâmetros de tempo, alimentação, velocidade e tem requisitos de desempenho. Já do lado mecânico, existem todos os aspectos mecânicos do desenvolvimento de um sistema digital tais como restrições de ali- mentação, tamanho, temperatura, forma e encapsulamento.

As linguagens de descrição de hardware devem fornecer a habilidade de incluir informação que apoie [29]:

• Especificações que sejam human-readable mas também machine-readable e do- cumentação sobre o design;

• Um mecanismo que permita gerir os dados;

• Análises e testes para as várias partes do projeto.

As linguagens de descrição de hardware permitem que o desenho de um projeto seja simulado mais cedo durante a sua conceção, de modo a introduzir correções e atualizações ou experimentar diferentes arquiteturas. Programas escritos com es- tas linguagens são independentes da tecnologia, fáceis de desenvolver e realizar debug e são normalmente mais user-friendly do que esquemáticos, principalmente para circuitos de grandes dimensões [30].

Portanto, este tipo de linguagem é usado para desenvolver projetos em FPGA, sendo as duas mais utilizadas a linguagem VHDL e Verilog, por já estarem bem estabelecidas na comunidade que desenvolve soluções baseadas em FPGA de- vido à sua robustez, flexibilidade e portabilidade [27]. Descrever projetos em hardware e implementá-los em FPGA sem recurso as estas linguagens seria muito difícil, pela complexidade dos circuitos. Assim sendo, os fabricantes de FPGA fornecem software específico no qual o utilizador pode desenvolver os seus proje- tos recorrendo a uma das duas linguagens referidas.

4.1.1

VHDL

Esta linguagem de descrição de hardware surgiu em 1987, tendo vindo a sofrer atualizações desde então [27]. Um programa escrito em VHDL é composto por duas partes: entity e architecture. A entity é o primeiro nível de abstração de hard- ware em VHDL. Representa uma porção de código que tem definidos os I/O. Pode definir um sistema inteiro, um sub-sistema, uma placa, um chip, uma macro- célula, uma porta lógica ou qualquer outro nível de abstração [31]. Portanto, a entity é o local onde se declaram as variáveis de um programa.

A parte da architecture define o corpo da entity. Nela especifica-se as relações entre I/Os do projeto definidas na entity, e pode ser expressa em termos de estrutura, fluxo de dados ou comportamento [31]. Constitui a parte do programa VHDL onde se escreve o código que define as funções a ser executadas. A figura 4.2 mostra como se implementa uma porta OR em VHDL.

Figura 4.2: Código VDHL para implementação de uma porta OR.

4.1.2

Verilog

Foi desenvolvida a partir de 1985, sendo acreditada pelo IEEE 10 anos depois, e a sua sintaxe é extremamente semelhante à da linguagem C [27]. O programa contido num ficheiro Verilog constitui um módulo (module), nele especificam-se as entradas, saídas e portas bidirecionais, as suas variáveis bem como o código que as relaciona. Geralmente, este código encontra-se dentro de um bloco always, que o executa sempre que determinada condição se verifica. Essa condição pode ser a transição positiva ou negativa do sinal de relógio, assim como a alteração do valor de uma variável. No exemplo ilustrado na figura 4.3, está a implemen- tação de uma porta OR em Verilog, onde o always block é acionado sempre que o valor de pelo um dos inputs é modificado. Como a linguagem escolhida para o desenvolvimento da presente dissertação foi a linguagem Verilog, mais deta- lhes sobre ela serão apresentados no capítulo 5, onde se explica a implementação desenvolvida.

4.1.3

Comparação entre VHDL e Verilog

Distinguem-se uma da outra pela capacidade de modelação e pelos modelos es- truturais. As principais diferenças entre VHDL e Verilog estão descritas a seguir [27]:

Figura 4.3: Código Verilog para implementação de uma porta OR. • VHDL:

1. Contém melhor suporte para modelos abstratos e de atraso; 2. Suporta dados abstratos criados pelo programador;

3. É uma linguagem mais tipificada e complexa que Verilog;

4. Permite construções para parametrizar números de bits, replicar estru- turas e configurar modelos.

• Verilog:

1. Apresenta melhores construções para modelação lógica;

2. Possui tipos de dados mais simples e interligados ao nível de hardware; 3. É uma linguagem mais simples que VHDL e é parecida à linguagem

C;

4. Suporta apenas modelos com parâmetros e permite a sua instanciação.

No documento Máquina virtual Java em FPGA (páginas 77-81)

Documentos relacionados