LABORATÓRIO DE SISTEMAS
DIGITAIS- III
APLICAÇÕES com EPLDs
Usando software MAXPLUS - II
Prof. Luís Caldas
Manual - Tutorial
Prof. Luís Caldas
INTRODUÇÃO AO MAXPLUS II
ÍNDICE............................................................................................................................1
1 INTRODUÇÃO AO ASICS
1.1 ASICS ........................................................................................................................3
1.2 FLUXO DO PROJETO....................................................................................................4
1.3 PLDS .........................................................................................................................5
2. INTRODUÇÃO À LÓGICA PROGRAMÁVEL
2.1 EPLDS
2.2 ARQUITETURA BÁSICA DE UMA EPLD.................................................................9
2.3 FAMÍLIA MAX 7000 ................................................................................................10
3 MAX+PLUS II
3.1 PARTIÇÃO DE UM SISTEMA DIGITAL............................................................................13
3.2 RESUMO DO USO DO SOFTWARE ................................................................................15
4. OPERANDO COM O MAX-PLUS II ..........................................................................16
A . CRIAÇÃO DO PROJETO NOVO ......................................................................................16
B. PROCESSO DE SELEÇÃO DOS COMPONENTES .............................................................17
C. ADICIONANDO/DELETANDO FIOS E MOVENDO COMPONENTES ....................................17
D. ADICIONANDO PINOS DE ENTRADA/SAÍDA ....................................................................18
5 - SIMULAÇÃO O CIRCUITO......................................................................................19
A . ESCOLHENDO O DISPOSITIVO PARA O PROJETO...........................................................19
B. CRIANDO A FORMA DE ONDA PARA O SIMULADOR ........................................................20
C. RODANDO O SIMULADOR E ANALISANDO OS RESULTADOS ...........................................23
D. EDITANDO AS PINAGENS ............................................................................................24
E. GERAÇÃO DE SÍMBOLOS .............................................................................................24
6 - EXERCÍCIOS
6.1 . EXERCÍCIO ..............................................................................................................24
APÊNDICE A - PLACA UP1 ........................................................................................29
APÊNDICE B - DISPLAYS DA PLACA UP1 ...............................................................30
APÊNDICE C - SINAIS DE ENTRADA E SAÍDA DA PLACA UP1 .............................31
Pág. 2
Manual - Tutorial
Prof. Luís Caldas
1. INTRODUCÃO AO ASICs
Um ASIC (pronunciado “a-sick”; é um application-specific integrated circuit —pelo menos isto é
o acrônimo para circuito integrado de aplicação específica. Antes de se responder a questão “o
que significa” primeiro observe a evolução de chip de silício ou um circuito integrado (CI ).
A figura 1.1(a) mostra o CI encapsulado (este é um arranjo pin-grid array, ou PGA, mostrado
abaixo ; os pinos são introduzidos através dos furos na placa de circuito impresso. O popular
chama freqüentemente o encapsulamento de um chip, mas como pode você ver na Figure 1.1(b),
o chip próprio de silício (mais propriamente chamada a pastilha) é montada na cavidade sob um
terminal selado. A montagem ou corpo da PGA é usualmente feita de material cerâmico, mas
encapsulamento em plástico são bastante comuns.
FIGURE 1.1 Um circuito integrado (CI).
(a) Um arranjo pin-grid (PGA) package.
(b) A pastilha de silício ou chip está sob
o encapsulamento.
O tamanho físico de uma pastilha de silício varia de uns poucos milímetros sobre um lado até 01
polegada sobre o lado, mas ao invés nós freqüentemente medimos o tamanho de um CI pelo
número de portas lógicas ou o número de transistores que são contidos em um CI. Como a
unidade de medida è “eqüivalente a uma porta” correspondendo a uma porta NAND com 02
entradas (um circuito que realiza a função lógica, F = A • B ). Freqüentemente nós apenas usamos
o termo porta ao invés de portas eqüivalentes quando medimos o tamanho de um chip. Por
exemplo, um CI 100 k-portas contém o equivalente a 100,000 portas NAND de 02 entradas.
Exemplos de CIs que não são ASICs incluem partes padrões tais como: chips de memória, chips
vendidos como item comodity—ROMs, DRAM, e SRAM; microprocessadores; TTL ou CIs TTLeqüivalente nos níveis SSI, MSI, e LSI.
Exemplos de CIs que são ASICs incluem: chips para brinquedos urso que conversa; chip para
satélite; chip projetado para manipular a interface entre a memória e o microprocessador para
uma workstation CPU; e chip contendo um microprocessador como uma célula junto com outra
lógica.
Como regra geral, se você pode encontrar um ASIC no data book, então provavelmente ele não é
um ASIC, mas existem algumas exceções. Por exemplo, 02 CIs que podem ou não podem ser
considerados ASICs é o chip controlador para PC e o chip para modem. Ambos destes exemplos
são específicos para uma aplicação (formas de um ASIC) mas são vendidos para muitos
diferentes vendedores de sistemas (shades de parte padrão). ASICs tais como elas são algumas
vezes chamadas de application-specific standard products ( ASSPs ).
1.1 Tipos de ASICs
Um full-custom CI inclui alguns (possivelmente todas) células lógicas que são customizadas e
todas as máscaras das camadas que são customizadas. Um microprocessador é um exemplo de
um CI full-custom. Customizando todas as feituras do CI permite aos projetistas incluírem circuitos
analógicos, células otimizadas de memória, ou estruturas mecânicas sobre o CI. Os CIs Full-
Pág. 3
Manual - Tutorial
Prof. Luís Caldas
custom são os mais caros para fabricar e projetar. O membro da família que estamos mais
interessados são os semicustom ASICs, no qual todas as células lógica são pré-projetadas e
algumas (possivelmente todas) das máscaras das camadas são customizadas. Usando células
pré-projetadas de uma biblioteca de células faz a vida dos projetista bem mais fácil. Existem dois
tipos de semicustom ASICs : standard-cell–based ASICs e o gate-array–based ASICs.
A seguir será descrito os ASICs programáveis, no qual todas as células lógicas são préprojetadas e nenhuma mascaras das camadas são customizadas.
Existem dois tipos de ASICs programáveis: o dispositivo de lógica programável PLD e o mais novo
da família ASIC, o field-programmable gate array FPGA.
1.2 FLUXO DO PROJETO
A figura 1.10 mostra uma seqüência de passos para o projeto de um ASIC; chamamos de fluxo
do projeto . Os passos são listados a seguir :
FIGURE 1.10 ASIC design flow.
Design entry ( Entrada do Projeto ). Entrada do desenho em um sistema de projeto ASIC,
utilizando uma linguagem de descrição de hardware ( HDL ) ou uma entrada esquemática .
Logic synthesis (Síntese Lógica ). Usar um HDL (VHDL or Verilog) e uma ferramenta síntese
lógica para produzir uma netlist —uma descrição das células lógicas e suas conexões.
System partitioning (Partição do Sistema ). Dividir o sistema dentro de tamanho de peças ASIC.
Prelayout simulation ( Simulação do Pré-Layout ). Verifique par aver se o desenho do projeto
funciona corretamente.
Floorplanning ( Planejamento do chip ). Arranjar os blocos da netlist sobre o chip.
Pág. 4
Manual - Tutorial
Prof. Luís Caldas
Placement (Localização). Decidir as locações das células no bloco.
Routing ( Roteamento ). Faça as conexões entre células e blocos.
Extraction ( Extração ). Determinar a resistência e capacitância da interconexão.
Postlayout simulation ( Simulação do Pós-Layout ). Verifique par aver se o projeto ainda opera
com as cargas adicionadas na interconexão.
Os passos de 1–4 são partes da logical design (lógica do projeto) , e os passos de 5–9 são
partes do physical design (física do projeto). Existem algumas sobreposições. Por exemplo, a
partição do sistema pode ser considerada como ambas lógica ou física do projeto.
1.3 DISPOSITIVOS LÓGICOS PROGRAMÁVEIS-PLDs
CIRCUITOS DIGITAIS
Os circuitos integrados desenvolvidos em uma pastilha de silício podem ser divididos em dois
grupos de integração: circuitos integrados padrões e circuitos integrados de aplicação específica
(ASIC). Os circuitos integrados padrões são compostos pelos circuitos integrados de funções
fixas, que correspondem aos componentes digitais básicos (funções E's, OU's, Não E's, OU's
Exclusivos, Flip-Flops, etc.), pelos microprocessadores e pelos circuitos integrados
reconfiguráveis, ou programáveis (dispositivos lógicos programáveis).
Os circuitos integrados de aplicação específica (ASIC) são subdivididos em circuitos integrados
denominados "FULL CUSTOM" e circuitos integrados denominados "SEMICUSTOM".
Os componentes SEMICUSTOM se dividem nos arranjos de gates (Gate Arrays) e nos arranjos
de células (Cell Based). A figura 1 resume esta classificação.
Os circuitos integrados padrões são disponíveis no mercado em grande quantidade de itens. São
classificados em SSI (integração de pequena escala) e MSI (integração de média escala),
normalmente construídos em lógica TTL, ou CMOS, possuindo funções analógicas e digitais de
propósito geral, baixo custo, devido a sua produção em massa, com blocos funcionais bastante
Pág. 5
Manual - Tutorial
Prof. Luís Caldas
simples e, portanto, necessitando de vários componentes para a realização de uma função
específica. Ainda são disponíveis os LSI (integração em grande escala) e os VLSI (integração em
muito grande escala) que possuem funções específicas mais complexas, tais como, periféricos de
comunicação de dados, temporizadores, controladores de redes, interfaces de barramentos,
blocos para processamento digital de sinais, etc.
Microprocessadores são componentes extremamente flexíveis devido a sua programabilidade. A
programação do componente torna-o flexível para implementação de vários tipos de aplicações,
entretanto, a implementação de um algorítmo por software será mais lenta que quando
implementada por um hardware equivalente. Assim, para alguns casos, a tarefa deverá ser
implementada por hardware.
Os componentes ASIC são programados através de interconexões metálicas usadas na
fabricação de circuito integrado, sendo também denominados de MPLD´s (Mask-Programmable
Dispositivos de lógica programável por máscaras, necessitam de ter suas funções definidas da
operação implementadas na própria construção do componente.
Os componentes ASIC's Full Custom tem o seu projeto desenvolvido no nível de transistores, para
se obter uma performance ótima, possuem longo tempo de desenvolvimento, alto custo de
projeto, alto nível de integração e somente poderá ter uma alta performance de desenvolvimento
se produzido em grande volume.
Os componentes ASIC's Semicustom são fabricados em quantidades de milhares de peças e
utilizam de ferramentas CAD para o seu desenvolvimento. O projeto do usuário estará baseado
em blocos pré-desenvolvidos, ou em células contendo blocos lógicos, flip flops, ou funções digitais
maiores. O usuário não executa o seu projeto a nível de transistores, ou de desenvolvimento de
células. Estes componentes geralmente são classificados em arranjos de blocos (gate arrays), em
arranjos de células (cell based) e em arranjos gerais de células (macrocells, ou general cells). Em
todos os casos, a fabricação final do componente é realizada pelo fabricante de circuitos
integrados.
Macro células são construídas com blocos e células compondo uma biblioteca de funções, com
nenhuma restrição no posicionamento destes itens em uma fila ou em uma matriz.
Podem incluir áreas de memória RAM e ROM, arranjos lógicos programáveis (PLA) e grandes
blocos funcionais, equivalentes aos VLSI's, por exemplo, microprocessadores, controladores de
CRT, etc.
"Gate arrays" são arranjos regulares de blocos que possuem células periféricas para possibilitar
interligações de entrada e saída. Podem ser arranjados em blocos, em filas, ou em matriz de
blocos (sea-of-gates). Usualmente, somente as camadas de metais que interligam esses blocos é
que serão desenvolvidas.
"Standard Cells" são compostos de uma biblioteca de células padrões arranjadas em arquitetura
de filas e com canais de roteamento desenvolvido de acordo com a necessidade do usuário.
Algumas vezes somente se desenvolvem camadas de metais, outras vezes há a necessidade de
se desenvolver todas as camadas no componente.
A figura 2 apresenta a estrutura de arranjos de blocos organizados por blocos, filas e matriz, com
também a estrutura de um ASIC composto de células padrões e blocos funcionais.
Pág. 6
Manual - Tutorial
Prof. Luís Caldas
2. INTRODUÇÃO A LÓGICA PROGRAMÁVEL
Uma função lógica, seja combinacional ou seqüencial, poderá ser representada na forma de soma
de produtos através do uso do Teorema de DeMorgan ou das Leis da Álgebra Booleana. Uma
função lógica complexa de multiníveis poderá facilmente ser reduzida a uma configuração de dois
níveis usando E's-OU's. Estas propriedades das funções lógicas possibilitaram a implementações
de componentes eletrônicos contendo arranjos uniformes de E's-OU's que podem ser
programados, de uma maneira clara e eficiente, para a obtenção da função desejada.
Com a finalidade de aumentar a capacidade de implementação lógica nos dispositivos
programáveis, surgiram novas arquiteturas que incorporam flip-flops em suas estruturas para
facilitar o desenvolvimento de máquinas de estado e circuitos com lógica síncrona.
Os primeiros dispositivos programáveis surgiram na década de 70 através do desenvolvimento da
tecnologia de memórias ROM programáveis (PROM's).
Os componentes programáveis são, portanto, circuitos integrados que podem ser configurados
pelo usuário em seu local de trabalho, sendo denominados de FPLD´s (Field-Programmable Logic
Device. Os mesmos, por serem fabricados por completo e não apresentarem uma função lógica
definida, até que sejam configurados, diferem dos circuitos integrados personalizáveis por
máscaras (ASIC, CUSTOM ou SEMICUSTOM), os quais tem um alto fator de tempo de
desenvolvimento e de custo.
Para poder personalizar um dispositivo programável, o usuário terá a sua disposição software que
permite descrever a função lógica desejada usando captura de diagramas esquemáticos, tabelas
verdadeiras de tensão, equações booleanas, linguagem de descrição de hardware (HDL Hardware Description Language), formas de ondas de sinais de entrada e saída, ou qualquer
outra opção fornecida pelo fabricante do componente. Após a definição, simulação e validação do
funcionamento, haverá um hardware específico que irá programar o dispositivo.
A programação do dispositivo é feita de maneira serial, ou seja, somente um dispositivo por vez.
Já para os dispositivos personalizados por máscaras, podem ser implementados paralelamente
tantos CI's quantos forem permitidos pelo processo de fabricação.
Nestes componentes sempre haverá uma perda de elementos não utilizados pela função
desejada. Assim, cabe ao fabricante desenvolver ferramentas que possibilitam melhorar o fator de
Pág. 7
Manual - Tutorial
Prof. Luís Caldas
utilização do CI, ou seja a relação entre a quantidade de funções lógicas implementadas e a
capacidade lógica do componente, através de otimização dos elementos programáveis e da
escolha adequada do componente a ser utilizado. Entretanto esta perda inevitável de área de
silício não utilizada é compensada com o baixo custo de desenvolvimento do dispositivo e a sua
rápida obtenção.
Os dispositivos de programação utilizados nestes componentes são elementos de programação
que permitem conectar, ou não, dois pontos estratégicos do circuito. Comumente estes elementos
são elos fusíveis, anti-fusíveis, células SRAM, transistores EPROM e EEPROM.
Assim, alguns destes dispositivos podem ser reprogramados e outros são de programação única.
As denominações dos fabricantes para estes dispositivos programados pelos usuário,
normalmente citadas nas literaturas, são PROM's, PLE's, PAL's, PLA's, EPLD's, FPGA's, e outros.
2.1. EPLD's
Os dispositivos lógicos programáveis e apagáveis - EPLD's (Erasable Programmable Logic
Devices) foram introduzidos pela empresa ALTERA no ano de 1983. Estes dispositivos são
circuitos integrados configuráveis pelo usuário, os quais visam implementar funções lógicas
aleatórias.
Nos últimos anos estes componentes tem sido preferidos nos projetos devido a sua alta
integração, alta performance, baixo custo por função e o decréscimo de custo que está ocorrendo
devido ao seu alto volume de fabricação.
Uma EPLD pode ser usado, por exemplo, como máquina de estado, ou decodificador de sinais,
substituindo vários componentes discretos que implementariam a mesma função.
As suas principais vantagens são: - Sua programabilidade e reprogramabilidade permite que
funções possam ser alteradas facilmente, simplificando o desenvolvimento de protótipos;
•
•
•
•
•
•
Sua pinagem é determinada pelo projetista, o que pode simplificar o desenvolvimento de
placas de circuito impresso, por movimentação dos sinais conforme desejado;
Desde que são implementados em tecnologia CMOS, eles consomem menos potência que
os dispositivos bipolares;
Desde que uma célula EPROM tem ordem de magnitude menor que a de um fusível
bipolar, então, pode-se implementar mais funções em uma mesma área de silício. Esta alta
integração pode resultar em uma quantidade menor de componentes usados em um
projeto;
Um EPLD substitui vários componentes discretos. Isto implicará na redução de tamanho
da placa de circuito impresso, do tempo de montagem, do número de componentes por
placa, do estoque de componentes, do tempo de desenvolvimento, entre outras
características;
A programação realizada pelo próprio usuário reduz consideravelmente o tempo de
obtenção final do circuito e possibilita futuras modificações;
A tecnologia usada nestes componentes está baseada em células EPROM, células
EEPROM e células SRAM.
O princípio de funcionamento dos componentes EPLD's está baseado nos PAL's, com
estrutura programável de E's e estrutura fixa de OU's. Entretanto, os EPLD's são compostos de
vários sub-blocos equivalentes a um PAL, com estruturas de somas de produto, interligados por
um arranjo de conexões também programável. Com isto, os sub-circuitos poderão funcionar
independentemente, ou serem interligados internamente, para executarem uma função maior.
Pág. 8
Manual - Tutorial
Prof. Luís Caldas
A figura 3 apresenta esta estrutura.
A ALTERA oferece várias famílias de dispositivos lógicos programáveis, que são:
Clássica, MAX 5000, MAX 7000, MAX 9000, FLEX 8000 e FLEX 10K.
A arquitetura MAX usa a estrutura de matriz de arranjos múltiplos com tecnologia de programação
baseada nas células EPROM, ou EEPROM. A família FLEX usa a arquitetura de matriz flexível de
elementos lógicos, com programação baseada em tabelas LUT (look-up table) com células SRAM.
2.2. ARQUITETURA BÁSICA DE UM EPLD
O bloco básico de um EPLD é uma célula lógica de propósito geral que contem uma lógica
combinatória e flip-flop programável, que pode executar a função de qualquer tipo de flip-flop (D,
T, JK e SR), como também, ter a sua operação curto-circuitada, deixando a célula executar uma
função puramente combinatória.
Na família clássica e na família MAX 5000 a estrutura está baseada em células lógicas.
Na família MAX 7000, a estrutura é formada por macrocélulas que são blocos baseados em
termos produtos.
Na família FLEX 8000, a estrutura é composta de uma matriz de elementos lógicos (LE's),
baseados em arquitetura "look-up table". Cada LE contem quatro tabelas (LUT - Look-up table)
para compor uma função de quatro variáveis e arquitetura de cascateamento para implementar
funções combinatórias complexas e, também, contem registro programável, para implementar
funções lógicas seqüenciais.
Neste curso será enfatizado a família MAX 7000.
2.3. FAMÍLIA MAX 7000
Pág. 9
Manual - Tutorial
Prof. Luís Caldas
Esta família é a segunda geração da arquitetura MAX. Possui lógica variando de 1000 e mais de
10000 gates eqüivalentes.
9 Os componentes tem encapsulamento variando de 44 a 208 pinos, no formato PLCC, PGA,
QFP e TQFP.
Tempo de atraso lógico de até 5 nseg. pino a pino e freqüências de contadores chegando até
178.6 MHz.
Também possui bit de segurança programável e todos os elementos desta família são suportados
pelo software de desenvolvimento MAX + PLUS II.
Possui arranjo de interconexão programável (PIA) fortalecido, o que possibilita velocidade e
atrasos fixos entre uma fonte interna e algum circuito destino. Possui macrocélulas avançadas
com localizações lógicas eficientes, para possibilitar velocidades e densidades ótimas.
Os registradores possuem, clear, preset, clock e habilitador de clock independentes.
Temporizações para os registros será realizada por arranjos internos, ou sinais globais de
temporização.
Possui componentes com alimentação para 3,3 volts, para uso em circuitos portáteis, por exemplo
notebooks.
A sua arquitetura inclui os seguintes elementos: arranjos de blocos lógicos (LAB), macrocélulas,
expansores de termos produto, arranjo de interconexão programável (PIA) e blocos de controle de
I/O. Em adicional, a família inclue quatro entradas dedicadas que podem ser usadas como
entradas de propósito geral, como sinal de alta velocidade, ou sinais de controle global (clear,
clock e habilitadores).
A macrocélula avançada pode ser configurada para operação combinacional, ou seqüêncial. É
composta de três blocos funcionais: o arranjo lógico, a matriz de seleção de termos produto e o
registrador programável.
A figura 4 apresenta esta estrutura.
Pág. 10
Manual - Tutorial
Prof. Luís Caldas
A lógica combinatória é implementada no arranjo lógico, que contem cinco termos produtos por
macrocélula.
A família MAX 7000 possui alocação programável de termos produtos, fazendo com que um termo
produto possa ser usado como entrada lógica primária, aplicada a soma dos elementos (lógica OU
e lógica OU exclusiva), para implementar a função combinatória, ou ser usado como entrada
lógica secundária, sendo aplicada aos controladores de habilitação de temporização, do clear, do
preset, ou do clock.
Um termo produto por macrocélula pode ser invertido e realimentado no arranjo lógico.
O software de desenvolvimento MAX + PLUS II automaticamente otimiza a alocação dos termos
produtos.
A figura 5 apresenta um diagrama de blocos de um EPLD da família MAX 7000, contendo o
posicionamento dos elementos lógicos na estrutura.
Pág. 11
Manual - Tutorial
Prof. Luís Caldas
A família MAX 7000 é de alta densidade, com programação de alta performance, fabricada na
tecnologia CMOS e com programação baseada em EEPROM.
Além da versão clássica, existem as versões: MAX 7000V, que opera com tensão de alimentação
de 3,3 volts, MAX 7000E, que é a versão com características fortalecidas, incluindo
especificações de barramento local PCI, e a versão MAX 7000S, que incorpora a interface serial
padrão IEEE 1149, ou JTAG (Joint Test Action Group), que possibilita a programação na própria
placa de circuito impresso denominada ISP (In-System Programmability), ou seja, pode-se alterar
as funções do dispositivo sem ter que retirá-lo de sua placa de operação.
A programação dos dispositivos da família MAX 7000 poderá ser efetuada com a unidade de
programação mestre, denominada MPU, ou com o dispositivo de programação serial
denominado byteblaster, para os dispositivo que possuem a comunicação JTAG.
Em parceria com a União Digital, a Datapool Eletrônica Ltda desenvolveu um pacote de
experiências que visam ensinar as características básicas de projeto com o uso de dispositivos
lógicos programáveis. Neste curso serão usados os dispositivos da família MAX 7000S. O pacote
contem projetos básicos que envolvam os recursos do software MAX+PLUS II, nos modos de
desenvolvimento por esquemático, por formas de ondas e por AHDL. O projeto desenvolvido será
Pág. 12
Manual - Tutorial
Prof. Luís Caldas
programado serialmente no dispositivo, via conexão a um computador PC, através de um
byteblaster, e um adaptador PLCC para DIP, que possibilita a conexão do dispositivo ao
protoboard do módulo digital 8810 da Datapool. Assim, após a programação do dispositivo, podese usar os recursos de entradas e saídas do módulo 8810 para efetuar a simulação e verificação
do projeto. Os dispositivos da família MAX 7000S possuem quatro pinos destinados a
comunicação para programação, assim em placas que se deseja efetuar a programação de um
dispositivo EPLD, deve-se deixar disponíveis os pinos que executam estas funções. A figura 6
apresenta esta conexão.
3. MAX+PLUS II
A ferramenta MAX+PLUS II é utilizada na descrição, compilação, simulação e programação de
sistemas digitais implementados através de EPLDs.
Neste curso veremos como esta ferramenta pode ser utilizada no projeto de sistemas digitais,
tendo como base a metodologia vista em teoria.
3.1. PARTIÇÃO DE UM SISTEMA DIGITAL
Um Sistema Digital (SD) pode ser dividido em duas partes : Fluxo de Dados (FD) e Unidade de
Controle (UC). No FD (figura 2) são encontrados os elementos responsáveis pela transformação
e/ou armazenamento dos dados do SD (registradores, multiplexadores, portas lógicas, etc). A
descrição de um FD é feita através de um diagrama lógico (DL), mostrando como estão
interligados cada um dos seus elementos.
Pág. 13
Manual - Tutorial
Prof. Luís Caldas
IN[1..4]
CLR1
CLK1
SEL
CLR3
CLK3
FD
PORTAS,
REGS,MUX,...
OUT[1..4]
Fig. 2 - Fluxo de Dados de um Sistema Digital
Na UC (figura 3) estão os sinais de entrada e saída responsáveis pelo controle dos
elementos do FD, assim como os sinais de entrada e saída do próprio SD. A UC pode ser descrita
de várias maneiras, uma delas é a Rede de Petri.
LOAD
UC
REDE DE PETRI
CLR1
CLK1
SEL
CLR3
CLK3
READY
Fig. 3 - Unidade de Controle de um Sistema Digital
O Sistema Digital (SD) completo pode ser visto na figura 4.
Pág. 14
Manual - Tutorial
Prof. Luís Caldas
LOAD
IN[1..4]
SD
UC
REDE DE PETRI
CLR1
CLK1
SEL
CLR3
CLK3
READY
FD
PORTAS,
REGS,MUX,...
OUT[1..4]
Fig. 4 - Sistema Digital Completo
Para a descrição do SD através da ferramenta MAX+PLUS II, será adotada a seguinte
nomenclatura:
-
Fluxo de Dados : nome_do_projeto__FD;
-
Unidade de Controle : nome_do_projeto__UC;
-
Sistema Digital Completo : nome_do_projeto__SD;
3.2 RESUMO DO USO DO SOFTWARE – MAXPLUS II – VERSÃO ESTUDANTE
Obtendo o MaxPlus Software: O software versão estudante do MaxPlus II pode ser obtida
diretamente do web site ( www.altera.com). Após a obtenção do software, você terá que obter a
licensa da Altera e isto é realizado da seguinte maneira :
1. Dirija-se para http://www.altera.com/html/univ/student_edition/student-get.html.
2. Selecione o link “Download the MAX+PLUS II Student Edition software”.
a) Selecione e clique “I Agree” no final da página.
b) Selecione o “Download Student Edition software student923.exe (23,373,754 bytes)” para
receber o programa. Isto pode levar muito tempo.
c) Selecione o “Download software patch student923_vhd.exe (601,665 bytes)” para receber
software patch. (Este patch é um arquivo comprimido vhd.dll.)
3. Continue no item 2 para solicitar a licença (sobre a mesma página) pela seleção link “Altera
University Program: MAX+PLUS II Student Edition Licenses & Authorization Codes”., ou dirija-se
para http://www.altera.com/maxplus2-student/index.html.
a) Selecione “Versão 9.23” (ou a mais recente versão disponível). Então selecione “Continue.”
Pág. 15
Manual - Tutorial
Prof. Luís Caldas
b) Altera pedirá agora a você o número serial do harddisco. Você pode receber isto do seu PC
pela abertura de uma janela no Windows do DOS e ler o número do volume do disco quando você
inserir o comando “dir” do DOS.
c) Preencher o questionário do Altera’s e certifique-se de um endereço de e-mail válido. Após o
questionário preenchido clique em “Continue”, você receberá a mensagem dizendo que enviaram
um e-mail com arquivo de licença do software..Agora clique sobre o link “ View the MAX+PLUS II
Student Edition Installation Instructions”. Siga as instruções de instalação do software, instalar o
patch, e carregar a licença. Você pode querer guardar esta ou imprimir.
i) Quando você recebe a licença, instalar no diretório \max2work.
ii) Rode o MAX+plus II 9.23 Baseline.
iii) Escolha “License Setup” (Opções do menu).
iv) Encontrar o arquivo “license” pelo clique no Browse. Na caixa Diretórios, dirija-se até o diretório
no qual você guardou o arquivo license.dat file (i.e., c:\max2work), selecione o arquivo license.dat
file caixa Fila, e clique OK.
4. Operando com o MAXPLUS II.
Problema Exemplo: Dada a equação lógica Y = A*/B + /C, implementar esta equação usando
uma porta AND de 02 entradas, uma porta OR com 02 entradas e 02 inversores no ambiente do
MaxPlusII.
Após a conclusão do esquemático, simular o circuito, imprimir o esquemático do circuito e os
resultados da simulação. Desenhar uma tabela lógica para entradas & saídas e compará-las com
os resultados da simulação.
I. Tutorial de Projeto do Circuito
Inicialmente crie um sub-diretório lab1 sobre o seu PC para guardar as filas geradas pelo
MAXPLUS II quando é realizados o esquemático e após a simulação, seguindo os passos a
seguir.
A. Criação de um projeto novo
1. Crie o sub-diretório ‘lab1’ directory sobre o seu PC para armazenar os arquivos.
2. Rode o Altera MaxPlus II software sobre o Windows.
3. Selecione no Menu e clique sobre “MAX+plusII” e selecione “Graphic Editor”.
Abre-se a tela do editor gráfico com a mansagem “Untitled1- Graphic Editor”.
4. Selecione no Menu e clique em “file” e guarde o projeto no arquivo gráfico“lab1.gdf” dentro do
subdiretório ‘lab1’ criado no passo #1.
5. Selecione e clique novamente em “file” e selecione “Project” >> “Dirija-se ao “ set project to
current file”.
Isto informa o MaxPlusII que este é o arquivo corrente o qual você deseja compilar e simular.
Page 2/8 MaxPlus II Tutorial com Gráfico Básico e Simulação.
Pág. 16
Manual - Tutorial
Prof. Luís Caldas
B. Processo de seleção dos Componentes
1. Com o seu mouse dentro da tela do editor, clique a direita sobre o seu mouse e selecione “enter
symbol”. Uma janela listando os arquivos na biblioteca de componentes disponíveis do Altera deve
aparecer.
2. Na campo “Symbol Libraries”, um duplo clique sobre a biblioteca “..\max2lib\prim”. Isto carrega
a biblioteca dos “primitives” e você verá vários componentes listados no campo “Symbol Files”
3. Selecione “and2” e pressione o botão “ok” . Você verá a porta AND2 ( 02 entradas) que
aparece sobre a tela. Notar: Você pode ter que pressionar o “+” zoom (incrementa a escala) ou “-“
zoom, no Menu View, clicando em “zoom in” ou em “zoom out”.
4. Repetir os passos de 1-3 to colocar o inversor sobre a tela. Notar: O inversor é encontrado
como um “not” no campo do arquivo de “Symbols”.
5. Coloque um outro inversor “not” sobre a tela. Finalmente, coloque uma porta OR de 02 entradas
sobre a tela.
C. Adicionando/Deletando Fios & Movendo Componentes
1. Coloque o apontador sobre a saída do inversor ( a cruz ) e mantenha pressionado o botão a
esquerda do seu mouse. Você verá a cruz ou “+” aparecer na saída.
2. Arraste seu apontador para a entrada da porta AND e solte o botão da esquerda do mouse, que
a conexão é realizada.
Pág. 17
Manual - Tutorial
Prof. Luís Caldas
3. Para deletar uma conexão, simplesmente clique sobre a conexão (ela altera de cor para indicar
a seleção) daí pressione o botão del.
4. Experimente movimentar um componente selecionando-o com o seu mouse, mantendo o botão
da esquerda pressionando para baixo e movimentando-o para outra locação na tela. Note: Se fios
são conectados com o componente e você move, eles permanecem conectados e se arrastam
com o componente. Isto é referido como ‘rubber banding’.
D. Adicionando Pinos de Entrada & Saída
1. Da mesma forma utilizada na colocação de uma porta na tela do editor gráfico é utilizado para
entrar com um pino de entrada e um pino de saída. Clique o botão da direita do mouse e entra no
campo “Enter Symbol”, pressione e a janela do arquivo de Símbolos.
2. Clique sobre o nome do pino de entrada (sobre a esquerda do símbolo do pino de entrada) e
altere ele para ‘A’.
Repetir os 02 passos para criar os pinos de entrada ‘B’ & ‘C’.
3. Da mesma forma que você colocou os pinos de entrada use o mesmo procedimento para os
pinos de saída. Altere o nome do pino para ‘Y’.
4. Salvar o projeto. Você agora está pronto para proceder a simulação do circuito.
5. Simulação do Circuito
Pág. 18
Manual - Tutorial
Prof. Luís Caldas
A. Escolhendo o Componente para o Projeto
1. Após o circuito ter sido criado, você deve estar certo que este é o projeto que você deve
simular. Os passos a seguir garantem o sucesso para o seu projeto corrente.
Selecione o projeto pressionando o botão no Menu “file” novamente, selecione “Project” >> “set
project to current file”.
Isto informa o MaxPlusII aplicação que este arquivo é do projeto corrente o qual você deseja
compilar e simular.
2. Antes de simular o projeto, você primeiramente deve rodar o “fitter software” para adequar o
projeto para um componente programável. Coloque o seu mouse sobre o icon sobre o topo da
barra o qual tem um uma figura pequena de pilha com fumaça. Sobre a barra inferior da tela você
observa uma mensagem de ajuda do “icon dizendo “Opens the compiler window or brings it to the
foreground” ( Janela aberta do compilador).
3. Pressione este icon (compilador) e seguindo a janela do compilador você abre para :
4. Pressionar o botão “start” de início na janela do compilador. Você verá uma mensagem de volta
do compilador informando na tela que o dispositivo selecionado automaticamente é da família
“MAX7000”, o qual foi encontrado para realizar o projeto. Selecione o dispositivo o qual devemos
operar no laboratório. Clique no Menu “Assign” onde abrirá uma tela com vários campos.
Selecione o dispositivo, você deve abrir uma janela denominada DEVICE. A seguir em “Device
family”, clique em MAX7000S. Em seguida nesta mesma tela em “devices”, clique em
EPM7128SLC84-6, no campo “devices” deve inscrever o número do dispositivo. Em seguida
clique OK.
Nota : Para retirar a seleção de variáveis globais – Clicar em Assign – Global Project Logic
Synthesis – no quadro Automatic Global tirar a seleção de ALL, e clicar
.
Nota Especial : O processo de compilação consiste de vários sub-processos que nós
quebraremos em parte e descreveremos futuramente. Por agora, nós queremos apenas que você
Pág. 19
Manual - Tutorial
Prof. Luís Caldas
compreenda a função principal do compilador que é traduzir o circuito dentro de um conjunto de
equações que nós encontramos ou introduzimos dentro de um dispositivo programável.
B. Criando a Forma de Onda para usar no Simulator
1. Uma vez que o circuito tem sido compilado dentro de um dispositivo particular de lógica
programável, nós podemos rodar o simulador a fim de checar a funcionalidade do circuito.
Coloque o seu mouse sobre o icon sobre a barra superior que parece com um personal computer
(próximo ao icon do compilador ). Sobre o a barra inferior da tela você uma mensagem de ajuda
do icon dizendo
“Opens the simulator window or brings it to the foreground”. (Janela aberta do Simulador).
2. Pressione o icon do simulador e você dever ver a seguinte janela aberta do simulador :
3. Pressione o botão “start” de início. Você deve ver uma mensagem de erro que diz “Can’t
simulate – não existe um arquivo scf carregado pelo projeto. O simulador está procurando um
arquivo de forma de onda básica (*.scf) o qual ele pode-se utilizar para excitar o circuito
encontrado na compilação.
4. Pressione o botão para baixo no menu button “Max+plus II” e selecione a opção editor de
formas de ondas ou “Waveform editor”. Isto provoca a abertura de uma janela de formas de ondas
sem título.
5. Pressione o botão no menu “File” e selecione “save as”. Na janela“Save as” escreva o nome do
arquivo “lab1.scf’. Você tem apenas renomeado a janela da forma de onda sem título para ‘lab1’ o
qual casa com o nome do seu projeto. Assim você rodar o simulador, ele automaticamente usará
este arquivo *.scf que casa o nome do projeto lab1.
6. Coloque o seu mouse dentro da janela ‘lab1.scf – Waveform editor’, mova-o para a área onde o
título é Name (Nome dos sinais) : Value (Valor lógico) : e clique com a direita no seu mouse.
Clique sobre “Enter Nodes from SNF…”. Você verá a seguinte janela aberta:
Pág. 20
Manual - Tutorial
Prof. Luís Caldas
7. Pressione o botão “List”. Você deve agora visualizar todas as entradas & saídas (i.e. A,B,C,Y)
para o projeto listado no campo“Available Nodes & Groups”. Selecione-os todos eles com seu
mouse e pressione o botão “=>” button. A, B, C e Y devem aparecer no campo “Selected Nodes &
Groups”. Pressione “OK” para mover estes sinais para o editor de formas de ondas e feche esta
janela.
8. O editor de forma de onda (lab1.scf) agora deve ter entradas A, B, and C e a saída Y nela.
Pressione the (-) magnify sobre a barra de ferramenta a esquerda da janela principal MaxPlus.
Você verá agora a seguinte escala de tempo do editor de formas de Ondas:
9. Sinais na barra de ferramentas a esquerda a serem selecionados.
: atribui o valor zero;
: atribui o valor 1;
Pág. 21
Manual - Tutorial
Prof. Luís Caldas
: atribui o valor indefinido;
: atribui o valor alta impedância;
: inverte o sinal;
: transforma o trecho selecionado em um sinal de clock;
10. Agrupar sinais de uma mesma via de dados
Selecionar os sinais, clicando no primeiro sinal e arrastando o mouse até o último;
Clicar em Node - Enter Group;
Escolher o nome do grupo;
Escolher a base numérica que será utilizada para mostrar os números, na janela Radix;
Clicar em
.
Para visualizar a simulação, clicar em
.
Nota Especial: A escala de tempo é mostrada em incrementos de 100nsec. Este não é a menor
quantidade de tempo que pode ser colocada para uma dada entrada particular. Uma entrada pode
ser selecionada com um clique sobre o nome da variável e o campo da variável ficará escurecido
pode ser escolhido valores lógicos como ‘1’ or ‘0’. Mais tarde poderemos alterar o valor mínimo de
tempo.
11. Usando seu mouse, arraste-o através do segmento de 100 ns segmento que foi mostrado em
uma área escurecida na última janela snapshot. Você observará uma área escurecida como
resultado desta operação. Agora pressione o botão da esquerda do mouse da barra de ferramenta
que tem “1” nela. Agora experimente pressionar o botão da esquerda do mouse da barra de
ferramenta que tem um “0” nela. Este é como colocar a entrada do segmento para um valor
particular. Coloque-o para ‘1’ e aponte & clique seu mouse para uma nova área sobre a janela
fazer uma troca permanente.
12. Use o (-) (barra de ferramenta mais a esquerda) para novamente incrementar os segmentos
de 100 ns vista e modifica as entradas tal igual os padrões mostrados abaixo:
Pág. 22
Manual - Tutorial
Prof. Luís Caldas
13. As entradas tem agora sido definidas e ‘count’ ou incrementadas através de números binários
001 to 111 (ABC onde A bit mais significativo e C o bit menos significativo). Nós podemos rodar
agora o simulador do projeto neste ponto.
Nota: A saída Y é preenchida com ‘XXX’ no editor da forma de onda para mostrar que a saída
está presentemente indefinida. A razão é que ela é indefinida é que embora as entradas tem sido
definidas, a simulação não foi rodada ainda.
C. Rodando o Simulador e Analisando os Resultados
1. Para rodar o simulador, simplesmente pressione o botão “Start” sobre o Simulator: Janela
Simulação de Tempo. Você deve visualizar uma barra vermelha que se desloca através desta
janela ‘project simulation complete’ que deve aparecer. Pressione “Ok” .
2. Se você criou uma tabela lógica agora você poderá comparar os resultados da simulação. Não
se esqueça do delay entre as entradas e o tempo de troca da saída. Por exemplo, se nos olhamos
o segmento de tempo de 200 até 300 ns nos vemos que as entradas C & B estão em ‘1’ para o
intervalo, A é ‘0’ e a saída resultante troca de ‘1’ ´para o valor estável ‘0’ em um tempo breve após
a marcação 200 ns. Este leve atraso é devido ao atraso físico da porta dos CPLD requeridos para
implementar o circuito INVERSOR/AND/OR. Em outras palavras, cada porta em seu circuito tem
um “chunk” de hardware FPGA que é associada com ela e associada a um atraso físico.
3. Para visualizar um segmento de tempo, pode-se selecionar no Menu “View” no campo time
range, onde abre uma janela “time range”. Pode se digitar o intervalo de tempo inicial e final.
Observar que o tempo final não pode ser maior do que o tempo simulado.
4. Caso deseje aumentar o tempo de simulação, clique no Menu “File”, no campo “End Time” .
Abre-se uma janela End Time, digital o tempo de simulação total.
Pág. 23
Manual - Tutorial
Prof. Luís Caldas
5. Caso deseja-se diminuir o segmento de tempo de simulação, no menu “Option” no campo “Grid
Size” digitar o tempo mínimo (ex. 20ns).
6. Se uma variável é por exemplo um relógio, clique na variável em C, na barra de ferramenta a
esquerda do editor de tela de forma de ondas. Abre-se uma janela do sinal multiplicado por um
fator. Com o fator 1 o sinal da variável aparece multiplicado pelo grid time.
7. Para alterar o sinal de tempo clique em C@ para sobrescrever o segmento de tempo e inserir o
novo fator de multiplicação.
D. Editando a pinagem utilizando a placa UP1
Para que possamos utilizar a Placa UP1 (vide apêndices A, B e C) precisamos informar ao
software quais os números dos pinos da EPLD que já estão conectados da placa. Isto é feito
editando-se o arquivo denominado lab1.ACF, gerado pelo software após a compilação do projeto.
Basta acrescentar as linhas abaixo, depois da linha que contém o “part number” da EPLD que
será utilizada no projeto.
E. Geração de Símbolos
Todo o projeto feito no MAX+PLUS II pode ser descrito através de símbolos, sendo que estes
símbolos podem ser conectados, para formarem um projeto mais complexo.
Para gerar o símbolo de um projeto :
Entrar com o nome do projeto - Clicar em “File” no campo “Project-Name”, escolher o diretório,
fornecer o nome e clicar
;
Carregar o arquivo que define o projeto - Clicar em “File”, no campo “Open”, escolher o tipo de
arquivo (.GDF para o FD e .TDF para a UC), coloque sempre o nome do mesmo e clicar
;
Gerar o símbolo - Clicar em “File” – no campo “Create Default Symbol”. Para visualizar o símbolo
criado, clicar em “file”, clicar no campo “edit symbol” , abre-se uma tela com um bloco
correspondente ao circuito com as entradas e saídas.
Exercício : Descrever e compilar o sistema digital completo (Nome do projeto Sobrenome_gdf),
conforme os itens 2.2 a 2.7, descritos anteriormente.
Nome do Projeto : Caldas_FD
Dentro deste arquivo, criamos o arquivo gráfico Caldas_fd.gdf
Desenvolver um sistema digital completo, fluxo de dados, unidade de controle e sistema digital,
para o projeto exemplo de um contador crescente de 1 até 9, usando uma unidade lógica
aritmética. Apresentar na saída os valores de 1 até 9.
Pág. 24
Manual - Tutorial
Prof. Luís Caldas
Passo Inicial : Construir o fluxograma do projeto.
N = 10
CONT = 0
N = N - 1
CONT = CONT + 1
N ≥ 0
N < 0
N < 0
FIM
Implementação do circuito, usando o editor gráfico do software MAX-PLUS II.
Pág. 25
Manual - Tutorial
Prof. Luís Caldas
A simulação a seguir apresenta as formas de ondas em vários pontos do circuito e a saída de
dados.
A seguir desenvolveremos a unidade de controle que realiza o fluxograma dado.
A U.C que desenvolve o projeto é apresentada a seguir.
A Rede de Petri correspondente ao sistema de controle descrito pode ser expressa como se
segue:
A rede de Petri a seguir mostra o controle da U.C. e as equações de estado e saída.
Equações de Estado
E0=E3*(I<10) + E0*START
E1=E0*START
E2=E1 + E3*(I<10)
E3=E2
Equações de Saída – considerando que PCn
corresponde a cada uma das palavras de controle,
para definirmos as equações de saída devemos
considerar cada variável independentemente.
Assim, considerando que os casos irrelevantes (
X) assumam valor lógico zero teremos:
LOAD=E2
CLEAR=E1
OE=E3
ALU2=E2
As demais variáveis (IE, ALU1 e ALU0)
Pág. 26
Manual - Tutorial
Prof. Luís Caldas
A implementação desta rede através de um circuito utilizando flip-flops resulta no diagrama
abaixo:
12
I<10
NOT
INPUT
VCC
13
E3
START
PRN
Q
OUTPUT
5
E0
Q
OUTPUT
6
E1
9
10
CLRN
1
14
E0
DFF
D
AND2
NOT
INPUT
VCC
OR2
11
E0
15
AND2
AND2
DFF
D
PRN
18
17
START
INPUT
VCC
CLRN
E1
E3
20
I<10
INPUT
VCC
2
OR2
AND2
DFF
D
PRN
Q
OUTPUT
7
E2
Q
OUTPUT
8
E3
19
21
CLRN
3
DFF
e2
D
As equações no editor de texto, serão :
PRN
CLRN
4
SUBDESIGN CALDAS_UC
(
CLKUC, RES : INPUT;
START, CONT :INPUT;
CLRN : OUTPUT;
OE : OUTPUT;
ALUSEL0, ALUSEL1, ALUSEL2 : OUTPUT;
)
Variable
E[4..1] : DFF;
Begin
E[].CLK=CLKUC;
E[1] = (E4&CONT # E1&!START) # RES;
E[2] = (E1&START)&!RES;
E[3] = (E2 # E4&!CONT)&!RES;
E[4] = E3&!RES;
CLRN = E2&!RES;
ALUSEL0 = vcc;
ALUSEL1 = vcc;
ALUSEL2 = gnd;
OE = E4;
END;
A simulação da U.C, é apresentada a seguir.
Pág.27
Manual - Tutorial
Prof. Luís Caldas
A implementação do sistema digital completo é mostrado a seguir.
A simulação do sistema digital completo será :
Pág.28
Manual - Tutorial
Prof. Luís Caldas
APENDÍCE A – PLACA UP1
Pág.29
Manual - Tutorial
Prof. Luís Caldas
APÊNDICE B - DISPLAYS DA PLACA UP1
Pág.30
Manual - Tutorial
Prof. Luís Caldas
APÊNDICE C - SINAIS DE ENTRADA E SAÍDA DA PLACA UP1
Referências :
1. Prof. Edson Lemos Horta - Apostila de aula de sistemas digitais.
2. Prof.a Maria Claudia F. de Castro – Apostila de aula de sistema digitais.
3. Tutotial do MAXPLUS II – ALTERA.
Pág.31
Download

APLICAÇÕES com EPLDs Usando software MAXPLUS