O documento descreve um projeto para desenvolver um jogo eletrônico de "papel, pedra ou tesoura" utilizando um CPLD (Complex Programmable Logic Device). O jogo seguirá as regras clássicas onde papel vence pedra, tesoura vence papel e pedra vence tesoura, e deverá também indicar empates e jogadas inválidas. O projeto será desenvolvido em 5 etapas, identificando variáveis, montando tabelas verdade e mapas de Karnaugh, desenhando o circuito lógico no software do CPLD
3. 3
APRESENTAÇÃO
Imagine que você atue como projetista em uma empresa que desenvolve
jogos eletrônicos. Sua nova missão, na empresa, será elaborar um novo
jogo utilizando a tecnologia CPLD.
O jogo é baseado em uma brincadeira clássica de criança que, provav-
elmente, você já conheça. Trata-se do jogo papel, pedra ou tesoura. As
regras são simples: dois jogadores escolhem, ao mesmo tempo, uma das
opções: papel, pedra ou tesoura. O vencedor depende da combinação
dos resultados: papel vence pedra, tesoura vence papel e pedra vence
tesoura.
Mas é preciso lembrar que, além de indicar o vencedor, existem condições especiais que precisam
ser sinalizadas. Uma das condições ocorre em casos de empate, e a outra em situações não permiti-
das, por exemplo, quando apenas um ou nenhum dos jogadores participa do jogo ou quando um
ou mais jogadores selecionam mais de uma opção.
Para facilitar seus estudos, a criação do jogo será feita em cinco etapas. Cada uma corresponderá a
um desafio que você precisará enfrentar para ter seu trabalho concluído satisfatoriamente.
4. 4
DESAFIOS
Para facilitar seus estudos, a programação do microcontrolador será feita em cinco etapas. Cada
uma corresponderá a um desafio que você precisará enfrentar para ter seu trabalho concluído sat-
isfatoriamente.
Desafio 1 – Identificar as variáveis de entrada e saída
O desafio 1 consiste em identificar as variáveis de entradas e saídas necessárias
para o funcionamento do jogo. Além de indicar as variáveis, você deverá elaborar
postulados para explicar a lógica utilizada no seu projeto.
Desafio 2 – Montar a tabela verdade
O desafio 2 consiste em montar uma tabela verdade com as variáveis de entradas e
saídas definidas no desafio 1.
Desafio 3 – Montar os mapas de Karnaugh e extrair as respectivas funções
O desafio 3 consiste em montar os mapas de Karnaugh com os valores binários de
cada célula da tabela verdade e retirar as respectivas funções booleanas.
Desafio 5 – Gravar o circuito lógico no CPLD
O desafio 5 consiste em gravar, no CPLD, o circuito lógico para o funcionamento
do jogo.
Desafio 4 – Desenhar o circuito lógico no software do CPLD
O desafio 4 consiste em desenhar o circuito lógico no software do CPLD.
6. 6
APRESENTAÇÃO
Neste desafio, você estudará os detalhes necessários para iniciar a elaboração de um projeto para
dispositivos CPLD (Complex Programmable Logic Devices) utilizando a suíte de aplicativos Quar-
tus II do fabricante Altera. No final deste desafio você terá subsídios para:
• Reconhecer as vantagens do uso do CPLD;
• Identificar variáveis de entrada e saída no descritivo de aplicações de um projeto.
Preparado? Então siga em frente!
7. 7
FPGA OU CPLD?
Nos últimos tempos, essa tem sido uma pergunta comum nos ambientes de desenvolvimento: Qual
é a melhor tecnologia, FPGA ou CPLD? É frequente encontrarmos defensores de uma ou outra tec-
nologia, mas a escolha mais adequada depende de cada projeto. Isso acontece porque, assim como
qualquer outra tecnologia, existem vantagens e desvantagens na escolha, portanto, é preciso analisar
as características de cada uma e as necessidades do projeto para, então, escolher qual é a melhor. E
como professores, é muito importante abordar essa questão com nossos alunos, para que não saiam
da escola bitolados em uma ou outra tecnologia.
Ao longo deste curso, estudaremos um pouco sobre CPLD e microcontroladores, para experimen-
tarmos as vantagens e desvantagens de cada uma. Nesta unidade falaremos sobre o CPLD. Está
curioso para conhecer mais sobre essa tecnologia? Então siga em frente!
Além de FPGA e CPLD, não podemos nos esquecer que existem outras tecnologias como,
por exemplo, os microcontroladores, e que todas devem ser levadas em consideração na
escolha para um projeto.
8. 8
ARQUITETURAS
Você já percebeu a dificuldade para comprar portas lógicas e alguns circuitos derivados que estão
em desuso para a manutenção de máquinas e sistemas? Com isso, surgem novos dispositivos como
os FPGA (Field Programmable Gate Arrays) e CPLD (Complex Programmable Logic Device), que dif-
erem entre si na arquitetura interna, mais especificamente pela utilização de blocos lógicos simples
(FPGA) e complexos (CPLD). Clique nas abas abaixo e veja as principais características de CPLD
e FPGA.
FPGA
O Field Programmable Gate Arrays (FPGA) é um circuito integrado usado desde a década
de 1980, que permite aos desenvolvedores programarem uma lógica digital personalizada
neste dispositivo, mesmo estando instalado em campo. Desde então, este tem evoluído de
uma simples interface lógica para um circuito integrado sofisticado, com os seus próprios
microprocessadores, blocos de memória e I/O garantindo flexibilidade, redução de cus-
tos e agilidade nos cronogramas de projetos.
Como característica positiva, este trabalha com velocidades maiores que o CPLD e per-
mite maior densidade de estruturas lógicas por igual área na pastilha semicondutora.
Como característica negativa está o fato deste não possuir memória de programação e
perder os dados após ser desenergizado. Para corrigir isto, associamos à parte, um dis-
positivo de programação. O problema já foi corrigido em alguns produtos atuais com a
colocação de memorias flash e EEPROM.
Veja um exemplo de FPGA utilizado para controlar um motor. No exemplo aparece a
arquitetura interna de um FPGA e as ligações externas. O exemplo se refere a um FPGA
da família Cyclone, do fabricante Altera.
Fonte: datasheet Cyclone V
9. 9
Saiba mais...
Para saber mais sobre o FPGA, tipos disponíveis e aplicações,
visite os sites de alguns fabricantes, na internet: www.xilinx.
com.cc, www.altera.com, www.atmel.com.
CPLD
O CPLD (Complex Programmable Logic Device) é um circuito integrado composto de
blocos lógicos formados por portas AND e OR, com arranjos de interconexões internas
entre blocos de portas lógicas e com a capacidade de reprogramação. As portas lógicas
de um CPLD podem ser configuradas, via programação, para formar circuitos lógicos
complexos. Significa dizer que um único CPLD pode assumir uma combinação imensa
de portas lógicas, com grande quantidade de entradas e saídas, ou seja, um CPLD pode
substituir centenas (e mais) de circuitos integrados da família TTL (série 74) ou da família
CMOS (série 40).
Além disso, como as portas lógicas de CPLD são combinadas por meio de programação,
elas podem ser reprogramadas a qualquer momento, o que facilita alterações no projeto.
Se fossemos utilizar circuitos integrados da família TTL ou CMOS, qualquer alteração
envolveria muito tempo e dinheiro, já que precisaríamos confeccionar uma nova PCI.
A configuração interna de um CPLD varia de acordo com o modelo e com o fabricante,
mas para que tenha uma ideia, veja um exemplo de diagrama em blocos de um CPLD do
fabricante Altera:
Fonte: datasheet do CPLD EPM3064ALC44-10 da ALTERA Cyclone V
10. 10
Cada macrocélula do diagrama em blocos é formada por vários circuitos lógicos, com-
postos de portas lógicas e registradores. A ilustração, a seguir, traz um exemplo de uma
macrocélula:
A programação de um CPLD costuma ser feita por meio de softwares, que são disponi-
bilizados pelo próprio fabricante do CPLD. Significa dizer que cada fabricante tem um
software e um procedimento específico de programação, mas de modo geral, o processo
consiste em desenhar, no software, o circuito lógico combinacional desejado e carregar
o desenho no CPLD. Desse modo, o CPLD assume as funções lógicas do seu desenho.
Falaremos mais sobre a programação de CPLD ao longo deste curso, em momento opor-
tuno.
Fonte: datasheet do CPLD EPM3064ALC44-10 da ALTERA
Saiba mais...
Para saber mais sobre o CPLD, tipos disponíveis e aplicações,
visite os sites de alguns fabricantes, na internet: www.xilinx.
com.cc, www.altera.com, www.atmel.com.
11. 11
Saiba mais...
Para saber mais sobre o CPLD, tipos disponíveis e aplicações,
visite os sites de alguns fabricantes, na internet: www.xilinx.
com.cc, www.altera.com, www.atmel.com.
MERCADO E APLICAÇÕES
Para se ter uma ideia da necessidade que o mercado tem destes dispositivos, o fabricante Xilinx
afirma que o tráfico global IP (largura de banda) é crescente e deve atingir em 2016, incríveis 110
Exabytes, estando hoje em torno de 69 Exabytes, com barramentos de dados de 512 a 2048 bits. Para
poder atender a esta demanda, serão necessários sistemas que trabalhem naturalmente com 1 Tb/s
(1 Terabyte por segundo) em aplicações de comunicação com múltiplos links, aplicações de trans-
missão de vídeo digital em 1080p e 4K (e também 8K – Super H-Vision). Devido à alta velocidade,
capacidade de expansão e flexibilidade para a programação, os CPLD e os FPGA são aliados impor-
tantes para enfrentar esses desafios. Veja um exemplo de diagrama em blocos com a arquitetura de
um sistema para processamento de vídeo com FPGA.
Embora o FPGA e o CPLD representem um grande avanço na eletrônica digital, tenha em mente
que os conceitos de eletrônica digital ainda são muito necessários. Significa dizer que mesmo nos
projetos atuais, que utilizam mais variáveis de entrada e de saída e mais portas lógicas, os conceitos
utilizados na época dos circuitos integrados TTL continuam sendo necessários. Por isso é impor-
tante resgatar alguns conceitos de Eletrônica Digital. É o que faremos, a seguir.
Siga adiante!
12. 12
Importante!
Portanto, o postulado é uma técnica importante para desenvolver projetos que
envolvem eletrônica digital, pois você precisará identificar e mapear todas as
variáveis e condições de entrada e de saída do projeto que está concebendo.
POSTULADOS
Consulte nos bons dicionários virtuais na internet o termo postulado e receberá como retorno três
significados:
• Ideia que se reconhece;
• Premissa; e
• Em algumas religiões, tempo de preparação para o noviciado.
Para o nosso curso, portanto, o termo “Premissa” é o mais adequado. É comum, na sala de aula ou
com nossos colegas, associarmos o termo postulado a alguma premissa, regra, convenção, lei, dire-
triz ou mesmo uma simples informação. Quando relacionamos instalações elétricas com eletrônica
digital, associamos lâmpada acesa como nível lógico um e lâmpada apagada como nível lógico zero.
Ainda nessa linha, temos o interruptor acionado, representando nível lógico um ou não acionado,
representando nível lógico zero. Nos dois exemplos, estabelecemos postulados.
13. 13
ENTRADAS E SAÍDAS
Agora que você relembrou o que é o postulado, é necessário estabelecer se este se refere a uma en-
trada ou uma saída. Retomemos os exemplos do item anterior.
Qual é a relação de dependência entre o interruptor e a lâmpada? Você atua sobre a lâmpada para
acionar o interruptor ou aciona o interruptor para que a lâmpada acenda? Evidentemente a lâmpada
só deverá acender quando o interruptor for acionado.
Portanto, a relação de dependência da lâmpada com o interruptor indica que:
=1
Lâmpada acesa Lâmpada apagada
=0
=1
Interruptor acionado Interruptor não acionado
=0
Interruptor = entrada
Lâmpada = saída.
14. 14
Para que entenda melhor a determinação de um postulado, preparamos um exemplo em que você
poderá acompanhar a definição de um postulado para um projeto de iluminação automotiva. Ana-
lise a necessidade do projeto e acompanhe a definição do postulado.
Exemplo: definindo um postulado
1. DESCRIÇÃO DO PROJETO
Muitos acidentes ocorrem por distração ao volante. Para minimizar este fato, uma em-
presa de segurança automotiva resolveu implantar um dispositivo de segurança para
controlar o acendimento das luzes de um veículo. O objetivo é fazer o acendimento da
lanterna, do farol e do farol de neblina, de acordo com quatro modos de operação: Modo
lanterna, modo esportivo, modo farol e lanterna e modo rural. O acendimento será feito
por meio de uma chave rotativa de duas posições para o acionamento da lanterna e do
farol, de uma chave para o farol de milha, e de um CPLD para fazer o controle. As luzes
deverão acender de acordo com os critérios informados a seguir, e o sistema deverá im-
pedir o acionamento de sequências diferentes do especificado.
1: Modo lanterna
O modo lanterna será acionado quando a
chave rotativa estiver na posição 1 e a chave
do farol de milha estiver desligada. Nesse
caso, apenas a lanterna deverá ser acionada.
2: Modo farol e lanterna
O modo farol e lanterna será acionado
quando a chave rotativa estiver na posição 2
e a chave do farol de milha estiver desligada.
Nesse caso, o farol e a lanterna deverão ser
acionados juntos.
15. 15
2. DEFININDO UM POSTULADO PARA O PROJETO
O primeiro passo para definir um postulado para o projeto é identificar a(s) entrada(s).
De acordo com a descrição do projeto, temos 3 variáveis digitais de entrada sendo que
para cada variável de entrada, nível lógico 0 indica que a respectiva chave está desligada e
nível lógico 1 indica que está ligada. Quanto às saídas, para o caso deste projeto, elas rep-
resentam as luzes do veículo, sendo que para cada variável de saída, nível lógico 0 indica
que a respectiva luz está apagada e nível lógico 1 indica que ela está acesa.
3: Modo rural
O modo rural será acionado quando a
chave rotativa estiver na posição 2 e a chave
do farol de milha estiver acionada. Nesse
caso, o farol, a lanterna e o farol de milha
deverão ser acionados juntos.
4: Modo esportivo
O modo esportivo será acionado quando a
chave rotativa estiver na posição 1 e a chave
do farol de milha estiver acionada. Nesse
caso, a lanterna e o farol de milha deverão
ser acionados juntos.
Desligado
17. 17
DESAFIO 1
Agora que você conhece as principais características de um CPLD e as
vantagens dessa tecnologia para os projetos de eletrônica digital na atu-
alidade, chegou o momento de retomar o desafio 1.
Retorne à página principal do ambiente virtual de aprendizagem e par-
ticipe do desafio 1. Lembre-se de que a elaboração da tarefa proposta
deverá ser realizada em grupo. Você terá à disposição um ambiente de
grupo, para debater com os colegas e um espaço destinado para a entre-
ga da tarefa.
Bom trabalho!
RECAPITULANDO
Neste desafio você estudou:
• Algumas dicas sobre como escolher o melhor dispositivo para o seu
projeto;
• Uma visão geral do dispositivo CPLD e seu mercado de aplicação;
• Como identificar entradas e saídas.
Você deverá participar da seguinte atividade:
• Desafio 1 – atividade em grupo: Identificar as variáveis de entradas e saídas necessárias para o
funcionamento do jogo eletrônico pedra, papel ou tesoura. Além de indicar as variáveis, você
deverá elaborar postulados para explicar a lógica utilizada no seu projeto.
19. 19
APRESENTAÇÃO
Neste desafio você estudará alguns detalhes da suíte de ferramentas Quartus II do fabricante Altera
e fará a instalação, para iniciar a elaboração de um projeto para dispositivos CPLD (Complex Pro-
grammable Logic Devices). Também irá relembrar alguns conceitos de Eletrônica Digital, que são
fundamentais para elaborar projetos com CPLD. No final deste desafio você terá subsídios para:
• Selecionar e instalar uma ferramenta para projeto com CPLD;
• Montar uma tabela-verdade com n bits e múltiplas saídas.
Preparado? Então siga em frente!
20. 20
FERRAMENTAS PARA PROJETOS COM CPLD
A maior parte dos microcontroladores atuais vêm equipados com módulos A/D. Trata-se de
conDispositivos como os FPGA (Field Programmable Gate Arrays) e CPLD (Complex Program-
mable Logic Device) devem receber uma carga de informações para torná-los funcionais e, para
que isto aconteça, necessitam de uma interface que comunique a necessidade do projetista com o
dispositivo físico.
Para cumprir as etapas de desenvolvimento, desde a concepção até a gravação no CPLD, cada fabri-
cante disponibiliza uma suíte de ferramentas. Trata-se de um software, contendo todos os recursos
necessários para desenhar circuitos lógicos e fazer a gravação em CPLD. Dependendo do fabri-
cante, os softwares podem ser gratuitos ou pagos, e podem ser fornecidos por meio de download
ou entregue em DVD ou outras mídias.
Vejam alguns exemplos de software e seus respectivos fabricantes:
Neste curso, utilizaremos a ferramenta Quartus II da Altera em sua versão 8.1, compativel com
todos os sistemas Windows, da versão XP a 8.1.
Esta ferramenta é do tipo IDE (Integrated Development Environment) ou Ambiente de Desenvolvi-
mento Integrado, criada para interagir com componentes da Altera.
SOFTWARE FABRICANTE GRATUITO SITE
QUARTUS
II
Altera
Sim, mas existem
versões pagas,
com recursos
adicionais
https://www.altera.com/products/de-
sign-software/fpga-design/quartus-ii/over-
view.html
VIVADO
DESIGN
TOOLS
Xilinx
Sim, mas existem
versões pagas,
com recursos
adicionais
http://www.xilinx.com/support/download/
index.html/content/xilinx/en/download-
Nav/vivado-design-tools.html
PROCHIP
DESIGNER
Atmel Sim http://www.atmel.com/tools/wincupl.aspx
Importante!
Embora existam versões mais atualizadas, vamos utilizar, neste curso, a versão
8.1 devido a compatibilidade com o kit que utilizaremos em nosso encontro
presencial.
21. 21
Para melhor vizualização de seu funcionamento global, usaremos o recurso de fluxograma para
identificar todas as etapas do projeto a ser gravado no dispositivo CPLD.
Agora que você já viu as ferramentas para projetos com CPLD, continue para saber com funciona
a instalação.
O projeto é introduzido por meio de um diagra-
ma esquemático ou por uma linguagem de pro-
gramação do tipo Verilog ou VHDL.
A ferramenta ajusta a melhor alocação de blocos
lógicosdefinidosnanetlist1
doCPLDreal.Também
escolhe os caminhos internos de roteamento mais
adequados para fazer as conexões entre os blocos
internos.
Na análise são analisados os atrasos de propa-
gação ao longo dos vários trajetos internos do
CPLD para conseguir o melhor desempenho para
o projeto. Na simulação, o projeto é testado para
verificar suas funcionalidades junto com a análise
temporal.
O projeto é implementado em um CPLD físico,
programado com opções de configuração que es-
tabeleçam os melhores resultados de desempenho.
O projeto sintetizado é testado para verificar seu
funcionamento. Nesta etapa não levamos em con-
ta eventuais problemas de temporização.
O projeto é sintetizado com a estrutura lógica
fornecida internamente pelo CPLD.
1
Netlist é uma espécie de mapa que contém todas as interligações das portas utilizadas em um projeto.
22. 22
INSTALAÇÃO DA FERRAMENTA PARA PROJETOS COM CPLD
O processo de criação de um projeto com CPLD pode ser visto a seguir, por meio de um exemplo
com instruções passo-a-passo. No exemplo, utilizaremos o software Quartus II para implementar
um circuito simples em um dispositivo CPLD da Altera. O software Quartus II inclui uma inter-
face CAD muito similar a de ambientes que, provavelmente, você já conheça, como por exemplo o
MPLAB e o Proteus. Neste passo-a-passo usaremos como método de entrada um diagrama esque-
mático. A última etapa do projeto envolverá a gravação em um dispositivo CPLD montado no kit
do fabricante Exsto, por meio de um cabo USB/J-TAG. As capturas de tela utilizadas no tutorial são
do software Quartus II versão 8.1. Para outras versões do software, algumas telas serão ligeiramente
diferentes.
O Compilador é parte integrante deste software, e veremos este assunto no próximo capítulo, junto
com a programação.
Após realizar o download pelo site da Altera ou instalar a partir de uma mídia DVD, você deve seguir
as instruções a seguir. É importante lembrar que, embora o software seja gratuito, é necessário fazer
um cadastro no site do fabricante, antes de fazer o download.
1. Introduza a mídia na unidade DVD ou clique no arquivo executável.
2. Aguarde a tela de instalação, conforme a
imagem ao lado e clique no botão Install free
package.
Importante!
O tempo de instalação pode variar de um computador para outro. Antes de ini-
ciar a instalação, é recomendável fechar todos os programas. Na parte presencial
do curso, você terá o software pré-instalado no laboratório, bastando transferir
os arquivos da tarefa para uma pasta ou executar a partir de seu HD portátil,
pendrive ou notebook, com o cabo USB/J-TAG, que estará disponível.
23. 23
3. Na tela seguinte, mantenha as configu-
rações recomendadas e clique em Next.
4. Aceite a licença de uso e clique em Next.
5. Preencha os campos em destaque e clique
em Next.
24. 24
6. Confirme a pasta de destino da instalação
e clique em Next.
7. Confirme novamente e clique em Next.
8. Aguarde até o término da instalação.
25. 25
9. O Programa está instalado. Se preferir,
marque a opção View readme.txt para
conhecer mais detalhes sobre o software ou
clique diretamente no botão Finish.
Agora, o programa está instalado e pronto para o uso.
Siga em frente para conhecer um dos conceitos essenciais de eletrônica digital: a tabela-verdade.
26. 26
TABELA-VERDADE
Como vimos no desafio anterior, conceitos básicos de eletrônica digital são essenciais para projetos
com CPLD, e isso inclui as tabelas-verdade. Antes de pensar no circuito lógico, devemos montar
uma tabela-verdade com todas as variáveis de entrada e de saída. O meio mais fácil é montando
uma planilha, que pode ser feita com qualquer programa editor existente no mercado, por exemp-
lo, Excel. Outra opção é usar o comando inserir→tabela, comum nos programas de edição de texto.
Veja os exemplos a seguir:
A S
0
1
Tabela-verdade com uma entrada (A) e uma saída (S).
A B S
0 0
0 1
1 0
1 1
Tabela-verdade com duas entradas (A) e (B) e uma saída (S).
Dica...
Para evitar a mensagem de erro durante o preenchimento ou operação com
planilhas, você deve selecionar todas as células e formatá-las no padrão texto.
27. 27
Observe que o número de linhas (L) é resultado da relação matemática 2N
, de modo que N será
o número de bits de entrada, ou seja, sempre um valor numérico inteiro e maior que zero. Logo
abaixo da legenda da coluna, inserimos as combinações binárias com zeros e uns. E a coluna com
legenda S? Esta também receberá valores binários, de acordo com o funcionamento da(s) saída(s)
de cada projeto.
Então ficamos assim:
Portanto, o número de linhas corresponderá às combinações possíveis entre os zeros e uns, seja
para um bit ou dois bits. Vamos subir um nível. Podemos ter duas saídas na tabela-verdade? Com
certeza. Vejamos o exemplo a seguir.
Concluímos, então, que o número de saídas irá depender da solicitação da lógica encontrada em
cada projeto. Perfeito. Mas devemos ficar atentos, a partir deste momento, com a organização da
legenda em nossa tabela-verdade. Você se lembra dos conceitos sobre bit mais significativo (MSB)
e menos significativo (LSB)? Pois muito bem, esta consideração deve ser adotada em nossa tabela.
Logo, ela ficará assim:
A B S1
S2
0 0
0 1
1 0
1 1
Tabela-verdade com duas entradas (A) e (B) e duas saídas (S1
) e (S2
).
L = 2N
, como N=1, L = 21
= 2 linhas; e
L = 2N
, como N=2, L = 22
= 4 linhas.
28. 28
B A S1
S2
0 0
0 1
1 0
1 1
Tabela-verdade considerando a entrada B como MSB.
Mas essa mudança não irá interferir no resultado, dirão alguns. A resposta depende de cada caso.
Se nosso trabalho se encerrar com a tabela, o circuito combinacional resultante poderá não fun-
cionar, mas se migrarmos as informações da tabela para um mapa de Karnaugh, não haverá prob-
lemas. Nesta etapa, a falta deste critério irá alterar a indexação das células, objeto de estudo do
próximo desafio. Vamos subir mais um nível? E uma tabela com três entradas e saídas? Isso não
existe, dirão novamente alguns! Existe sim, basta desenhar.
C B A S1
S2
S3
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
Tabela-verdade com três entradas e saídas.
29. 29
Pronto. Todas as combinações possíveis para as entradas foram preenchidas. Agora, falta preencher
as saídas. Para demonstrar o preenchimento de todas as condições de saída, acompanhe o exemplo
de um projeto, a seguir.
Exemplo: Preenchendo uma tabela-verdade
Para demonstrar o uso de uma tabela-verdade em um projeto com CPLD, vamos resgatar o exem-
plo da unidade anterior, sobre o projeto de um dispositivo de segurança para controlar o acendi-
mento das luzes de um veículo.
Na unidade anterior, identificamos três variáveis de entrada e três variáveis de saída para o projeto
de exemplo:
Agora, vamos montar a tabela-verdade para o mesmo projeto. De acordo com essas informações,
nossa tabela-verdade será de três bits, ou seja, terá três colunas e oito linhas, que são o resultado de
23
. Para facilitar, vamos atribuir siglas para as entradas e para as saídas, do seguinte modo:
VARIÁVEIS DE SAÍDA:
1. Lanterna 2. Farol 3. Farol de milha
VARIÁVEIS DE ENTRADA:
1. Posição 1 da chave rotativa 2. Posição 2 da chave rotativa 3. Chave do farol de milha.
Posição 1 da chave rotativa: P1
Posição 2 da chave rotativa: P2
Chave do farol de milha: CFM
Se quiser relembrar os detalhes do projeto de exemplo, você pode baixar o documento
com a descrição do projeto acessando seu ambiente virtual de aprendizagem.
Item 04. Tabela-verdade
30. 30
Lanterna: LA
Farol: FA
Farol de milha: FM
Portanto, utilizando os postulados previamente estabelecidos, temos a tabela-verdade exibida
abaixo. A montagem do resultado das saídas é norteado por algumas orientações. Passe o mouse
pelas linhas da tabela para conhecê-las.
Note que CFM é a variável de entrada mais significativa e P1 a menos significativa nas colunas
de entrada. Está condição irá nortear a montagem dos mapas de Karnaugh, que estudaremos na
próxima unidade.
ENTRADAS SAÍDAS
CFM P2 P1 FM FA LA
0 0 0 0 0 0
0 0 1 0 0 1
0 1 0 0 1 1
0 1 1 0 0 0
1 0 0 0 0 0
1 0 1 1 0 1
1 1 0 1 1 1
1 1 1 0 0 0
31. DESAFIO 2
AAgora que você já instalou a suíte de ferramentas da Altera, demos
mais um passo em nosso projeto com um CPLD. Portanto, chegou o
momento de retomar o desafio 2.
Retorne à página principal do ambiente virtual de aprendizagem
e participe do desafio 2. Lembre-se de que a elaboração da tarefa
proposta deverá ser realizada em grupo. Você terá à disposição, um
ambiente de grupo, para debater com os colegas e um espaço destina-
do para a entrega da tarefa.
Bom trabalho!
RECAPITULANDO
Neste desafio você estudou:
• Algumas dicas sobre como escolher a melhor suíte de ferramentas
para o seu projeto;
• O processo de instalação e configuração da suíte de
aplicativos Altera; e
• Como montar uma tabela-verdade com N bits e saídas múltiplas.
Você deverá participar da seguinte atividade:
• Desafio 2 – atividade em grupo: Montar a tabela-verdade a partir dos postulados e das
variáveis de entradas e saídas estabelecidas no desafio 1.
33. 33
APRESENTAÇÃO
Neste desafio, você estudará os detalhes necessários para iniciar a elaboração de um programa para
dispositivos CPLD (Complex Programmable Logic Devices) utilizando a suíte de ferramentas Quar-
tus II da Altera. No final deste desafio você terá subsídios para:
• Fazer a programação de um CPLD utilizando linguagem de descrição (VHDL);
• Simplificar funções lógicas booleanas de múltiplas saídas por meio de um mapa de Karnaugh.
Preparado? Então siga em frente!
34. 34
INICIANDO A PROGRAMAÇÃO DE UM CPLD
No desafio anterior, definimos a tabela-verdade para o projeto do jogo eletrônico “Papel, pedra ou
tesoura” e instalamos a suíte de ferramentas que será utilizada no projeto do CPLD. Como você
sabe, a programação de um CPLD pode ser feita de duas maneiras: por linguagem de descrição
ou por diagrama esquemático. Neste desafio, vamos estudar a programação por linguagem de de-
scrição. Estudaremos a programação por diagrama esquemático no próximo desafio.
Independente da linguagem utilizada, é necessário definir, primeiro, a função lógica booleana que
representa o circuito digital do projeto. Embora os CPLD possuam grandes quantidades de portas
lógicas, simplificar as funções booleanas provenientes das tabelas-verdade continua sendo uma
etapa importante nos projetos de eletrônica digital, não apenas pela redução da quantidade de
portas lógicas, mas para diminuir os atrasos na propagação dos sinais elétricos e para facilitar a
análise dos circuitos. Por esse motivo, o mapa de Karnaugh continua sendo amplamente utilizado.
Devido à complexidade dos circuitos mais modernos, é provável que você se depare com mapas de
Karnaugh com maior número de variáveis. Portanto, antes de abordar a programação de um CPLD,
vamos resgatar alguns conceitos de eletrônica digital, comparando a obtenção de funções lógicas
por álgebra de Boole e teorema De Morgan com as técnicas de mapa de Karnaugh. Acompanhe!
35. 35
ÁLGEBRA DE BOOLE E TEOREMA DE MORGAN
Para demonstrar o uso das técnicas de álgebra de Boole e do teorema De Morgan, vamos resgatar
o exemplo da unidade anterior, sobre o projeto de um dispositivo de segurança para controlar o
acendimento das luzes de um veículo. Utilizaremos a tabela-verdade desse projeto como exemplo.
Acompanhe.
Observando a coluna FM, as saídas com valor binário 1 (um) seriam representadas por:
FM = CFM.P2’.P1 + CFM.P2.P1’
Para montar essa expressão, fazemos a leitura de cada célula da coluna FM e realizamos a operação
AND entre as variáveis de entrada correspondentes, assinalando com lógica invertida as variáveis
que apresentam valor zero. Vamos repetir esta técnica para cada nova célula com valor binário 1
(um) e fazer a união dessas funções parciais com o operador OR. Agora, podemos começar a sim-
plificar:
CFM.P2’.P1 + CFM.P2.P1’ = CFM.(P2’.P1 + P2.P1’) – por distributiva inversa;
Trocando na função original, teremos: FM = CFM.(P2’.P1 + P2.P1’)
Se quiser relembrar os detalhes do projeto de exemplo, você pode baixar
o documento com a descrição do projeto em seu ambiente virtual de
aprendizagem.
Item 03 - Álgebra de Boole e Teorema de Morgan
36. 36
Agora, observamos que (P2’.P1 + P2.P1’) é uma operação OU EXCLUSIVO entre P1 e P2, teremos:
FM = (P1+P2).(CFM’+CFM)
Como (CFM’+CFM) = 1, por identidade A’+A = 1;
Então FM = CFM.(P2 P1) – por identidade A.1 = A.
Prossiga para ver outras técnicas utilizadas em eletrônica digital.
37. 37
OUTRAS TÉCNICAS UTILIZADAS EM ELETRÔNICA DIGITAL
Como você pôde ver, utilizar técnicas de álgebra de Boole e teorema De Morgan pode ser um pro-
cesso demasiadamente trabalhoso. Na verdade, a técnica mais adequada para cada projeto depende
da quantidade de variáveis. A tabela a seguir, indica as principais técnicas e a recomendação para
cada caso:
Portanto, para o caso do nosso desafio do jogo eletrônico “Papel, pedra ou tesoura”, em que temos
6 variáveis, utilizar mapa de Karnaugh é mais vantajoso.
Antes de partir para a elaboração de um mapa com 6 variáveis, siga em frente para resgatar concei-
tos importantes sobre o mapa de Karnaugh.
38. 38
MAPA DE KARNAUGH
O mapa de Karnaugh foi desenvolvido por volta dos anos 1950 por Edward Veitch e aperfeiçoado
por Maurice Karnaugh, com base nos diagramas de Venn.
Esta técnica reduz a chance de erros humanos no momento de extrair as funções, já que as técni-
cas de simplificação por álgebra booleana costumam gerar funções muito complexas e de difícil
visualização.
Para resgatar os conceitos do mapa de Karnaugh vamos utilizar a técnica tradicional de variação de
um único bit para compor as legendas do mapa, característica do código Gray. O exemplo abaixo, é
de um mapa para o projeto das luzes automotivas. Como você sabe, é necessário montar um mapa
para cada variável de saída. O mapa do exemplo se refere à variável de saída LA:
A técnica de Veitch-Karnaugh diz que devemos associar, nesse caso, valores binários unitários
adjacentes em grupos de 2, 4, 8 e assim por diante. Da aplicação, teremos:
LA = P2’.P1 + P2.P1’ = P1 P2
No exemplo anterior, optou-se por montar a tabela com uma variável na legenda vertical (o bit
mais significativo - MSB) e duas variáveis na legenda horizontal. Outra característica importante
é a escolha da informação, na legenda. Em nosso estudo, optou-se por preencher as legendas com
0 (zero) e 1 (um). Esta escolha permite visualizar, mais facilmente, a mudança do valor binário.
Como já sabemos, entre uma legenda e outra adjacente, apenas uma variável pode mudar, caso
contrário, não conseguiríamos associar células adjacentes e compartilhar os valores binários.
Importante!
A ordem estabelecida na tabela verdade deve permanecer na montagem das
legendas dos mapas de Karnaugh.
39. 39
Agora, vejamos como seria outro modo:
Da aplicação da técnica, obtemos:
FM = P1’.P2 + P1.P2’= P1+P2 (XOR entre P1 e P2)
Observe que, desde que mantida a regra do MSB, o resultado é o mesmo, apesar do compar-
tilhamento lateral (em verde), que muitas vezes dificulta a visualização ou passa despercebido.
Podemos, ainda, escrever as variáveis algébricas nas legendas em qualquer formato escolhido an-
teriormente. Como ficaria? Acompanhe:
Exemplo de modelo com tabela 1x2
Exemplo de modelo com tabela 2x1
40. 40
Alguns dirão que, no segundo caso, ficou mais fácil escrever a função, mas ficou mais difícil ler
qual variável se manteve constante e qual mudou. Concluímos, então, que o processo depende da
forma como você se sente mais confortável.
Prossiga para verificar o mapa de Karnaugh com 6 variáveis.
41. 41
MAPA DE KARNAUGH COM 6 VARIÁVEIS
Retomando o projeto do jogo eletrônico “Papel, pedra ou tesoura”, de acordo com o desafio ante-
rior, sabemos que temos seis variáveis de entrada e quatro variáveis de saída. Para começar, pre-
cisamos definir o formato gráfico da planilha, que pode ser 1x5, 2x4, 3x3, 4x2 ou 5x1. Para facilitar
a visualização, vamos utilizar o formato 3x3. De acordo com o sistema Gray, a legenda dos valores
binários deverá ser montada do seguinte modo:
000; 001; 011; 010; 110; 111; 101; 100
Observe, em vermelho, que apenas um bit muda a cada conjunto de três bits. Note que man-
tivemos o bit MSB sempre em 0 (zero) e esgotamos as combinações, baseadas no código Gray,
repetindo a mesma sistemática até o final da sequência. É importante lembrar que o sistema Gray
permite outras possibilidades:
000; 001; 011; 010; 110; 100; 101; 111
000; 010; 110; 100; 101; 111; 011; 001
000; 100; 101; 111; 110; 010; 011; 001
000; 100; 110; 111; 101; 001; 011; 010
Embora todas as possibilidades indicadas estejam corretas, elas influenciam no modo de preen-
chimento do mapa. Para facilitar, vamos escolher a primeira opção:
000; 001; 011; 010; 110; 111; 101; 100
Adotando essa sequência, nosso mapa mantém agrupamentos de 32 posições. Na tabela abaixo,
temos dois agrupamentos: um destacado em cinza e outro em laranja. Os números indicados no
mapa representam a respectiva linha na tabela-verdade.
Já sabemos que a função do mapa de Karnaugh é fornecer expressões simplificadas, praticamente
sem recorrer à álgebra de Boole. Também relembramos como extrair a função com base no proje-
to das luzes automotivas. Mas você já pensou em como fazer os agrupamentos em um mapa com
42. 42
tantas posições? Acompanhe alguns exemplos, com agrupamentos diferentes:
Exemplo 1: Sem agrupamento (BIT Unitário)
Sabemos que cada célula expressa uma operação AND entre as variáveis das legendas. Assim, para
o exemplo, teremos: Y = F’.E’.D.C’.B.A.
Exemplo 2: Metade da tabela com nível lógico 1
Observe a legenda horizontal, onde temos as variáveis C, B e A. Note que apenas a variável C não
se alterou, logo, ela entrará em nossa função: Y = C.
Agora, fazendo a leitura da legenda vertical, onde temos as variáveis F, E e D, observamos que
todas mudaram de estado. Dessa forma, como não há variável para incluir na função, repetimos a
expressão anterior, Y = C.
43. 43
Exemplo 3: Agrupamento de 16 posições
Observe a legenda horizontal, onde encontramos as variáveis C, B e A. Note que todas mudaram
de estado, assim, não há variável para incluir na função.
Agora, fazendo a leitura da legenda vertical, onde encontramos as variáveis F, E e D, observamos
que as variáveis E e D permanecem constantes, portanto, a função será: Y = E.D’.
Exemplo 4: Agrupamento de 4 posições, nos cantos da tabela
Neste exemplo, o processo é similar às tabelas com poucas variáveis.
Observando a legenda horizontal, onde encontramos as variáveis C, B e A, verificamos que apenas
a variável C mudou de estado. Assim, nossa função será, provisoriamente, Y= B’.A’.
44. 44
Fazendo a leitura da legenda vertical, onde encontramos as variáveis F, E e D, verificamos que
apenas a variável F mudou de estado. Sendo assim, agregamos a função anterior às variáveis que
não mudaram de estado, e teremos Y= B’.A’.E’.D’ = (B + A + E + D)’. Portanto, usando o teorema de
De Morgan, economizamos uma porta lógica.
Exemplo 5: Compartilhamento
Observando a legenda horizontal, onde encontramos as variáveis C, B e A, verificamos que, no
agrupamento em vermelho apenas a variável B mudou de estado.
Assim, nossa função será, provisoriamente, Y= C’.A.
Agora, fazendo a leitura da legenda vertical, onde encontramos as variáveis F, E e D, note que no
agrupamento vermelho apenas a variável F não mudou de estado.
Portanto, a função final será: Y = F’.C’.A + F’.C’.B = F’.C’.(B + A), aplicando-se a distributiva inversa.
Com isso, usamos portas lógicas AND de duas entradas, que são mais comuns, no lugar da AND
de três entradas.
45. 45
PROGRAMAÇÃO DE CPLD POR LINGUAGEM DE DESCRIÇÃO
Depois de definir a função lógica, podemos iniciar a elaboração do programa para um CPLD.
A linguagem de descrição utilizada na suíte da Altera é a VHDL (VHSIC Hardware Description
Language, em inglês). A linguagem VHDL foi criada por uma necessidade do Departamento de
Defesa dos Estados Unidos, que precisava desenvolver sistemas lógicos mais rápidos a partir dos
anos 1970.
Em 1987, a linguagem VHDL e a Verilog foram padronizadas pelo IEEE (Institute of Electrical and
Electronic Engineers) e como são de domínio público, tiveram ampla aceitação e diversas revisões,
sendo que a IEEE1076-2008 é a mais recente.
A linguagem VHDL possui algumas vantagens, se comparada com a linguagem de diagramação.
As principais são:
• Maior clareza nos objetivos do projeto;
• Documentação mais simples, visto que podemos inserir comentários na programação;
• Processo de compilação mais fácil, já que a linguagem pode ser utilizada em qualquer outra
ferramenta para este fim; e
• Maior facilidade na depuração manual em sistemas sequenciais, com as ferramentas de au-
tomação da suíte.
46. 46
VHDL E OUTRAS LINGUAGENS (ASSEMBLY, C, JAVA)
A escrita em VHDL traduz as funções e as conexões do hardware sem estar restrita aos entrelaça-
mentos, regras e sub-rotinas da programação tradicional ou atrelada a bibliotecas e memórias de
instruções.
O conceito “executar um programa” não se aplica na linguagem VHDL, porque organizamos, uma
única vez a estrutura interna, e já podemos utilizá-la.
47. 47
PROGRAMANDO EM VHDL
Ponto similar a outras linguagens de programação, a VHDL também apresenta comandos, sendo
os mais importantes: ENTITY e ARCHITECTURE. Esses comandos são suficientes para solucio-
nar o nosso desafio.
O comando ENTITY, basicamente, descreve ou identifica as entradas e saídas.
Exemplo: imagine que vamos programar um CPLD para um determinado circuito com quatro en-
tradas e uma saída. Suponha que, depois de analisar o projeto, obtivemos a função Y = A.B + C.D.
Com base nessa função, vamos iniciar um novo programa denominado PROJ1. Veja como fica a
programação:
Observações:
• Como em outras linguagens de programação, deve-se fechar a declaração de variáveis, função
do comando END, seguido do nome do projeto e da pontuação adequada (;);
• Toda a declaração das entradas e saídas aparecem após o comando PORT, entre parênteses e
separadas por pontuação (;);
• A declaração BIT sinaliza que todas as variáveis de entrada e de saída serão binárias, assumin-
do 0 (zero) ou 1 (um); e
• O VHDL não distingue letras maiúsculas e minúsculas, ou seja, você pode utilizar caixa alta ou
caixa baixa à sua escolha.
O comando ARCHITECTURE irá mostrar as relações entre as variáveis de entrada e de saída.
Continuando com nosso exemplo, manteremos o nome do projeto PROJ1. Assim, teremos:
48. 48
Observações:
• Assim como no comando ENTITY, é necessário fechar a declaração de relação com o comando
END a (note que abrimos com ARCHITECTURE a);
• Há necessidade do símbolo relacional entre entrada e saída (<=); e
• Separe as funções com parênteses, conforme sua lógica, evitando erros de compilação.
Agora, retornando ao ambiente de programação, teremos:
49. 49
TUTORIAL: PROGRAMANDO EM VHDL NO AMBIENTE QUARTUS II
Preparamos um tutorial, passo a passo, para ajudá-lo a criar o seu primeiro programa em VHDL
no ambiente Quartus II. Acompanhe o procedimento:
1. Abrindo o programa.
Identifique o ícone do programa no seu desktop. Dê um duplo clique sobre ele e ob-
serve a animação do ponteiro do mouse. Haverá uma pesquisa por atualização. Ignore a
recomendação.
Nota: Dependendo do computador e da quantidade de aplicativos abertos, pode demorar
um pouco o aparecimento da tela de abertura. Recomenda-se utilizar o programa assim que
ligar o computador. Aguarde a tela de abertura.
2. Criando um novo projeto.
Na tela de abertura, clique no botão Start
Designing e, depois, clique no botão Create a
New Project.
Na tela de instruções seguinte, clique em Next.
50. 50
Na tela que será aberta, crie uma pasta e um
nome para o projeto e clique em Next;
Depois, clique no botão Sim para confirmar a
criação da pasta.
Na tela seguinte (New Project Wizard Add
Files), clique em Next;
Agora, você deve selecionar os parâmetros do
CPLD e, neste caso, eles devem estar de acordo
com o kit que utilizaremos em nosso encontro
presencial. Portanto, siga os parâmetros
indicados nesta tela e, depois, clique em Next.
51. 51
Clique em Next novamente.
A tela New Projetc Wizerd: Summary
apresenta um resumo das opções selecionadas
para a criação do projeto. Para encerrar, clique
em Finish.
Aguarde a pesquisa por atualização e ignore
o ícone Download New Software Release, à
direita. Não há garantia de que a atualização
vá funcionar na sua máquina.
52. 52
Selecione, na barra de ferramentas, a opção
File→New, clique em VHDL file e, depois, no
botão OK.
3. Escrevendo o programa.
Após surgir uma pasta Vhdl1.vhd, você terá
uma tela em branco. Escreva o programa
sugerido como exemplo, respeitando a
organização e o alinhamento. Você pode dar
um comando Save As com o nome proj1
e escrever ou, escrever primeiro e dar um
comando Save ao final; dessa forma, o nome
da pasta muda de Vhdl.vhd para proj1.vhd.
Clique em Processing→Start Compilation.
Em até 10s, surgirá uma tela com a
informação Full Compilation was successful.
Um alerta (warning) é normal, desde que não
seja Critical ou Error. Nestas situações, deve-
se rever a escrita do programa. Clique em OK
se estiver tudo em ordem.
Volte à barra de ferramentas e clique em
Assignments→Pins;
53. 53
Aparecerá uma tela com a pinagem
do CPLD. Observe que há uma
planilha na parte inferior com
as entradas e saídas que você
estabeleceu no programa. Agora,
precisamos indicar quais pinos de
I/O adotaremos (representados por
círculos brancos, sem notação).
Para facilitar a montagem e o
entendimento podemos adotar, como entradas, os pinos de 18 a 21 e, como saída, o pino 6.
Dê um duplo clique em cada célula, da coluna Location, referente às variáveis do exemplo.
Será aberta uma lista de pinos. Você só deve escolher aqueles do tipo PIN_XX I/O. Como
a, b, c e d são entradas, teremos a→PIN_18, b→PIN_19, c→PIN_20 e d→PIN_21. A saída
será y→PIN_6;
Observe que os pinos selecionados
ficaram na cor marrom. Caso tenha
errado, basta clicar com o botão direito
do mouse sobre a célula da planilha,
selecionar Edit→Cut e o campo ficará
limpo.
As funções de tempo não necessárias,
podem ser apagadas clicando-se com
o botão direito do mouse sobre um
nome não usado na planilha, depois
selecione Edit→Delete, e a marcação
verde irá desaparecer.
Ao concluir a nomeação de acordo
com o desenho, basta voltar na barra
de ferramentas e clicar em File→Close;
54. 54
Retornamos à tela principal com nosso
programa. Agora, vamos fazer a compilação
novamente,clicandonabarradeferramentas,e
depois em Processing→Start Compilation. Em
até 10s, surgirá uma tela com Full Compilation
was successful. Clique em OK.
Um alerta (warning) é normal desde que não
seja Critical ou Error. Nestas situações deve-
se rever a escrita do programa. Observe no
exemplo a seguir, que a mensagem de erro já
fornece uma dica de onde está o problema.
No exemplo, faltam parênteses nas operações
AND.
Acabamosdefinalizarnossoprojetoedevemos
gravá-lo no kit EXSTO, alvo de nosso desafio
presencial.
55. DESAFIO 3
Agora que você conhece o ambiente de programação VHDL e resgatou
informações importantes sobre a simplificação de funções lógicas,
chegou o momento de retomar o desafio 3.
Retorne à página principal do ambiente virtual de aprendizagem e
participe do desafio 3. Lembre-se de que a elaboração da tarefa proposta
deverá ser realizada em grupo. Você terá à disposição um ambiente
de grupo, para debater com os colegas e um espaço destinado para a
entrega da tarefa.
Bom trabalho!
RECAPITULANDO
Neste desafio você estudou:
• Algumas funções VHDL para programar um CPLD;
• O processo de escrita de um programa em VHDL utilizando a suíte
de aplicativos Quartus II, da Altera; e
• Como montar um mapa de Karnaugh com 6 variáveis e extrair as
respectivas funções.
Você deverá participar da seguinte atividade:
• Desafio 3 – atividade em grupo: Montar os mapas de Karnaugh e extrair as funções a partir
dos resultados obtidos no desafio 2.
57. 57
APRESENTAÇÃO
Neste desafio, você estudará a forma de diagramação e os detalhes necessários para montar um
projeto para dispositivos CPLD utilizando a suíte de aplicativos Quartus II, da Altera. Vai estudar,
também, algumas maneiras para fazer o acionamento de dispositivos de potência com CPLD. No
final deste desafio você terá subsídios para:
• Fazer a programação de um CPLP utilizando um diagrama esquemático;
• Selecionar interfaces de potência com IGBT ou tiristores para projetos com CPLD.
Preparado? Então siga em frente!
58. 58
PROGRAMAÇÃO DE CPLD POR DIAGRAMA ESQUEMÁTICO
Na unidade anterior, vimos a importância de simplificar as funções lógicas de um projeto antes
de iniciar a programação de um CPLD, e estudamos como fazer a programação por linguagem de
descrição. Agora, vamos abordar a programação por diagrama esquemático.
Como você sabe, a escolha da linguagem de programação não afeta no funcionamento do CPLD,
mas na maneira como ele será programado. Nesse sentido, a programação por diagrama esque-
mático pode ser mais vantajosa em alguns casos, especialmente quando estamos mais habituados a
analisar circuitos digitais por meio de esquemas elétricos, do mesmo modo que fazíamos na época
das portas lógicas TTL ou CMOS.
Por outro lado, em circuitos mais complexos, com grande quantidade de portas lógicas e de in-
terligações, a montagem e a visualização do esquema elétrico podem dificultar a análise, tanto no
momento de desenhar quanto na procura de eventuais falhas. Por tudo isso é muito difícil apontar
qual é a melhor maneira para se programar um CPLD. Ambas possuem vantagens e desvantagens,
que dependem do ponto de vista de quem está programando.
Para que você possa formar a sua opinião, nada melhor do que experimentar as duas maneiras.
Portanto, depois de experimentar a programação por linguagem de descrição, chegou o momento
de praticar a programação por diagrama esquemático. Acompanhe!
59. 59
INSTALAÇÃO DA FERRAMENTA PARA PROJETOS COM CPLD
O modo de desenhar um diagrama esquemático nas suítes de programação para CPLD é muito se-
melhante ao que fazemos nos softwares de simulação de circuitos eletrônicos, como por exemplo, o
Proteus e o Multisim. Significa dizer que a programação é fácil de fazer, pois os softwares utilizam
o padrão CAD para fazer os desenhos, que é bastante intuitivo.
Para facilitar o entendimento, preparamos um exemplo passo a passo, onde faremos a programação
de um CPLD por diagrama esquemático. Note que os procedimentos 1 e 2 são idênticos aos que
fizemos na programação por linguagem de descrição. Acompanhe!
1. Abrindo o programa.
Identifique inicialmente, no seu desktop, o ícone do programa Quartus II. Dê um duplo
clique sobre ele e observe a animação do ponteiro do mouse. Haverá uma pesquisa por atu-
alização. Ignore a recomendação.
Nota: Dependendo do computador e da quantidade de aplicativos abertos, pode demorar
um pouco o aparecimento da tela de abertura. Recomenda-se utilizar o programa assim que
ligar o computador. Aguarde a tela de abertura.
2. Criando um novo projeto.
Na tela de abertura, clique no botão Start
Designing, e depois, no botão Create a New
Project.
Na tela de instruções seguinte, clique em Next.
60. 60
Depois, clique no botão Sim para confirmar a
criação da pasta.
Na tela seguinte (New Project Wizard Add
Files), clique em Next.
Selecione os parâmetros do CPLD de acordo
com o kit que utilizaremos em nosso encontro
presencial, conforme indicado nesta tela.
Depois, clique em Next.
Na tela seguinte, clique em Next.
61. 61
3. Escrevendo o programa.
A tela New Projetc Wizard: Summary indica
um resumo das opções selecionadas para a
criação do projeto. Para encerrar, clique em
Finish.
Aguarde a pesquisa por atualização e ignore
o icone Download New Software Release, à
direita. Não há garantia de que a atualização
vá funcionar na sua máquina.
Selecione, na barra de ferramentas, a opção
File→New, clique em Block Diagram/Schematic
File e, depois, no botão OK. Agora você tem
uma tela estilo CAD para inserir entradas,
saídas e blocos lógicos.
Neste exemplo, vamos desenhar o circuito do
projeto das luzes veiculares, que utilizamos
como exemplo ao longo de todo o nosso curso.
Nesse projeto utilizaremos portas AND, NOT
e XOR, mas saiba que o procedimento para
incluir outras portas é basicamente o mesmo.
Para inserir uma porta lógica qualquer, clique
no ícone da porta AND, conforme indicado
abaixo.
62. 62
Na tela Symbol, abra a raiz (clique no
símbolo+), depois, clique em primitives, em
logic e você terá acesso aos tipos de portas
lógicas.
Selecione a porta AND de duas entradas
(and2), selecione repeat insert mode e clique
em OK.
Clique sobre a área de trabalho duas vezes e,
na sequência, pressione a tecla ESC para sair
do modo de inserção. Clique novamente sobre
a tela para tirar a seleção.
Como você pode ver, as principais portas
lógicas estão disponíveis. Note que lógicas com
muitas entradas não será dificuldade aqui. O
software disponibiliza portas AND e OR com
até doze entradas. Você também poderá contar
com portas XOR e XNOR. Perceba quantas
possibilidades um CPLD permite!
Agora, vamos incluir uma porta NOT.
Selecione a porta NOT, sem repeat insert
mode e clique em OK.
63. 63
Repita a operação para XOR sem repeat insert
mode.
Após a inserção das portas lógicas, precisamos
inserir os conectores para as variáveis de
entrada e de saída.
Na mesma raiz primitives, você deve selecionar
pin, depois input e, na sequência, repeat insert
mode, e colocar três figuras sobre a área de
trabalho. Saia do modo de inserção e seleção
pressionando a tecla ESC e clique sobre a área
de trabalho.
Repita o processo para o conector output.
Agora, vamos fazer as interligações. Posicione
o cursor sobre uma ponta solta como, por
exemplo, input, e arraste até uma entrada da
porta XOR. O software realiza apenas uma
curva de 90°, assim, você para em um ponto
intermediário qualquer e continua desta nova
ponta solta, até completar a conexão.
64. 64
Você também pode desenhar a partir de uma
entrada qualquer até uma linha já desenhada,
poisosoftwarefazaconexãoautomaticamente.
Termine o processo de interligação conforme
o seu projeto, a partir das funções lógicas
extraídas dos mapas de Karnaugh.
Agora, precisamos dar nomes aos pinos de
entrada (input) e saída (output). Dê um duplo
clique em pin_name e uma caixa de texto se
abrirá. Escreva o nome da variável conforme
o seu projeto e clique em OK. Neste exemplo,
utilizaremos os nomes das variáveis do
projeto das luzes veiculares. Repita o mesmo
procedimento para todos os pin_name. Clique
no ícone Save, na barra de ferramentas. Uma
caixa Save As será aberta, bastando clicar em
Salvar. Observe que o nome do arquivo muda
de block1 para senai1.
Nesse momento estamos prontos para iniciar
o processo de preparação para gravação do
CPLD, no kit EXSTO.
Clique em Processing na barra de ferramentas
e selecione Start Compilation.
65. 65
Em até 10s surgirá uma tela com a mensagem
Full Compilation was successful. Um alerta
(warning) é normal desde que não seja Critical
ou Error. Nesta situação, deve-se rever a
montagem do diagrama. Se tudo estiver em
ordem, clique em OK.
Agora, precisamos abrir mais um módulo do
projeto, mas não faremos nenhuma interação
com ele. Volte à barra de ferramentas. Clique
em File→New, selecione VHDL file e clique
OK.
Você terá uma tela em branco e perceberá a
abertura de uma pasta Vhdl1.vhd. Clique no
ícone Save da barra de ferramentas.
Volte à barradeferramentasAssignments→Pins.
Será aberta uma tela com a pinagem do CPLD.
Observe que há uma planilha na parte inferior
com os labels que você estabeleceu e inseriu
no diagrama. Agora, precisamos indicar quais
pinos de I/O vamos utilizar.
No desenho do CPLD, eles estão representados
por círculos brancos. Para facilitar o
entendimento podemos adotar, como
entradas, os pinos de 18 a 28 e, como saídas,
os pinos de 06 a 40.
Em cada linha da planilha, na parte inferior da
tela, dê um duplo clique na célula da coluna
Location. Será aberta uma lista de opções
com pinos do CPLD. Você só deve escolher
aqueles do tipo PIN_XX I/O. Como CFM é
uma entrada, monte na sequência da tabela
verdade, do MSB até o LSB, ou seja, CFM, P2,
P12
e teremos:
66. 66
Observe que os pinos selecionados ficaram na
cor marrom. Caso tenha errado, basta clicar
com o botão direito do mouse sobre a célula
da planilha, selecionar Edit→Cut e o campo
ficará limpo.
Repita o processo para as saídas utilizando os
mesmos critérios anteriores, ou seja, se FM,
FA e LA3
são as saídas, associamos assim:
Com a nomeação de acordo com o diagrama
esquemático, basta voltar na barra de
ferramentas e selecionar File→Close.
Ao retornar à tela principal, observamos que as
entradasesaídasagoratêmapinagemassociada
aos labels. Para fazer a compilação novamente,
clique em Processing →Start Compilation,
barra de ferramentas. Em até 10s surgirá
uma tela com a mensagem Full Compilation
was successful. Um alerta (warning) é normal
desde que não seja Critical ou Error. Nesta
situação deve-se rever a denominação dos
pinos. Estando tudo em ordem, clique em OK.
Não se esqueça de salvar o projeto, clicando
em Save na barra de ferramentas.
67. 67
Com isso, o projeto está pronto para ser gravado no CPLD.
Saiba mais...
Para conhecer uma proposta de solução completa para o
projeto de exemplo das luzes automotivas, acesse seu ambiente
virtual de aprendizagem:
Item 03 - Instalação da Ferramenta para projetos com CPLD
2
CFM PIN_18; P2 PIN_19; P1 PIN_20;
3
FM PIN_6; FA PIN_5; LA PIN_4;
68. 68
CIRCUITOS DE CONTROLE PARA IGBT UTILIZANDO CPLD
Certamente você já conhece o transistor BIPOLAR e o MOSFET (MOS FIELD EFFECT
TRANSISTOR) para acionamento de sistemas de potência, via meia ponte, ponte H ou como
chave. Como sabemos, eles possuem limitações em função da temperatura, potência controlada
direta e frequência de trabalho. Mesmo com limitações, devido ao custo mais baixo, essas opções
continuam sendo bastante utilizadas em alguns projetos.
Para resolver parte dos problemas de acionamento de transistor bipolar em potência e reduzir o
custo de um MOSFET de potência com resistência direta na ordem de miliohms, podemos utilizar
o IGBT (INSULATED GATE BIPOLAR TRANSISTOR), que une as características de entrada do
transistor MOSFET com a de saída do transistor BIPOLAR.
Controle PWM com IGBT canal N
Ponte H com IGBT canal N e P.
69. 69
O IGBT é um dispositivo semicondutor que se caracteriza por apresentar alta impedância de
entrada, via porta (G) e baixa impedância de saída, entre coletor (C)-emissor (E). É mais comum
com canal N, por conta das aplicações com inversores. No exemplo a seguir, temos um IGBT
canal N por enriquecimento da empresa IR (International Rectifier) para aplicações de alta tensão
e corrente.
Criado por Carl Frank Wheatley Jr., o IGBT surgiu por volta dos anos 1980 nos laboratórios da
RCA (Radio Corporation of America). Podemos encontrá-lo em sistemas embarcados, motores
híbridos em carros elétricos, controle em ar condicionado e refrigeração (como em máquinas de
vendas), sistemas de conversão de energia (UPS, Nobreak, Inverters), reatores eletrônicos e no
acionamento do flash em smartphones e câmeras digitais.
Observando as características de tensão e corrente do projeto, seja direta ou reversa, além das
características mecânicas do invólucro, os IGBTS podem substituir, sem muitas preocupações, os
transistores MOSFET.
Já em circuitos com transistores bipolares, deve-se modificar a excitação de base (normalmente
com resistores da ordem de quilohms) e estabelecer o ponto de operação.
Observe, a seguir, uma aplicação do IGBT em reator eletrônico, onde o MOSFET IRF830 (500 V/
4,5 A) foi substituído por um IGBT IRG4BC20UPbF (600 V/ 6,5 A), ambos do fabricante IR e
com invólucro TO-220.
Esquema de um reator eletrônico com IGBT canal N, fator de potência 0,97, para duas
lâmpadas de 40 W em 127 VAC.
70. 70
E, como podemos integrar nosso CPLD com uma interface de potência ao IGBT?
Vejamos, a seguir, a zona útil de aplicação para este dispositivo. Perceba como o IGBT soma
características do BIPOLAR e do MOSFET.
Para algumas aplicações com IGBT, assim como para os demais semicondutores, é fundamental
a isolação entre os sistemas de controle e a parte de potência, evitando que o terra digital seja
contaminado pelo terra analógico, sem falar no diferencial entre a tensão de barramento no coletor
(VBUS) e as demais polarizações. Para resolver essa situação, podemos utilizar transformadores
isoladores,opto-acopladoresouaconjunçãodeambos.Nestescasos,existemnormasinternacionais
a serem seguidas, como IEC60664-1, IEC60664-3, IEC61800-5-1 e EN50124-1. Veja o exemplo a
seguir:
Relação Potência x Frequência para semicondutores de silício (adaptado
de SHEN 2014)
Acionamento de um motor trifásico com IGBT canal N (adaptado do application re-
port SLLA354)
71. 71
Para aplicações em que o momento do acionamento é crucial, usamos gate drives e/ou 3 phase
bridge drivers como IRS2111, IR2133, etc. da IR.
Os sinais de entrada FAULT, CAO, LIN1.2.3 e HIN1.2.3 para cada par de IGBTs, serão gerados
por lógica do seu projeto, a partir do CPLD, em programação VHDL ou diagrama esquemático.
Se houver necessidade, as saídas do CPLD podem ser programadas para coletor aberto.
Aplicação do 3 phase bridge driver IR2130 com IGBT (adaptado do datasheet)
72. 72
CIRCUITOS DE CONTROLE DE TIRISTORES UTILIZANDO CPLD
Sempre que falamos de Tiristores, esta informação nos remete a dispositivos semicondutores
conhecidos, tais como, o SCR (Silicon Controled Rectifier), TRIAC (Triode for Alternating
Current), DIAC (Diode for Alternating Current). Mas também podemos incluir, nesta lista, os
novos dispositivos ACS/ACST (Alternating Current Switch). Estes últimos são TRIACs e possuem
proteção contra sobretensão, o que dispensa o uso do snubber e MOV (Metal Oxide Varistor) e
reduz, assim, o custo do projeto.
E como sabemos qual usar?
Escolhemos entre o TRIAC e o SCR em função do valor da potência de carga a ser controlada,
do tipo de regime CA (corrente alternada) ou CC (corrente contínua) e do tipo de controle que
desejamos usar. Até 40 A em CA, podemos optar pelo TRIAC e, acima disso, recomenda-se o SCR.
Sabemos que um TRIAC pode ser disparado nos quatros quadrantes, mas os fabricantes garantem
a certeza de disparo no primeiro e terceiro quadrantes. Nosso CPLD trabalha com sinal de 0-5 V
e, fica claro que trabalharemos no primeiro quadrante, evitando gastos adicionais e desnecessários
com conversão do sinal de saída. Já se optarmos pelo ACS/ACST, devemos ficar atentos à
informação sobre qual o melhor quadrante, visto que ele não atua em todos.
Simbologia de tiristores (adaptado do folder da ST Microelectronics).
Quadrantes de disparo para TRIAC e ACS/ACST (adaptado do application note AN3168)
FAMÍLIA TIPO
QUADRANTE DE DISPARO
Q1 Q2 Q3 Q4
Triac
Standard Sim Sim Sim Sim
Snubberless and logic level Sim Sim Sim Não
Snubberless high temperature Sim Sim Sim Não
ACS / ACST
ACS Não Sim Sim Não
ACST Sim Sim Sim Não
73. 73
O disparo no primeiro quadrante é de fácil entendimento, mas como se dá esse disparo no terceiro
quadrante? Vejamos a seguir:
Note que no Q1 a corrente IG e tensão VG (entre G e A1) são positivas, enquanto que, no Q2 a
corrente IG é negativa e a tensão VG também.
E, como fazer o acionamento utilizando uma interface não isolada? Vejamos a seguir.
Os valores das variáveis para cálculo de RG estão disponíveis no datasheet do tiristor escolhido.
Valores práticos serão encontrados entre 100 e 560 Ω. Os valores de R1 e R2 são sugeridos para
VDD = 5 V e tiristores com baixa corrente de trigger, por isso, deve-se ter atenção especial ao
valor da corrente IG necessária para disparo do TRIAC. Caso o sinal e/ou VDD sejam de 3,3 V,
recomenda-se calcular o valor ideal olhando o datasheet do transistor de sinal Q1 escolhido, com
atenção ao valor da corrente de base adequada para levar o componente à saturação.
O sinal de I/O port é proveniente do pino escolhido como output na programação de pinos do
CPLD. Mas como podemos resolver o problema da falta de isolação? Usando um opto acoplador
para CA com driver de saída por TRIAC. Observe a figura a seguir:
Exemplo de disparo no Q1, à esquerda, e no Q3, à direita, (adaptado do application
note AN3168 da ST).
Exemplo de disparo não isolado do TRIAC/ACS
(adaptado do application note AN2986 da ST).
74. 74
Exemplo de disparo não isolado do TRIAC/ACS (adaptado
do application note AN2986 da ST).
O exemplo anterior aciona o tiristor com lógica de saída em nível lógico alto (1) e não extrapola o
consumo de corrente máxima de saída (IOUT) ou em nível alto (IOH) do CPLD (25 mA naquele
utilizado no kit EXSTO), ou seja, podemos ligar outros dispositivos na mesma saída de I/O. O
valor de R2 é referência (VDD = 5 V) e deve-se verificar a sugestão de corrente direta do fabricante
(IF = 15 mA para 3010 e 30 mA para 3020 no caso da Fairchild) ou adotar metade do valor de
corrente direta (IF) recomendada no datasheet do fabricante do MOC escolhido, com análise de
circuito em função do valor de tensão VDD e compatível com a corrente de coletor do transistor
Q1.
Pode-se programar o CPLD com lógica em nível baixo (0) reduzindo custo, com a retirada do
transistor bipolar, mas com atenção ao valor da corrente de saída em nível baixo (IOL) do CPLD.
O MOC3010 é usado para sistemas em 127 V. Para 220 V, deve-se utilizar o MOC3020. A sugestão
para R1 e o cálculo de RG permanecem inalterados. Valores de C1 acima de 10 nF causam
arredondamento na borda de subida, na transição do sinal de nível baixo para alto. E a situação
piora, quanto maior for o valor da frequência de trabalho (se houver esta grandeza envolvida no
projeto).
75. DESAFIO 4
Agora que você já sabe como criar um desenho esquemático utilizando
o software Quartus II da ALTERA e estudou alguns conceitos de
acionamento em potência com CPLD, chegou o momento de retomar
o desafio 4.
Retorne à página principal do ambiente virtual de aprendizagem e
participedodesafio4.Lembre-sedequeaelaboraçãodatarefaproposta
deverá ser realizada em grupo. Você terá à disposição, um ambiente
de grupo, para debater com os colegas e um espaço destinado para a
entrega da tarefa.
Qualquer dúvida, entre em contato com o seu tutor.
Bom trabalho!
RECAPITULANDO
Neste desafio você estudou:
• Como montar um diagrama esquemático no software Quartus II;
• Como integrar um CPLD com interface de potência com IGBT; e
• Como integrar um CPLD com interface de potência com Tiristores.
Você deverá participar da seguinte atividade:
• Desafio 4 – atividade em grupo: Montar o diagrama esquemático a partir das funções extraí-
das dos mapas de Karnaugh, criadas no desafio 3.