Tutorial de Verilog – O primeiro Projeto com Quartus

Quartus
Este post faz parte da série Tutorial de Verilog

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.

Tutorial de Verilog

Tutorial de Verilog – Ponto Fixo e Ponto Flutuante em Verilog – Parte I Tutorial de Verilog – 7 formas de representar um MUX em Verilog
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Comentários:
Notificações
Notificar
6 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Joicy
Joicy
21/10/2022 09:15

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!

Felipe Braga
Felipe Braga
25/07/2019 15:43

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.

Henrique
10/11/2015 11:40

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.

Thiago Pinheiro Felix da Silva
Reply to  Henrique
10/11/2015 11:45

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.

Luciano
Luciano
17/10/2017 00:10

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

Luciano
Luciano
17/10/2017 00:04

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

Home » Hardware » Sistemas Digitais » Tutorial de Verilog – O primeiro Projeto com Quartus

EM DESTAQUE

WEBINARS

VEJA TAMBÉM

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Talvez você goste: