Neste post vou explicar como fazer seus projetos no Quartus da Altera. O Quartus é uma IDE fácil de usar que permite que se crie projetos em Verilog, VHDL ou System Verilog e permite que se sintetize para FPGAs da Altera. Para aprender Verilog e fazer simulações, no entanto, é uma excelente IDE, simples de utilizar e bem conhecida. A seguir mostro como criar seu primeiro projeto utilizando essa IDE com várias telas para guiá-lo durante o processo de configuração do primeiro projeto. Seguir esse tutorial leva no máximo 30 minutos para quem nunca utilizou o software. Estou utilizando o Quartus 13.0 SP1, mas o mesmo tutorial também é valido para as versões que foram lançadas após essa, incluindo a versão 14 e 15.
Bom, vamos lá. Depois de instalado o Quartus Web Edition da Altera, que pode ser achado facilmente para download neste link (recomendo fazer o download com a configuracao padrão e instalar a configuração padrão. A instalação leva muito tempo pois requer a movimentação de muitos arquivos para o seu HD) e abra o software.
Criando seu projeto no Quartus…
Clique no botão para criar um novo projeto.
Siga em frente. Clique em Next.
Eu utilizei um nome para meu projeto como MUX6 e selecionei uma pasta para meus trabalhos.
Nesse momento é solicitado para que se insira arquivos no projeto. Como ainda não criamos nenhum e não estamos trabalhando com nenhum FPGA, siga em frente e clique em Finish.
O projeto foi criado até esse momento. Crie um arquivo vazio, o primeiro de seu projeto.
Crie um arquivo com as características Verilog HDL File. Isso informa que é um arquivo em Verilog.
Salve seu arquivo com um nome. No meu caso, salvei como MUX6, o arquivo principal com o mesmo nome do projeto.
Repita o procedimento e crie um arquivo para o testbench. Esse arquivo servirá para testar o circuito que está criando. Ele aplicará nesse caso sinais no circuito criado para que se possa verificar o seu funcionamento.
Gosto de utilizar o mesmo nome do arquivo principal seguido de underline TB para sinalizar que esse arquivo é um Testbench.
É necessário informar ao Quartus qual é o Testbench e qual é o arquivo principal de síntese do hardware. Para setar o arquivo pincipal, clique em Files, como indicado na figura e depois clique com botão direito sobre o arquivo MUX6.v e selecione a opção Set as Top-Level Entity.
Selecione com o botão direito o arquivo de testbench e selecione Properties para setar as propriedades desse arquivo.
Informe então que esse arquivo é seu arquivo de Testbench. Selecione Verilog TestBench File.
Em seguida também é necessário informar ao Quartus que o Testbench criado será utilizado para esse projeto. Para isso é necessário acessar o menu e clicar em Assignments e então Settings.
Clique em compile testbenchs como o indicado e então, clique em TestBenches:
E então aparecerá a seguinte janela para setar os testbenches. Clique em New e selecione o arquivo de testbench.
Clique em …
Escolha o seu testbench, nesse caso MUX6_TB.
Complete os Campos. A janela tem que ficar como a seguir:
E então, clique em OK, OK, APPLY e OK.
Em MUX6.v, copie e cole o código abaixo:
module MUX6( A, B, S, X); input wire A, B; // As entradas sao A e B input wire S; // O sinal de selecao é S output wire X; // O sinal de saida é X wire S0_inv, a1, b1; not u1( S0_inv, S ); and u3( a1, S0_inv, A ); and u4( b1, S, B ); or u5( X, a1, b1 ); endmodule
No arquivo MUX6_TB, copie e cole o código abaixo:
module MUX6_TB;
reg A_tb, B_tb, S_tb;
wire X_tb;
integer i;
MUX6 dut( A_tb, B_tb, S_tb, X_tb);
initial
begin
A_tb = 1'b0; B_tb = 1'b0; S_tb = 1'b0; #1
$display("A = %x, B = %x, S = %x, X = %x", A_tb, B_tb, S_tb, X_tb);
A_tb = 1'b0; B_tb = 1'b1; S_tb = 1'b0; #1
$display("A = %x, B = %x, S = %x, X = %x", A_tb, B_tb, S_tb, X_tb);
A_tb = 1'b1; B_tb = 1'b0; S_tb = 1'b0; #1
$display("A = %x, B = %x, S = %x, X = %x", A_tb, B_tb, S_tb, X_tb);
A_tb = 1'b1; B_tb = 1'b1; S_tb = 1'b0; #1
$display("A = %x, B = %x, S = %x, X = %x", A_tb, B_tb, S_tb, X_tb);
A_tb = 1'b0; B_tb = 1'b0; S_tb = 1'b1; #1
$display("A = %x, B = %x, S = %x, X = %x", A_tb, B_tb, S_tb, X_tb);
A_tb = 1'b0; B_tb = 1'b1; S_tb = 1'b1; #1
$display("A = %x, B = %x, S = %x, X = %x", A_tb, B_tb, S_tb, X_tb);
A_tb = 1'b1; B_tb = 1'b0; S_tb = 1'b1; #1
$display("A = %x, B = %x, S = %x, X = %x", A_tb, B_tb, S_tb, X_tb);
A_tb = 1'b1; B_tb = 1'b1; S_tb = 1'b1; #1
$display("A = %x, B = %x, S = %x, X = %x", A_tb, B_tb, S_tb, X_tb);
end
endmodule
Então terá a seguinte visão. Clique em Start Compilation, um símbolo parecido com Play na barra superior.
O projeto então compilará com sucesso.
Comece então a Simulação RTL, que utiliza o Mentor Graphics ModelSim como padrão. Clique no botão como indicado na imagem abaixo.
Quatro janelas serão lançadas. Eu, particularmente, acho uma bagunça a maneira em que diversas janelas são arremeçadas em sua tela. No entanto, ele funciona assim.
OBS: Caso algo esteja errado no Testbench, as telas não serão iniciadas. Então é necessário, para que se possa entender o que aconteceu, que se veja o log. Para isso, acesse na janela que abriu do Modelsim, o menu view, transcript.
Para se ver o resultado da simulação, maximize a janela WAVE.
Para fazer com que as ondas apareçam na tela, Pressione F. Esse atalho faz com que todas as ondas se ajustem à sua tela, é o comando FIT. Para zoom, use o C. Ele dará zoom sobre onde clicar sobre as ondas. Para que os sinais tenham os mesmos nomes que no testbench e nos arquivos de seu projeto, é necessário que se pressione o botão indicado na imagem, na esquerda, abaixo.
É isso! Deixe suas dúvidas abaixo e terei o prazer de te ajudar.





Gostei muito do conteúdo. Sou Joicy Santos, faço Ciência da Computação na UFCG. E no momento estou aprendendo sobre a linguagem de System Verylog para fazer circuitos na aula de Laboratório de Organização e Arquitetura dos Computadores. Muito obrigado pela contribuição na ciência e tecnologia. <3 Abraço professor!
Caramba, que frustrante, um texto explicativo e só tem comentários a respeito das 3 entradas e 1 saída, o resto do código sem nenhuma explicação, não adiantou de nada.
Eu acho os métodos de entrada do Quartus bem “emburrada”. Há vezes que se deseja realizar uma gesto que é comum a outros softwares que no quartus opera por uma maneira não tão usual.
O testbench (ModelSIM) é muito poderoso =) uma função em especial é a possibilidade de gerar scripts de teste em .txt e salvá-los para utilizar várias vezes entre diferentes simulações e estágios do projeto.
Concordo Henrique. Acho facil de usar, no entanto entrar com determinadas informacoes requer mais cliques e mais preenchimento de campos que os outros softwares/ides.
Placa DE1 da altera
►Sei que quando trabalha com bloco esquemático devo fazer o Assignment
► descobri fazer com arquivo de excel que existe para DE1, poré a cada novo projeto devo associar a esse arquivo.
►outra vez soube que associa a o arquivo
►► afinald e contas como faço apenas uma vez isso
► sei que se associar vou usar o nomes dos botões da placa etc.
► esse tal de assignment é muito chato fazer de forma manual
Uso a placa DE1 da altera e soube que existe uma maneira de associar os pinos do FPGA ( ciclone II) com o quartus sem necessitar de fazer o Assingnment.
O conjunto de arquivo que fica no TOPDE1 não sei direito
Outro momento é para associar com arquivo de excel….
Outra vez associar com arquivo DE0_Default/DE0_default.qsf.
► Afinal de contas qual devo associar para não fazer esse tal de assignment