Aula 5.0: Códigos em Verilog - introdução #LTCode

COMPARTILHAR:

Aula 5 - Códigos em Verilog HDL

Este artigo faz parte do projeto #LTCode

Abaixo você terá acesso a toda a base para compreender códigos em Verilog HDL e rodar os códigos. Clicando em um dos tópicos abaixo você vai direto para o tópico desejado nesta página caso já tenha lido a introdução abaixo.

Verilog é uma das duas maiores HDL usadas por projetistas de hardware na indústria e no meio acadêmico. Foi desenvolvida entre 1984 e 1985 por Philip Moorby que necessitava de um meio simples, intuitivo e efetivo de descrever circuitos digitais para modelagem, simulação e análise.

Em 1985 – tornou-se propriedade da Gateway Design System Corporation. Posteriormente foi adquirida pela Cadence Design Systems Inc. .

Em 1990, a linguagem foi aberta para domínio público com a expectativa que com isso aumentasse rapidamente. O padrão atual da linguagem Verilog é o IEEE1364 de dezembro de 1995.

Mas o que é HDL? HDL é a sigla em inglês para Linguagem de Descrição de Hardware. São linguagens rigidamente definidas que representem circuitos lógicos.

Para poder visualizar o código funcionando na prática é necessário possuir uma FPGA (field programmable gate array - ou matriz de portas programáveis). Os CI's (Circuitos Integrados) programáveis dessa placa são constituídos por milhares de blocos lógicos e fazem basicamente o mesmo que vários circuitos integrados, com a diferença de que a matriz é reprogramável. Basicamente, o compilador interpreta o código, e a ferramenta de programação realiza a gravação da lógica que define as interconexões desses blocos de modo a atender à descrição textual modelada na linguagem.

Caso não tenha uma FPGA, ainda é possível simular o código utilizando um software como o Quartus II da Altera que possui o programa de simulação MODELsim. 

Como a Intel adquiriu as propriedades da Altera, você encontra o software que vamos utilizar em nossas aulas para download clicando aqui - versão recomendada: Quartus II Web Edition, não esqueça de fazer download do MODELsim no mesmo site.

Com as ferramentas instaladas, vamos a uma breve introdução de verilog:

Um projeto é formado a partir da construção de blocos, e em Verilog cada bloco é chamado de módulo (module). Note o que devemos nos atentar:

  • Deve-se dar um nome ao PROJETO do circuito descrito.
  • Criar o código do module main (principal) que descreve o circuito – DEVENDO este ter o mesmo nome do PROJETO principal.
  • Definir as entradas e saídas - ports (interfaces externas)
  • Definir sinais internos
  • Definir o corpo do circuito (funcionamento)
O Verilog é uma linguagem CASE SENSITIVE, isto é, ela diferencia as letras maiúsculas das minúsculas. E, todas as palavras-chaves devem ser escritas em minúsculas.

Dados externos - declarados nos ports:
     Ports são os dados de entrada e saída que o usuário terá contato por exemplo: teclado e mouse como entrada, vídeo como saída.
       O kit FPGA da imagem abaixo, possui como entrada chaves e botões (push bottons), já as saídas temos leds, displays de 7-segmentos, LCD.
A imagem acima representa uma FPGA - Cyclone II da Altera.


Ao abrir o Quartus deve-se criar o projeto e os arquivos em Verilog HDL. Pra isso, clique em "FILE" e em seguida em "New Wizard Project".


Uma janela abrirá, nela defina uma pasta para os arquivos do projeto e nome do projeto, como ilustra a imagem abaixo.


Após apertar "Next > " aperte "Next >" novamente para cair na janela da imagem abaixo. Para nossos códigos em Verilog estaremos usando a FPGA Cyclone II EP2C 35 F 672 C6, portanto faça a seleção como ilustra a imagem abaixo e aperte "Next >".


Na tela seguinte faça seleção do modo de simulação:


Depois de apertar "Next >" aparecerá uma janela com as informações sobre o projeto e então clique em "Finish". Em seguida no Quartus, aperte "File" e em seguida clique em "New", uma janela abrirá, escolha a opção "Verilog HDL File".

Um espaço para você escrever seu código em Verilog aparecerá:

Aperte ctrl + s (no caso do Windows) para salvar o arquivo "Verilog1.v", note que ele deverá ter o mesmo nome do projeto, ou seja, renomeie se necessário e salve na pasta do projeto.


Nas aulas você aprenderá a escrever os códigos em Verilog, então vamos supor que já tenha um código pronto, para compilar é simples, basta clicar no ícone de play como ilustra a imagem abaixo. Se tudo der certo vai aparecer "Full compilation was successful" e é normal aparecer este monte de warnings. Caso apareça "Full compilation was NOT successful" significa que você digitou algo errado no código ou esqueceu de algo.




Para visualizar seu código Verilog rodando na FPGA (caso possua uma) é necessário realizar a pinagem, a pinagem permite que por exemplo ao apertar um botão na FPGA algo aconteça, para isto é necessário o arquivo de pinagem que está disponível para download clicando aqui e coloque na mesma pasta do projeto. Depois basta acessar "Assignments" e clicar em "Import Assignments...", então importe o arquivo de pinagem.


A pinagem permite que você associe variáveis do seu código a entradas e saídas da FPGA. Depois de importado o arquivo, para realizar a pinagem basta em "Assignments" clicar em "Assignment Editor" e em seguida atribuir a variável a alguma porta de entrada (in) ou saída (out) da sua FPGA. Depois de realizar a pinagem, compile o código novamente.



Depois que o código estiver pronto, basta programar a FPGA para ver o projeto funcionando na prática. Para isso, clique em "Tools" e em seguida em "Programmer".


Uma nova janela abrirá, nela clique em "Add File", navegue pela pasta do seu projeto e acesse a pasta "output_files" e então selecione o arquivo que estiver o final ".sof" e clica em "Open". Em seguida clique em "Hardware Setup" e escolha seu FPGA conectada ao seu computador (não podemos demonstrar pois estamos sem FPGA no momento que escrevo) e em seguida quando sua FPGA for identificada basta apertar "Start" para que o projeto seja embarcado nela.



É muito simples, clique em "Tools" depois acesse "Netlist Viewers" e em seguida clica em "RTL Viewer", uma nova janela abrirá ilustrando o circuito.



Se você não tem uma FPGA não fique triste, é possível simular o projeto! Saiba abaixo como realizar a simulação no ModelSim-Altera.

Primeiro acesse "Tools", logo abaixo acesse "Run Simulation Tool" e em seguida clique em "RTL Simulation". Aguarde então o carregamento do ModelSim, ele costuma demorar abrir mesmo.

Caso o ModelSim não abra, verificar se o caminho (Path) do executável está correto. Para isto, acesse "Tools" e depois clique em "Options" uma nova janela abrirá, em "EDA Tool Options" confira se o caminho para o executável do ModelSim está correto. 

Continuando...


Como exemplo de simulação do ModelSim vou utilizar um projeto de porta lógica "ou", que será explicado na próxima aula (5.1). Quando abrir o ModelSim, em "Library" clique em "work" para expandir e aparecer seu projeto, dê um duplo clique sobre seu projeto e em seguida em "Objects" vai aparecer as variáveis encontradas em seu projeto, clique com botão direito sobre alguma e selecione "Add to", depois "Wave" e por fim clique em "Selected Signals", faça isso com todas variáveis desejadas.


 Na janela "Wave" vai listar as variáveis selecionadas, clique com botão direito sobre a variável desejada em clique em "clock", então defina um período (period) para a variável. Para nosso exemplo de porta lógica "ou" vamos configurar:
  • Variável "a": period 100
  • Variável "b": period 200
A variável "out" é nossa variável de saída, logo não faça o procedimento com ela. Altere o valor do tempo de simulação na barra de execução para 1500 ps e do lado execute a simulação.


Como pode notar na imagem acima, quando a variável "a" ou "b" assume valor de "1" a saída "out" é sempre "1". Abaixo você confere a tabela verdade das principais portas lógicas que usaremos em nossas aulas:

portas lógicas - https://pt.wikipedia.org/wiki/Porta_lógica

Resumindo:
  • Qualquer coisa AND 0 é 0.
  • Qualquer coisa OR 1 é 1.
  • XOR qualquer coisa igual é 0.
  • XOR qualquer coisa diferente é 1.

Operadores aritméticos:
  • - subtração
  • * multiplicação
  • / divisão
  • % resto divisão ou  modulo
  • + adição
Operador unário:
  • - na frente de uma variável muda seu sinal
Operadores relacionais:
  • > maior
  • >= maior ou igual
  • < menor que
  • <= menor ou igual
  • == igual
  • != diferente
Operadores lógicos:
  • ! negação
  • && conjunção
  • || disjunção
  • ? condiocional
Operadores entre bits e unários:
  • ~ negação
  • & conjunção ou and
  • | or
  • ^ xor
  • ~& nand
  • ~| nor
  • ~^ xnor
Outros operadores:
  • {a,b} concatenação
  • << deslocar bits a esquerda
  • >> deslocar bits a direita
>> Próxima aula, clique aqui.

COMENTÁRIOS

Nome

#ann,24,#HK,20,#LTCode,70,Artigo - Diversos,158,Artigo - Games,196,Artigo - Tecnologia,530,autor-thomaz,7,Coluna - Alternative World,24,Coluna - Fail,12,Coluna - Tec Line,14,Criptomoeda,58,Curiosidades - Diversos,49,Curiosidades - Tecnologia,50,en,2,HN,12,Raspberry Pi,9,root,70,Shorty Awards,1,Smartphones - Reviews,33,Top Nostalgia,2,VPN,17,WhatsApp,44,
ltr
item
Limon Tec: Aula 5.0: Códigos em Verilog - introdução #LTCode
Aula 5.0: Códigos em Verilog - introdução #LTCode
Aula 5 - Códigos em Verilog HDL
https://1.bp.blogspot.com/-Vv6C0DkQgY0/WG_EGTY1EhI/AAAAAAAAFcs/qphwk8Z4UdkFSQu0zbS5xoZ_9_KovVlJACLcB/s640/ltcode.jpg
https://1.bp.blogspot.com/-Vv6C0DkQgY0/WG_EGTY1EhI/AAAAAAAAFcs/qphwk8Z4UdkFSQu0zbS5xoZ_9_KovVlJACLcB/s72-c/ltcode.jpg
Limon Tec
https://www.limontec.com/2019/01/aula-5-0-codigos-em-verilog-ltcode.html
https://www.limontec.com/
https://www.limontec.com/
https://www.limontec.com/2019/01/aula-5-0-codigos-em-verilog-ltcode.html
false
2157924926610706248
UTF-8
Carregar todos posts Não encontramos nenhum post VER TUDO Ler mais Responder Cancelar resposta Deletar Por Home PÁGINAS POSTS Ver tudo RECOMENDADO PARA VOCÊ LABEL ARQUIVO SEARCH TODOS POSTS Não encontramos nenhum post relacionado a sua requisição VOLTAR PÁGINA INICIAL Domingo Segunda Terça Quarta Quinta Sexta Sábado Dom Seg Ter Qua Qui Sex Sab Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro Outubro Novembro Dezembro Jan Fev Mar Abr Maio Jun Jul Ago Set Out Nov Dez apenas agora 1 minuto atrás $$1$$ minutes ago 1 hora atrás $$1$$ hours ago Ontem $$1$$ days ago $$1$$ weeks ago mais de 5 semanas atrás Seguidores Seguir ESTE CONTEÚDO ESTÁ BLOQUEADO PASSO 1: Compartilhe com seus amigos PASSO 2: Clique no link compartilhado Copiar Todo Código Selecionar Todo Código Todos códigos foram copiados para seu clipboard Não é possível copiar códigos / textos, por favor aperte [CTRL]+[C] (ou CMD+C no Mac) para copiar Tabela de conteúdo