Adquira estes componentes na Loja do Lab de Garagem

Olá Garagistas!

 

Neste tutorial mostraremos como colocar sua FPGA 101 para funcionar de uma maneira bem rápida, abordando também alguns conceitos importantes sobre FPGAs, suas linguagens de programação, e o software necessário para sua programação.

FPGA (Field Programmable Gate Array) é um dispositivo que processa informações/implementações digitais, como clock, entradas, saídas, circuitos lógicos, etc, sendo o primeiro lançado em 1985 pela Xilinx Inc. A ideia é a de um dispositivo que pode ser programado atendendo as necessidades nas aplicações do usuário. É constituído basicamente de três partes:

Blocos Lógicos (CLBs): circuitos com arranjos de flip-flops e lógica combinacional. Com esses blocos, pode-se construir os elementos lógicos funcionais;

Blocos de I/O (I/OBs): circuitos de interfaceamento com os CLBs e o mundo externo. São programados como unidirecionais ou bidirecionais;

Chaves de Conexão (Switch Matrix): trilhas que conectam os blocos lógicos aos de I/O. Normalmente feitas pela programação do FPGA. São escolhidas por um processo chamado de roteamento.

 

 

No caso deste tutorial, o FPGA utilizado é o da Altera, família Cyclone IV E, que está presente na FPGA 101. Esta pode ser programada, a princípio, nas linguagens de programação VHDL, Verilog HDL ou até via Esquemático (Hardware Design). Aqui, veremos duas aplicações simples utilizando a Verilog HDL, que foi escolhida por ser uma das mais populares utilizadas para este fim, e que tem alguns princípios baseados na linguagem C (o que facilita a compreensão).

 

Para isto, serão necessários os seguintes componentes:

1x FPGA 101;

1x Cabo Usb-Mini;

Software Quartus II 13.0 (Web Edition).

 

Na página de download da Altera (vide link acima), selecione seu sistema operacional, sua versão, se é ou não sp1 (service pack 1) e os itens abaixo para download. Então, clique em Download Selected Files. Os arquivos são extensos, portanto pode levar algum tempo.

 

 

Após o download, execute o aplicativo QuartusSetupWeb-13.0.1.232. Aceite os termos de licença e escolha o diretório da instalação.

 

Clique em Next e prossiga com a instalação. Aguarde até que o programa seja instalado, e então clique em Finish.

Abra o programa Quartus II, e clique em Create a New Project.

 

Selecione Next, escolha o diretório do projeto e dê um nome a ele. Observe que automaticamente o programa preenche no campo de baixo o mesmo nome que é digitado acima. Isso é para evitar problemas de identificação de arquivo na hora de compilar o programa. Veja abaixo um exemplo:

 

Clique novamente em Next, para a seguinte etapa:

 

Agora, é necessário fazer o download de dois arquivos: o fpga_101_top_template.v e o fpga_101.qsfAmbos podem ser baixados clicando AQUI como na figura abaixo:

 

Clique em Arquivos para início de projeto, para baixar os dois arquivos. Extraia-os, faça uma cópia de cada e cole na pasta do seu projeto. Veja o exemplo:

 

Altere o nome do arquivo se quiser, mantendo suas extensões (.v) e (.qsf). Então, voltando para a criação do projeto no Quartus II, selecione o diretório de onde você carregará o arquivo com extensão (.v). Veja abaixo:

 

Selecione o arquivo com extensão (.v) que foi copiado para a pasta do projeto e abra-o. Então, no Quartus II, clique em Add. Veja abaixo que o arquivo foi adicionado ao projeto:

 

Então, clique em Next. Nessa próxima etapa, será selecionada a família e as configurações do FPGA. Configure como é mostrado na figura abaixo:

 

Clique em Next. Agora nesta próxima etapa, selecione na parte Simulation, as opções ModelSim - Altera (em Tool name) e Verilog HDL (em Format). Isso é mostrado abaixo:

 

Clique em Next e depois Finish. Clique na aba "Files" para verificar os arquivos que foram carregados. Observe que o arquivo que foi adicionado no início da criação do projeto, está carregado. Veja abaixo:

 

Agora, clique em Assignments > Import Assignment. Então, carregue aquele segundo arquivo que foi baixado, o de extensão (.qsf). Veja abaixo:

 

Clique em Advanced e selecione as duas caixas de texto como mostrado abaixo:

 

Clique em OK, e OK novamente. Verifique a confirmação de importação:

 

Para terminar a configuração, clique na aba Hierarchy (ao lado da aba Files). Clique com o botão direito em em Cyvlone IV E > Settings:

 

Na parte General, coloque o nome do seu projeto no campo top-level entity. Veja a figura abaixo:

 

Então, clique em OK. Agora, seu programa está configurado para a FPGA 101. É só criar seu programa. Para isso, vá na aba files e clique no arquivo que você adicionou.  Veja abaixo:

 

Apague o código (.v) do arquivo e digite este abaixo:

 

 

module teste (A, B, L0, L1, L2, L3);                  // Inicializaçao do Módulo

input A, B;                                                      // Declaração das entradas
output L0, L1, L2, L3;                                      // Declaraçao das Saídas

reg L0, L1, L2, L3;                                          // Variáveis usadas para
reg TEMP0, TEMP1, TEMP2, TEMP3;              // exibir um valor na saída.

always @*                                                      // Loop Infinito
begin                                                             // Início do Loop

TEMP0 <= (~A) & (~B);                                  // Primeira condiçao do MUX
L0 <= ~TEMP0;                                              // Ascende o primeiro LED

TEMP1 <= (~A) & B;                                       // Segunda condiçao do MUX
L1 <= ~TEMP1;                                              // Ascende o segundo LED

TEMP2 <= (A) & (~B);                                    // Terceira condiçao do MUX
L2 <= ~TEMP2;                                              // Ascende o terceiro LED

TEMP3 <= A & B;                                           // Quarta condiçao do MUX
L3 <= ~TEMP3;                                              // Ascende o quarto LED

end                                                                // Fim do Loop

endmodule                                                      // Fechamento do módulo

 

Salve o arquivo (de preferência com o nome do projeto) de extensão (.v). 

Agora, é necessário informar ao Quartus II, quais os pinos que correspondem às entradas e às saídas do módulo. Para tal, clique em Assignments > Pin Planner. Assim, aparecerá uma janela com os pinos já declarados (aí a função do arquivo de extensão (.qsf)). Veja abaixo:

 

Na aba Node Name, encontre os nomes led[0], ... led[3], sw[0] e sw[1]. Esses são 4 dos 8 LEDs do usuário da placa e os dois push-buttons (S1 e S2). Renomeie os LEDs para as quatro saídas do MUX (L0, L1, L2 e L3)  e os push-buttons para os dois canais (A, B). Veja no exemplo abaixo:

 

Veja abaixo o Pin Planner após a alteração:

 

Então, ainda no Pin Planner, vá até a aba Weak Pull-up Resistor, e configure para "On" os resistores de pull-up das entradas A e B. Isto é necessário apesar de já existir esses resistores no Hardware. Veja abaixo:

 

Feche a janela do Pin Planner e clique em Processing > Start Compilation ou Ctrl+L  para compilar seu projeto. O resultado esperado é um similar ao da figura mostrada abaixo:

 

Clique em OK e feche a aba Compilation Report. Agora vamos gravar o programa na FPGA 101. Conecte a sua FPGA 101 no seu computador pela porta USB mais próxima do cristal oscilador, coloque somente o jumper mais próximo desta porta USB e vá em Tools > Programmer. Na opção "Mode", selecione "JTAG" e então clique na opção "Hardware Setup". Selecione "USB Blaster" e clique em "Add Hardware". Veja abaixo:

 

 

Feche a janela "Hardware Setup". O Quartus II cria algumas pastas dentro da pasta do seu projeto com alguns arquivos que dizem respeito às suas informações. Uma dessas pastas é chamada "Output Files", que é gerada após a compilação do seu projeto. Clique em Add Files. Vá até "Pasta do Seu Projeto" > output_files e carregue um arquivo (.sof) gerado nesta pasta. Esse é o que será gravado na FPGA 101. Veja abaixo:

 

Selecione a opção "Program/Configure", e a opção "Start" será habilitada. Clique então em "Start" e se tudo ocorreu como esperado, aparecerá "Progress 100% Successful", e sua placa estará rodando o programa. Veja abaixo:

 

Observações: o programa gravado na FPGA 101 (o arquivo .sof) está armazenado em uma memória RAM, portanto se a alimentação da porta USB for interrompida ou placa resetadao programa terá de ser regravado. Entretanto, há uma maneira de gravá-lo em uma memória não volátil, mas este tutorial é somente uma introdução à FPGA 101. Além disso, na hora de fazer o download, poderia somente ter baixado o suporte para Cyclone II, III e IV, mas com o pacote completo é possível programar também outras famílias de FPGA da Altera.  

Para mais informações sobre a linguagem Verilog HDL e o Sofware Quartus II, consulte os links de referência deste tutorial.

E a sua placa FPGA 101 está pronta para uso! Esperamos que tenha gostado, qualquer dúvida ou sugestão, poste no blog.

Até a próxima!

 

Referências:

Linguagem Verilog HDL

Quartus II Help

FPGA Altera Cyclone IV - Datasheet

 

 

 

 

 

 

 

 

 

 

 

Exibições: 14237

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de Lucas Andrade em 20 junho 2016 às 12:13

Marcelo,

Obrigado pela documentação e pela ajuda. Abraço!

Comentário de Marcelo Rodrigues em 20 junho 2016 às 11:27

Lucas,

Segue link com toda documentação disponível.

http://laboratoriodegaragem.com.br/fpga/fpga101.zip

Abraço!

Comentário de Lucas Andrade em 20 junho 2016 às 11:00

Olá! Gostaria de saber se existe mais documentações a respeito da placa FPGA 101 referente a sua utilização e correspondência com o Quartus II, ou um manual da placa informando a funcionalidade dos seus componentes, pinos de I/O, entre outros ? 

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço