Nesta seção, vamos falar sobre como usar o Quartus para gravar a descrição de hardwarae no FPGA Cyclone IV ou na memória flash, utilizando como base a placa Mini-FPGA.
Os passos aqui apresentados são o mínimo necessário e podem ser utilizados para outros cartões e FPGAs da Intel, desde que sejam ajustadas as configurações dos chips e das outras placas de desenvolvimento.
O que precisa saber:
Esta página parte do princípio que o leitor conhece o software Quartus, sabe criar projetos, fazer a compilação e inclusive sabe usar o Pin Planner. Também é suposto que os drivers da USB-Blaster foram configurados corretamente, conforme o tópico “Quartus com Questa: Escolher e instalar uma versão -> “Instalação do driver USB-Blaster“.
O foco aqui é abordar as etapas necessárias para gravação do código no FPGA ou na memória Flash.
Caso estas informações sejam de grande valia para ti, vou ficar muito agradecido se você clicar nos anúncios desta página e conferir o que meus patrocinadores tem para lhe oferecer.
Preparando o FPGA para ser configurado:
Considerando que estamos configurando o chip Cyclone IV da placa de desenvolvimento Mini-FPGA, precisa:
Pin Assignment:
Proceder com a etapa de “Pins Assignments”, em que é feita a conexão dos pinos físicos do FPGA, ao circuito lógico do VDL.
Isto é feito no Quartus, em “Assignments” -> “Pin Planner”, conforme indicado abaixo:
Terminada a associação dos pinos, basta fechar a janela do Pin Planner, pois o salvamento é automático.
Revisando as configurações do FPGA:
Revisar as opções de configuração do dispositivo FPGA e de seus pinos, clicando em “Assignments” (A) -> “Device” (B) -> “Device and Pin Options” (C), conforme indicado abaixo:
Na janela “Device and Pin Options” conforme indicado abaixo, temos uma lista de categorias configuráveis das opções de pinos (D).
- Na opção “Unused Pins” (E), escolha “As input tri-stated” (F).
- Na opção “Dual purpose Pins” (G), escolha “Use as regular I/O para nCEO (H).
Clique em “OK” até voltar à tela inicial do Quartus.
De volta à tela inicial do Quartus, digite <CTRL>+L para compilar o projeto novamente.
Gravando temporariamente no FPGA:
Terminada a compilação do projeto, precisa conectar a placa Mini-FPGA na porta USB, para que o gravador seja reconhecido pelo Quartus.
Caso não apareça a opção “USB-Blaster” a seguir, confira se a placa Mini-FPGA está conectada corretamente e verifique se a instalação do driver USB foi efetuada corretamente, conforme explicado <nesta página, no tópico “Instalação do USB-Driver”>.
Uma vez conectada a placa Mini-FPGA, para gravar temporariamente no FPGA, precisa carregar o arquivo de configuração compilado.
Para carregar o arquivo compilado, acesse “Tools” -> “Programmer” que abrirá a tela de configuração do programador, indicada abaixo:
Clique na opção “Hardware Setup”, vai abrir a tela de configuração do gravador. Na drop down list (2), deve-se selecionar a opção USB-Blaster (2) e “Close” (3).
Conforme print abaixo, uma vez selecionado o gravador, clique em “Add File…” (4), navegue até a pasta “output files” (5) do projeto e selecione o arquivo que foi compilado “prim_hdw.sof” (6). Em seguida clique em “Abrir” (7).
O arquivo “.sof” contém o a configuração do FPGA. Note também que o arquivo “prim_hdw.sof” é para este exemplo e pode variar de acordo com o seu projeto.
De volta à tela do programador, conforme imagem abaixo, observe a linha que descreve o arquivo configurador selecionado (8).
Na coluna “Device” deve constar o código do FPGA da placa de desenvolvimento Mini-FPGA e o desenho logo abaixo (9), também deve exibir o código correto do FPGA da placa. Caso não esteja, antes de prosseguir, precisa revisar os passos anteriores.
Com tudo revisado e certo, basta clicar em “Start” (10) e acompanhe a gravação do FPGA observando a barra Progress (11).
Ao término da gravação, o FPGA estará com uma gravação temporária. Caso a placa Mini-FPGA seja desligada, será desfeita a configuração do FPGA.
Gravando definitivamente na memória Flash do FPGA:
Terminadas a revisão das configurações do FPGA, para gravar em definitivo no FPGA, é necessário carregar o arquivo de configuração na memória flash (chip U5 no esquemático) da placa de desenvolvimento Mini-FPGA.
Cada vez que o FPGA for energizado, ele irá buscar automaticamente o arquivo de configuração na memória flash.
Para gravar na memória flash, primeiro precisa converter o arquivo “.sof” para “.jic” que é o formato que contém as instruções de como gravar o arquivo de configuração na memória flash.
Explicando um pouco mais, o arquivo com extensão “.jic” é um arquivo binário que contem os dados do dispositivo de configuração serial que podem ser um desses: “EPCS1”, “EPCS4”, “EPCS16” e “EPCS64”, junto com o identificador do dispositivo responsável para gravar na memória flash, junto com o arquivo de configuração do FPGA que para a placa de desenvolvimento Mini-FPGA é a memória flash do tipo EPCS16, junto com o CycloneIV.
Convertendo o arquivo “.sof” para “.jic”:
Conforme dito, para o arquivo de configuração “prim_hdw.sof” ser gravado na memória flash, ele precisa ser convertido para o formato “.jic”, conforme passos a seguir.
Na tela inicial do Quartus, clicar em “File” (1) -> Convert Programming Files (2) para abrir a tela “Convert Programming File”.
Na tela “Convert Programming File” -> drop down “Programming File Type” (3) -> selecione a opção “JTAG Indirect ConfigurationFile(.jic)” e clique no botão “…” (4) para abrir a tela “Configuration Device” (5), indicada abaixo.
- Na drop down Device Family, precisa selecionar a família “Cyclone IVE” (6).
- Na caixa drop down “Configuration Mode”, selecione “Active Serial” (7).
- Na aba “Configuration Device” (8) -> tabela “Name” (9), selecione a opção EPCS16 – linha 15 (10).
- Clique em “Ok” (11) para retornar à tela “Convert Programming File” (12).
De volta na tela “Convert Programming File” (12), abaixo:
- No campo “File name”, defina o nome do arquivo “.jic” que acabou de ser gerado (13).
- No quadro “Input Files to convert”, clique no item “Flash Loader” (14).
- Ao clicar no item “Flash Loader” vai mudar o rótulo do botão de “Add File” para “Add Device” (15).
- Clique no botão “Add Device” (15).
Vai aparecer a tela “Select Devices” (16), abaixo:
- De acordo com a placa Mini-FPGA, no campo “Device family” (17), precisa selecionar a opção “Cyclone IVE” (18) .
- Em seguida, no campo “Device Name” (19), selecione a opção “EP4CE6” (20).
- Clique em “Ok” (21), para fechar a tela “Select Devices”.
De volta à tela “Convert Programming File” (23), exibida abaixo:
- Assegure que o campo “Flash Loader” ficou com o valor “EP4CE6” (24).
- Clique no item “SOF Data” (25) e em “Add File” (26) para adicionar o arquivo “.sof” a ser convertido no formato “.jic”.
- Vai abrir a tela de seleção do arquivo “.sof” a ser convertido, que neste caso é o arquivo “prim_hdw.sof”.
- Navegue até a pasta “output files” do projeto e selecione o arquivo de configuração a ser convertido.
- Clique “Ok” para selecionar o arquivo e retornar à tela “Convert Programming File” (23).
- Confirme novamente se o flash loader ficou com o valor “EP4CE6” (24).
- Verifique se o campo “SOF/Data” (25) apresenta o nome do arquivo a ser convertido para “.jic” e se na coluna “Properties” aparece o modelo do FPGA EP4CE6F17, conforme indicado na figura acima (23).
- Clique no botão “Generate” (22) para gerar o arquivo e deverá aparecer uma janela informando que o arquivo “.jic” foi gerado com sucesso.
- Feche a janela do conversor do arquivo de programação.
Concluindo em definitivo a gravação:
A partir da tela inicial do Quartus, abrir a ferramenta de gravação (1), clicando em “Tools” -> “Programmer”.
Caso o programador tenha alguma configuração prévia, basta selecionar e excluir.
Com a placa Mini-FPGA conectada, usando o botão “Hardware Setup” (2) selecione o “USB-Blaster” (3) e deixe no modo “JTAG” (4), conforme indicado abaixo.
Caso não apareça a opção “USB-Blaster” a seguir, confira se a placa Mini-FPGA está conectada corretamente e verifique se a instalação do driver USB foi efetuada corretamente, conforme explicado <nesta página, no tópico “Instalação do USB-Driver”>.
Clique no botão “Add File” (5) do programador, navegue e abra o arquivo “.jic” que foi gerado anteriormente, que neste exemplo é o “output_file.jic”.
Conforme dito, o arquivo “output_file.jic”, contém toda a configuração necessária para salvar na memória flash, junto com o arquivo de configuração do FPGA, conforme indicado na interface gráfica do programador (6).
Confirme na descrição dos arquivos que a linha “Factory default enhanced SFL Image” esteja indicando o dispositivo “EP4CE6” (7) e que a linha “output_files…” esteja indicando o dispositivo “EPCS16”.
Clique em “Start” (8) para o código ser gravado na memória flash e aguarde terminar a gravação observando a barra de progresso (9).
A partir dai, a descrição de hardware estará salva na memória flash e ela será carregada para o FPGA, cada vez que a placa Mini-FPGA for ligada.
Criado por Renato de Pierri.
14/novembro/2023