Mudanças entre as edições de "Preparando para gravar o circuito lógico no FPGA"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
 
(26 revisões intermediárias por 4 usuários não estão sendo mostradas)
Linha 1: Linha 1:
*[[Configuração da USB para programação do FPGA via JTAG]]
+
==Escolha do kit com o FPGA==
 +
Para realizar a implementação de um sistema digital em um FPGA, os fabricantes de chips disponibilizam kits de desenvolvimento/educacionais nos quais além do FPGA componentes periféricos diversos estão disponíveis para o desenvolvedor.  Entre as características comuns desses kits está a presença de:  Leds, Chaves, Displays, Conectores ligados diretamente a um conjunto de pinos do chip FPGA, Conversores A/D e D/A, entre outros.  Para conhecer a característica de cada kit, recomenda-se que o desenvolvedor analise o manual do fabricante. Nos laboratórios de Telecomunicações do IFSC estão disponíveis para os professores/alunos alguns kits, cujo uso é destinado prioritariamente para as disciplinas dos Cursos Técnicos e de Engenharia de Telecomunicações.
 +
Após selecionar o kit, deverá ser feita a atribuição da pinagem do FPGA conforme as conexões previamente existentes no kit escolhido.  A pinagem de cada kit pode ser encontrada nos respectivos manuais.  Para facilitar a configuração da pinagem mais utilizada consulte a página correspondente a seguir:
 +
{| class="wikitable"  border="1" cellpadding="3" cellspacing="0" style="text-align:left; font-size:100%" bgcolor="#efefef"
 +
! scope="col" width=15% align="center" | Kit
 +
! scope="col" width=7% align="center" | Fabricante do Kit
 +
! scope="col" width=15% align="center" | Família FPGA
 +
! scope="col" width=10% align="center" | Device
 +
! scope="col" width=25% align="center" | Documentos disponíveis
 +
! scope="col" width=5% align="center" | Arquivo qsf
 +
! scope="col" width=30% align="center" | Pinagem do kit
 +
! scope="col" width=5% align="center" | Disponíveis no IFSC
  
Para gravar o circuito lógico no FPGA, é necessário escolher um FPGA para a aplicação. Neste caso
+
|-
utilizaremos o kit DE0-Nano.  
+
| align="center" | [http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=165&No=593&PartNo=1 DE0-Nano]
*Mude a família e dispositivo a ser usado (Assignments > Devices), [Family = Cyclone IV E] e selecione  EP4CE22F17C6
+
| align="center" | TERASIC
*Para ver as pinagens completa das [[Interfaces de entrada e saída da DE2-115]] no [[Media:ManualDE2-115.pdf | Manual]].
+
| align="center" | Cyclone® IV E - ALTERA
*[[Pinagem dos dispositivos de entrada e saída do kit MERCURIO IV]]
+
| align="center" | EP4CE22F17C6
*[[pinagem do kit DE0-Nano]]
+
| align="center" | [[Media:ManualDE0Nano.pdf | User Manual]]
*[[Arquivo qsf com pinagens dos kits da ALTERA |pinagem do kit DSP]]
+
| align="center" | [[Media:qsfDE0Nano.txt | qsf]]
*Atribua os pinos conforme a necessidade do projeto
+
| align="center" | [[Pinagem do kit DE0-Nano]]
*Exemplo de atribuição de pinagem
+
| align="center" | 4
 +
|-
 +
| align="center" | [http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&No=502 DE2-115]
 +
| align="center" | TERASIC
 +
| align="center" | Cyclone® IV E - ALTERA
 +
| align="center" | EP4CE115F29C7
 +
| align="center" | [[Media:ManualDE2-115.pdf | User Manual]]
 +
| align="center" | [[Media:qsfDE2-115.txt | qsf]]
 +
| align="center" | [[Interfaces de entrada e saída da DE2-115]]
 +
| align="center" | 14
 +
|-
 +
| align="center" | [https://www.macnicadhw.com.br/produtos/kits/terasic-intel-fpga/mercurio-iv-kit-obsoleto MERCURIO IV]
 +
| align="center" | MACNICA
 +
| align="center" | Cyclone® IV E - ALTERA
 +
| align="center" | EP4CE30F23C7
 +
| align="center" | [[Media:ManualMercurio.pdf | Manual do Usuário]]
 +
| align="center" | [[Media:qsfM4.txt | qsf]]
 +
| align="center" | [[Pinagem dos dispositivos de entrada e saída do kit MERCURIO IV]]
 +
| align="center" | 20
 +
|-
 +
| align="center" | [http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=167&No=830#contents Cyclone V GX Starter Kit]
 +
| align="center" | TERASIC
 +
| align="center" | Cyclone® V GX
 +
| align="center" | 5CGXFC5C6F27C7N
 +
| align="center" | [[Media:ManualCycloneVStarterKit.pdf | Manual do Usuário]]
 +
| align="center" | [[Media:qsfCVSKit.txt | qsf]]
 +
| align="center" |
 +
| align="center" | 2
 +
|-
 +
| align="center" | [http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=56&No=364#contents DE0]
 +
| align="center" | TERASIC
 +
| align="center" | Cyclone® III
 +
| align="center" |
 +
| align="center" |
 +
| align="center" |
 +
| align="center" |
 +
| align="center" | 1
 +
|-
 +
| align="center" | [http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=218&No=1021#contents DE10-Lite]
 +
| align="center" | TERASIC
 +
| align="center" | MAX 10
 +
| align="center" |
 +
| align="center" |
 +
| align="center" |
 +
| align="center" |
 +
| align="center" | 1
 +
|}
 +
 
 +
==Configuração da USB para programação do FPGA via JTAG==
 +
A configuração da interface USB do computador para a programação do FPGA via JTAG é realizada no computador na qual o kit FPGA será conectado.  A maioria dos kits atuais já tem a interface USB-Blaster e o procedimento de configuração é o descrito no [[Configuração da USB para programação do FPGA via JTAG | procedimento de configuração da USB para programação do FPGA via JTAG]].
 +
 
 +
:'''OBS:''' Essa configuração necessita ser feita apenas uma única vez no computador que será usado.  É necessário ter acesso de administrado/root para fazer a configuração
 +
 
 +
==Gravação do Projeto no FPGA==
 +
Após escolher o kit a ser usado no projeto, é necessário informar ao Quartus II a família e o dispositivo (device) que será utilizado
 +
*para DE0-Nano '''{Assignments > Device... > Device family (Family: [Cyclone IV E],  Name filter: [EP4CE22F17C6] ) > [OK]}'''
 +
*para DE2-115 '''{Assignments > Device... > Device family (Family: [Cyclone IV E],  Name filter: [EP4CE115F29C7] ) > [OK]}'''
 +
*para MERCÚRIO IV '''{Assignments > Device... > Device family (Family: [Cyclone IV E],  Name filter: [EP4CE30F23C7] ) > [OK]}'''
 +
 
 +
Para evitar que saídas de circuitos da placa sejam ligadas ao terra através do FPGA, defina como alta impedância o estado dos pinos não utilizados no projeto.
 +
*'''{Assignments > Device... > Device and Pin Options... > Category: Unused Pins > Reserve all unused pins: [As input tri-stated] > [OK] > [OK]}'''
 +
 
 +
Atribua os pinos conforme a necessidade do projeto.  Existem diferentes maneira de fazer esta atribuição:
 +
:* Uso do Pin Planner '''{Assignments > Pin Planner}''' no modo tabela.  Digite o número do pino na coluna {Location}.  Apenas posições válidas são aceitas.
 +
:* Uso do Pin Planner '''{Assignments > Pin Planner}''' na interface gráfica. Araste o {Node name} para a posição desejada no leiaute do FPGA.
 +
:* Uso do Assignments Editor '''{Assignments > Assignment Editor}'''
 +
:* Uso do Import Assignments '''{Assignments > Assignment Editor}'''.  Permite reutilizar pinagens definidas para o mesmo chip com os mesmos nomes em outro projeto.  Será necessário ter acesso ao arquivo .qsf desse projeto.
 +
:*Para ilustrar o processo, ao final da configuração dos pinos, o Pin Planner '''{Assignments > Pin Planner}''' deverá mostrar a correta pinagem conforme exemplificado na figura abaixo:
 
<center>
 
<center>
[[Arquivo:RegDeslocamento2DE0-NanoPin.png]]
+
[[Arquivo:RegDeslocamento2DE0-NanoPin.png| Exemplo de pinagem de um projeto]]
 
</center>
 
</center>
*Defina como alta impedância o estado dos pinos não utilizados no projeto. '''[Assignments > Devices > Device and Pin Options... > Category:Unused Pins > Reserve all unused pins: [As input tri-stated] > OK]'''.
 
*Compile o projeto.
 
  
*[[Programando o FPGA através da USB-Blaster]]
+
Uma vez completada a pinagem, compile o projeto para que o Quartus faça o Fitter (Place & Route). Após a compilação a mensagem de warning '''"Critical Warning (XXXXX): No exact pin location assignment(s) for XX pins of XX total pins"''' não deverá mais ser mostrada.  Caso seja mostrada verifique qual o pino que não foi configurado corretamente e corrija.
 +
==Programando o FPGA==
 +
Depois de realizar as etapas anteriores:
 +
* Escolhido corretamente o kit.
 +
* Definidos e configurados os pinos do FPGA.
 +
* Pinos não usados estão configurados como tri-state.
 +
* O compilador não apresenta warning sobre "pin location assignment".
  
 +
A programação do FPGA é feita seguindo o [[Programando o FPGA através da USB-Blaster | procedimento de programação do FPGA através da USB-Blaster]].
  
=Preparando para gravar o circuito lógico no FPGA=
+
==Programando o kit FPGA usando comando de linha==
Para gravar o circuito lógico no FPGA, é necessário escolher um FPGA para a aplicaçãoNeste caso utilizaremos o kit MERCURIO IV. [[Arquivo:KitMERCURIO.png|200px|right|Clique para Ampliar]]
+
Ao conectar o cabo USB a JTAG, muitas vezes a interface não responde corretamente e fica travada.   
*Mude a família e dispositivo a ser usado (Assignments > Devices), [Family = Cyclone IV E] e selecione EP4CE30F23C7.
+
Antes de executar os comandos mude para o diretório correto com:
 +
cd /opt/intelFPGA/20.1/quartus/bin
 +
cd /opt/altera/intelFPGA/20.1/quartus/bin
 +
 +
Para testar a interface USB-Blaster, execute o comando:
 +
  ./jtagconfig
  
*Utilize o display HEX0 do kit para mostrar a contagem:
+
1) USB-Blaster [2-1]
 +
  Unable to read device chain - JTAG chain broken
  
[[Arquivo:Display7segDE2-115.png|center]]
+
Neste caso a cadeia JTAG não pode ser acessada.  Então é necessário "matar" o serviço jtagd e reiniciá-lo.
 +
pkill -f jtagd -9; ./jtagd --user-start;
  
*Utilize os leds de LED0 a LED3 (verdes) para mostrar a contagem em binário.
+
Ao executar novamente o comando, deve estar tudo resolvido:
*Utilize a chave KEY0 para gerar o sinal de CLK.
+
./jtagconfig
 +
1) USB-Blaster [2-1]
 +
  020F70DD  10CL120(Y|Z)/EP3C120/..
  
*Atribua os pinos conforme a [http://wiki.sj.ifsc.edu.br/images/6/68/ManualMercurio.pdf pinagem do kit MERCURIO IV].
+
Para  programar o kit FPGA via JTAG sem abrir a interface gráfica, use a série de comandos:
*Ao final da configuração dos pinos, o Pin Planner deverá mostrar a seguinte pinagem:
+
pkill -f jtagd -9;
 +
./jtagd --user-start;
 +
device=$(./jtagconfig --enum | grep "USB-Blaster" | cut -c 4-);
 +
./quartus_pgm -c "$device" -m JTAG -o "p;/pasta/arquivo.sof"
  
[[Arquivo:DE2-115-ContAssCres3.png|300px|center]]
+
ou
 +
pkill -f jtagd -9; ./jtagd --user-start; device=$(./jtagconfig --enum | grep "USB-Blaster" | cut -c 4-); ./quartus_pgm -c "$device" -m JTAG -o "p;/pasta/arquivo.sof"
  
*Defina como alta impedância o estado dos pinos não utilizados no projeto. (Assignments > Devices), [Device and Pin Options...], escolha a (Category=Unused Pins), e selecione Reserve all unused pins: As input tri-stated. [OK].
+
==Consulte também==
 +
*[[Software e equipamentos recomendados para programação de FPGAs]]
 +
*[ftp://ftp.altera.com/up/pub Site de Downloads da ALTERA]
 +
==Antes de modificar esta pagina==
 +
* Faça as contribuições utilizando a [[Discussão:Preparando para gravar o circuito lógico no FPGA | página de discussões]]
  
*Compile o projeto. Note que agora a numeração dos pinos também aparece no diagrama esquemático.
+
[[Categoria:FPGA]]

Edição atual tal como às 11h58min de 1 de dezembro de 2023

Escolha do kit com o FPGA

Para realizar a implementação de um sistema digital em um FPGA, os fabricantes de chips disponibilizam kits de desenvolvimento/educacionais nos quais além do FPGA componentes periféricos diversos estão disponíveis para o desenvolvedor. Entre as características comuns desses kits está a presença de: Leds, Chaves, Displays, Conectores ligados diretamente a um conjunto de pinos do chip FPGA, Conversores A/D e D/A, entre outros. Para conhecer a característica de cada kit, recomenda-se que o desenvolvedor analise o manual do fabricante. Nos laboratórios de Telecomunicações do IFSC estão disponíveis para os professores/alunos alguns kits, cujo uso é destinado prioritariamente para as disciplinas dos Cursos Técnicos e de Engenharia de Telecomunicações. Após selecionar o kit, deverá ser feita a atribuição da pinagem do FPGA conforme as conexões previamente existentes no kit escolhido. A pinagem de cada kit pode ser encontrada nos respectivos manuais. Para facilitar a configuração da pinagem mais utilizada consulte a página correspondente a seguir:

Kit Fabricante do Kit Família FPGA Device Documentos disponíveis Arquivo qsf Pinagem do kit Disponíveis no IFSC
DE0-Nano TERASIC Cyclone® IV E - ALTERA EP4CE22F17C6 User Manual qsf Pinagem do kit DE0-Nano 4
DE2-115 TERASIC Cyclone® IV E - ALTERA EP4CE115F29C7 User Manual qsf Interfaces de entrada e saída da DE2-115 14
MERCURIO IV MACNICA Cyclone® IV E - ALTERA EP4CE30F23C7 Manual do Usuário qsf Pinagem dos dispositivos de entrada e saída do kit MERCURIO IV 20
Cyclone V GX Starter Kit TERASIC Cyclone® V GX 5CGXFC5C6F27C7N Manual do Usuário qsf 2
DE0 TERASIC Cyclone® III 1
DE10-Lite TERASIC MAX 10 1

Configuração da USB para programação do FPGA via JTAG

A configuração da interface USB do computador para a programação do FPGA via JTAG é realizada no computador na qual o kit FPGA será conectado. A maioria dos kits atuais já tem a interface USB-Blaster e o procedimento de configuração é o descrito no procedimento de configuração da USB para programação do FPGA via JTAG.

OBS: Essa configuração necessita ser feita apenas uma única vez no computador que será usado. É necessário ter acesso de administrado/root para fazer a configuração

Gravação do Projeto no FPGA

Após escolher o kit a ser usado no projeto, é necessário informar ao Quartus II a família e o dispositivo (device) que será utilizado

  • para DE0-Nano {Assignments > Device... > Device family (Family: [Cyclone IV E], Name filter: [EP4CE22F17C6] ) > [OK]}
  • para DE2-115 {Assignments > Device... > Device family (Family: [Cyclone IV E], Name filter: [EP4CE115F29C7] ) > [OK]}
  • para MERCÚRIO IV {Assignments > Device... > Device family (Family: [Cyclone IV E], Name filter: [EP4CE30F23C7] ) > [OK]}

Para evitar que saídas de circuitos da placa sejam ligadas ao terra através do FPGA, defina como alta impedância o estado dos pinos não utilizados no projeto.

  • {Assignments > Device... > Device and Pin Options... > Category: Unused Pins > Reserve all unused pins: [As input tri-stated] > [OK] > [OK]}

Atribua os pinos conforme a necessidade do projeto. Existem diferentes maneira de fazer esta atribuição:

  • Uso do Pin Planner {Assignments > Pin Planner} no modo tabela. Digite o número do pino na coluna {Location}. Apenas posições válidas são aceitas.
  • Uso do Pin Planner {Assignments > Pin Planner} na interface gráfica. Araste o {Node name} para a posição desejada no leiaute do FPGA.
  • Uso do Assignments Editor {Assignments > Assignment Editor}
  • Uso do Import Assignments {Assignments > Assignment Editor}. Permite reutilizar pinagens definidas para o mesmo chip com os mesmos nomes em outro projeto. Será necessário ter acesso ao arquivo .qsf desse projeto.
  • Para ilustrar o processo, ao final da configuração dos pinos, o Pin Planner {Assignments > Pin Planner} deverá mostrar a correta pinagem conforme exemplificado na figura abaixo:

Exemplo de pinagem de um projeto

Uma vez completada a pinagem, compile o projeto para que o Quartus faça o Fitter (Place & Route). Após a compilação a mensagem de warning "Critical Warning (XXXXX): No exact pin location assignment(s) for XX pins of XX total pins" não deverá mais ser mostrada. Caso seja mostrada verifique qual o pino que não foi configurado corretamente e corrija.

Programando o FPGA

Depois de realizar as etapas anteriores:

  • Escolhido corretamente o kit.
  • Definidos e configurados os pinos do FPGA.
  • Pinos não usados estão configurados como tri-state.
  • O compilador não apresenta warning sobre "pin location assignment".

A programação do FPGA é feita seguindo o procedimento de programação do FPGA através da USB-Blaster.

Programando o kit FPGA usando comando de linha

Ao conectar o cabo USB a JTAG, muitas vezes a interface não responde corretamente e fica travada. Antes de executar os comandos mude para o diretório correto com:

cd /opt/intelFPGA/20.1/quartus/bin
cd /opt/altera/intelFPGA/20.1/quartus/bin

Para testar a interface USB-Blaster, execute o comando:

./jtagconfig 
1) USB-Blaster [2-1]
 Unable to read device chain - JTAG chain broken

Neste caso a cadeia JTAG não pode ser acessada. Então é necessário "matar" o serviço jtagd e reiniciá-lo.

pkill -f jtagd -9; ./jtagd --user-start; 

Ao executar novamente o comando, deve estar tudo resolvido:

./jtagconfig 
1) USB-Blaster [2-1]
 020F70DD   10CL120(Y|Z)/EP3C120/..

Para programar o kit FPGA via JTAG sem abrir a interface gráfica, use a série de comandos:

pkill -f jtagd -9; 
./jtagd --user-start; 
device=$(./jtagconfig --enum | grep "USB-Blaster" | cut -c 4-); 
./quartus_pgm -c "$device" -m JTAG -o "p;/pasta/arquivo.sof"

ou

pkill -f jtagd -9; ./jtagd --user-start; device=$(./jtagconfig --enum | grep "USB-Blaster" | cut -c 4-); ./quartus_pgm -c "$device" -m JTAG -o "p;/pasta/arquivo.sof"

Consulte também

Antes de modificar esta pagina