Upload
vuongdiep
View
268
Download
4
Embed Size (px)
Citation preview
Laboratório de Sistemas Digitais
DEP. DE ENG.ª ELECTROTÉCNICA E DE COMPUTADORES FACULDADE DE CIÊNCIAS E TECNOLOGIA
UNIVERSIDADE DE COIMBRA
MiEEC, 1.º ano, 1.º semestre DEEC-FCTUC
LAB01 – Introdução ao Altera Quartus II: LEDs, lógica combinacional, e contador com visor de 7
segmentos utilizando a placa FPGA DE2 i
1. Introdução ...................................................................................................................... 2
2. Quartus II da Altera ........................................................................................................ 3
2.1 Introdução ........................................................................................................................... 3
2.2 Ligar um interruptor a dois LEDs ............................................................................................ 4
2.2.1 Actividades a realizar........................................................................................................................ 4
2.2.1.1 Criação de um novo projecto no Quartus II ................................................................................. 4
2.2.1.2 Desenho do esquemático ............................................................................................................ 7
2.2.1.3 Compilação do circuito ............................................................................................................. 11
2.2.1.4 Simulação funcional ................................................................................................................. 13
2.2.1.5 Atribuição de pinos................................................................................................................... 17
2.2.1.6 Programação e configuração da FPGA ....................................................................................... 19
3. Controlar a luz do pátio com circuito de lógica combinacional ...........................................20
3.1 Introdução ......................................................................................................................... 20
3.2 Actividades......................................................................................................................... 21
3.2.1 Projectar circuito e criação de um novo projecto no Quartus II ......................................................... 21
3.2.2 Desenho do esquemático e compilação do circuito ........................................................................... 21
3.2.3 Simulação ...................................................................................................................................... 22
3.2.4 Atribuição dos pinos, programação da FPGA e teste ........................................................................ 23
4. Contador binário com visor de 7 segmentos .....................................................................23
4.1 Visor de 7 segmentos com descodificador ............................................................................. 23
4.1.1 Introdução .................................................................................................................................... 23
4.1.2 Enunciado ..................................................................................................................................... 25
4.2 Contador síncrono com visor de 7 segmentos ........................................................................ 26
4.2.1 Introdução .................................................................................................................................... 26
4.2.2 Enunciado ..................................................................................................................................... 27
5. Lista de verificação .........................................................................................................29
6. Referências ....................................................................................................................29
LAB01 – Introdução ao Altera Quartus II Laboratório de Sistemas Digitais
MiEEC, 1.º ano, 1.º semestre Pág. 2/29 DEEC-FCTUC
1. Introdução
O desenvolvimento de um circuito integrado (CI) para uma aplicação específica (ASIC
– application specific integrated circuit) requer algumas semanas ou meses até ser fabricado
e tem um custo inicial elevado. Este custo apenas se justifica se o CI for produzido em
grande escala (ex. milhões de unidades), de forma a ser rapidamente amortizado [1].
A tecnologia de CI programáveis (FPGA – field-programmable gate array) permite
implementar circuitos de grande dimensão e complexidade com tempos de desenvolvimento
bastante mais curtos [1]. As FPGAs são circuitos lógicos programáveis de grande
capacidade1 que podem ser programados (e re-programados) para implementarem
virtualmente qualquer sistema digital, desde que a dimensão do circuito não ultrapasse as
suas limitações físicas (número de elementos lógicos). Apesar dos circuitos serem um pouco
mais lentos e consumirem mais potência do que se fossem implementados num ASIC, têm
tempos e custos de desenvolvimento muito reduzidos2.
Fig. 1. Placas de desenvolvimento com FPGA da Altera: à esquerda a UP2 (University
Program Education Kit 2) e à direita a DE2 (Development and Education Board 2).
Pretende-se neste trabalho possibilitar um primeiro contacto com FPGAs. Será utilizada
uma placa de desenvolvimento com FPGA DE2 da Altera (ver Fig. 1) e far-se-á uma
introdução à utilização do software de CAD Quartus II da Altera3. O objectivo será
1 É possível hoje em dia programar numa FPGA sistemas digitais de dimensão e complexidade comparáveis a um microprocessador Pentium da Intel! 2 Depois de se projectar um sistema digital com recurso a ferramentas de CAD apropriadas, a programação de uma FPGA pode demorar apenas alguns segundos. 3 Altera Quartus II Web Edition Software v9.0 SP2 está disponível gratuitamente em: http://www2.deec.uc.pt/~jlobo/altera/91sp2_quartus_free.exe (link recomendado; cópia local; 1.9 GB) Também disponível em: http://www.altera.com/products/software/quartus-ii/web-edition/qts-we-index.html
LAB01 – Introdução ao Altera Quartus II Laboratório de Sistemas Digitais
MiEEC, 1.º ano, 1.º semestre Pág. 3/29 DEEC-FCTUC
experimentar alguns circuitos lógicos simples com LEDs4, lógica combinacional e um
contador, usando uma ferramenta integrada de desenho, simulação e programação
(software Quartus II) e uma placa com uma FPGA Altera DE2. No trabalho seguinte, LAB2,
estes mesmos circuitos vão ser implementados com circuitos integrados (CIs) mais simples
que implementam funções lógicas standard da família TTL (Transistor Transistor Logic
74xxx). A implementação na placa DE2 é mais simples pois não temos que nos preocupar
com a ligação física de cada componente e a correcta alimentação dos circuitos.
2. Quartus II da Altera
2.1 Introdução
O software Quartus II da Altera é uma ferramenta de CAD (computer aided design)
que cobre todo o ciclo de desenvolvimento de um sistema digital implementado num
dispositivo lógico programável (ex. FPGA). Um processo de desenvolvimento completo inclui:
Especificação do circuito – O circuito desejado é especificado usando um
esquemático (diagrama gráfico) ou uma linguagem de descrição de hardware (ex.
VHDL).
Síntese – O projecto é sintetizado num circuito, ou seja um conjunto de elementos
lógicos.
Simulação funcional – O circuito sintetizado é testado para verificar a sua correcção
funcional, não considerando ainda restrições temporais.
Definição do layout – a ferramenta de CAD determina a localização dos elementos
lógicos definidos na fase de síntese numa determinada FPGA; as ligações entre
elementos lógicos, de acordo com o circuito especificado, são também definidas
nesta fase.
Análise temporal – análise dos atrasos de propagação ao longo das ligações
definidas na fase anterior e indicação do desempenho esperado para o circuito.
Simulação temporal – o circuito é simulado para verificar simultaneamente a sua
correcção lógica e temporal.
Programação e configuração – o circuito projectado é implementado fisicamente
numa FPGA através da programação das ligações internas da FPGA que configuram
os elementos lógicos utilizados pelo circuito.
4 Um LED (light-emitting diode) é um componente electrónico que conduz corrente eléctrica apenas num sentido e que emite luz quando conduz (será estudado nas disciplinas de Electrónica).
LAB01 – Introdução ao Altera Quartus II Laboratório de Sistemas Digitais
MiEEC, 1.º ano, 1.º semestre Pág. 4/29 DEEC-FCTUC
Neste trabalho, iremos utilizar o Quartus II para cumprir as fases de especificação,
simulação funcional e programação. Na fase de especificação, serão utilizados apenas
esquemáticos.
Cada circuito lógico, ou sub-circuito, concebido no Quartus II é designado por project
(projecto). A aplicação permite trabalhar em apenas um projecto em cada momento e
mantém toda a informação sobre o mesmo num folder (directoria) do sistema de ficheiros.
Para iniciar a concepção de um novo circuito lógico, o primeiro passo é criar a directoria para
os ficheiros do projecto.
2.2 Ligar um interruptor a dois LEDs
Nesta fase do trabalho, iremos implementar numa placa DE2 da Altera um circuito
digital extremamente simples que apenas liga um interruptor a dois LEDs.
2.2.1 Actividades a realizar
2.2.1.1 Criação de um novo projecto no Quartus II
a) Inicie o software Quartus II 9.0 Web Edition. Deverá visualizar uma janela similar
à da Fig. 2. Esta janela permite aceder a várias funcionalidades do Quartus II, que o
utilizador selecciona com o rato (com o botão esquerdo).
Fig. 2. Janela principal do Quartus II.
LAB01 – Introdução ao Altera Quartus II Laboratório de Sistemas Digitais
MiEEC, 1.º ano, 1.º semestre Pág. 5/29 DEEC-FCTUC
b) Defina um novo projecto, seleccionando File > New Project Wizard. Aparece-lhe
uma janela informativa (Fig. 3) que poderá saltar em utilizações futuras, desde que
indique essa escolha. Seleccione Next para obter a janela da Fig. 4.
c) No Microsoft Windows, abra a sua directoria “Os meus documentos” e crie uma
nova directoria “LSD_P<seu_numero_turma>G<seu_numero_grupo>”. No
primeiro campo da janela da Fig. 4, seleccione a directoria onde vai guardar os
ficheiros do projecto. Use o botão “…” para navegar até à directoria que acabou de
criar, onde deverá criar uma directoria com o nome “interruptor-LED”. Seleccione
esta directoria e clique em Abrir (ou Open). Nos segundo e terceiro campos da janela
da Fig. 4, escolha um nome para o projecto (ex. “interruptor-LED”); pode ser o mesmo
nos dois campos. Clique em Next; como a directoria não existe, o sistema perguntar-
lhe-á se a deseja criar; deverá responder afirmativamente para obter a janela da Fig.
5. Clique em Next novamente, uma vez que ainda não possui qualquer ficheiro para
incluir no novo projecto.
Fig. 3. Janela informativa sobre as tarefas executadas pelo wizard.
LAB01 – Introdução ao Altera Quartus II Laboratório de Sistemas Digitais
MiEEC, 1.º ano, 1.º semestre Pág. 6/29 DEEC-FCTUC
Fig. 4. Criação de um novo projecto no Quartus II.
Fig. 5. O wizard pode incluir no projecto ficheiros especificados pelo utilizador.
LAB01 – Introdução ao Altera Quartus II Laboratório de Sistemas Digitais
MiEEC, 1.º ano, 1.º semestre Pág. 7/29 DEEC-FCTUC
d) Nesta altura, deverá visualizar a janela da Fig. 6, onde terá de especificar a família do
dispositivo e o dispositivo específico dessa família que está a utilizar. A Fig. 6 mostra os
valores que deve seleccionar se estiver a utilizar a placa DE2 [2], ou seja tem que
seleccionar “Cyclone II” e “EP2C35F672C6” correspondendo ao CI que encontra
na placa. Clique em Finish para finalizar a criação do projecto. Dessa forma retornará
à janela principal do Quartus II, mas já com o projecto “interruptor-LED” seleccionado
como o projecto actual (ver Fig. 7).
2.2.1.2 Desenho do esquemático
a) Seleccione File>New para obter a janela da Fig. 8. Escolha Block
Diagram/Schematic File e clique em Ok. Esta acção abrirá a janela de edição
gráfica de esquemáticos, onde deverá especificar um nome para o ficheiro a ser criado,
seleccionado File>Save As (pode ser “interruptor-LED” novamente) e deixando
activada a opção Add file to current project. Depois criar o ficheiro, a janela do
Quartus II terá um aspecto similar à Fig. 9.
Fig. 6. Escolha a família do dispositivo e o dispositivo que está a usar.
LAB01 – Introdução ao Altera Quartus II Laboratório de Sistemas Digitais
MiEEC, 1.º ano, 1.º semestre Pág. 8/29 DEEC-FCTUC
Fig. 7. A janela principal do Quartus II após a criação de um novo projecto.
Fig. 8. Escolha do tipo do novo ficheiro a incluir no projecto.
LAB01 – Introdução ao Altera Quartus II Laboratório de Sistemas Digitais
MiEEC, 1.º ano, 1.º semestre Pág. 9/29 DEEC-FCTUC
Fig. 9. Editor gráfico de esquemáticos.
b) O editor de esquemáticos possui um conjunto de bibliotecas (libraries) que incluem
elementos que podem ser importados para um esquemático. Faça duplo-clique algures
na área de edição. Nesta altura, irá aparecer uma caixa pop-up (ver Fig. 10) onde
deverá expandir libraries, depois a biblioteca primitives e, finalmente, a biblioteca
logic, que contém portas lógicas. Seleccione um not e clique em Ok. O símbolo de
um inversor aparece agora na área de edição, que poderá mover usando o rato e
posicionar clicando com o botão esquerdo. Este procedimento poderia ser repetido
para outros elementos lógicos, caso fosse necessário.
LAB01 – Introdução ao Altera Quartus II Laboratório de Sistemas Digitais
MiEEC, 1.º ano, 1.º semestre Pág. 10/29 DEEC-FCTUC
Fig. 10. Escolha de um símbolo de uma biblioteca.
c) Vai necessitar agora de incluir no esquemático símbolos que representam as entradas
e saídas do circuito; neste caso, iremos incluir um pino de entrada e dois pinos de
saída. Para isso, use o mesmo procedimento que usaria para incluir portas lógicas, mas
escolha a biblioteca primitives>pin. Deverá importar uma instância de input port e
duas instâncias de output port, para obter a imagem da Fig. 11. Atribua nomes aos
pinos de entrada. Posicione o cursor do rato sobre a caixa pin_name (mas sem ser
em cima do nome pin_name) e clique duas vezes para poder editar o nome do pino
na caixa de diálogo da Fig. 12. Repita o procedimento para todos os pinos. Escolha os
nomes SW[0] para a entrada, LEDG[7] para a saída de cima e LEDR[0] para a saída de
baixo5.
5 Esta notação facilitará o mapeamento das entradas e saídas representadas no esquemático nos pinos de entrada e saída da placa DE2, principalmente em circuitos de maior complexidade a implementar futuramente nas aulas de laboratório, contendo muitas entradas e saídas. A sigla SW representa um switch (interruptor), a sigla LEDG um LED de cor verde (green) e a sigla LEDR um LED de cor vermelha (red). O índice (parênteses rectos e um número) serviria para distinguir entre si, num circuito mais complexo, múltiplas entidades semelhantes (ex. vários LEDs vermelhos).
LAB01 – Introdução ao Altera Quartus II Laboratório de Sistemas Digitais
MiEEC, 1.º ano, 1.º semestre Pág. 11/29 DEEC-FCTUC
Fig. 11. Importação dos pinos de entrada e saída para o esquemático.
d) Agora vai precisar de estabelecer as ligações (wires), desenhando linhas. Para isso,
poderá utilizar os botões disponibilizados na barra de ferramentas de desenho situada
na parte esquerda do editor gráfico. Desenhe as ligações necessárias até obter um
esquemático idêntico ao da Fig. 13. Nesta altura, não se esqueça de salvar o
esquemático, utilizando File>Save ou o botão que existe para o efeito na barra de
ferramentas principal do Quartus II (topo da janela). Em projectos mais complexos, é
aliás aconselhável não o fazer só no final da edição do esquemático.
Fig. 12. Definição do nome de um pino.
2.2.1.3 Compilação do circuito
O circuito desenhado anteriormente deverá ser processado por várias ferramentas do
Quartus II para analisar o ficheiro e detectar eventuais erros, sintetizar o circuito e gerar
uma implementação física para o hardware específico que esteja a ser utilizado.
LAB01 – Introdução ao Altera Quartus II Laboratório de Sistemas Digitais
MiEEC, 1.º ano, 1.º semestre Pág. 12/29 DEEC-FCTUC
Fig. 13. O diagrama esquemático completo de um circuito para ligar um interruptor
a dois LEDs.
a) Corra o compilador, seleccionado a opção Processing>Start Compilation. Também
existe um botão para o efeito numa das barras de ferramentas do Quartus II (triângulo
magenta). À medida que a compilação decorre, poderá observar as várias etapas do
processo numa janela situada na parte esquerda do Quartus II (Fig. 14). No final,
aparecerá uma pop-box a informar o utilizador acerca do sucesso ou insucesso da
compilação. Nessa altura, aparecerá também um relatório da compilação, que poderá
ser visualizado de novo mais tarde a partir de Processing>Compilation Report.
Fig. 14. Compilação do circuito.
LAB01 – Introdução ao Altera Quartus II Laboratório de Sistemas Digitais
MiEEC, 1.º ano, 1.º semestre Pág. 13/29 DEEC-FCTUC
b) Se eventualmente ocorrer algum erro de compilação, deverá analisar a descrição do
erro na caixa de mensagens situada no rodapé da janela do Quartus II e voltar à
edição do esquemático para os resolver. Depois de corrigido o erro, repita a
compilação ( alínea a) ).
2.2.1.4 Simulação funcional
Antes de implementar um circuito na placa da Altera, é prudente proceder à sua
simulação com o objectivo de se verificar a correcção do seu comportamento. O Quartus II
inclui uma ferramenta de simulação que pode ser usada para simular o comportamento de
um circuito projectado. Mas antes do circuito poder ser simulado, é necessário criar as
formas de onda desejadas para os sinais de entrada, a que se chamam vectores de teste.
a) Abra o editor de formas de onda, seleccionando File>New. Clique no separador
Verification/Debugging Files para aceder à janela da Fig. 15. Seleccione Vector
Waveform File e clique em Ok. O editor de formas de onda é mostrado na Fig. 16.
Salve o ficheiro com nome “interruptor-LED.vwf”.
Fig. 15. Criação de um ficheiro com vectores de teste.
b) Pode definir como intervalo de simulação [0; 200] ns (1ns = 10-9 segundos)
seleccionado Edit>End Time e inserindo o valor 200ns na caixa de diálogo. Se
seleccionar View>Fit in Window, poderá visualizar na janela a totalidade do
intervalo de tempo escolhido.
LAB01 – Introdução ao Altera Quartus II Laboratório de Sistemas Digitais
MiEEC, 1.º ano, 1.º semestre Pág. 14/29 DEEC-FCTUC
Fig. 16. Janela do editor de formas de onda.
c) De seguida, é necessário incluir os nós de entrada e de saída do circuito cujos sinais
deverão ser obtidos pelo simulador. Clique em Edit>Insert Node or Bus para obter
a janela da Fig. 17. Pode introduzir o nome de um sinal (pino) na caixa Name, mas é
mais fácil clicar no botão Node Finder que lhe permite aceder à janela da Fig. 18.
Nesta janela, contém um filtro que lhe permite seleccionar sub-grupos de pinos a
serem procurados no circuito projectado. A opção mais frequente é Pins: all. Clique
em List para encontrar todos os nós de entrada e de saída do circuito (lado esquerdo
da Fig. 18). Clique nos nós a incluir na selecção (pode seleccionar mais do que um nó
ao mesmo tempo se pressionar a tecla CTRL ou ALT) e clique em >. No final, clique
em Ok. Clique também em Ok na janela da Fig. 17. para obter algo similar ao que se
mostra na Fig. 19.
Fig. 17. Caixa de diálogo para definir os sinais a simular.
LAB01 – Introdução ao Altera Quartus II Laboratório de Sistemas Digitais
MiEEC, 1.º ano, 1.º semestre Pág. 15/29 DEEC-FCTUC
d) Utilize a barra de ferramentas situada na parte esquerda do editor de formas de onda
para criar um vector de teste para a única entrada do circuito (SW[0]). Para o efeito,
terá de clicar na ferramenta de desenho “seta”, seleccionar trechos do sinal SW[0] e
forçar o nível do sinal (0 ou 1). Por exemplo, coloque a entrada a 1 entre 100ns e
150ns (ver Fig. 19).
Fig. 18. Selecção dos nós a serem inseridos no editor de formas de onda.
Fig. 19. Nós seleccionados para a simulação e vector de teste para SW[0].
e) Seleccione Assignments>Settings para abrir a janela da Fig. 20. Seleccione
Simulation Settings e seleccione Functional na caixa Simulation mode. Clique
em Ok. Seleccione Processing>Generate Functional Simulation Netlist para
criar a lista de ligações do circuito (netlist). Finalmente, para simular o circuito,
seleccione Processing>Start Simulation ou clique no botão da seta azul na barra
de ferramentas do Quartus II. A Fig. 21 mostra o resultado da simulação. Pode mover
LAB01 – Introdução ao Altera Quartus II Laboratório de Sistemas Digitais
MiEEC, 1.º ano, 1.º semestre Pág. 16/29 DEEC-FCTUC
a linha vertical ao longo do gráfico para medir o instante de tempo em que ocorrem
transições nos sinais. Na Fig. 21, essa linha foi posicionada em t=100ns.
Fig. 20. Especificação do modo de simulação.
Fig. 21. Resultado da simulação funcional.
LAB01 – Introdução ao Altera Quartus II Laboratório de Sistemas Digitais
MiEEC, 1.º ano, 1.º semestre Pág. 17/29 DEEC-FCTUC
2.2.1.5 Atribuição de pinos
Durante a compilação, o compilador escolheu de livre arbítrio os pinos da FPGA a
utilizar para implementar a entradas e as duas saídas do circuito. O utilizador pode
obviamente escolher os pinos da FPGA a utilizar. De seguida, é proposta uma lista de
procedimentos para fazer a atribuição de pinos. No caso da placa DE2 [2], iremos utilizar o
interruptor SW0 para a entrada SW[0], o LED vermelho LEDR0 para a saída LEDR[0] e o LED
verde LEDG7 para a saída LEDG[7] (ver Fig. 22)..
a) Entre no editor de atribuições de pinos através de Assignments>Pin Planner (Fig.
23). Nesta editor, tem a possibilidade de editar um pino de cada vez, indicando o pino
da FPGA a atribuir a cada uma das entradas/saídas do circuito. Isto pode ser
interessante para circuitos com poucas entradas/saídas (como é o caso), mas
normalmente é melhor adoptar um outro procedimento.
Fig. 22. Desenho da placa DE2 da Altera [2].
b) Edite um ficheiro de texto (ex. no Notepad do MS Windows) com a informação sobre
atribuições de pinos apresentada na Fig. 24. Guarde esse ficheiro na directoria do seu
projecto, com o nome “pin-assignments.csv” (formato CSV ou comma separated
value). No final, importe estas atribuições de pinos através da opção
Assignments>Import Assignments, obtendo o resultado mostrado na Fig. 25.
SW[0] LEDR[0] LEDG[7]
LAB01 – Introdução ao Altera Quartus II Laboratório de Sistemas Digitais
MiEEC, 1.º ano, 1.º semestre Pág. 18/29 DEEC-FCTUC
b) Compile novamente o circuito para gerar correctamente o ficheiro de programação
“interruptor-LED.sof”.
Fig. 23. Editor de atribuições de pinos.
Fig. 24. Lista de atribuições de pinos para a placa DE2 [2].
Fig. 25. Atribuições de pinos.
LAB01 – Introdução ao Altera Quartus II Laboratório de Sistemas Digitais
MiEEC, 1.º ano, 1.º semestre Pág. 19/29 DEEC-FCTUC
2.2.1.6 Programação e configuração da FPGA
A FPGA tem de ser programada e configurada para implementar o circuito projectado.
A informação necessária para isto é criada durante a compilação do circuito. A informação é
transferida do computador onde está a ser executado o Quartus II para a placa da Altera
através de uma porta USB. A placa DE2 da Altera possui dois modos de
programação/configuração:
JTAG – Joint Test Action Group – A informação é carregada directamente na FPGA.
É uma forma simples de testar circuitos digitais, que para a DE2 tem a
particularidade de não permitir reter a programação da placa depois da placa ser
desligada e ligada novamente 6.
AS – Active Serial – A informação é guardada numa memória não volátil (ex.
memória flash) da placa DE2 da Altera. Depois a informação é também transferida
desta memória para a FPGA. Este modo de programação tem a particularidade de
reter a programação mesmo depois de se desligar e ligar novamente a placa.
Nestas aulas de laboratório, iremos utilizar sempre o modo de programação JTAG. Para
o efeito, o comutador RUN/PROG existente na placa DE2 deverá ser mantido sempre na
posição RUN.
a) Certifique-se que a sua placa DE2 está ON e devidamente ligada ao seu computador
(USB blaster port ao lado da alimentação). Seleccione Tools>Programmer para
aceder à janela da Fig. 26. Aqui é necessário especificar o modo de programação
JTAG (caixa mode) e seleccionar o hardware utilizado pelo computador para
comunicar com a placa da Altera, através do botão Hardware Setup. No caso da
placa DE2, seleccione USB-Blaster.
c) Seleccione o ficheiro “interruptor-LED.sof” apresentado na lista de ficheiros da Fig. 26
e marque a opção Program/Configure. Clique em Start para iniciar a
programação/configuração da placa. Acenderá um LED na placa quando a
programação/configuração tiver terminado.
d) Actue no interruptor da placa e observe o comportamento dos LEDs e o funcionamento
do circuito.
6 Existem outras FPGAs de menor capacidade que retêm a programação, como por exemplo a MAX EPM7128S da altera utilizada nas placas UP1 e UP2. A MAX retém a programação internamente depois de desligada, sem ter de recorrer a memória flash externa, a Cyclone II que vamos utilizar neste trabalho não.
LAB01 – Introdução ao Altera Quartus II Laboratório de Sistemas Digitais
MiEEC, 1.º ano, 1.º semestre Pág. 20/29 DEEC-FCTUC
Fig. 26. Janela de programação.
3. Controlar a luz do pátio com circuito de lógica combinacional
3.1 Introdução
Um projecto de lógica combinacional envolve a criação de circuitos cujas saídas
binárias são funções directas da combinação presente nas suas entradas binárias. Estes
circuitos fazem uso de portas lógicas Booleanas: AND, OR, NOT, NAND, NOR, etc.
O comportamento combinacional pode ser descrito usando tabelas de verdade ou
equações Booleanas. O projecto de um simples circuito combinacional é feito em 3 passos:
(1) captura do comportamento do circuito através de uma tabela de verdade ou de equações
Booleanas; (2) conversão para equações Booleanas (se necessário) e simplificação
(optimização); e (3) implementação das equações com portas lógicas básicas.
Nesta fase do trabalho, pretende-se projectar um circuito combinacional para controlar
a iluminação do pátio de uma residência. A luz só deve acender quando: a entrada de um
sensor de luz D é 0 (indicando que não é de dia) e a entrada de um sensor de movimento M
é 1 (indicando movimento). Temos ainda a entrada de um interruptor I que quando é 1
indica que a luz deve ficar ligada, independentemente dos valores de D e M. Para ligar a luz
deve-se colocar a saída L a 1. A Fig. 27 mostra o diagrama de blocos do circuito a projectar.
LAB01 – Introdução ao Altera Quartus II Laboratório de Sistemas Digitais
MiEEC, 1.º ano, 1.º semestre Pág. 21/29 DEEC-FCTUC
Fig. 27. Diagrama de blocos do controlador da luz do pátio.
3.2 Actividades
Em seguida, é proposta uma sequência de actividades para projectar, simular e
implementar o circuito anterior, usando o Quartus II e a placa FPGA da Altera DE2.
3.2.1 Projectar circuito e criação de um novo projecto no Quartus II
a) O primeiro passo do projecto é capturar o comportamento do circuito por uma
equação Booleana, que indica o valor da saída em função das entradas. Este
comportamento pode ser descrito através da equação Booleana L=M.D‟+I, em que D‟
representa “não D” (não é de dia), „.‟ E (AND) e „+‟ OU (OR).
b) Crie um novo projecto “combinacional-luz-do-patio”. Guarde este projecto na directoria
“LSD_P<numero_turma>G<numero_grupo>\combinacional-luz-do-patio”. Tenha em
atenção a configuração da família do dispositivo e o dispositivo específico da Altera que
está a usar (ver 2.2.1.1-d).
3.2.2 Desenho do esquemático e compilação do circuito
a) Desenhe o esquemático do circuito combinacional para controlar a luz do pátio. Atribua
aos sinais de entrada/saída os nomes indicados na Fig. 28.
Fig. 28. Esquemático do circuito combinacional para controlar a luz do pátio.
b) Compile o circuito. Enquanto houver erros de compilação, corrija os erros e repita as
alíneas a) e b).
D
M
I
L Circuito a
implementar
LAB01 – Introdução ao Altera Quartus II Laboratório de Sistemas Digitais
MiEEC, 1.º ano, 1.º semestre Pág. 22/29 DEEC-FCTUC
3.2.3 Simulação
b) Abra o editor de formas de onda e crie os vectores de teste necessários para testar o
circuito combinacional para todas as combinações das entradas (3 entradas => 23 = 8
combinações). Deverá obter algo similar ao que é mostrado na Fig. 29.
c) Crie a lista de ligações do circuito (netlist) e, em seguida, proceda à simulação
funcional do circuito. Observe a forma de onda da saída do circuito e verifique a
correcção do circuito projectado. Deverá obter algo semelhante à Fig. 30. Se detectar
algum erro no comportamento do circuito, deverá verificar se executou correctamente
as actividades 3.2.2 e 3.2.3, fazer as correcções necessárias e repetir a simulação.
Fig. 29. Vectores de teste para simular o circuito de controlo da luz do pátio.
Fig. 30. Simulação do circuito para controlar a luz do pátio.
LAB01 – Introdução ao Altera Quartus II Laboratório de Sistemas Digitais
MiEEC, 1.º ano, 1.º semestre Pág. 23/29 DEEC-FCTUC
3.2.4 Atribuição dos pinos, programação da FPGA e teste
a) Faça a atribuição dos sinais do circuito aos pinos da FPGA de acordo com a Tabela 1 .
Sinal Placa DE2
M SW[0] PIN_N25
D SW[1] PIN_N26
I SW[2] PIN_P25
L LEDR[0] PIN_AE23
Tabela 1. Atribuição dos pinos para o circuito para controlar a luz do pátio.
b) Compile novamente o circuito (para criar o ficheiro de programação da FPGA já com as
atribuições de pinos correctas).
c) Programe/configure a FPGA para implementar o circuito projectado.
d) Actue nos interruptores e teste o circuito em todas as situações (8 combinações).
4. Contador binário com visor de 7 segmentos
4.1 Visor de 7 segmentos com descodificador
4.1.1 Introdução
Nos sistemas digitais reais, é comum a utilização de conjuntos de interruptores
dispostos em linha – DIP (dual-in-line package) switches – para representar uma palavra
binária, habitualmente para configurar um parâmetro do sistema. A Fig. 31 mostra alguns
DIP switches e um DIP switch de 4 posições ligado a um conjunto de 4 LEDs.
Fig. 31. DIP switches , e ligação a LEDS para representar números binários (01102=610).
Porém, para visualizar dígitos, é mais conveniente recorrer a visores de 7 segmentos.
Estes visores permitem indicar um dígito decimal ou hexadecimal em função do valor binário
existente numa palavra binária de 4 bits. Cada segmento do visor é também um LED e
temos que recorrer a um circuito combinacional para controlar cada um do 7 segmentos. Os
DIP switch
LEDs
1 0
LAB01 – Introdução ao Altera Quartus II Laboratório de Sistemas Digitais
MiEEC, 1.º ano, 1.º semestre Pág. 24/29 DEEC-FCTUC
7 segmentos são geralmente etiquetados com as letras (minúsculas) a a g, em que o
segmento a é o de cima, e g é o do centro. As representações dos dígitos decimais 0 a 9 são
feitas como se indica na Fig. 32.
Fig. 32. Dígitos decimais num visor de 7 segmentos.
Os visores disponíveis directamente em alguns módulos de teste são de cátodo
comum, sendo necessário aplicar o nível lógico 1 a um determinado segmento para que
este acenda. Os restantes visores que vamos usar são do tipo ânodo comum – o terminal
positivo, o ânodo, de todos os segmentos é ligado em comum – pelo que um segmento
acende com o nível lógico 0. Os visores cujo circuito se apresenta na Fig. 33 estão já
montados num circuito impresso, que inclui as resistências limitadoras de corrente.
Fig. 33. Visor de 7 segmentos e respectivo circuito com LEDs to tipo ânodo comum.
Na família de lógica standard 74x temos já disponíveis CI‟s com circuitos
combinacionais para controlar cada um dos 7 segmentos: o CI ‟47 para visores de ânodo
comum e o CI ‟48 para visores de cátodo comum.
As placas DE2 possuem visores de 7 segmentos de ânodo comum, cujos segmentos
estão ligados a pinos da FPGA. Isto significa que para se acender um segmento é necessário
aplicar um 0 ao pino respectivo. Recorrendo a bibliotecas de componentes lógicos do
Quartus II podemos colocar no nosso projecto esquemático componentes equivalentes aos
da família lógica standard TTL (74xxx).
a
b
c
d
f
e
g
0 1 2 3 4 5 6 7 8 9
LAB01 – Introdução ao Altera Quartus II Laboratório de Sistemas Digitais
MiEEC, 1.º ano, 1.º semestre Pág. 25/29 DEEC-FCTUC
4.1.2 Enunciado
a) Crie um novo projecto no Quartus II, chamado “visor-7-seg-anodo-comum”. Guarde
este projecto na directoria “LSD_P<numero_turma>G<numero_grupo>\visor-7-seg-
anodo-comum”. Tenha em atenção a configuração da família do dispositivo e o
dispositivo específico da Altera que está a usar (ver 2.2.1.1-d).
b) Desenhe o esquemático de um pequeno circuito para visualizar uma quantidade binária
de 4 bits num visor de 7 segmentos de ânodo comum (Fig. 34). Vai precisar de
incluir no circuito um descodificador de BCD para 7 segmentos com saídas activas ao
nível baixo (CI ‟47). O símbolo deste componente está disponível na biblioteca
others>maxplus2 com o nome 7447. As entradas LTN, RBIN e BIN do CI devem
ser colocadas a 1 (Vcc). A saída RBON deve ficar desligada.
c) Faça a atribuição dos sinais do circuito aos pinos da FPGA de acordo com a Tabela 2.
d) Compile o circuito. Enquanto houver erros de compilação, corrija os erros e repita as
alíneas a) a c).
Fig. 34. Visor de 7 segmentos de ânodo comum com descodificador.
e) Programe/configure a FPGA com o circuito projectado. Actue nos 4 interruptores e
teste o circuito para todas as combinações possíveis. Se detectar erros de projecto,
volte atrás para corrigir.
LAB01 – Introdução ao Altera Quartus II Laboratório de Sistemas Digitais
MiEEC, 1.º ano, 1.º semestre Pág. 26/29 DEEC-FCTUC
Sinal Placa DE2
I0 SW[0] PIN_N25
I1 SW[1] PIN_N26
I2 SW[2] PIN_P25
I3 SW[3] PIN_AE14
a HEX0[0] PIN_AF10
b HEX0[1] PIN_AB12
c HEX0[2] PIN_AC12
d HEX0[3] PIN_AD11
e HEX0[4] PIN_AE11
f HEX0[5] PIN_V14
g HEX0[6] PIN_V13
Tabela 2. Atribuição dos pinos para o visor de 7 segmentos com descodificador.
4.2 Contador síncrono com visor de 7 segmentos
4.2.1 Introdução
No projecto de sistemas digitais ao nível de transferência de registos (register-transfer-
level), utilizam-se componentes que armazenam e/ou transformam dados (data). Um destes
componentes é o contador síncrono, que incrementa o seu próprio valor (soma 1) a cada
ciclo de um sinal de relógio. Um sinal de relógio é um sinal periódico quadrado como o da
Fig. 35, que é frequentemente utilizado nos sistemas digitais para manter sincronizados os
diversos elementos de um circuito. Habitualmente são usadas as transições (flancos positivos
ou negativos) destes sinais para definir os instantes de sincronização. Um contador diz-se
síncrono se incrementar a sua saída de forma sincronizada com os flancos positivos ou
negativos de um sinal de relógio.
Fig. 35. Sinal de relógio.
0V
+5V
LAB01 – Introdução ao Altera Quartus II Laboratório de Sistemas Digitais
MiEEC, 1.º ano, 1.º semestre Pág. 27/29 DEEC-FCTUC
4.2.2 Enunciado
a) Crie um novo projecto no Quartus II, chamado “contador-visor-7-seg-anodo-comum”.
Guarde este projecto na directoria “LSD_T<numero_turma>G<numero_grupo>\
contador-visor-7-seg-anodo-comum”. Tenha em atenção a configuração da família do
dispositivo e o dispositivo específico da Altera que está a usar (ver 2.2.1.1-d).
b) Desenhe o esquemático de um circuito para visualizar o estado de um contador binário
de 4 bits num visor de 7 segmentos de ânodo comum (Fig. 36). Para além do CI „47
(7447), vai precisar de incluir no circuito o símbolo do contador (CI „161), que está
disponível na biblioteca others>maxplus2 com o nome 74161. A saída OVFLW será
ligada a um LED para sinalizar a situação de overflow (o contador atinge a contagem
máxima). A entrada CLEAR será ligada a um botão de pressão que permitirá anular a
contagem. A entrada CLOCK será também ligada a um botão de pressão para emular o
sinal de relógio. As placas da Altera geram sinais de relógio internamente, mas têm
uma frequência demasiado elevada para esta experiência, sendo necessário colocar
divisores de frequência para gerar os valores pretendidos.
Fig. 36. Contador digital ligado a um visor de 7 segmentos.
c) Faça a atribuição dos sinais do circuito aos pinos da FPGA de acordo com a Tabela 3.
d) Compile o circuito. Enquanto houver erros de compilação, corrija os erros e repita as
alíneas a) a d).
e) Programe/configure a FPGA com o circuito projectado. Actue nos botões de pressão e
teste o circuito. Se detectar erros de projecto, volte atrás para corrigir.
LAB01 – Introdução ao Altera Quartus II Laboratório de Sistemas Digitais
MiEEC, 1.º ano, 1.º semestre Pág. 28/29 DEEC-FCTUC
Sinal Placa DE2
CLOCK KEY[0] PIN_G26
CLEAR KEY[1] PIN_N23
a HEX0[0] PIN_AF10
b HEX0[1] PIN_AB12
c HEX0[2] PIN_AC12
d HEX0[3] PIN_AD11
e HEX0[4] PIN_AE11
f HEX0[5] PIN_V14
g HEX0[6] PIN_V13
OVFLW LEDR[0] PIN_AE23
Tabela 3. Atribuição dos pinos para o contador com visor de 7 segmentos.
f) Amplie o esquemático da alínea a) para que a contagem seja anulada quando o
contador transitar de 9 (10012) para 10 (10102). Deve também alterar o circuito para
que a saída OVFLW fique a 1 quando a contagem atingir o valor 9.
g) Teste a nova versão do circuito na FPGA e verifique o seu correcto funcionamento.
LAB01 – Introdução ao Altera Quartus II Laboratório de Sistemas Digitais
MiEEC, 1.º ano, 1.º semestre Pág. 29/29 DEEC-FCTUC
5. Lista de verificação
Actividade
1 2.2.1.1 Ligar um interruptor a dois LEDs: Criação de um novo projecto no Quartus II
2 2.2.1.2 Ligar um interruptor a dois LEDs: Desenho do esquemático
3 2.2.1.3 Ligar um interruptor a dois LEDs: Compilação do circuito
4 2.2.1.5 Ligar um interruptor a dois LEDs: Simulação funcional
5 2.2.1.4 Ligar um interruptor a dois LEDs: Atribuição de pinos
6 2.2.1.6 Ligar um interruptor a dois LEDs: Atribuição dos pinos, programação da FPGA e teste Atribuição dos pinos, programação da FPGA e teste
7 3 Controlar a luz do pátio com circuito de lógica combinacional
8 4.1 Visor de 7 segmentos com descodificador
9 4.2 Contador binário com visor de 7 segmentos
10 4.2.2 f) Contador com reset para contar de 0 a 9 (BCD)
Importante: Antes de dar por terminado este trabalho laboratorial, preencha a tabela
anterior e chame o docente para este verificar e registar a execução das várias actividades
propostas neste enunciado.
6. Referências
[1] Digital Design. Frank Vahid, John Wiley & Sons, 2006.
[2] DE2 Development and Education Board. Altera, 72 páginas, 2006.
i Conteúdo pedagógico preparado em Julho de 2011 pelos docentes Jorge Lobo e Rui P. Rocha do DEEC-FCTUC, que asseguram a leccionação da unidade curricular Laboratório de Sistemas Digitais (MiEEC, 1.º ano, 1.º semestre).