Buscar

TUTORIAL INTRODUTÓRIO AO SOFTWARE MODELSIM PARA SIMULAÇÃO DE MÓDULOS VERILOG


Continue navegando


Prévia do material em texto

TUTORIAL INTRODUTÓRIO AO 
SOFTWARE MODELSIM PARA 
SIMULAÇÃO DE MÓDULOS VERILOG 
 
 
 
 
 
 
Luneque Silva Junior 
 
2 
 
 
 
 
1) Abra o software Modelsim. O ícone para o programa 
estará na pasta Altera caso tenha sido corretamente 
instalado no Windows. 
 
3 
 
 
 
 
2) Aparecerá a tela de inicialização do Modelsim. A 
versão Starter Edition é gratuita para fins 
educacionais. 
 
4 
 
 
 
 
3) A primeira tela do software apresenta a biblioteca de 
módulos (Verilog) e entidades (VHDL) fornecida pela 
Altera. Estamos interessados em desenvolver nossos 
próprios módulos, por isso tais recursos serão 
ignorados por enquanto. 
 
5 
 
 
 
 
4) Para iniciar a criação de módulos em Verilog, é 
necessário criar um novo projeto. 
 
6 
 
 
 
 
5) Na tela seguinte, deve-se especificar o nome e a 
localização do projeto que será criado. Neste 
exemplo, o nome do projeto será tutorial. Uma nova 
entrada na biblioteca de módulos também será 
criada com o nome padrão work. 
 
7 
 
 
 
 
6) Criado o projeto, uma nova aba aparecerá na tela 
inicial do software. O Modelsim perguntará o que 
deverá ser feito. Vamos acrescentar ao projeto 
arquivos Verilog. 
 
8 
 
 
 
 
7) O projeto é composto por quatro arquivos: um 
codificador de prioridade (encoder 8x3); um 
codificador hexadecimal para display de 7 
segmentos; um arquivo englobando estes dois 
blocos (top level) e um arquivo de teste para 
configuração das entradas (testbench). 
9 
 
 
 
 
8) Caso os arquivos estejam em outras pastas, estas 
podem ser importadas para a pasta do projeto 
definida anteriormente. 
 
10 
 
 
 
 
9) Desta forma, todos os arquivos foram importados 
para o projeto. O status “?” indica que os arquivos 
não foram compilados. 
 
11 
 
 
 
 
10) Clicando nos nomes dos arquivos na aba do 
projeto, será aberta a tela do editor. Eventuais 
ajustes no código Verilog poderão ser realizados 
nesta tela. 
 
12 
 
 
 
 
11) Clicando com o botão direito nos arquivos da 
aba de projeto, selecionamos a opção compile all. 
Todos os arquivos serão compilados. Devido à 
precedência entre arquivos, talvez seja necessário 
compilar mais de uma vez. 
 
13 
 
 
 
 
12) O status verde indica que todos os arquivos 
foram compilados corretamente. Havendo 
problemas no código, o mesmo não será compilado, 
e uma mensagem em vermelho será exibida. 
 
14 
 
 
 
 
13) Passando da aba de projeto para a aba de 
biblioteca, vemos que os módulos compilados foram 
para a entrada work. É possível iniciar a simulação 
clicando com o botão direito sobre quaisquer destes 
módulos. 
 
15 
 
 
 
 
14) Uma nova aba, de simulação, será aberta. O 
módulo simulado (cisterna_blocos) é apresentado 
em uma estrutura de pastas, sendo composto por 
dois módulos internos. Na janela de objetos são 
mostrados os sinais internos e de entrada/saída do 
módulo simulado. Note que os componentes foram 
simulados, mas ainda não se encontram em 
execução. 
 
16 
 
 
 
 
15) Para verificar o funcionamento dos módulos, 
será necessário acrescentar os sinais de interesse em 
um diagrama de tempos por meio da opção add to 
wave. 
 
17 
 
 
 
 
16) Nesta situação, nenhum valor está sendo 
aplicado às entradas do módulo simulado. Um valor 
específico pode ser definido usando a opção force. 
 
18 
 
 
 
 
17) Neste exemplo, um único valor (00001111) será 
atribuído à entrada do módulo. Este valor é 
referente ao nível 4 da cisterna. 
 
19 
 
 
 
 
18) Clicando na opção run, o módulo será 
executado pelo tempo especificado (neste exemplo, 
100ps). Este tempo é suficiente para termos na saída 
o valor associado à entrada. Este tipo de simulação 
verifica apenas 1 situação por vez. Para testar várias 
situações em sequência, é preciso criar um arquivo 
de testbench. 
 
20 
 
 
 
 
19) O testbench é um arquivo Verilog em que se 
instancia o módulo que se deseja testar. O testbench 
possui sinais internos (data_in e data_out) que 
serão usados para conectar as entradas e saídas do 
módulo. Diferentes valores são atribuídos ao sinal de 
entrada a cada 10 unidades de tempo (neste 
exemplo, 10 ps). 
 
21 
 
 
 
 
20) Simulando e executando o testbench, observa-
se no diagrama de tempos (wave) que os sinais de 
entrada e saída variaram durante o período de 
execução por todos os níveis da cisterna, validando o 
funcionamento do projeto.