Verilog
Origem: Wikipédia, a enciclopédia livre.
Sinta-se livre para editá-la para que esta possa atingir um nível de qualidade superior.
Verilog, é uma linguagem de descrição de hardware usada para modelar sistemas eletrônicos. Esta ferramenta suporta o design, verificação e implementação de projetos analógicos, digitais e circuito híbridos em vários níveis de abstração 7. Com placas especiais é possível descarregar o código gerado nessa linguagem em matrizes de portas denominadas FPGA's (field programmable gate array ou matriz de portas programáveis). Essas placas são constituídas por milhares de transistores e fazem basicamente o que vários circuito integrados fazem, com a diferença de que a matriz é reprogramável[13].
Índice |
[editar] Sintaxe
Os autores dessa linguagem definiram sua sintaxe bem familiar à sintaxe da linguagem de programação C. Estruturas de controle de fluxo como "if" , "while" são facilmente encontradas em qualquer código Verilog[7]. A diferença básica entre o Verilog e a linguagem C se encontra na estruturação do código. A Verilog é estruturada em blocos 'begin/end” se caracterizando em uma linguagem modular e a linguagem C segue o paradigma procedural.
[editar] Paralelismo temporal
A linguagem Verilog, as vezes chamada de Verilog HDL, difere das outras pela maneira como é executada. Ela não segue os padrões lineares que as demais linguagens usam. Um projeto Verilog consiste na separação hierárquica de módulos que contém conexões e registradores [7]. Processos seqüenciais e paralelos definem o comportamento dos módulos. Processos seqüenciais são executados dentro de blocos "begin/end". Os demais processos são executados de forma paralela, englobando assim os blocos “begin/end”, ou seja, o interior de um bloco “begin/end” é seqüencial mas dois blocos são paralelos [8]. Este tipo de paralelismo é amplamente explorado em hardware e com a chegada de processadores com vários núcleos ao mercado abre novos campos de pesquisa[12].
[editar] Compilação
Como verilog é uma linguagem de descrição de hardware sua simulação por softwares não é muito apropriada mas fundamental para testes e ajustes no código. Um compilador que se destaca muito no mercado é o Icarus Verilog. A simulação do verilog acontece de forma parecida com JAVA[7]. Primeiro o código é compilado e depois interpretado. A fase de compilação é dividida em cinco partes (ver figura 1) : 1. Pré-processamento: Faz a inclusão de arquivo (“include”) e substituição de macros. 2. Parser: Checa a sintaxe e semântica do código. 3. Elaboração: É analisada e gerado uma lista da hierarquia dos módulos no código. 4. Otimização: A lista de hierarquia é analisada e algumas mudanças são feitas para aumentar a eficiência da simulação. 5. Geração do código: Toda à informação do circuito é armazenada e cinco formatos são disponíveis para geração. O padrão é o formato VVP[7][9].
[editar] VVP (Verilog Virtual Processor)
O VVP é um interpretador do código assembly gerado pelo Icarus Verilog . Esse interpretador usa a lista hierárquica de módulos do código para dirigir a simulação em função do tempo[8][9][11]. Em hardware é comum o controle dos dados por batidas de tempo (clock) , a linguagem verilog define esse controle de forma que cada bloco seja executado x milisegundos após o outro. Somente na fase de interpretação que esse controle faz sentido uma vez que o sinal de entrada de uma porta pode não ser confiável antes dos x milisegundos[10].