Menu File:
Se aparecer a tela informativa:
Definir:
O diretório do projeto;
O nome do projeto;
Qual é o “Top-Level Design” (o main da linguagem C).
Project Type:
Add Files:
Family, Device & Board Settings:
Cyclone V:
EDA Tool Settings:
Summary:
Depois de criado o projeto, vá em Assignements > Settings > Compiler Settings > VHDL Input e:
Menu File > Design Files > VHDL File;
Com esse novo arquivo selecionado:
Menu File > Save As;
Nomeie o arquivo e salve.
Com esse arquivo selecionado:
Selecione o arquivo que possui a entidade desejada e:
Ou, vá em:
Menu Assignments > Settings > General > Top-Level Entity;
E escolha a Top-Level Entity desejada.
Clique com o botão esquerdo do mouse no editor de texto e escolha:
Ou, vá em Menu Edit:
Em Insert Template > VHDL > Constructs > Design Units, veja a sintaxe para:
Library Clause;
Use Clause;
Entity;
Architecture.
Em Insert Template > VHDL > Constructs > Declarations, veja a sintaxe para:
Signal Declaration;
Variable Declaration;
Constant Declaration;
Component Declaration.
Em Insert Template > VHDL > Constructs > Concurrent Statements, veja a sintaxe para:
Combinational Process;
Sequencial Process.
Em Insert Template > VHDL > Constructs > Concurrent Statements > Instances, veja a sintaxe para:
Component Instantiation;
Direct Entity Instantiation;
Direct Entity Instantiation w/ Architecture.
Em Insert Template > VHDL > Constructs > Sequential Statements, veja a sintaxe para:
Em Insert Template > VHDL > Constructs > Expressions, veja a sintaxe para:
Unary Operators;
Binary Operators.
Em Insert Template > VHDL > Logic > Registers, veja a sintaxe para:
Basic Positive Edge Register;
Basic Positive Edge Register with Asynchronous Reset and Clock Enable;
Full-Featured Positive Edge Register with All Secondary Signals.
Com o cursor na posição do arquivo onde deseja inserir o template:
Ou, escolha o template desejado e copie a parte de interesse e cole no arquivo.
Menu File:
New:
Na tela de edição que foi aberta:
No navegador da biblioteca:
Primitives:
Logic:
and2;
OK.
Na tela de edição:
Use o simbolo “In”:
Selecione como entrada:
Selecione como saída:
Modifique os nomes dos sinais de entrada e de saída:
Com duplo clique nos nomes atuais:
Mude para Entrada_1;
Mude para Entrada_2;
Mude para Saida;
Não esqueça de salvar o seu projeto.
No caso da utilização de descrição do circuito através do diagrama lógico, pode-se verificar, ou mesmo exportar, o código equivalente ao diagrama. Para isso, use a opção Create HDL Design File from Curret File:
Menu File:
Create / Update:
Create HDL Design File from Curret File…
Selecione VHDL;
OK.
Vá no diretório do projeto e abra o arquivo “.VHD” no editor de texto.
Para uma porta AND, o programa será similar ao seguinte:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
LIBRARY work;
ENTITY portaAND IS
PORT (
entrada1 : IN STD_LOGIC;
entrada2 : IN STD_LOGIC;
saida : OUT STD_LOGIC
);
END portaAND;
ARCHITECTURE bdf_type OF portaAND IS
BEGIN
saida <= entrada1 AND entrada2;
END bdf_type;
O processo de compilação é dividido em algumas etapas:
Análise:
Verifica cada unidade de projeto separadamente:
declaração da entidade, arquitetura, etc..
facilita se utilizar um arquivo por unidade de projeto.
Verifica se há erros de sintaxe (gramática) ou semântica (significado);
As unidades analisadas são colocadas em uma biblioteca:
usando um formato interno a dependente da implementação;
essa biblioteca é chamada de work.
Elaboração:
Transforma o projeto hierárquico em um projeto plano:
cria as portas (ports
);
cria os sinais (signal
) e processos (process
) dentro do corpo de cada arquitetura;
para cada componente instanciado, copia a entidade e corpo de arquitetura do componente para o módulo que o utiliza;
repete esse procedimento recursivamente nos corpos de arquitetura.
Resultado da elaboração:
process
) interligados por uma rede de sinais (signal
), chamado de netlist.É o suficiente para que a simulação possa ser executada.
Síntese:
Com o auxílio da biblioteca da tecnologia usada, traduz o projeto RTL em uma lista de conexões de portas lógicas (gate-level netlist):
Existem restrições ao uso de algumas declarações no modelo RTL;
Essas restrições dependem da ferramenta de síntese utilizada.
Alocação e Roteamento:
Analisa a lista de conexões gerada na síntese e aloca os blocos funcionais (primitivas) no dispositivo alvo (modelo da FPGA ou ASIC);
Faz o roteamento dos sinais que interconectam esses blocos funcionais;
Verifica se foram satisfeitas as restrições (constraints) de área, temporização e potência.
Gera um arquivo contendo todas as conexões necessárias para que a FPGA implemente a funcionalidade desejada.
No Quartus, a compilação pode ser feita de três formas:
Start Compilation
: Faz a compilação completa. Isso inclui: análise sintática, criação da netlist, roteamento para a tecnologia escolhida (fitter), verificação das restrições de temporização do projeto, alocação dos pinos da FPGA, geração do arquivo assembly para gravar a FPGA, etc …
Start Analysis & Elaboration
: Analisa o projeto procurando por erros de sintaxe e semântica. Também executa a elaboração, que é a identificação da hierarquia criada. Após a execução, é possível utilizar o RTL Viewer e navegar pelos arquivos no Project Navigator.
Start Analysis & Synthesis
: Analisa o projeto procurando por erros de sintaxe e semântica. Faz a extração da netlist e cria um banco de dados com todos arquivos do projeto. Também faz o mapeamento do projeto para a arquitetura alvo (síntese). Após a execução, é possível fazer a simulação do circuito criado.
Clique no ícone escolhido:
Aguarde a finalização do processo;
Verifique se ocorreu algum erro.
Para verificar o circuito resultante da compilação, use:
Tools
> Net List Viewers
> RTL Viewer
Fluxo da compilação (compilation flow) do Quartus Prime
Pode-se verificar as conexões do circuito:
E, com o botão direito do mouse, exibir o sub menu:
Conectivity Details
.Que podem, eventualmente, possuir o sinal de “+”:
Menu File:
New:
Verification/Debug Files:
University Program VWF;
OK.
Abrirá uma nova tela com o simulador:
Menu Edit:
Insert:
Na tela de ‘Insert Node or Bus’:
Na tela de ‘Node Finder’:
Clique em List:
Escolha os sinais para simular;
OK.
OK.
Selecione a primeira entrada no seu ícone ‘In’:
Selecione o ícone de ‘Count Value’:
Em ‘Transitions occour’, digite 10 e escolha a unidade de “ns” (nanosegundos).
OK.
Faça o mesmo para a segunda entrada e escolha 20 ns.
Note que foi criada a sequência binária da tabela da verdade.
Salve a sua simulação.
Caso queira diminuir a janela de tempo mostrada:
Edit:
Set End Time…
A configuração da simulação precisa ser alterada. Para isso, vá em Simulation > Simulations Settings e:
Se o simulador é o da versão 23 do Quartus, troque na quinta linha a opção -novopt por -voptargs=+ACC.
Caso seja uma versão anterior do Quartus, apenas apague a opção -novopt.
Clique no ícone:
Após finalizar, com sucesso, a compilação completa, abra o gravador:
Deverá aparecer a tela do gravador, indicando que ele existe e está conectado:
Para escolher o arquivo a ser enviado para a FPGA, clique em Add File e escolha o diretório output_files:
Escolha o arquivo com a extensão “.sof” que deseja gravar:
Quando o arquivo carregar, confira a FPGA escolhida e se ela aparece como disponível para gravação:
Aperte o botão de Start e espere o término da gravação:
Caso o gravador não seja encontrado, aparecerá a seguinte tela:
Verifique a conexão do cabo USB com a placa e confira a exisência do gravador no Hardware Setup.
Definições do projeto:
*.qpf - Quartus Project
*.qsf - Quartus Settings File
Código:
*.vhd - VHDL Design File
*.v - Verilog HDL Source
*.bsf - Quartus Block Symbol File
*.bdf - Quartus Block Diagram File
*.qip - Quartus IP File
Memória:
*.sof - SRAM Object File
*.mif - Memory Initialization File
Simulação:
Outras:
Tipo de Arquivo | Extensão |
---|---|
AHDL Include File | .inc |
ATOM Netlist File | .atm |
Block Design File | .bdf |
Block Symbol File | .bsf |
BSDL file | .bsd |
Chain Description File | .cdf |
Comma-Separated Value File | .csv |
Component Declaration File | .cmp |
Component Description File | _hw.tcl |
Compressed Vector Waveform File | .cvwf |
Conversion Setup File | .cof |
Cross-Reference File | .xrf |
database files | .cdb, .hdb, .rdb, .tdb |
Design Protocol File | .dpf |
Graphic Design File | .gdf |
Hexadecimal (Intel Format) File | .hex |
Hexadecimal (Intel Format) Output File | .hexout |
HSPICE Simulation Deck File | .sp |
HTML Format Report File | .htm |
I/O Pin State File | .ips |
IBIS Output File | .ibs |
In System Configuration File | .isc |
IP Index File | .ipx |
Jam Byte Code File | .jbc |
Jam File | .jam |
JTAG Debugging Information File | .jdi |
JTAG Indirect Configuration File | .jic |
Library Mapping File | .lmf |
License File | license.dat |
Logic Analyzer Interface File | .lai |
Memory Initialization File | .mif |
Memory Map File | .map |
PartMiner edaXML-Format File | .xml |
Pin-Out File | .pin |
Pin Planner File | .ppf |
Programmer Object File | .pof |
programming files | .cdf, .cof |
QMSG File | .qmsg |
Intel® Quartus® Prime IP File | .qip |
Intel® Quartus® Prime Archive File | .qar |
Intel® Quartus® Prime Archive Log File | .qarlog |
Quartus User-Defined Device File | .qud |
Intel® Quartus® Prime Default Settings File | .qdf |
Intel® Quartus® Prime Exported Partition File | .qxp |
Intel® Quartus® Prime Message Flag Rule File | .frf |
Intel® Quartus® Prime Message Suppression Rule File | .srf |
Intel® Quartus® Prime Project File | .qpf |
Intel® Quartus® Prime Settings File | .qsf |
Intel® Quartus® Prime Workspace File | .qws |
Raw Binary File | .rbf |
Raw Programming Data File | .rpd |
Routing Constraints File | .rcf |
Signal Activity File | .saf |
Signal Tap File | .stp |
Sources and Probes File | .spf |
SRAM Object File | .sof |
State Machine File | .smf |
Symbol File | .sym |
Synopsys® Design Constraints File | .sdc |
Tab-Separated Value File | .txt |
Tabular Text File | .ttf |
Tcl Script File | .tcl |
Text Design File | .tdf |
Text Format Report File | .rpt |
Token File | ted.tok |
Vector Table Output File | .tbl |
vector source files | .tbl, .vwf, .vec |
Vector Waveform File | .vwf |
Verilog Design File | .v, .vh, .verilog,.vlg |
Verilog Output File | .vo |
Verilog Quartus Mapping File | .vqm |
Verilog Test Bench File | .vt |
Value Change Dump File | .vcd |
version-compatible database files | .atm, .hdbx, .rcf, .xml |
VHDL Design File | .vhd, .vhdl |
VHDL Output File | .vho |
VHDL Test Bench File | .vht |
XML files | .cof, .stp, .xml |
waveform files | .scf, .stp, .tbl, .vec, .vwf |
Waveform Settings File | .wsf |