Sie sind auf Seite 1von 40

TUTORIAL

Altera Quartus II

by Lucas Martins Guido


guido DOT lucas AT ieee DOT org

Verso Beta 1.0

Este Tutorial tem objetivo puramente educativo, sem nenhuma finalidade


lucrativa. Sua cpia para finalidades educacionais e pessoais, total ou parcial,
totalmente permitida pelo autor.
Esse tutorial foi criado para finalidades educacionais, inicialmente com o objetivo
de auxiliar os alunos de EA773 Laboratrio de Circuitos Lgicos, na UNICAMP.
O software Quartus II que utilizei para a obteno das imagens contidas neste
tutorial a verso Web Edition que no requer licena.

Escrevi na forma de um passo-a-passo, que comea desde o download do


software e abrange a prototipagem do sistema digital, simulao em software e
dicas rpidas.
No me preocupei em usar uma linguagem rebuscada e procurei durante o texto
todo colocar a informao de uma forma agradvel.

No final desse tutorial voc encontrar um FAQ com as perguntas mais frequentes
durante as monitorias. Possivelmente suas dvidas futuras podem aparecer l.

Meu objetivo transmitir aos colegas um pouco da experincia que adquiri em


alguns semestres lidando com essa placa e software.
Dicas para melhorar esse material so muito bem-vindas.

Agradeo a todos que colaboraram para a criao deste tutorial, contribuindo


com dvidas, incentivo e apoio.

Espero que ajude.

Abraos,

Lucas Martins Guido

06 de setembro de 2009

2
1. Download do Quartus II Web Edition e Instalao

A Altera disponibiliza uma verso do Quartus II Web Edition em seu site, sem a
necessidade de nenhuma licena comprada. Basta fazer o download e instalar no
seu PC.
Atualmente o link para download esse:

https://www.altera.com/support/software/download/altera_design/quartus_we/d
nl-quartus_we.jsp

Aps o download dos 1.31GB de programa, dois cliques para instalar.


Existem alguns detalhes que podem economizar um bom espao no HD sem
prejudicar as funcionalidades necessrias para o programa, sabendo que nossa
placa de prototipagem usa uma FPGA Cyclone II da Altera.

No incio da instalao, ao invs de escolher a opo de instalao completa,


opte por Custom.

Uma tela com opes ser aberta. Nela existe a possibilidade de voc no
selecionar uma srie de arquivos de compilao, entre outros. Opte apenas pelas
seguintes opes:

Cyclone II support
Third-party EDA tool interfaces
Tutorial files

3
As demais opes podem ser todas desmarcadas. Caso queira, desmarque
tambm Tutorial files, o que implicar em abrir mo dos tutoriais que o help do
programa oferece.

Prossiga com a instalao at o fim. O programa no muito leve, talvez a


instalao leve alguns minutos e PCs antigos (tomando como referncia 2008)
podem rod-lo com dificuldades.

Na primeira execuo do programa ser solicitado que o usurio escolha o


layout. Esse tutorial ser montado utilizando o layout do Max+Plus II. Caso
tenha escolhido a opo Quartus II voc pode alter-la, como lembrado na
imagem abaixo.

A partir deste ponto irei me referir ao Quartus II como QII.

4
2. Conceitos Fundamentais

2.1 Criando uma Pasta para o Projeto

Tanto o QII como diversos programas de engenharia usam o conceito de Projeto.


Um projeto uma espcie de ambiente em que podemos desenvolver nosso
trabalho, executar simulaes, compilaes, etc. Arquivos que no estejam
relacionados ao projeto no sero levados em conta na simulao, muito menos
na compilao. Muitos erros ocorrem devido ao descaso com os arquivos do
projeto, que devem estar juntos em uma mesma pasta.

UM projeto, UMA pasta.

Isso no um provrbio chins, mas com certeza essa frase evita muitos
problemas.
O primeiro passo para comearmos um projeto no QII criarmos uma pasta no
Windows para colocarmos os arquivos. Faa isso como de costume, escolha um
local (que pode ser um pendrive) no PC e crie uma pasta vazia. Arquivos .jpg
podem ser colocados nesta pasta sem problemas, porm prefira pastas vazias
para manter a ordem.

2.2 O Conceito de Projeto

Criada a pasta hora de darmos o primeiro passo no programa, criar o nosso


projeto. O projeto tem a seguinte estrutura: Uma pgina principal e diversas
auxiliares. Essas pginas so colocadas em uma espcie de rvore, o que forma
uma hierarquia. No respeitar essa hierarquia de pginas resulta em um erro
muito comum, que citarei mais pra frente. Vamos entender a hierarquia das
pginas primeiro..

Imagine que desejamos criar um relgio digital com despertador. J temos na


cabea uma srie de componentes que vamos usar, como o prprio relgio e um
comparador. Quando o horrio for igual ao horrio selecionado, o relgio vai
despertar. Precisamos indispensavelmente de um relgio e algum circuito que
faa essa comparao.
Vou dar um exemplo de uma hierarquia errada para esse projeto.

5
Como mostrado, a compilao executa de forma ascendente, ou seja, o
arquivo principal ser o ltimo lido no processo de compilao.
Nesse exemplo o erro evidente, vamos analisar.
Para um Relgio COM Despertador precisamos, claro, de um comparador.
Quando o programa ler o Relgio COM Despertador ainda no ter lido o
Comparador, ou seja, teremos problemas!
Existe uma forma de trocar de lugar o Comparador com o Relgio COM
Despertador, mas antes de aprendermos a consertar aprenderemos a fazer
direito.

O caso correto seria:

2.3 Criando Projetos, Fechando Projetos, Abrindo Projetos...

Agora que temos os conceitos fundamentais para comearmos um projeto com


ordem, hora de irmos para o QII.
O primeiro passo criar um diagrama inicial.
File > New > Block Diagram / Schematic File

6
Na tela que foi aberta vamos desenvolver nosso projeto com as portas-lgicas,
componentes prontos (ALUs, contadores, flip-flops, etc) e componentes que
vamos criar.

Antes de qualquer coisa, hora de criar o projeto.


File > Save As

Na hora de salvar este projeto, escolhemos a pasta que criamos para tal.
Nomeamos o arquivo com qualquer coisa que nos lembre do que se trata o
projeto e alguma sinalizao de que ele o nosso arquivo principal, ou seja, o
Relgio COM Despertador do exemplo anterior.
Para indicar isso, usei _main no final do nome.
Perceba que abaixo do nome e do tipo do arquivo temos uma opo que j est
selecionada, que diz: Criar um novo projeto baseado neste arquivo. Claro que
sim, exatamente o que queremos.
Aps voc clicar em Save uma janela vai aparecer, aperte uma vez Next e depois
aperte Finish.
Nosso projeto j est criado.

Ateno! No crie outro projeto nesta pasta.

7
Mas e se eu quero usar um circuito do projeto X no projeto Y?

Abra o projeto X, copie o circuito com o Ctrl+C, feche o projeto Y, abra um novo
diagrama (File>New>Block Diagram/Schematic File), copie o contedo com
Ctrl+V e salve.

Para abrir e fechar projetos v em:


File > Open Project
File > Close Project

Ateno! Quando voc for abrir seu projeto para trabalhar nele, antes de abrir
qualquer esquemtico, abra o projeto. Assim, a primeira coisa a se fazer quando
queremos abrir o QII para continuar um trabalho File>Open Project. Somente
depois File>Open para escolher o esquemtico com qual queremos lidar.

2.4 Ambiente de Trabalho

Conceitos prontos, hora de conhecermos o ambiente de trabalho. Abrimos um


esquemtico, criamos o projeto, precisamos colocar algo nele.

Usarei um Detector de RA como exemplo nesse tutorial. Falaremos dele mais pra
frente.

Vamos dar uma olhada no menu lateral.

Esse o ambiente de trabalho em que ficaremos a maior parte do tempo.


Acostume-se com ele, possivelmente o ver por vrias horas.
Na esquerda temos as ferramentas. Numerei as mais importantes para explic-
las com detalhes.

8
1. Ferramenta de Seleo a setinha do Windows, clique e arraste para
selecionar.
2. Seleo de Componentes Clicar nessa ferramenta ou clicar duas vezes
na rea branca ao lado das ferramentas surte o mesmo efeito. Uma tela se
abrir e nela selecionaremos o componente desejado para adicionar ao
esquema.
3. Fio Aqui voc no pica fio, voc liga os fios, cria os fios.
4. Ligao Constante Esse boto no bem uma ferramenta, uma opo.
Selecionar ela garante que todas as conexes fiquem firmes, como se fossem
fios elsticos. Suponhamos que eu tenho uma ligao entre a sada de um
componente A e a entrada de um componente B, e por motivos estticos
quero distanciar B de A. Com essa opo selecionada, o fio vai continuar
ligado entre os componentes, esticando automaticamente quando eu
distancio os componentes. Sem esta opo, eu vou tirar um componente de
perto do outro e o fio se manter como estava, ou seja, a ligao ser
desfeita e teremos um fio com um lado ligado ao vazio. Muitssimo til para
no desligar o que queremos manter ligado, mas cuidado! Quando movemos
componentes possvel, sem querer, curto-circuitar fios no caminho sem
que percebamos, por isso muita ateno.
5. Seleo Parcial Essa opo permite a seleo de apenas um pedao do
fio, sem ter que selecion-lo inteiro. Caso haja um fio que desejemos apagar
apenas sua ponta, com essa opo selecionada deletamos apenas a ponta do
fio. Sem essa opo, teramos que deletar o fio todo e criar um novo.
6. Zoom A ferramenta da lupa no novidade para ningum. Com ela
selecionada, clique na tela com o boto esquerdo para aumentar a imagem,
com o boto direito para diminu-la.

No topo da tela h o menu de opes. J usamos o File, usaremos diversos


outros. Conforme necessidade, vou explicando.

9
3 Mo-na-Massa - Detector de RA como Exemplo

3.1 Montando o Esquema Eltrico

Esse um dos primeiros experimentos do laboratrio.


A idia projetar um circuito combinacional que tenha como entrada os nmeros
de 0 a 9 e na sada, 1 para algarismos detectados e 0 para no detectados.
Meu RA 071580, ou seja, terei 1 na sada para as entradas 0 1 5 7 8 e 0 na
sada para as entradas 2 3 4 6 9.

Neste turorial usarei indicarei os bits como ABCD...KLMNOP, sendo o A o mais


significativo. A significa A barrado, A negado.
Z a sada e em caso de mais sada, Z1 Z2 Z3 ... ZN com Z1 como a mais
significativa.
Minha expresso lgica ficou: Z = DB + DA + CBA

Vou usar as ferramentas citadas e criar o circuito lgico.


A nica informao que falta para voc onde encontrar as portas-lgicas. Basta
clicar duas vezes no fundo da tela ou na ferramenta Seleo de Componentes e
seguir conforme a imagem abaixo.

10
Em Name voc pode digitar o nome do componente, isso ganha tempo ao invs
de ficar procurando manualmente.
Tente fazer isso digitando 74194, dff, and3. A regra para memorizar simples:
XXff leva aos flip-flops, onde XX o tipo do flip-flop.
YYYK leva as portas-lgicas, onde YYY o tipo da porta (and, or, xor) e K o
nmero de entradas.

Abaixo segue a minha montagem inicial:

Observe que as portas esto devidamente colocadas e ligadas. Falta visivelmente


especificar as entradas e sadas, quem so A B C D e Z.
Aqui um ponto importante, onde surge um grupo componentes que s existem
no programa: Os inputs e os outputs.
Naquela janela onde selecionamos componentes est a rea Name, como dito
anteriormente. Digite l input para selecionar entrada e output para selecionar
sada. Finja que so componentes que voc liga nas entradas e sadas.

11
Veja como fica a montagem:

Agora temos as sadas e entradas especificadas. Para mudar o nome das


entradas e sadas basta dar dois cliques nelas.

Observe que onde os fios se ligamos temos ou um quadrado ou um bolinha.


Onde no h ligao os fios passam reto. Muita ateno nisso, conexes podem
ser criadas quando movemos os componentes e, caso isso passe desapercebido,
problemas ocorrero.
Um X indica o fim do fio.

Existe tambm a possibilidade de se trabalhar com barramentos (coletivo de fio)


no QII. Devido a complexibilidade em se fazer isso nesta interface grfica e ao
nmero de erros que j tive tentando isso, no vou citar esse mtodo aqui. Para
mais detalhes use os tutoriais do programa ou pesquise na internet.

12
3.2 Compilando

Compilando veremos se nossas ligaes esto corretas, se no fizemos nenhuma


lambana estrutural.
Vamos compilar o projeto do RA.

Primeiramente, antes da compilao em si, precisamos selecionar para qual


FPGA compilaremos este projeto. No nosso laboratrio usamos uma placa com a
FPGA Cyclone II EP2C20F484C7. Voc pode observar esse modelo olhando na
prpria placa. Mencionarei isso novamente com mais detalhes.
Para escolher o dispositivo seguimos o caminho:

Assignments > Device

Na tela que abre, selecione a famlia Cyclone II e o dispositivo EP2C20F484C7.

Uma vez selecionado o dispositivo, estamos prontos para compilar.

Max+Plus II > Compiler

Na tela que surge, aperte Start. Uma barra verde comear a andar mostrando a
porcentagem de compilao concluda. Ao clicar no Start o programa perguntar
se desejamos salvar o projeto. Se voc pretende compilar necessrio ter o

13
projeto salvo antes, ento opte por sim. Caso esteja inseguro, faa um backup
antes de compilar.

Caso a compilao transcorra sem problemas, teremos nessa parte de baixo da


tela vrias mensagens em verde e alguns Warnings.

Dica: Esquea os Warnings. Eles dizem diversas coisas sobre capacitncias,


realimentao, etc. Isso no significa que ocorrer um erro, mas sim que em
uma montagem completa (como a criao de um circuito integrado dedicado)
seriam fatos importante a se pensar. No nosso caso, simulao e prototipagem
simples, no influenciar no resultado. Como voc no est na AMD (ainda) e
nem quer transformar seu atual projeto em um circuito integrado para ser
vendido pelo mundo (ainda), deixaremos os Warnings para depois.

Caso ocorresse algum problema a simulao no terminaria, e o programa


acusaria os problemas. Vou criar um erro muito comum, ligarei duas sadas de
duas portas diferentes em uma mesma entrada de uma terceira porta. Eu teria
que usar pelo menos um OR2 no caminho, mas no farei isso propositalmente.
Vamos ver o resultado na compilao.

14
Perceba que a compilao no terminou e o programa nos apontou erros. Ele deu
a dica que o problema pode estar em inst3. Essas marcaes instX voc pode ver
no desenho das portas no esquemtico. Diga-se de passagem, inst3 o
componente em cuja entrada implantei o erro.
Essas mensagens podem ajudar muito na hora de achar os erros de montagem.
Corrigir erros e fazer montagens melhores uma questo de experincia, com o
tempo voc vai pegando o jeito.

importante lembrar que o fato de a compilao terminar sem problemas


significa que voc construiu um projeto ESTRUTURALMENTE decente. Isso
significa que, do ponto de vista de ligaes e hierrquico, voc no cometeu
erros.
Porm NADA at agora garante que o seu projeto vai funcionar como voc quer.
Se voc projetou errado o que voc ter agora um circuito corretamente
montado que faz a coisa errada.
Ateno sempre! por isso que engenheiros fazem mquinas, e no ao
contrrio.

15
3.3 Simulando

Essa a hora da verdade. preciso saber se o que fizemos tem o funcionamento


esperado.
Um erro aqui significar OU que voc projetou errado OU que voc fez ligaes
incorretas.
Lembro que para simular necessrio anteriormente ter compilado.

Vamos abrir a tela de simulaes, o Waveform.

Max+Plus II > Waveform Editor

Teremos a seguinte tela ento:

Temos ento um novo menu lateral, uma aba onde ficaro os pinos (inputs e
outputs) que sero testados e, na direita da tela, a linha do tempo. Essa mira na
tela no existe, eu coloquei ela ai e voc j saber porqu.

Primeiro vamos inserir os pinos que sero testados. Para isso clique nas
proximidades da mira com o boto direito. Surgir uma telinha, onde voc far o
seguinte caminho:

16
Insert > Insert Node or Bus

Aparecer uma nova tela:

Clique em Node Finder

Sua tela abrir um pouco diferente dessa de cima. Inicialmente teremos as duas
telas (Nodes Found e Selected Nodes) em branco.
O primeiro passo , onde indiquei na imagem com o nmero 1, selecinar Pins:
all. Aps isso, clique em List. Na janela da esquerda aparecero todos os pinos.

17
Voc pode selecionar s os que deseja que apaream na simulao e apertar o
boto > ou, caso queira simular todos os pinos (que o nosso caso aqui) clique
em >> marcado na imagem pelo nmero 3.
OK duas vezes, voltamos a nossa tela de simulao. Agora ela est um pouco
diferente, vamos ver:

Temos agora os pinos listados, na figura vemos o B selecionado. As estradas


esto em 0 e a sada ainda no foi simulada, por isso est riscada.
Apontado pelo nmero 7 temos um indicador que podemos mover. Ele faz com
que visualizemos o tempo em que ele est colocado. Caso no seja desejvel
us-lo, basta coloc-lo no tempo zero (l no incio) e fingir que ele no est ai.

Indicado com o nmero 6 est o tempo final da simulao. Caso ele seja
pequeno ou grande demais, alm da nossa vontade, podemos mud-lo. Isso ser
feito daqui a pouco. Procure manter esse tempo mximo em sua memria, ele
ser necessrio para referncia vrias vezes.

Vamos agora entender o menu lateral.

Na lateral temos um menu que s ativado quando escolhemos um pino. No


exemplo, escolhi o pino B.
Como o pino B um pino de entrada (input) temos que atribuir um valor a ele.
Esse valor pode ser 1, 0, uma onda oscilante peridica como um clock ou algo
aleatrio. Caso eu tivesse agrupado A B C e D (ensinarei isso mais adiante)
poderia fazer com que eles fossem uma contagem de 0 at 15.
Meu objetivo que voc perceba que, em uma simulao, quem manda na
entrada voc.

Utilizarei os nmeros da imagem acima para explicar algumas coisas aqui.

18
3.3.1 Alterando o valor de uma entrada para 0 ou 1

Posso fazer isso individualmente ou em grupo. Para tal, selecionamos uma


entrada ou, com CTRL apertado, mais do que uma.
Para forar um 1, clicamos no boto indicado pelo nmero 3. Para forar 0,
clicamos no indicado por 2.

3.3.2 Fazer com que uma entrada tenha o comportamento de Clock

Selecionamos o pino desejado e ento pressionamos o boto indicado por 5. Veja


que h um pequeno relgio (clock) do lado do boto. Ao clicarmos nele teremos
uma tela, importante interpret-la bem.

Start e End time dizem onde comeam e terminam as oscilaes. No confunda


isso com perodo. No esquea que o End Time no pode ser maior que o tempo
de simulao.
Logo abaixo temos a seleo de perodo. Deixe o Offset em ZERO, Duty Cicle em
50% (o que significa metade do tempo em 1, metade em 0) e ajuste o perodo.
Tome muito cuidado com o perodo escolhido para que ele no seja muito lento
(e o tempo de simulao no seja suficiente para tudo) e nem muito rpido (para
que o tempo de atrase se torne um problema).
Mais sobre tempo de atraso na parte 6 desse Tutorial.

Ajustados os parmetros, observe o comportamento oscilatrio no pino


selecionado.

19
3.3.3 Agrupando entradas e atribuindo valores automaticamente

Essas duas coisas vem juntas pois assim se tornam muito eficientes.

Vamos voltar a pensar na nossa situao, um projeto de Detector de RA. Eu


tenho 4 entradas e estou interessado em valores que vo de 0 a 9 na entrada.
Existem diversas formas de eu colocar esses valores na entrada.
A primeira colocando em cada uma um clock distinto, sendo que cada entrada
tem o dobro da frequncia da anterior. A segunda forma manualmente,
utilizando o boto indicado pelo nmero 1.

Particularmente eu gosto da opo de agrupar as entradas e faz-las contar


automaticamente. Alm de visualmente ficar mais organizado, existam muitas
sadas ou poucas, o trabalho o mesmo.

Primeiro selecionamos, com CTRL apertado, as entradas A B C e D. Em seguida


clicamos no boto indicado por 4, que tem inclusive um C (de count) ao lado.
Clicar com o boto direito sobre as entradas e selecionar Group surtir o mesmo
efeito.
importante ressaltar que a entrada mais acima na tela ser a mais significativa
no agrupamento. No nosso caso A a mais significativo e est mais acima da
tela. OK. Caso D estivesse mais acima, teramos um problema na interpretao
dos resultados. A soluo seria arrastar o pino D para baixo e ordenar tudo
conforme desejado, bastante simples. Para fazer isso clicamos no desenho ao
lado esquerdo do nome do pino e arrastamos ele para onde desejamos.

Ao agrupar e clicar no boto de agrupamento, surge a tela que segue.

20
Aqui escolhemos o nome do grupo e o tipo de contagem.
Vou dar ao grupo o nome de RA e vou escolher uma contagem do tipo Unsigned
Decimal, ou seja, decimal sem sinal.

Observe que RA agora um agrupamento de entradas. A est por cima, logo a


mais significativa. D est por baixo, logo a menos significativa.

Se desejado for desagrupar, basta clicar com o boto direito no agrupamento e


selecionar Grouping > Ungroup.

Agora que temos um agrupamento, queremos atribuir a ele uma contagem


automtica.
Iniciamos clicando sobre o agrupamento RA e depois, novamente, no boto com
o C ao lado (que fica na esquerda da tela, usado para agrupar o conjunto).
Surgir ento uma tela com duas abas.
Vou colocar aqui abaixo as duas abas.

21
Na tela da esquerda temos que a contagem binria, ser mostrada como
decimais sem sinal, comea em 0 e incrementado de 1 em 1.
Na tela da direita temos que a contagem comea em 0 e termina em 1us, o
tempo mximo da nossa simulao.
Os valores da contagem vo mudar a cada 40ns.

Podemos observar que, de fato, ocorre uma contagem automtica. As entradas


de A at D esto variando at seu mximo possvel (15 para 4 bits) e depois
retornam ao 0, onde continuam com o mesmo comportamento at 1us.

22
J sabemos como manobrar as contagens, agora vamos de fato simular nossa
sada. Temos as entradas contando at 9, da pra frente Dont Care.
Esperamos 1 em 0 7 1 5 8 e 0 no resto at 10. A partir de 10, seja o que for que
der na sada, no importa.

O primeiro passo para a simulao salvar essa tela do Waveform. Basta clicar
em salvar e pronto.

Agora vamos ao simulador.

Max+Plus II > Simulator

A tela que se abre essa.


Fique de olho no nome do arquivo de waveform que ser simulado. comum em
projetos maiores termos mais de um .vwf, muitas vezes voc pode achar que o
projeto tem problema pois est simulando o arquivo .vwf errado. Cuidado!
No local onde selecionamos o tempo de simulao, certifique-se de no
extrapolar o tempo mximo e nem simular muito mais do que o necessrio.
Na regio Simulation Option, selecione as opes conforme a imagem acima.

23
Tudo pronto, Start.

Aps a simulao ocorrer, se no houver problemas, clique fora ou clique em


Open. O programa far uma pergunta, concorde com ele.

Eis que onde antes estava meio riscado no waveform (a sada Z) agora temos
informao. Vamos ver o que obtivemos.

Obtivemos, de fato, o que ns queramos. Lembro que usei 10 em diante como


Dont Cares.

Pergunta: Por que temos esse pico entre o 3 e o 4 e por que a sada est um
pouco deslocada da entrada? Explicarei brevemente mais adiante.

24
4 Criando Componentes Relgio Despertador como Exemplo

Voc pode usar muitos componentes e circuitos integrados prontos, todos


disponvel pelo programa.
Agora e se voc um aspirante a engenheiro(a) que quer um pouco mais de
emoo? Voc quer fazer seus prprios componentes!

Muitas vezes, mais do que um luxo, isso uma necessidade. Para montagens
muito grandes colocar tudo em uma tela apenas invivel. Fica praticamente
impossvel saber quem quem em um mar de fios e portas.
Fazer seus componentes torna a montagem muito mais limpa e profissional.

Vamos fazer isso com o exemplo do Relgico com Despertador.

Primeiramente salvamos nosso trabalho anterior e fechamos o projeto.


File > Close Project

UM projeto, UMA pasta.

Criamos uma pasta nova.

Assim segue. A diferena que aqui vamos criar 3 esquemas eltricos ao invs
de 1.

Para criar um componente, abra uma folha em branco. Obviamente no vamos


criar um componente da folha principal, no faz sentido.

Na folha correta, fazemos o circuito. Dele queremos fazer um componente. Com


essa folha na tela, seguimos o caminho:
File > Create / Update > Create Symbol Files for Current File

Salve com o nome que desejar e pronto. Lembro que o componente vale apenas
para esse projeto.

Caso queira fazer alteraes no componente, altere o esquemtico que usou para
ger-lo e salve.
File > Create / Update > Create Symbol Files for Current File

Se voc fez alteraes em um componente e j o tinha usado em outras folhas,


v nessas folhas e clique no fundo branco com o boto direito. Existe uma opo
chamada Update Symbol or Block. Clique nela e selecione para atualizar todos.
Faa isso para todas as folhas que tiverem o componente desatualizado.

Muitas vezes criamos um componente e ele fica com os pinos em locais


indesejados. Podemos resolver isso remanejando os pinos. V em Abrir e em
Files of Type coloque All. Os arquivos .bsf so arquivos de componentes, abra
um e ver na tela apenas o desenho externo do componente criado.
Divirta-se ai, mas cuidado para no remanejar pinos e esquecer os nomes em
lugares errados.

25
Segue abaixo algumas telas do relgio com despertador, usando componentes
customizados.

26
27
5 A Placa e a Gravao

Temos um projeto pronto e provavelmente testamos ele anteriormente, se isso


for vivel.
Mquinas de estado geralmente do mais trabalho para serem simuladas do que
testadas em hardware, j um detector de RA pode ser muito rapidamente
simulado.
A escolha das ferramentas fica a cargo do projetista, voc escolhe o que vai
usar.

A placa disponvel no laboratrio consiste em uma FPGA ligada a diversos


perifricos que ajudam no ensino, como LEDs, botes e chaves. Cada um desses
dispositivos est ligado a um pino da FPGA, que por sua vez possui um endereo.

interessante saber o que uma FPGA e como ela funciona. No vou me


prolongar muito aqui sobre isso, mas muito contedo sobre isso pode ser achado
na internet. Uma introduo interessante pode ser achada na Wikipdia, sempre
com melhores contedos em sua verso inglesa.

5.1 A Placa

A placa disponvel no laboratrio a seguinte:

Observe que temos diversas opes nela, inclusive sadas para udio e vdeo. No
curso de EA773 usaremos apenas os LEDs, displays, botes e as chaves.

28
Com esta vista de cima do equipamento observamos um boto vermelho que fica
na parte de cima, na esquerda. Ele liga e desliga a placa. bvio, mas vale
lembrar que no pode-se gravar nada com a placa desligada.

A FPGA o maior circuito integrado da placa, com a volta verde. Nela est
marcado sua famlia (Cyclone II) e o modelo, no caso EP2C20F484C7.

A ligao entre placa e computador feita atravs do cabo USB.


O USB capaz de fornecer energia para o funcionamento da placa, inclusive se
voc lig-la somente no USB provavelmente ela vai funcionar. Porm caso voc
de alguma forma drene mais corrente do que o USB pode fornecer, a sada do PC
pode ser danificada. Para evitar riscos, ligue tambm a fonte da placa na
tomada. Isso garante que a energia seja fornecida pela rede eltrica evitando
maiores problemas.

Cada perifrico da placa tem um endereo de acesso.


Por exemplo, queremos ligar a sada do detector de RA em um LED. De alguma
forma precisamos relacionar o pino de sada ao endereo do LED da placa. Ao
fazermos isso e compilarmos o projeto, aquela sada virtual ser na verdade
direcionada eletronicamente para uma sada fsica, exatamente a do LED.
Nenhum tipo de preocupao com corrente e tenso precisa ser tomado, o
pessoal da Altera j deu conta de tudo. Basta fazer as associaes.

Existe tambm, embutido na placa, trs fontes geradoras de clock.


As frequncias so 24MHz, 27MHz e 50MHz.
Colocar um frequncia dessa em um LED, visualmente, como deix-lo aceso.
Um pisca-pisca uma luz acesa (para os olhos humanos) quando pisca mais que
24 vezes por segundo, ou seja, mais de 24Hz. Isso uma mdia, mas serve para
alertar que deve-se tomar cuidado com a frequncia dos LEDs.

Para maiores detalhes sobre a placa voc pode ler o manual dela. No final dessa
parte do tutorial vou colocar os endereos mais utilizados, para referncia rpida.

5.2 A interface Hardware e Software

At agora nos preocupamos em garantir um bom projeto no QII. Criamos o


projeto, montamos os esquemas, fizemos simulaes. Agora resta uma ao,
prototipar nosso projeto na placa de desenvolvimento. Basicamente iremos
transferir nosso projeto para a FPGA, que garantir o funcionamento dele como
se o tivssemos montado com circuitos integrados TTL em um protoboard.
Alm desse processo ser muito mais rpido, podemos nos despreocupar com a
montagem fsica e seus possveis problemas (interferncias, rudos, mal-contato)
e focar a ateno no resultado do projeto.

O primeiro passo ligar nossas entradas e sadas a pinos reais da placa,


associando endereos a elas, como eu j disse anteriormente.

Mas antes disso, compile!

Antes de comearmos a fazer qualquer coisa necessrio compilar o projeto.


Aqui imprescindvel termos a certeza de que escolhemos a famlia da FPGA e o
modelo corretamente. Compilar para uma famlia errada e tentar gravar como

29
tentar colocar diesel em um fusca, ou um cartucho de Super Nintendo no drive
de CD. Simplesmente as coisas no iro combinar.

Tendo essas certezas garantidas, vamos fazer o seguinte caminho:


Assignments > Pins

Essa a tela que esperamos. direita um desenho ilustrativo onde temos a


famlia e o modelo da FPGA, uma boa hora para conferir se estamos no caminho
certo.
Na parte de baixo temos todos os nossos pinos e, ao lado deles, diversas opes.
Muito dessa tela nunca usaremos, podemos at dar uma enxugada nela. Clicando
com o boto direito nessa regio da tabela (parte de baixo da tela) surge a
opo Customize Columns. Nela, tire tudo menos Node Name e Location.

Vamos associar os pinos do exemplo do Detector de RA. O primeiro passo ir


para o manual (ou a referncia rpida no fim desse tutorial) e procurar o
endereo do que queremos ligar. No nosso caso, queremos que as entradas
sejam 4 chaves e a sada 1 LED.

Abrindo o manual veremos que o endereo de um LED verde, o LEDG7 ,


PIN_Y21.

30
Voc pode ver os nomes olhando na placa. Perceba que na parte de cima,
esquerda da imagem, temos o LEDG7

Vamos ento para a tabela da pgina de associao de pinos. Queremos Z no


LEDG7.
Para isso, clico na clula Location ao lado do pino Z e digito Y21. Veja que o
programa j insere PIN_.

Para ligar as entradas A B C D nas chaves (switches) vamos pegar o endereo de


4 chaves no manual.

Usaremos SW3 para A, SW2 para B, SW1 para C e SW0 para D.

Vejamos como fica a tela com os pinos associados.

31
Agora que os pinos j esto endereados, feche essa tela.
Retornando tela dos esquemticos, compile novamente o projeto.

32
5.2 A Gravao

Chegou a hora de gravar a placa e testar o que fizemos.


No esquea de compilar o projeto novamente APS associar os pinos aos seus
endereos fsicos.

Certifique-se de que o USB e a fonte esto conectador.


Ligue a placa !!

Max+Plus II > Programmer

Primeiro certifique-se de que a opo Program/Configure est selecionada.


Depois clique em Hardware Setup... e onde est No Hardware selecionamos a
opo referente ao USB.
Caso a opo USB j estiver selecionada, timo.

Tudo pronto, clique em Start.

A gravao bastante rpida. Quando ela terminar, o projeto j est gravado.


Tire os olhos do monitor, volte-se para a placa. Seu projeto j est l.

BOA SORTE !!

33
6 FAQ

6.1 Por que a onda da sada est um pouco para a direita em relao s
entradas?

Perceba que a sada Z modificada um pouco depois da mudana das entradas.


Pensando de forma ideal essa mudana na sada deveria ocorrer ao mesmo
instante que as entradas fosse modificadas.
Assim como voc deve lembrar de um dia ter aprendido em Circuitos Lgicos,
toda porta-lgico possui um tempo de propagao, um atraso. Esse tempo
representa quanto tempo demora para que um sinal na entrada seja interpretado
pelo circuito e a resposta se encontre na sada.

Os motivos pelos quais isso ocorre fogem do interesse desse tutorial, mas podem
ser entendidos estudando-se a eletrnica interna de cada porta lgica,
principalmente da tecnologia dos transistores envolvidos.
Como podemos observar na imagem, o tempo de atraso da FPGA que usamos
aproximadamente 10ns.
Em termos engenheiros, no dizemos que ondas vem antes ou depois, mas sim
que elas esto defasadas de uma determinada quantidade.

Muitas vezes acima eu tive o cuidado de lembr-lo que nenhum tempo de


transio do circuito deve ser muito prximo do tempo de atraso, seno a
veracidade dos dados na sada sero comprometidas.
Exemplo: Imagine que minha contagem, no detector de RA, fosse efetuada a
cada 9ns. O que eu estaria lendo na sada? Quando minha porta comeasse a
colocar o dado na sada eu j teria outra coisa na entrada, e tudo comearia a se
encavalar. Para poucas entradas isso gritante, mas para diversas entradas que
mudam em tempos diferentes, o cuidado com o tempo de atraso deve ser ainda
maior! Sempre preciso ter a certeza que leio minha sada um tempo de atraso
(ou mais) depois da minha ltima entrada ter sido colocada devidamente.

Por isso, lembre sempre de manter suas oscilaes com perodos maiores que 3
vezes o tempo de atraso, pelo menos. Como no estamos nos preocupando aqui
com a velocidade, coloque umas 10 vezes. Isso faz com que o atraso, at
visualmente, fique despresvel.

34
6.2 O que so esses picos que ocorrem, s vezes, nas transies?

Esse pico feio, mas vou te mostrar como ele miservel. Olhando assim no
vemos a dimenso da coisa, mas vamos dar vrias ampliadas.

Olhe s o pico amplicado. Repare no eixo do tempo para calcularmos a largura


dele. Ele mede um pouco menos do que 0.280ns, ou seja, 280 ps (pico
segundos).
Est convencido de que ele muito pequeno?

Isso ocorre, novamente, devido a eletrnica interna das portas. Esse tipo de
fenmeno sempre ocorre nas transies.
Isso mais um motivo para voc no trabalhar muito prximo do tempo de
atraso. Quanto maior o tempo que o dado fica na sada, menos significativo o
rudo e menor a chance dele ser lido como um dado.

6.3 Como aumento o tempo mximo nas simulaes?

Vrias vezes foi citado que o tempo mximo no pode ser extrapolado, porm
muitas vezes ele pouco para as nossas necessidades. Surge ento a
necessidade de aumentlo.

Edit > End Time...

6.4 No compila e aparece que o problema a hierarquia.

Primeiro voc precisa ter certeza que no est com dois projetos na mesma
pasta, que no apagou o que no devia e colocou outra coisa em cima. Se voc
suspeita disso, vale mais a pena criar um projeto novo e ir copiando e colando o
contedo dos esquemas.

Para mudar o arquivo principal na hierarquia, selecionando outra folha como


folha principal, faa o seguinte:
1- Abra na tela o arquivo que voc quer colocar como principal (no exemplo o
Relgio COM Despertador)
2- Project > Set as Top-Level Entity

Isso pode resolver a maioria dos casos. Se no resolveu, crie outro projeto e
copie e cole o contedo dos esquemas.

35
Importante! No copie e cole arquivos, copie e cole o contedo dos esquemas.
Existe sim como copiar os arquivos, mas j que o objetivo consertar erros
melhor arriscar o mnimo possvel.

6.5 O nome do meu projeto Projeto da Moada e no compila, por


qu?

Simples, nunca use em programas de engenheria ~ / * <espao> nem nada de


estranho. Se possvel evite letras maisculas tambm.
Existem programas que aceitam, outros no. Ento na arrisque e evite dor de
cabea desnecessria.

No caso do QII voc pode usar letras maisculas.

6.6 Tenho 200 entradas que ficam em 1 sempre, mais 200 que sempre
ficam em 0.. Quando coloco no Waveform fica uma baguna. J que eu
no tenho que mudar elas sempre, tem algo mais prtico a ser feito?

Sim, com certeza.


V onde selecionamos componentes e digite vcc ou gnd. Vcc sempre 1, gnd
sempre 0. Ligue-os onde quer manter 1 ou 0 sempre e pronto.

6.7 Fui no TTL HandBook e justamente a pgina que eu queria no


estava l.. O que fao?

Voc pode procurar a pgina perdida com algum no laboratrio, ou ir prevenido.

http://www.alldatasheet.com/

Esse site muito eficiente, basta ir na busca e digitar o cdigo do componente,


por exemplo 74194, bc548.

Fique atento pois os datasheets de componentes trazem muita informao,


muitas vezes muito mais do que voc precisa. Caso queira apenas as
funcionalidades do circuito, dificilmente voc vai precisar mais do que as duas
primeiras pginas. Por isso no saia imprimindo tudo logo de cara.

Vale lembrar que eu nunca vi um datasheet em portugus.

6.8 Sumiram as ferramentas do Waveform.

Tools > Customize Waveform Editor...

6.9 No simulador, os pinos no aparecem.

Compile e insira os pinos.

36
6.10 Simulei anteriormente, inseri e tirei alguns pinos, quero simular
novamente. Compilo e quando abro o simulador s tenho pinos antigos.
Que fazer?

Isso normal. Delete todos os pinos da lateral e insira-os novamente, como se


fosse a primeira vez que voc abriu essa tela.

6.11 Sumiram as ferramentas da rea de trabalho.

Tools > Customize Block Editor...

6.12 Estou na tela de associao de pinos com endereos, para


gravao. O problema que minha tela no mostra, na parte de baixo,
os pinos do meu projeto.

Se aparece o local onde os pinos deveriam estar, mas no esto.. Compile o


projeto e abra a tela de associao novamente.
Caso o local onde os pinos deveriam aparecer simplesmente no est l, ainda
nessa tela siga o caminho:
View > All Pins List

6.13 Estou na tela de associao de pinos com endereos, para


gravao. O problema que minha tela no mostra, ao lado dos pinos do
meu projeto, a coluna Location.

Clique com o boto direito nessa tabela e v para a opo Customize Columns.
Insira Location na sua tabela.

6.14 Estou na tela de gravao mas no consigo gravar.

Provavelmente se voc olhar na parte superior dessa tela ver escrito No


Hardware.
Clique no boto Hardware Setup... e escolha a opo referente ao USB.

Se o cabo USB estiver desconectado voc no ira conseguir.

6.15 Usei o clock da placa e todos os meus LEDs ficam acesos.

Como eu expliquei anteriormente, para que voc veja com clareza o piscar dos
LEDs preciso que eles pisquem em frequncia muito baixa.
Para diminuir a frequncia do clock divida-a vrias vezes. Um componente que
ajuda muito nesse tipo de servio o freqdiv.

37
7 Referncia Rpida aos Endereos dos Perifricos

Aqui coloco as tabelas de endereos que voc pode ver no manual. As imagens e
a tabelas abaixo foram feitas pelo pessoal da Altera, crdito a eles.

LEDs

38
Displays

39
Switches (Chavinhas)

Botes

Clocks

40

Das könnte Ihnen auch gefallen