Você está na página 1de 43

unesp

UNIVERSIDADE ESTADUAL PAULISTA


Campus de Guaratinguet

Colgio Tcnico Industrial de Guaratinguet Professor Carlos Augusto Patrcio Amorim

Dispositivos Lgicos
Programveis

Autores
Caio Augusto de Oliveira
Jssica Azevedo de Aguiar
Mateus Galvo Said Fontanini

Reviso
Prof. Marcelo Wendling

Sumrio

1. Introduo ...................................................................................................................................... 4
2. Lgica Programvel .................................................................................................................... 5
2.1. Tecnologia FPGA ............................................................................................................................... 10
2.2. Blocos Lgicos de FPGA ................................................................................................................. 11
2.3. Granularidade .................................................................................................................................... 12
2.4. Arquitetura geral de roteamento ............................................................................................... 12
2.5. Tcnicas de Configurao ............................................................................................................. 13
2.6. Famlia de FPGAs disponveis no mercado ............................................................................ 15
3. Desenvolvimento de projetos utilizando FPGA .............................................................. 17
3.1. Especificao e entrada de projetos.......................................................................................... 17
3.2. Sntese Lgica e mapeamento da tecnologia ......................................................................... 18
3.3. Posicionamento e Roteamento ................................................................................................... 19
3.4. Verificao e Teste ........................................................................................................................... 19
3.5. Programao do FPGA.................................................................................................................... 20
4. Ambiente de Software EDA .................................................................................................... 21
4.1. Software QuartusII ........................................................................................................................ 22
4.2. Criando Projeto com QuartusII ................................................................................................ 22
4.3. Desenvolvendo um projeto usando diagrama esquemtico ........................................... 23
4.4. Simulao de Projetos .................................................................................................................... 27
4.5. Definio dos pinos de I/O ........................................................................................................... 33
4.6. Gravao no FPGA ............................................................................................................................ 34
5. Dicas .............................................................................................................................................. 35
5.1. Biblioteca Primitiva ......................................................................................................................... 35
Flip Flop e Latches ........................................................................................................................... 36
Buffers .................................................................................................................................................. 37
Terminais E/S ................................................................................................................................... 38
5.2. Biblioteca de Megafunes ........................................................................................................... 38
Componentes Aritmticos ............................................................................................................ 38
Portas ................................................................................................................................................... 39

Dispositivos de Lgica Programvel

Componentes de E/S ...................................................................................................................... 40


Compilador de Armazenamento ................................................................................................ 41
5.3. Famlia 74XX ...................................................................................................................................... 41
5.4. Criando smbolos.............................................................................................................................. 42
6. Bibliografia ................................................................................................................................. 43

Dispositivos de Lgica Programvel

1. Introduo
A crescente evoluo do mercado de circuitos eletrnicos visvel. Um exemplo
para esta afirmao o mercado mundial, influenciado drasticamente pela produo de
componentes eletrnicos nos pases chamados de tigres asiticos e no vale do silcio.
Pode-se citar alguns pontos na histria da eletrnica que foram marcantes para sua
evoluo: a inveno da vlvula, a criao dos transistores, a evoluo para circuitos
integrados e a construo de microprocessadores. Porm, muitos autores citam que a
verdadeira virada no mercado eletrnico do sculo XX foi a criao dos circuitos de
aplicao especfica e o aperfeioamento do hardware reconfigurvel dos Dispositivos
Lgicos Reprogramveis (Programmable Logic Device - PLD).
Para muitos projetos de hardware, o custo da prototipao impedia a construo
de sistemas confiveis, fazendo com que mquinas fossem desenvolvidas e distribudas
com alguns defeitos, sendo estes descobertos de forma drstica por usurios, resultando
em um aumento no custo de utilizao. A promessa da computao reconfigurvel um
hardware virtual, podendo emular vrios sistemas complexos de forma transparente
ao usurio.
O potencial de crescimento de atividades relacionadas ao PLD num futuro
prximo muito grande. A automatizao dos processos industriais cada vez mais
intensa, e ao longo dos prximos anos, simplificar e acelerar ainda mais todo o ciclo de
desenvolvimento de projetos, em velocidade impressionante.

Dispositivos de Lgica Programvel

2. Lgica Programvel
Os circuitos integrados digitais implementados em pastilha de silcio podem ser
classificados como circuitos digitais padro ou circuitos digitais de aplicaes especficas
ASICs (Aplication Specific Integrated Circuits).
Os circuitos padres so constitudos por portas lgicas (AND,OR,NOT e Flip
Flops) e necessitam de vrios componentes externos para a realizao de uma funo
especfica. Os circuitos integrados ASICs so aqueles que precisam de um processo de
fabricao especial, que requer mscaras especficas para cada projeto. Outra
caracterstica dos circuitos integrados ASICs o tempo de desenvolvimento longo e os
custos extremamente altos. Geralmente no necessitam de muitos componentes
externos para a realizao de uma funo especfica, pois sua alta densidade os torna
aptos para a implementao de vrios tipos de aplicao. Em ambos os casos, os
circuitos

integrados

digitais

possuem

suas

funes

internas

predefinidas,

implementadas na sua construo no processo de fabricao.


O desenvolvimento de projeto de circuitos digitais tem evoludo rapidamente nas
ltimas dcadas. A utilizao da ferramenta de software denominada EDA (Eletronic
Design Automation) e o aperfeioamento dos PLDs (Programmable Logic Devices) tm
simplificado e acelerado todo o ciclo de projeto.
Os PLD so circuitos integrados que podem ser configurados pelo prprio
usurio. No apresentam uma funo lgica definida, at que sejam configurados.
Possuem, como principal caracterstica, a capacidade de programao das funes
lgicas pelo usurio, eliminando-a do processo de fabricao do circuito integrado, o que
facilita, assim, as provveis mudanas de projeto. Em comparao com outras
tecnologias de circuitos integrados digitais, os dispositivos de lgica programvel
apresentam um ciclo de projeto menor e custos reduzidos.
Os controladores lgicos programveis disponveis no mercado brasileiro
utilizam na sua arquitetura microcontroladores e circuitos integrados de aplicaes
especficas ASICs.
Esses microcontroladores, para executar seus programas de controle, necesitam
realizar ciclos de busca e execuo de instruo. O ciclo de busca da instruo no est
diretamente relacionado com o processo no qual o controlador lgico programvel est

Dispositivos de Lgica Programvel

inserido, mas a condio determinante para o microcontrolador executar o programa


que est carregado na memria.
Essa necessidade de busca da instruo demanda tempo do microcomputador,
que poderia estar sendo utilizado na execuo de tarefas pertinentes ao processo.
Os microcontroladores so componentes extremamente flexveis devido a sua
programabilidade. Essa programao permite sua aplicao em diversos tipos de
controles industriais.
A execuo de um algoritmo de controle depende de seu software, armazenado
em memria, que ser executado numa arquitetura baseada em microprocessador, com
ciclo de buscas e execuo das instrues.
Numa arquitetura baseada em dispositivo lgico programvel, por exemplo,
FPGA (Field Programmable Gate Array),um algoritmo de controle implementado por
hardware, sem a necessidade de ciclos de busca e execuo de instrues.
O problema bsico a ser resolvido a implementao de uma arquitetura
eficiente, baseada em lgica programvel estruturada, para execuo desse algoritmo de
controle, em vez de compil-lo para sua execuo em microprocessador.
A tarefa que faz a traduo de um algoritmo para uma arquitetura de
hardware eficiente denominada sntese. A sntese cria uma arquitetura com clulas
lgicas que executam as operaes do algoritmo, sem a necessidade de se gerar e
decodificar instrues.
Uma das grandes vantagens da utilizao de dispositivos lgicos programveis
nessa nova arquitetura proposta a possibilidade de se definir vrios blocos de
hardware, que operam em paralelo, aumentando muito a capacidade computacional do
sistema.
Os dispositivos lgicos programveis (PLDs) foram os dispositivos eletrnicos
que possibilitaram a implementao de Lgica Programvel Estruturada. Os PLDs
podem ser classificados em funo de portas lgicas que comportam, como descrito a
seguir:
(1) SPLDs (Simple Programmable Logic Devices): So dispositivos simples e de baixa
capacidade, que tipicamente contm menos de 600 portas lgicas, fabricados com
tecnologia CMOS.

Dispositivos de Lgica Programvel

(2) HCPLDs (High Complex Programmable Logic Devices): So dispositivos de alta


capacidade, que tipicamente contm mais de 600 portas lgicas; os mais modernos
podem atingir cerca de 250.000 portas e englobam os dispositivos CPLDs (Complex
Programmable Logic Devices) e FPGAs (Field Programmable Gate Arrays), todos
fabricados com tecnologia CMOS.

SPLDs

Os PLAs (Programmables Logic Arrays) foram os primeiros Dispositivos Lgicos


Programveis Simples (SPLDS) criados especificamente para a implementao de
circuitos lgicos. Introduzidos pela empresa Philips no incio de 1970, esses dispositivos
consistem em dois nveis de portas lgicas: um plano de portas AND seguido por um
plano de portas OR, ambos programveis, como mostra a figura 1.
Um PLA estruturado de forma que cada sada do plano AND pode corresponder
a qualquer produto das entradas. Da mesma forma, cada sada do plano OR pode ser
configurada para produzir a soma lgica de quaisquer sadas do plano AND.

Figura 1 Estrutura simplificado de um PLA.

Dispositivos de Lgica Programvel

Em virtude da estrutura montada, os PLA so adequados para as implementaes


de funes lgicas na forma de produtos de soma, e eles se apresentam muito versteis,
pois tanto os termos AND como os termos OR podem possuir muitas entradas.
Entretanto, essa tecnologia tambm apresenta problemas como alto custo de
fabricao e baixo desempenho em termos de velocidade. Essas desvantagens existem
devido aos dois nveis de lgica configurvel. Os planos lgicos programveis so difceis
de serem fabricados e introduzem atrasos significativos de propagao dos sinais
eltricos.
A tecnologia PAL ( Programmable Array Logic ) foi ento desenvolvida para
super deficincias apresentadas pela tecnologia PLA. Os PALs apresentam um nico
plano AND configurvel, figura 2, custo menor e melhor desempenho.

Figura 2 Estrutura simplificado de um PAL.

Dispositivos de Lgica Programvel

HCPLDs

Quanto maior o nmero de portas de um PLD, maior ser a sua complexidade. Os


Dispositivos Lgicos de Alta Complexidade (HCPLD) dividem-se basicamente em dois
grupos: CPLD e FPGA.
A diferena bsica entre os dois dispositivos est na estrutura interna de suas
clulas lgicas e na metodologia da interligao dessas clulas. De forma geral,
internamente, os HCPLDs podem ser vistos como dispositivos que integram na sua
estrutura centenas de macroclulas programveis, que so interligadas por conexes
tambm programveis.
Os Dispositivos Lgicos Programveis Complexos (CPLDs) foram introduzidos no
mercado internacional pela empresa Altera Corp. em 1983, inicialmente como
Dispositivos Lgicos Programveis Apagveis (EPLDs) e, posteriormente, como CPLDs.
Os CPLDs so dispositivos programveis e reprogramveis pelo usurio, com alto
desempenho, baixo custo por funo e alta capacidade de integrao. Um CPLD pode ser
aplicado, por exemplo, como uma mquina de estado ou decodificador de sinais,
substituindo centenas de circuitos discretos que implementariam a mesma funo.
Os CPLDs implementam capacidade lgica de at 50 dispositivos PLDs tpicos.
Suas principais vantagens em relao aos circuitos discretos ASICs tradicionais so:

(a) Programabilidade e Reprogramabilidade: Permite que funes lgicas possam


ser alteradas, simplificando o desenvolvimento de prottipos.

(b) Tecnologia CMOS: Menor Consumo de energia eltrica.

(c) Integrao em larga escala: Reduo de tamanho da placa de circuito impresso,


pois possibilita a eliminao de diversos componentes discretos.

(d) Simplificao e reduo do tempo de desenvolvimento: Simplifica e reduz o


tempo de desenvolvimento da placa de circuito impresso, pois permite que o

Dispositivos de Lgica Programvel

10

projetista defina os sinais eltricos conforme desejado: entradas ou sadas podem


ocupar o mesmo terminal do dispositivo.

(e) Teste e depurao: As linguagens utilizadas na programao do dispositivo


permitem a simulao, teste e depurao rpida do prottipo.

2.1. Tecnologia FPGA


Os dipositivos ASICs, SPLDs e CPLDs, descritos nas sees anteriores, permitem a
implementao de uma grande variedade de circuitos lgicos. Contudo, com exceo dos
CPLDs, aqueles componentes possuem baixa capacidade lgica e so viveis apenas para
aplicaes relativamente pequenas.
At mesmo para os CPLDs, apenas circuitos moderadamente grandes podem ser
acomodados em um nico circuito integrado. Para se implementar circuitos lgicos
maiores, conveniente utilizar-se de outro tipo de dispositivo HCPLD que possua
capacidade lgica maior.
O FPGA um HCPLD que suporta a implementao de circuitos lgicos
relativamente grandes. Consiste em um grande arranjo de clulas lgicas ou blocos
lgicos configurveis contidos em um nico circuito integrado. Cada clula contm
capacidade computacional para implementar funes lgicas e realizar roteamento para
comunicao entre elas. O primeiro FPGA disponvel comercialmente foi desenvolvido
pela empresa Xilinx Inc., em 1983.
Os FPGAs no possuem planos OR ou AND, consistem em um grande arranjo de
clulas configurveis que podem ser utilizadas para a implementao de funes lgicas.
Basicamente constituda por blocos lgicos, blocos de entrada e sada, e chaves de
interconexo. Os blocos lgicos formam uma matriz bidimensional, e as chaves de
interconexo so organizadas como canais de roteamento horizontal e vertical entre as
linhas e colunas de blocos lgicos. Esses canais de roteamento possuem chaves de
interligao programveis que permitem conectar os blocos lgicos de maneira
conveniente, em funo das necessidades de cada projeto. A figura 3 mostra a estrutura
bsica de um FPGA.

Dispositivos de Lgica Programvel

11

Figura 3 Estrutura simplificada de um FPGA.

2.2. Blocos Lgicos de FPGA


No interior de cada bloco lgico de FPGA existem vrios modos possveis para
implementao de funes lgicas. O mais utilizado pelos fabricantes de FPGA como, por
exemplo, a empresa Altera Corp., o bloco de memria LUT ( Look Up Table).
Esse tipo de bloco lgico contm clulas de armazenamento que so utilizadas
para implementar pequenas funes lgicas. Cada clula capaz de armazenar um nico
valor lgico, zero (0) ou um (1).
Nos FPGAs disponveis comercialmente como, por exemplo, da empresa Altera
Corp., os blocos lgicos LUTs possuem geralmente quatro ou cinco entradas, o que
permite enderear 16 ou 32 clulas de armazenamento.
Quando um circuito lgico sintetizado em um FPGA, os blocos lgicos so
programados para realizar as funes necessrias, e os canais de roteamento so
estruturados de forma a realizar a interconexo necessria entre os blocos lgicos.
As clulas de armazenamento dos LUTs de um FPGA so volteis, o que implica
perda do contedo armazenado, no caso de falta de suprimento de energia eltrica.
Dessa forma, o FPGA dever se programado toda vez que for energizado. Geralmente
utiliza-se

uma

pequena

memria

Dispositivos de Lgica Programvel

FLASH

ou EEPROM

(Electrically Erasable

12

Programmable Read Only Memory), cuja funo carregar automaticamente as clulas


de armazenamento, toda vez que o FPGA for energizado.

2.3. Granularidade
Granularidade uma caracterstica dos FPGAs relacionada com o gro. O gro a
menor unidade configurvel que compe um FPGA. A fim de classificar os FPGAs quanto
ao bloco lgico, foram criadas algumas categorias.

(a) Gro Grande: Os FPGAs dessa categoria podem possuir como gro unidades lgicas
aritmticas, pequenos microprocessadores e memrias.

(b) Gro Mdio: Os FPGAs de gro mdio frequentemente contm dois ou mais LUTs e
dois ou mais flip-flops. A maioria das arquiteturas de FPGAs implementam a lgica
em LUTs de quatro entradas.

(c) Gro Pequeno: Os FPGAs de gro pequeno contm um grande nmero de blocos
lgicos simples. Os blocos lgicos normalmente contm uma funo lgica de duas
entradas ou multiplexadores 4x1 e um flip-flop.

2.4. Arquitetura geral de roteamento


A arquitetura de roteamento de um FPGA a forma pela qual os seus
barramentos e as chaves de comutao so posicionadas para permitir a interconexo
entre as clulas lgicas.
Essa arquitetura deve permitir que se obtenha um roteamento completo e, ao
mesmo tempo, alta densidade de portas lgicas. Para melhorar a compreenso dessa
arquitetura necessria a definio de alguns conceitos bsicos, sendo que parte deles
exemplificada na figura 4.

Dispositivos de Lgica Programvel

13

Figura 4 Arquitetura bsica de roteamento de um FPGA.

(a) Pinos: Entrada e Sada de blocos lgicos.


(b) Conexo: Ligao eltrica de um par de pinos
(c) Rede: Conjunto de pinos que esto conectados.
(d) Bloco de Comutao: Utilizado para conectar os segmentos da trilha.
(e) Segmentos da Trilha: Segmento no interrompido por chaves programveis.
(f) Canal de Roteamento: Grupo de 2 ou mais 3 trilhas paralelas.
(g) Bloco de Conexo: Permite a conectividade das entradas e sadas de um bloco lgico
com os segmentos de trilhas nos canais.

2.5. Tcnicas de Configurao


As chaves programveis de roteamento apresentam algumas propriedades, tais
como tamanho, resistncia, capacitncia e tecnologia de fabricao, que afetam
principalmente a velocidade e o tempo de propagao dos sinais e definem
caractersticas como volatilidade e capacidade de reprogramao.
Na escolha de um dispositivo reconfigurvel, esses fatores devem ser avaliados.
Basicamente existem trs tipos de tecnologia de programao das chaves de
roteamento.

Dispositivos de Lgica Programvel

14

(a) SRAM (Static Random Access Memory): Nessa tecnologia, a chave de roteamento ou
comutador um transistor de passagem ou um multiplexador controlado por uma
memria esttica de acesso randmico SRAM. A figura 5 ilustra essa tecnologia de
programao, na qual uma clula SRAM utilizada para controlar a porta (gate) do
transistor de passagem. Devido a volatilidade dessas memrias, os FPGAs que se
utilizam dessa tecnologia precisam de uma memria externa tipo FLASH ou
EEPROM. Essa tecnologia ocupa muito espao no circuito integrado, porm
rapidamente reprogramvel.

Figura 5 Utilizao da tecnologia SRAM para controle de transistor de passagem.

(b) Antifuse: Essa tecnologia baseia-se num dispositivo de dois terminais, que no estado
no programado apresenta uma alta impedncia (circuito aberto). Aplicando-se a
uma tenso, por exemplo, entre 11 e 20 Vdc, o dispositivo forma um caminho de baixa
impedncia entre seus terminais.

(c) Gate Flutuante: A tecnologia Gate flutuante baseia-se em transistores MOS (Metal
Oxide Semicondutor), especialmente construdos com dois Gates flutuantes
semelhantes ao usados nas memrias EPROM (Erasable Programmable Read Only
Memory) e EEPROM (Electrical EPROM). A maior vantagem dessa tecnologia sua
capacidade de programao e a reteno dos dados. Alm disso, da mesma forma que

Dispositivos de Lgica Programvel

15

uma memria EEPROM, os dados podem ser programados com o circuito integrado
instalado na placa, caracterstica denominada ISP (In System Programmability).

2.6. Famlia de FPGAs disponveis no mercado


A famlia de FPGAs, fabricada pela empresa Altera Corp., consiste em uma
hierarquia de trs nveis muito similar encontrada nos CPLDs. Contudo, o nvel mais
baixo da hierarquia consiste em um conjunto de clulas lgicas como nos SPLDs (Single
Programmable Logic Devices).
A famlia de FPGAs da empresa Altera baseada em tecnologia SRAM e possui
uma LUT de quatro entradas como seu elemento lgico bsico LE (Logic Element). Sua
capacidade lgica est na faixa de 576 a 68.416 elementos lgicos (LEs). A arquitetura
interna bsica da famlia Altera, figura 6, contm trs tipos de clulas lgica: Elemento
lgico(LE), bloco de matriz lgica (LAB) e bloco de memria embutido (EAB).

Figura 6 Arquitetura interna bsica dos FPGA Altera.

Os blocos de memria embutidos EABs (Embedded Array Block), constituem-se


no elemento principal da arquitetura bsica. Cada bloco EAB pode conter, por exemplo,
2.048 bits programveis que podem ser configurados como RAM, FIFO (First-In FirstOut), etc. Pode ser configurado para atuar como um bloco de memria RAM com
Dispositivos de Lgica Programvel

16

tamanhos variveis entre: 256x8, 512x4, 1k x2 ou 2kx1. Alm disso, um bloco EAB pode
ser configurado para implementar um circuito lgico complexo, como um multiplexador,
microcontrolador, mquina de estado ou uma funo DSP (Digital Signal Processing).
Na arquitetura interna bsica apresentada, o bloco lgico chamado Elemento
Lgico LE, pode conter uma LUT de quatro entradas, um flip-flop e circuitos de carry de
finalidade especial para circuitos aritmticos. O LE tambm inclui circuito em cascata
que permitem a implementao eficiente de funes AND de vrias entradas. Os LE so
agrupados em dez, formando um conjunto chamado Bloco de Matriz Lgica, LAB (Logic
Array Block).
Cada LAB contm interconexo local, e cada trilha local pode conectar qualquer
LE a outro LE na mesma LAB. A interconexo local tambm pode ser ligada
interconexo global, chamada FastTrack. Cada trilha FastTrack entende-se pela altura ou
largura completa do dispositivo. Isso facilita a configurao automtica feita pelo
software EDA.
Todas as FastTrack horizontais so idnticas, portanto os atrasos de
interconexes so mais previsveis que em outros FPGAs que empregram segmentos
menores, pois h menos chaves comutadoras programveis em caminhos longos.
Os pinos de entrada e sada (E/S) so alimentados individualmente por um
elemento chamado IOE (Input Output Element) localizado no final de uma linha ou
coluna de interconexo global. Os elementos IOE contm buffers bidirecionados e flipflops que podem ser configurados como registradores de entrada ou sada.

Dispositivos de Lgica Programvel

17

3. Desenvolvimento de projetos utilizando FPGA


O processo de projeto com FPGA envolve vrias etapas que geralmente so
automatizadas. Atualmente, a utilizao de ferramentas de software EDA tem
simplificado e acelerado todo o ciclo de projeto. Um sistema tpico de desenvolvimento
de projetos, com ferramentas de softwares EDA, consiste em vrios programas
interconectados. Esse processo envolve as seguintes etapas:

(1) Especificao e entrada do projeto


(2) Sntese e mapeamento da tecnologia
(3) Posicionamento e roteamento
(4) Verificao e teste
(5) Programao do FPGA

3.1. Especificao e entrada de projetos


A entrada de projetos pode ser realizada de duas formas: um diagrama lgico,
desenvolvido a partir de um editor grfico, no qual possvel utilizar portas lgicas e
macroinstrues, ou por meio de um editor de texto que utilize uma linguagem de
descrio de hardware HDL (Hardware Description Language).
A especificao do projeto apresentada em termos abstratos ou em mtodos
formais, seguida pela anlise da viabilidade da implementao por meio de simulao de
alto nvel. Nessa fase importante que a linguagem utilizada seja o mais prximo
possvel da linguagem humana.
As ferramentas de captura de diagramas lgicos ou editores grficos permitem
que o projetista especifique o circuito como um diagrama lgico em 2D (duas
dimenses), conectando componentes lgicos com recursos de roteamento. O software
utilizado para a edio de projetos utilizando FPGAs da Altera Corp. e o QuartusII.
Os componentes lgicos esto contidos em uma biblioteca de macroinstrues
fornecidas pelo software ou que podem ser definidas pelo prprio usurio. Geralmente,
as bibliotecas contm portas lgicas, pinos de entrada e sada, buffers, multiplexadores,

Dispositivos de Lgica Programvel

18

flip-flops, latches, decodificadores, registradores, contadores, comparadores, memrias,


funes aritmticas e outras funes especiais.
medida que os projetos ficam mais complexos, as descries em nvel de
esquemas lgicos tornam-se inviveis, fazendo-se necessrio descrever esses projetos
em modos mais abstratos. As linguagens de descrio de hardware, tambm conhecidas
como HDLs, foram desenvolvidas para auxiliar os projetistas a documentar projetos e
simular grandes sistemas, principalmente em projetos de dispositivos ASICs.
Existem diversas linguagens de descrio de hardware disponveis, sendo as mais
comumente utilizadas: ABEL (Advanced Boolean Equation Language), VHDL (Very High
Speed Integrated Circuit Hardware Description Language) e Verilog.
A linguagem ABEL foi a primeira linguagem HDL a ser desenvolvida. Criada pela
empresa americana Data I/O Corp. para programar dispositivos SPLD, uma linguagem
mais simples que a lingaguem VHDL
J as linguagens VHDL e Verilog so capazes de programar sistemas de maior
complexidade como, por exemplo, os dispositivos FPGA.
As linguagens de descrio de hardware HDL so utilizadas para descrever o
comportamento de um sistema digital de variadas formas, inclusive equaes lgicas,
tabelas verdade e diagramas de formas de onda, que utilizam declarao de constante,
estados, configuraes, bibliotecas, mdulos, etc.
Nessa apostila ser trabalhado apenas o desenvolvimento de projetos a partir de
um editor grfico.

3.2. Sntese Lgica e mapeamento da tecnologia


A sntese lgica consiste em duas fases distintas: otimizao lgica para
minimizar equaes booleanas e mapeamento da tecnologia para converter equaes
em clulas da biblioteca da tecnologia-alvo.
Como a lgica inicial no est otimizada, algoritmos de sntese so utilizados para
simplificar as equaes booleanas geradas. A sntese permite, na prtica, a reduo de
rea a ser ocupada no circuito integrado, como tambm reduz o atraso da propagao
(delay) dos sinais envolvidos.

Dispositivos de Lgica Programvel

19

A fase de mapeamento da tecnologia seleciona um conjunto de portas lgicas de


uma dada biblioteca para implementar as representaes abstratas, enquanto melhora a
rea, o atraso ou a combinao de ambos, levando em consideraes as restries
arquiteturais da tecnologia-alvo, nesse caso, os FPGAs.

3.3. Posicionamento e Roteamento


Aps a minimizao lgica e o mapeamento da tecnologia, o projeto consiste em
uma representao textual de componentes lgicos a serem designados componentes
fsicos de uma arquitetura FPGA.
O posicionamento e roteamento so dois processos mutuamente dependentes. O
posicionamento a atribuio de componentes particulares do circuito integrado aos
componentes lgicos de projeto. O roteamento a atribuio de trilhas e elementos
programveis, consumindo os recursos disponveis de interconexo para a comunicao
entre os componentes.
O software de roteamento aloca os recursos de roteamento do FPGA para
interconectar as clulas posicionadas. As ferramentas de roteamento devem assegurar
que 100% das conexes requeridas sejam realizadas e devem procurar maximizar a
velocidade das conexes crticas, porm essa meta nem sempre alcanada.

3.4. Verificao e Teste


A simulao o tipo mais comum de verificao utilizada em projetos com FPGAs.
Ela realizada geralmente em fase inicial, para verificao funcional, podendo ser
realizada em nvel comportamental ou em nvel de portas lgicas.
A simulao tambm realizada antes da configurao do FPGA, para verificar
restries e temporizao. Vrios simuladores para a tecnologia FPGA esto disponveis
comercialmente como, por exemplo, os softwares EDA:

(a) Viewsim: desenvolvido pela empresa Mentor Graphics.


(b) Synopsys: desenvolvido pela empresa Synopsys.

Dispositivos de Lgica Programvel

20

(c) Quartus: desenvolvido pela empresa Altera Corp.

3.5. Programao do FPGA


Aps a verificao e teste a implementao do projeto completada, mas ainda
resta um passo final que a programao do FPGA. Nesse ponto gerado um arquivo de
configurao, que deve ser carregado no dispositivo-alvo.
Um FPGA pode ser programado de diversos modos. Um dos modos
recomendados a interface JTAG (por um cabo de impressora padro), pois o arquivo de
configurao pode ser transferido, pela porta de comunicao paralela do computador
para o dispositivo FPGA.

Dispositivos de Lgica Programvel

21

4. Ambiente de Software EDA


Software EDA uma categoria de ferramentas de software para projetar sistemas
eletrnicos, tais como placas de circuitos impressos e circuitos integrados. Nessa
apostila o software utilizado ser o QuartusII Web Edition verso 9.2.
Por intermdio desse ambiente possvel fazer simulao, testes e programao
de dispositivos FPGAs. As fases de implementao de um projeto de circuito digital
podem ser divididas em entradas de dados, compilao, simulao e programao.
A entrada de dados do projeto consiste em fornecer ao programa a especificao
do projeto. Essa entrada pode ser realizada das seguintes formas:

(1) Editor Grfico: Um diagrama lgico, desenvolvido a partir de elementos primitivos,


portas lgicas bsicas e outros componentes disponveis em bibliotecas, que podem
ser inseridos e interligados para criar o projeto.

(2) Editor de Texto: Uma descrio abstrata do circuito lgico, utilizando se comandos
de uma linguagem estruturada de descrio de hardware como AHDL, VHDL ou
Verilog, que descrevem o comportamento ou o funcionamento do circuito lgico.

(3) Editor de Smbolo Grfico: Nesse caso, os elementos do diagrama lgico so


smbolos grficos criados pelo usurio ou macroinstrues grficas existentes nas
bibliotecas do software, que implementam alguma funo lgica.

(4) Editor de forma de onda: Nesse caso, os dados de entrada so formas de onda que
implementam alguma funo desejada. A partir das formas de onda de entrada e
sada o programa implementa a funo lgica.

Dispositivos de Lgica Programvel

22

4.1. Software QuartusII


Ao longo do curso ser utilizado o software QuartusII da Altera Corp., para se
implementar e testar projetos de sistemas digitais, a serem desenvolvidos em aulas
prticas.

Este software um ambiente de desenvolvimento integrado, ou EDA

(Electronic Design Automation), que permite a realizao de todas as etapas envolvidas


no projeto de um sistema digital, desde a descrio de sua lgica, por meio de
diagramas esquemticos

ou linguagens de descrio,

simulao do circuito

desenvolvido, at a gravao do projeto em um dispositivo lgico programvel como


um CPLD ou FPGA. O QuartusII trabalha com um sistema orientado a projetos, ou
seja, o software associa diversos arquivos um projeto. Este sistema possibilita a
utilizao de componentes bsicos em diversos projetos e simplifica a elaborao de
projetos mais complexos uma vez que as funcionalidades de um grande sistema podem
ser divididas em diversos sistemas mais simples e por fim, agrupados.

4.2. Criando Projeto com QuartusII


A forma mais simples de se criar um projeto no QuartusII por meio do
aplicativo Project Wizard. Para executar tal aplicativo, clique no menu File > New
Project Wizard.
Com isto a tela de apresentao do aplicativo Project Wizard ir se abrir. Clique
em Next. Nesta tela pode-se escolher o diretrio do projeto, o nome do projeto e o
nome da entidade principal do projeto. recomendvel que para cada projeto, uma
pasta diferenciada seja criada, para que no haja conflito entre os diversos arquivos
gerados para cada projeto.
Uma vez preenchidos os campos corretamente, clique em Next novamente. Nesta
tela possvel incluir arquivos ao projeto. Atravs do boto ... ao lado do campo File
Name possvel definir o diretrio do arquivo a ser includo. Uma vez selecionado o
arquivo, clique em Add para adicion-lo ao projeto. Quando todos os projetos
desejados forem includos, clique em Next. Com isso a prxima tela aparecer.

OBS: Caso esteja criando um projeto que no se utiliza de componentes


Dispositivos de Lgica Programvel
Figura 7 Tela de Introduo ao Project Wizard

23

previamente criados apenas clique em Next.

Nesta tela deve-se escolher o componente a ser utilizado para implementar o


projeto, ou seja, em qual dispositivo lgico programvel o sistema ser gravado. A
famlia do dispositivo pode ser definida no campo Device Family. Na seo Show in
Avaliable device list, na lista Available devices so apresentados todos os
componentes da famlia escolhida que atendam aos requisitos definidos pelo filtro de
componentes. Selecione o dispositivo adequado e clique em Next para prosseguir para a
prxima tela.

OBS: Observe no kit de desenvolvimento qual o dispositivo utilizado.

Nesta janela possvel utilizar outras ferramentas de desenvolvimento em


conjunto com o QuartusII, para isto a ferramenta a ser utilizada deve estar instalada
no computador, uma vez que estas ferramentas no acompanham o pacote de instalao
do QuartusII. No curso de sistemas digitais no ser utilizada nenhuma ferramenta
adicional. Assim sendo, clique em Next.
Esta tela apresenta um resumo do projeto a ser criado. Verifique se todos os
dados conferem com os desejados, caso haja algo incorreto, retorne tela adequada,
por meio do boto back e corrija o erro. Caso no haja erros, clique em Finish. Ao
final do processo, a janela de projeto (Project Navigator) conter o projeto criado.

4.3. Desenvolvendo um projeto usando diagrama esquemtico


O uso de diagramas esquemticos uma das maneiras de se definir a lgica de um
sistema digital dentro do ambiente de projeto do QuartusII. Neste modo de projeto os
componentes bsicos de eletrnica digital como portas lgicas, flip-flops e
multiplexadores, so representados por meio de blocos, os quais podem ser arranjados
e associados de forma a se definir uma lgica de funcionamento.

Para se iniciar o desenvolvimento de um projeto que utilize o modo de diagrama


Dispositivos de Lgica Programvel

24

esquemtico, necessrio, primeiramente, adicionar ao projeto principal um arquivo


que comporte este tipo de entrada. Assim sendo, para adicionar um arquivo de
diagrama esquemtico ao projeto clique em File -> New..., e uma nova janela aparecer.
Nessa janela possvel escolher o tipo de arquivo que se deseja criar. Selecione a
opo Block Diagram / Schematic File e clique em Ok. Um novo arquivo de diagrama
esquemtico aparecer na janela principal do QuartusII. Para salvar este arquivo
clique em File > Save as... e d um nome ao arquivo, salvando-o na pasta do projeto
principal.

OBS: Para arquivos de descrio de hardware, deve-se sempre lembrar que o nome
da entidade principal do arquivo deve ser igual ao nome do arquivo.

A tela de edio de diagramas esquemticos aberta, onde devemos destacar as


funes de alguns botes:

(1) Atracar/Desatracar Janela: Permite separar a janela de diagrama esquemtico


da janela principal do QuartusII.
(2) Ferramenta de Seleo: Permite selecionar elementos inseridos no arquivo.
(3) Ferramenta de texto: Permite inserir texto no arquivo, com fins explicativos ou
de documentao.
(4) Ferramenta de smbolo: Permite inserir smbolos (componentes). Seu uso ser
detalhado posteriormente.
(5) Ferramenta de conexo: Realiza a ligao entre terminais dos componentes.
(6) Ferramenta de barramento: Realiza a ligao de barramentos (conjunto de
sinais associados).

Atravs da ferramenta de smbolos possvel inserir componentes no arquivo.


Clique nela, ou d dois cliques na tela em branco, para inserir um componente. Feito
isso uma janela com a biblioteca de componentes do software ser aberta.
Nessa janela, no campo Libraries, possvel explorar as diversas colees de
componentes do QuartusII. As mais relevantes so listadas abaixo:

Dispositivos de Lgica Programvel

25

(1) Megafunctions: Tratam-se de funes complexas j prontas, necessitando muitas


vezes de configurao. Sero melhor explicadas futuramente.

(2) Others: esta coleo possui modelos de componentes equivalentes aos da famlia de
dispositivos 74xx. Dessa forma possvel realizar qualquer combinao lgica feita
com componentes discretos dentro do CPLD.

(3) Primitives: componentes bsicos:


(a) Buffers: diversos tipos de buffers, incluindo os de sada tri-state.
(b) Logic: elementos lgicos bsicos (AND, OR, NOR, XOR, etc.) com diversos
nmeros de entradas.
(c) Others: elementos diversos.
(d) Pin: diversos tipos de pinos suportados pelo componente: entrada, sada ou
bidirecional.
(e) Storage: elementos de armazenamento de dados, ou seja, flip-flops de
diversos tipos.

Selecione o componente desejado e clique OK.

EXEMPLO: Para exemplificar o modo de desenvolvimento via diagrama esquemtico,


ser realizada a montagem de um circuito combinacional capaz de executar a operao:

Primeiramente insira as portas lgicas necessrias e os pinos de entrada e


sada, como mostrado na figura 8. Para renomear os pinos de entrada e sada, d duplo
clique sobre o pino a ser alterado.

Dispositivos de Lgica Programvel

26

Figura 8 Criao da funo

Faa as conexes entre os pinos de entrada e sada e as portas lgicas utilizando a


ferramenta de conexo. Para isso clique nos terminais a serem conectados, observando
se de fato foi feito o contado.
Compile o projeto. Para isso clique em Processing > Start Compilation, ou
clique no item de compilao na janela principal. Esse processo bastante complexo e
pode demorar vrios segundos para ser concludo. Na janela de status possvel
acompanhar a evoluo de cada uma das etapas de compilao.
Ao final do processo de compilao aparecer, abaixo da tela do diagrama
esquemtico, uma janela de mensagens com o resultado da compilao. Caso algum erro
ocorra no processo de compilao, ele ser mostrado nesta janela, com indicaes do
motivo da ocorrncia e, no caso de linguagens de descrio de hardware, da parte do
cdigo onde se encontra o erro. Corrija sempre os ocasionais erros e repita o processo de
compilao.

Dispositivos de Lgica Programvel

27

4.4. Simulao de Projetos


O QuartusII permite realizar simulaes do projeto desenvolvido. Essas
simulaes podem ser de dois tipos: funcional e de tempo.
A simulao

funcional permite verificar

se a funcionalidade do projeto

desenvolvido est correta, em outras palavras, a simulao funcional verifica a lgica


implementada. Por sua vez, a simulao de tempo verifica as caractersticas de
temporizao, que so inerentes construo interna do CPLD ou FPGA usado e da
forma como o projeto construdo dentro do chip, ou seja, simulao temporal verifica o
funcionamento real do projeto, considerando os atrasos das portas envolvidas.
O primeiro passo para simular criar um arquivo de entradas de simulao. Esse
arquivo vai aplicar s entradas de sinais as condies possveis de funcionamento de
forma que a sada possa ser ento avaliada. Para criar um arquivo de simulao,
clique em File > New..., escolha o tipo de arquivo Vector Waveform File, e a janela da
figura 9 ser aberta:

Figura 9 Janela do arquivo de simulao.

Nessa tela possvel a incluir os sinais de entrada e desenhar as formas de


ondas dos sinais aplicados. Para inserir sinais v a Edit > Insert > Insert Node or
Bus... ou d um clique duplo na tela em branco logo abaixo da coluna Name.

Dispositivos de Lgica Programvel

28

Fazendo isso, a tela da figura 10 ser aberta:

Figura 10 Tela de insero de varivel para simulao.

Nesta tela, clique em Node Finder..., e a tela da figura 11 aparecer:

Figura 11 Utilizando o Node Finder.

Dispositivos de Lgica Programvel

29

No campo Filter possvel escolher a categoria de sinais com os quais se deseja


trabalhar. O campo Look in informa qual projeto ou arquivo ser usado. Por fim
clicando em List sero apresentados todos os sinais do projeto. Para ver todos os pins
disponveis, selecione Pins: all no campo Filter. Para incluir um sinal na simulao,
selecione-o no campo Nodes Found e clique no boto > . O s sinais selecionados
sero transferidos para o campo Selected Nodes. Devem ser selecionados os sinais
de entrada, e os de sada, cujo resultado se deseja analisar. Uma vez que todos os
sinais tenham sido escolhidos, clique em Ok.
Antes de se iniciar a edio dos sinais de entrada, necessrio definir o tempo
total de simulao e o tamanho do grid. Para isso, inicialmente clique em Edit > End
Time..., a seguinte tela da figura 12 ser aberta:

Figura 12 Definindo o tempo total de simulao.

Nesta janela, no campo Time pode-se definir o tempo total, no qual se deseja
analisar o comportamento do sistema projetado. Uma vez definido o tempo total de
simulao, clique em Edit > Grid Size..., e defina o tamanho do grid, ou seja, o
intervalo de tempo que ser demarcado na tela do editor de forma de onda. A
utilizao do grid facilita o trabalho de desenhar as formas de onda desejadas. A tela
do Grid Size mostrada na figura 13.

Dispositivos de Lgica Programvel

30

Figura 13 Definindo o tempo de grid.

OBS: Para facilitar a visualizao de eventos interessante que o tempo total de


simulao e o tamanho do grid sejam da mesma ordem de grandeza.

Uma vez definidos estes itens, pode-se iniciar o processo de desenhar as formas
de onda. Para tal utiliza-se os botes encontrados na parte esquerda da tela de edio
de formas de onda, dos quais alguns so descrito na figura 14:
Escolha Functional no campo Simulation mode, dentro de Assignments >
Settings > + Simulator Settings. Em seguida selecione o arquivo de formas de onda no
campo Simulation Input. Por fim, clique em Ok.
Antes da simulao o projeto precisa ser compilado para a simulao funcional
pelo Processing > Generate Functional Simulation Netlist. Seguinte, para dar incio
agora a simulao, clique em Processing > Start Simulation. Esses dois processos
podem demorar algum tempo.
Ao completar a simulao, uma nova janela semelhante a janela de edio de
forma de onda deve ser apresentada. Caso esta janela no aparea, clique em
Processing > Simulation Report.

Dispositivos de Lgica Programvel

31

Figura 14 Descrio dos botes do editor de forma de onda.

As figuras 15.a e 15.b mostram as telas do editor de formas de onda e do


Simulator Report, respectivamente, aps a edio das formas de onda dos sinais de
entrada e da simulao do projeto proposto pelo exemplo.

Dispositivos de Lgica Programvel

32

(a)

(b)
Figura 15 Telas de simulao do exemplo proposto em (a) antes da simulao e (b) depois da simulao.

Dispositivos de Lgica Programvel

33

4.5. Definio dos pinos de I/O


Depois de criado e simulado, deve-se definir a qual pino fsico do FPGA cada pino do
esquemtico est ligado. Para isso clique em Assignments > Pins. Abrir a janela
da figura 16, que permite definir a ligao entre os pinos fsicos e os pinos do diagrama.

Figura 16 Definio dos pinos do FPGA.

Nessa tela apresentada uma figura da pinagem do FPGA. Na coluna Node Name
esto listados os pinos presentes no projeto. Na coluna Direction est descrita a
direo desse pino. Na coluna Location, pode-se definir a qual pino fsico estar ligado o
pino lgico. Para isso, d um clique duplo em uma clula da coluna Location e escolha
o pino desejado na lista que aparecer. Repita esse processo para todos os pinos.
Para validar a atribuio de pinos repita a compilao e observe se no ocorrem
erros.

Dispositivos de Lgica Programvel

34

4.6. Gravao no FPGA


Feita a associao dos pinos do FPGA, pode-se ento gravar o projeto no
dispositivo lgico programvel disponvel. Clique em Tools > Programmer, abrindo a
tela da figura 17:

Figura 17 Programando o FPGA.

Na rea de configurao apresentada, preciso assegurar que as opes de


hardware estejam corretas, atravs do atalho Hardware Setup.... Caso no haja
nenhum

hardware selecionado,

em Add Hardware, selecione manualmente

ByteBlaster ou USBBlaster, conforme o gravador do kit utilizado.


Ainda preciso marcar a opo Program/Configure. Outras opes como
verificao da gravao so tambm disponibilizadas. Clique em Start para iniciar
gravao. A janela de mensagens da tela principal do QuartusII ir informar se a
gravao foi executada com sucesso. Caso isso ocorra, seu projeto j estar rodando no
FPGA.
Caso haja algum erro de gravao, verifique se os cabos esto corretamente ligados,
se o kit est ligado, o modelo de gravador est correto ou ainda se o modelo de CPLD est
correto.

Dispositivos de Lgica Programvel

35

5. Dicas
O software QuartusII apresenta muitos recursos, por meio de suas bibliotecas
internas, onde esto disponveis diversos componentes lgicos, que podem auxiliar
muito o projetista, principalmente no modo editor grfico. As bibliotecas esto dividas
em duas categorias: primitivas e megafunes.

5.1. Biblioteca Primitiva


A biblioteca primitiva possui quatro grupos de componentes: elementos
lgicos, flip-flops e latches, buffers e terminais de E/S. Para utilizar o componente,
basta na janela smbolo (symbol) do editor grfico digitar o nome do componente e
dar um clique no boto Ok. Cada grupo de componente listado a seguir:

Elementos Lgicos

Dispositivos de Lgica Programvel

36

Flip Flop e Latches

Dispositivos de Lgica Programvel

37

Buffers

Dispositivos de Lgica Programvel

38

Terminais E/S

5.2. Biblioteca de Megafunes


A

biblioteca

de

megafunes

oferece

uma

variedade

de

mdulos

parametrizveis (LPM) e outras funes tambm parametrizveis. Cada grupo de


componentes listado a seguir:

Componentes Aritmticos

Dispositivos de Lgica Programvel

39

Portas

Dispositivos de Lgica Programvel

40

Componentes de E/S

Dispositivos de Lgica Programvel

41

Compilador de Armazenamento

5.3. Famlia 74XX


A biblioteca do software Quartus II oferece uma variedade da Famlia 74XX,
como por exemplo 7400 (Quatro portas NAND de 2 entradas), 7474 (2 Flip Flop tipo
D), 74112 (2 Flip Flop tipo JK), entre outros. Para acess-los s procurar na opo
symbol, digitar o nome e depois Ok.

Dispositivos de Lgica Programvel

42

5.4. Criando smbolos


Criar smbolos um modo de transformar todo um circuito em somente um
bloco, armazenado na bibliteca, deixando assim o circuito mais simples, e mais fcil de
entender, vejamos um exemplo mostrado na figura 18:

Figura 18 Exemplo utilizado para criao de smbolos.

Para fazer essa criao devemos selecionar o desenho, clicar em File >
Create/Update e logo depois em Create Symbol Files for Current File. Nomeie o
smbolo que voc est criando e confirme.

Agora o bloco j foi criado e est disponvel na biblioteca com o nome escolhido
pelo usurio, logo basta inserir seu nome no Symbol Tool.

Dispositivos de Lgica Programvel

43

6. Bibliografia
ALTERA. Disponvel em: <http://www.altera.com>. Acesso em: 3 ago. 2011.

COIMBRA,

J.

M. Altera

CycloneTM

II. Disponvel

em:

<http://pt.scribd.com/doc/38510204/CycloneII>. Acesso em: 3 ago. 2011

COSTA, C. Projetando Controladores Digitais com FPGA. So Paulo: Novatec, 2006.


159 p.

RANGEL,

F.

R.

Aulas

FPGAs.

Disponvel

em:

<http://www.dee.ufrn.br/~frangel/ensino/20061/ele365/AulaFPGAs.pdf>. Acesso em:


3 ago. 2011.

WIKIPEDIA: FPGA. Disponvel em: <http://pt.wikipedia.org/wiki/FPGA>. Acesso em: 3


ago. 2011.

Dispositivos de Lgica Programvel

Você também pode gostar