Professional Documents
Culture Documents
1. Objetivos:
Esta aula prática tem como objetivo promover a familiarização dos alunos com:
multímetros;
fontes de alimentação;
realização de montagens de sistemas eletrônicos simples em protoboard;
utilização e manuseio de dispositivos eletrônicos básicos (LEDs, Chaves,
resistores).
2. Material utilizado:
Matriz de contatos ou Protoboard`
4 Resistores
4 LEDS
Multímetro
barra de pinos
jumpers
dip switchs
fonte
cabos
fios
sd1.doc 1
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aula: 1 Montagem e medição de sistemas eletrônicos elementares
As filas horizontais superior e inferior geralmente são deixadas para ligar a alimentação.
Existem protoboards com uma ou mais filas superiores e inferiores. A coluna de 5 furos
superior não é interligado com a inferior.
A região central da matriz de contato é dividida em filas verticais que contém cinco furos que
são interligados eletricamente entre si (vide figura 2). Assim todos os furos de uma mesma fila
estão interligados entre si.
5. Atividade Prática:
Sinais elétricos são analógicos, o que significa que eles podem assumir um número infinito de
níveis de tensão. No entanto, tratando um sinal elétrico como um sinal digital (binário), ou seja,
o sinal é visto como tendo apenas dois valores possíveis (por exemplo: sinal de alta tensão e
sinal de baixa tensão). Isso nos permite a criação de circuitos digitais normalmente
encontrados em diversos dispositivos processados tais como celulares, máquinas de calcular,
computadores, câmeras digitais, etc.
Essa prática fornece uma primeira introdução aos circuitos básicos usando sinais digitais.
As tarefas a serem exigidas dos alunos estão descritas nos itens seguintes.
5.1. Experimento 1
Neste experimento, um circuito eletrônico será utilizado para representar os níveis lógicos de
um sinal binário por meio da informação luminosa fornecida por um diodo emissor de luz (LED).
O nível lógico 1 será representado pela emissão de luz, enquanto que o nível lógico 0 será
representado pela ausência de luz.
A montagem do experimento deverá ser realizada da seguinte forma:
a) Utilizando o protoboard, crie um barramento para VCC e um barramento para GND,
sendo VCC = 5V (nível lógico 1) e GND = terra (nível lógico 0);
b) Conecte o catodo de um LED ao barramento GND;
c) Conecte uma das pontas da chave ao anodo do LED por meio de um resistor R
(conforme mostra a figura 3), projetado de forma a limitar a corrente através do LED
em aproximadamente 20mA.
sd1.doc 2
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aula: 1 Montagem e medição de sistemas eletrônicos elementares
Chave R
Entrada
E
LED
5.2. Experimento 2
Neste experimento um circuito eletrônico capaz de gerar e representar palavras binárias de 4
bits será implementado utilizando como elemento de visualização o LED e como chaves um
DIP switch de 4 posições conectado a barramentos de VCC.
a) Utilizando o protoboard, conecte o DIP switch de forma que cada elemento deste
apresente um sinal de 5V (nível lógico ‘1’) ou 0V (nível lógico ‘0’) dependendo da
posição da chave;
b) Conecte cada pino de uma extremidade do DIP switch um LED, de forma a se criar
uma configuração catodo comum, ou seja, com todos os catodos ligados a terra.
c) A Figura 2 mostra um desenho esquemático da montagem a ser feita;
1 DIP switch
0
LEDs
5.3. Experimento 3
Monte um circuito com uma porta lógica OR, somente usando chaves, que receba como
entrada uma combinação qualquer binária gerada pelas chaves e produza o resultado binário
visível com auxílio de um LED. Lembre que chave fechada, deixa conduzir corrente (pode
representar nível lógico 1) e chave aberta não deixa passar corrente (pode representar nível
lógico 0).
sd1.doc 3
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aula: 1 Montagem e medição de sistemas eletrônicos elementares
Apêndice
Displays de 7 segmentos e identificação de LEDS
sd1.doc 4
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aula: 2 Montagem com Portas Lógicas TTL
OBJETIVOS
Esta aula prática tem como objetivo apresentar aos alunos as portas lógicas TTL (Transistor-Transistor Logic).
Através de montagens eletrônicas simples no protoboard, deverão ser verificados o funcionamento e a tabela
verdade do CI TTL escolhido.
Ao fim da aula o aluno deverá ser capaz de implementar projetos básicos de sistemas eletrônicos utilizando
circuitos integrados (CIs) TTL.
MATERIAL UTILIZADO
Nesta aula, os seguintes materiais serão utilizados:
1
FIGURA 1: Famílias lógicas
1
Figura extraída do “Logic Guide” da Texas Instruments, disponível em www.ti.com > products > logic.
1/6
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aula: 2 Montagem com Portas Lógicas TTL
INTRODUÇÃO
As portas lógicas são os componentes usados para a construção de qualquer função lógica de n entradas e m
saídas. Uma porta lógica pode ser constituída pelos seguintes elementos: transistores, diodos, resistores e
capacitores. A constituição de uma porta lógica depende da tecnologia empregada na sua construção. Portas
lógicas são agrupadas em um único chip (também conhecidos como circuitos integrados ou simplesmente CIs).
Cada CI é fabricado obedecendo a certas características próprias do processo de fabricação. A maneira com a qual
os elementos que constituem as portas lógicas do CI são interligados e fabricados determina o que chamamos de
família lógica. À medida que a tecnologia evolui, novas famílias são criadas, como mostra a Figura 1, com objetivos
diversos, como menor consumo, maior velocidade, maior imunidade a ruído, compatibilidade com tensões de
baterias, live insertion (instalação e remoção de placas de circuito com o equipamento em funcionamento),
casamento de impedância, etc.
As famílias lógicas mais tradicionais e mais conhecidas são a TTL (Transistor-Transistor Logic) e a CMOS
(Complementary Metal-Oxide Semiconductor Logic). Os níveis lógicos praticados por estas duas famílias podem ser
visualizados na Figura 2. Trabalharemos nessa prática com CIs da família TTL e não entraremos em detalhe a
estrutura física dos circuitos TTL.
1
FIGURA 2: Níveis lógicos para as diversas famílias lógicas
2/6
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aula: 2 Montagem com Portas Lógicas TTL
A nomenclatura dos CIs da família TTL, encontrada impressa sobre cada chip, segue o padrão de numeração
74YYYXXX para a versão comercial. Normalmente entre o número 74 e os números restantes do chip XXX
encontram-se de zero a três “YYY”, que servem para caracterizar subfamílias com especificações de freqüência de
operação (velocidade de chaveamento), consumo de potência e margem de ruído próprias (por exemplo: F, AC,
ACT, HC, ABT, etc.). Os números simbolizados como XXX determinam a função lógica que as portas do chip
executam.
A família lógica TTL que iremos usar em laboratório funciona com uma tensão de alimentação DC de 5V. As
especificações típicas de uma família lógica são dadas pelas medidas mostradas na tabela a seguir:
Os valores das grandezas listadas na tabela acima para a família TTL de 5V são encontradas no manual do
2
fabricante do chip, conhecido como TTL databook . Os parâmetros acima servem para guiar o projetista na
escolha correta de componentes para o seu projeto.
Um importante parâmetro que deve ser levado em conta no projeto de circuitos digitais é o conhecimento da
margem de ruído da família lógica (mais especificamente da porta lógica) que você estará usando em seu projeto.
A margem de ruído, ilustrada na Figura 3, é definida como o máximo desvio permissível aos níveis de entrada de
uma porta sem que haja mudança da percepção do nível lógico esperado. É desejável que a margem de ruído seja
a mesma para os níveis lógicos 0 e 1. A margem de ruído de uma porta lógica é calculada da seguinte forma:
• Margem de ruído para o nível lógico “1” = Voh – Vih (onde “o”=output, “i”=input e “h”=high)
• Margem de ruído para o nível lógico “0” = Vil – Vol (onde “l” = low)
A partir da fórmula de cálculo acima, identifique visualmente a faixa correspondente à margem de ruído no
diagrama da Figura 2 para a família TTL de 5V. Esta figura também traz uma tabela que visa responder, baseado
nas margens de ruído para os níveis alto e baixo a compatibilidade entre diversas famílias (no alto à direita da
figura).
2
O documento de especificação de um determinado componente eletrônico é usualmente conhecido como
datasheet ou folha de especificações. A coleção de datasheets de componentes de uma mesma família é
usualmente denominado databook.
3/6
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aula: 2 Montagem com Portas Lógicas TTL
FIGURA 3: Margem de ruído para níveis lógicos alto e baixo, respectivamente Vnh e Vnl.
FAN-IN:
O fan-in também
ambém chamado de fator de carga da entrada de uma porta lógica de uma dada subfamília. Os circuitos
lógicos necessitam de uma determinada corrente em cada uma de suas entradas, para que possam interpretar
corretamente os níveis lógicos 0 e 1. Portas lógicas com um alto fan-in tendem a ser mais lentas que portas lógicas
com baixo fan-in. Esse parâmetro está
est relacionado à capacitância de entrada do dispositivo.
O fan-in refere-se aos valores de corrente de entrada que você levantou na tabela anterior. Esses valores recebem
o nome de carregamento da unidade (ou ( U.L. Unit Load) e determinam as correntes necessárias na entrada, para a
ativação da porta lógica da família considerada.
a) Quando
uando em nível lógico 0, por uma única entrada flui uma corrente de Iil (onde “i”=input,
“ “l”=low).
b) Quando em nível lógico 1,, por uma única entrada flui uma corrente de Iih (onde “h”=high).
“
Desta forma, podemos dizer que 1 U.L. para a família TTL corresponde a:
FAN-OUT:
Fan-out é o parâmetro de projeto que se refere à saída de uma porta lógica. Esse parâmetro indica o número de
portas lógicas que podem ser conectadas
conectada à saída de uma porta lógica sem causar distorções ou prejudicar o
comportamento lógico do circuito. Calcula-se
Calcula da seguinte forma:
4/6
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aula: 2 Montagem com Portas Lógicas TTL
• quando em nível lógico 0, o fanout é calculado substituindo-se Iout por Iol e Iin por Iil.
• quando em nível lógico 1, o fanout é calculado substituindo-se Iout por Ioh e Iin por Iih.
ATRASO DE PROPAGAÇÃO
Por fim, o último parâmetro importante no projeto de circuitos digitais é o tempo de propagação ou tempo de
atraso de propagação de uma porta lógica. Esse parâmetro é definido como o tempo de retardo entre a mudança
de nível na entrada e a correspondente mudança de nível na saída. O tempo de propagação total de um circuito
digital é a soma total dos tempos das portas em série.
PRÉ-RELATÓRIO
Um pré-relatório deverá ser entregue no início desta aula prática. Esse pré-relatório deverá conter:
Uma breve dissertação com a comparação das famílias TTL e CMOS quanto a:
• A marca do fabricante do CI escolhido e sua família (YYY = AC, ACT, HC, LS, F, etc.)
• O valor da tensão de alimentação dos chips, nominal (= de operação) e máxima ;
• A capacidade máxima de fornecimento de corrente na saída (current sourcing – nível lógico 1).
• A capacidade máxima de absorção de corrente pela saída (current sinking – nível lógico 0).
• A tabela verdade do dispositivo escolhido;
Preencha os valores das grandezas listadas na Tabela 1. Se o datasheet do fabricante não os fornecer, procure o
datasheet de outro fabricante do mesmo CI que os forneça. A partir de tais valores calcule e informe:
3
Acesse http://www.electronics-lab.com/downloads/datasheets/ttl.html ou
5/6
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aula: 2 Montagem com Portas Lógicas TTL
Apresente os diagramas de montagem (desenho de circuitos) para cada experimento descrito no item seguinte,
explicitando no seu desenho os pinos dos CIs. Apresente todas as tabelas verdades pedidas na descrição dos
experimentos.
PARTE PRÁTICA
A parte experimental da aula é composta por dois experimentos, os quais são descritos abaixo.
EXPERIMENTO 1
Este experimento consiste na montagem, em protoboard, de circuitos lógicos utilizando CIs TTL para verificação do
seu funcionamento, bem como da tabela verdade das portas lógicas implementadas.
Sinais de 5 V serão aplicados às entradas das portas lógicas para representar o nível lógico 1, e sinais de 0 V serão
utilizados para representar o nível lógico 0.
A saída de cada porta lógica deverá ser conectada a um LED em série com uma resistência (recomenda-se um valor
entre 330Ω e 470Ω). Baseado na lógica desejada e nas limitações de corrente do CI, você deverá tomar a decisão
de qual polo do LED (anodo ou catodo) deverá ser ligado à saída do CI e a qual polo da alimentação (terra ou 5V)
você irá ligar o resistor. Desenhe um esquema elétrico do circuito e monte-o.
Todas as possíveis combinações de níveis lógicos nas entradas das portas lógicas deverão ser testadas de modo
que seja verificada a validade das tabelas verdade do CI.
EXPERIMENTO 2
4
Neste experimento os alunos deverão projetar e testar um circuito que implemente a função F = A⊕B⊕C . Qual
seria uma possível aplicação para esse circuito digital? A tabela verdade dessa função primeiramente deve ser
obtida via álgebra booleana e em seguida deve ser verificada experimentalmente por meio de testes realizados
com o circuito.
6/6
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aula 3: Projeto e Simulação de Circuitos Combinacionais com Quartus II (esquemáticos)
OBJETIVOS:
Esta aula prática tem como objetivo promover a familiarização dos alunos com:
MATERIAL UTILIZADO:
• Computador com softwares a seguir instalados:
o Altera Quartus II, Ver. 11.1, Service Pack 2 – Web Edition, gratuita, compatível com a usada no
1
laboratório , disponível em https://www.altera.com/download/software/quartus-ii-we/11.1sp2.
2
o QSim - Quartus II Simulator Tools for Education, gratuito, compatível com o usado no laboratório ,
• Kit didático de lógica programável marca EXSTO (http://www.exsto.com.br), modelo XD301 com CPLD da
família MAX3000A, modelo EPM3064ALC44-10.
•
3
Gravador USB Blaster e cabo USB e Arquivo “Tutorial_quartus2_v1-3.pdf”.
ATIVIDADES PRÁTICAS:
1. Crie uma pasta no PC chamada Aula3 (evite rodar projetos a partir do pen-drive para não conflitar com o USB
Blaster). Crie nela um subdiretório denominado “Bloco1”. Crie dentro dele um projeto chamado Block1. Será
criado o arquivo Block1.qpf (Quartus Project File).
2. Crie um arquivo tipo “Block Diagram/Schematic File” e salve este arquivo com o mesmo nome base do
projeto, isto é, Block1.bdf (Block Diagram File). Usando o mesmo nome, fazemos com que este arquivo seja
4
visto pelo projeto Block1.qpf como o topo da sua hierarquia de projeto .
3. Crie nesse único diagrama esquemático todas as funções lógicas a seguir a partir dos mesmos sinais A e B de
entrada:
S1 = A XOR B S2 = A AND (NOT B) S3 = (NOT A) OR (NOT B)
1
Consulte a página de “Design Software” da Altera (https://www.altera.com/download/software/quartus-ii-we) para obter versões anteriores
à versão mais atual. Para evitar conflitos de versão, dê preferência à instalação da mesma versão instalada no laboratório.
2
A partir da versão 11.1 do Quartus II Web Edition, a ferramenta de simulação QSim está incluída no pacote, mas é uma ferramenta separada.
Estando no Windows, você pode abri-la usando a linha de comando “quartus_sh -- qsim” precedida, se necessário, do caminho de instalação do
Quartus, por exemplo, “c:\altera\11.1sp2\quartus\bin\quartus_sh -- qsim”. Caso necessite baixar diretamente o QSim, ele está disponível em
http://www.altera.com/education/univ/software/qsim/unv-qsim.html (atenção para a escolha adequada do “Filter Materials” – VHDL e versão
11.1 para o Quartus II).
3
O driver da USB Blaster está disponível no link www.cpdee.ufmg.br/~hermes/sd. Geralmente não é necessário baixá-lo, pois ele já vem com o
software Quartus II da Altera e só é necessário se você for programar o kit a partir de sua máquina, restando apenas configurá-lo.
4
Para a compilação do projeto, deve existir um arquivo de hierarquia máxima com o mesmo nome base do projeto.
sd3.docx 1/2
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aula 3: Projeto e Simulação de Circuitos Combinacionais com Quartus II (esquemáticos)
4. Inicialmente, a denominação lógica dos sinais de entrada e saída é feita automaticamente pelo software
(pin_name1, pin_name2, etc.). Renomeie os sinais para “A”, “B”, “S1”, “S2” e “S3”. Lembre-se que os nomes
devem ser únicos. Nomes iguais para pinos ou nós diferentes serão interpretados como ligações internas
entre os respectivos pinos/nós.
5. Compile o projeto.
6. Atribua os pinos físicos do projeto aos respectivos pinos lógicos conforme a tabela a seguir:
Sinal (lógico) Pino (físico)
A PIN_21
B PIN_24
S1 PIN_8
S2 PIN_6
S3 PIN_5
7. Crie um arquivo de simulação para verificar o correto funcionamento do projeto. Simule o projeto.
8. Grave o projeto no Kit e verifique na prática se o resultado obtido está correto.
9. Uma vez testado seu projeto, crie um componente a partir do seu diagrama recém testado:
a) Para construir componentes usando o diagrama esquemático: selecione o diagrama (clique sobre ele) e
gere seu símbolo (vá em File > Create\Update > Create Symbol File for Current File). Salve o arquivo
“Bloco1.bsf” (Block Symbol File).
b) Daí você pode inserir várias instâncias de seu circuito recém criado como componentes em seu projeto
atual ou em outros projetos maiores através do ícone de inserção de componentes no esquemático
(Symbol Tool): no projeto atual, ao invés de procurar o símbolo a ser inserido no item "Libraries", você vai
encontrar seu novo componente Block1 no item "Project". Confira.
10. Crie um novo projeto que usa o componente que você acabou de criar:
a) Crie um subdiretório “UsaBloco1” no diretório Aula3. Usando o New Project Wizard, crie um projeto neste
subdiretório chamado UsaBlock1.
b) Na etapa seguinte à denominação do projeto, o campo “File name” está lá para você acrescentar os
5
arquivos a serem usados no projeto. Inclua o diagrama Block1.bdf que você criou anteriormente .
c) Para ficar visível, resta incluir o arquivo de símbolo correspondente ao diagrama. Clique na ferramenta
“Symbol tool”, e ao invés de procurar o símbolo a ser inserido no item "Libraries", você vai no item
"Name" e procura seu projeto na forma de um arquivo de símbolo (arquivo com extensão .bsf ou .sym
que você gerou).
d) Para tudo compilar, é fundamental que seu novo projeto contenha o arquivo com o outro projeto de
portas lógicas que você desenvolveu na primeira parte (arquivo com extensão .bdf). Se você não o fez no
passo “b” acima, faça-o agora usando a opção "Project > Add/Remove Files from Project".
11. Usando este novo projeto UsaBlock1 e o componente recém criado Block1, programe, compile, simule e teste
6
no kit a seguinte função lógica, conferindo sua tabela verdade com aquela deduzida no seu pré-relatório :
5
Se estiver fora do Project Wizard, você pode incluir e excluir arquivos do projeto usando a opção "Project > Add/Remove Files from Project".
6
Note que aqui você pode usar os nomes “A” e “B” sem entrar em conflito com os mesmos nomes usados no componente Block1 que criou.
sd3.docx 2/2
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aula: 4 Projeto e Simulação de Circuitos Combinacionais com Quartus II (desenvolvimento)
1. Objetivos:
Esta aula prática tem como objetivo promover a familiarização dos alunos com:
Elaboração de projeto de circuitos na forma de esquemáticos (diagrama em
blocos) no ambiente Quartus II – Altera.
Criação de componentes.
Simulação lógica e temporal do circuito gerado.
2. Material utilizado:
Microcomputador
Quartus II – Altera
4. Atividades no laboratório:
a) Esclarecimento de dúvidas com o professor.
b) Gravação, testes e validação do seu sistema no kit XD301.
c) Apresentação da sua situação problema para os demais alunos da classe.
1
Para construir componentes usando o diagrama esquemático: crie um arquivo de esquemático (vá em
File > New > Block Diagram & Schematic File) e depois que estiver pronto e testado, gere seu símbolo
(Vá em File > Create\Update > Create Symbol File for Current File). Daí você pode inserir várias
instâncias de seu circuito como componentes em outros projetos maiores através do ícone de inserção de
componentes no esquemático (Symbol Tool). Ao invés de procurar o símbolo a ser inserido no item
"Libraries", você vai no item "Name" e procura seu projeto na forma de um arquivo de símbolo (arquivo
com extensão .bsf ou .sym que você gerou). Para tudo compilar, resta ainda garantir que seu novo projeto
contenha o arquivo com o esquema (arquivo .bdf), o que você faz usando a opção "Project >
Add/Remove Files from Project".
sd4.docx 1
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aula 5: Projeto e Simulação de Circuitos Combinacionais Básicos em VHDL no Quartus II
OBJETIVOS:
Esta aula prática tem como objetivo promover a familiarização dos alunos com:
MATERIAL UTILIZADO:
• Computador com softwares a seguir instalados:
o Altera Quartus II, Ver. 11.1, Service Pack 2 – Web Edition, compatível com a usada no
1
laboratório , disponível em https://www.altera.com/download/software/quartus-ii-we/11.1sp2.
2
o QSim - Quartus II Simulator Tools for Education , compatível com o usado no laboratório ,
• Kit didático de lógica programável marca EXSTO (http://www.exsto.com.br), modelo XD301 com
CPLD da família MAX3000A, modelo EPM3064ALC44-10.
• Gravador USB Blaster e cabo USB.
LEITURA RECOMENDADA
1. Estudar a seção 9.1 e 9.2 do livro do Frank Vahid.
2. Estudar a bibliografia complementar, Capítulo 19, itens 19.1 a 19.11 do livro “Eletrônica Digital
Moderna e VHDL” de Volnei Pedroni, Editora Campus Elsevier, 2010.
3. Consulte se necessário material didático de seminários sobre VHDL e o VHDL Cookbook.
4. Leia o item 6 do Arquivo “Tutorial_quartus2_v1-3.pdf”, que mostra como criar um arquivo
VHDL no Quartus II.
INTRODUÇÃO
Em VHDL, código comportamental é de execução sequencial, programado dentro de construções como
“PROCESS”, por exemplo. Nele, as sentenças têm uma sequência de execução similar a um programa de
[3]
computador , declaram-se variáveis (keyword “VARIABLE”) locais para uso interno ao “PROCESS” e os
sinais (criados previamente com a keyword “SIGNAL” ou como itens da interface “ENTITY”) são
usualmente carregados uma única vez, sendo usados para sinalizar o resultado final do processo sobre
os circuitos externos à estrutura. Dentro de um “PROCESS” são válidas as construções sintáticas “IF”,
“CASE”, “LOOP” e “WAIT”. Uma vez que o processamento entrar em um “PROCESS”, todas as sentenças
serão avaliadas, independente dos estímulos. Daí dizer-se que o código nesse caso é “sequencial”.
1
Consulte a página de “Design Software” da Altera (https://www.altera.com/download/software/quartus-ii-we) para obter
versões anteriores à versão mais atual. Para evitar conflitos de versão, dê preferência à instalação da mesma versão instalada no
laboratório.
2
A partir da versão 11.1 do Quartus II Web Edition, a ferramenta de simulação QSim está incluída no pacote, mas é uma
ferramenta separada. Estando no Windows, você pode abri-la usando a linha de comando “quartus_sh -- qsim” precedida, se
necessário, do caminho de instalação do Quartus, por exemplo, “c:\altera\11.1sp2\quartus\bin\quartus_sh -- qsim”. Caso
necessite baixar diretamente o QSim, ele está disponível em http://www.altera.com/education/univ/software/qsim/unv-
qsim.html (atenção para a escolha adequada do “Filter Materials” – VHDL e versão 11.1 para o Quartus II).
3
Atente para o fato de que na síntese de circuitos, você não pode contar com os resultados das operações envolvendo SIGNAL
dentro da estrutura PROCESS, pois a atualização nas modificações dos sinais somente acontece ao final da execução da estrutura.
Esta característica diferencia substancialmente esta programação da programação de computadores convencional, daí a palavra
“similar”.
sd5.docx 1
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aula 5: Projeto e Simulação de Circuitos Combinacionais Básicos em VHDL no Quartus II
Prepare um pré-relatório por grupo antecipando a implementação no Quartus II dos códigos VHDL
previstos para implementação em sala (“Atividades no Laboratório” – descritas a seguir) com suas
respectivas simulações, RTL e Technology map viewers e quantidade de macrocélulas utilizadas.
Apresente o pré-relatório impresso ao professor no dia da aula.
ATIVIDADES NO LABORATÓRIO:
a) Programe em VHDL um componente que faça o papel de um decodificador BCD / display de 7
segmentos usando o comando WITH SELECT. Simule, grave e teste o sistema implementado.
Responda: este código é estrutural ou comportamental?
b) Programe em VHDL outro componente que produza o comportamento da tabela abaixo, usando
exclusivamente o comando WHEN ELSE. Simule, grave e teste o sistema implementado. Responda:
este código é estrutural ou comportamental?
sd5.docx 2
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aula 6: Projeto e Simulação de Circuitos sequenciais básicos na forma de esquemáticos
(flip-flops e latches)
OBJETIVOS:
Esta aula prática tem como objetivo promover a familiarização dos alunos com:
MATERIAL UTILIZADO :
Gravador USB Blaster, cabo USB e computador com softwares a seguir instalados:
o Altera Quartus II, Ver. 11.1, Service Pack 2 – Web Edition, compatível com a usada no
1
laboratório , disponível em https://www.altera.com/download/software/quartus-ii-we/11.1sp2.
2
o QSim - Quartus II Simulator Tools for Education , compatível com o usado no laboratório ,
Kit didático de lógica programável marca EXSTO (http://www.exsto.com.br), modelo XD301 com
CPLD da família MAX3000A, modelo EPM3064ALC44-10.
INTRODUÇÃO
Circuitos digitais sequenciais são circuitos em que a(s) saída(s) depende(m), além de uma combinação
das entradas, também do estado em que o sistema se encontra no momento anterior à mudança de
nível lógico (instante atual “i”), ou seja, do valor que as suas saídas se encontravam em um instante t(i-
1). O circuito sequencial mais elementar é chamado flip-flop. O flip-flop ou multivibrador biestável é um
circuito digital capaz de funcionar como uma memória de um bit. Um circuito de lógica bem simples,
capaz de armazenar um bit usando apenas duas portas lógicas NOT e um braço de realimentação, é
mostrado na Figura 1. Neste circuito, para armazenar um dado precisaríamos abrir o laço de
realimentação e colocar manualmente a entrada no nível lógico desejado, reconectando a
realimentação em seguida. Daí a conexão de entrada poderia ser removida, ficando a informação
armazenada no circuito em Q. Esta alteração manual do circuito é um inconveniente, portanto usamos
portas inversoras de duas entradas, como portas NAND (ou portas NOR), como ilustrado na Figura 2.
1
Consulte a página de “Design Software” da Altera (https://www.altera.com/download/software/quartus-ii-we) para obter
versões anteriores à versão mais atual. Para evitar conflitos de versão, dê preferência à instalação da mesma versão instalada no
laboratório.
2
A partir da versão 11.1 do Quartus II Web Edition, a ferramenta de simulação QSim está incluída no pacote, mas é uma
ferramenta separada. Estando no Windows, você pode abri-la usando a linha de comando “quartus_sh -- qsim” precedida, se
necessário, do caminho de instalação do Quartus, por exemplo, “c:\altera\11.1sp2\quartus\bin\quartus_sh -- qsim”. Caso
necessite baixar diretamente o QSim, ele está disponível em http://www.altera.com/education/univ/software/qsim/unv-
qsim.html (atenção para a escolha adequada do “Filter Materials” – VHDL e versão 11.1 para o Quartus II).
sd6.docx 1
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aula 6: Projeto e Simulação de Circuitos sequenciais básicos na forma de esquemáticos
(flip-flops e latches)
Os circuitos sequenciais são usados para armazenar resultados temporários, dividir frequências, fazer
contagens sequenciais ou contagens aleatórias pré-programadas, além de servirem como circuitos para
deslocar palavras binárias de forma serial. Nessa aula vocês estudarão o comportamento dos flip-flops
que são usados na construção de todos os circuitos sequenciais dados como exemplo nesse parágrafo.
Flip-flop RS (Reset/Set);
Flip-flop D (Delay) também conhecido simplesmente como latch;
Flip-flop JK (em homenagem a Jack Kilby seu projetista) ;
Flip-flop T (Toggle).
O Latch RS (Reset/Set) mostrado na Figura 2, construído com portas NAND, garante na sua saída Q o
nível lógico 1 (Set ou “ajustar”), se a entrada S estiver em 1 e a entrada R estiver em 0. O flip-flop RS
garante na sua saída Q o nível lógico 0 (Reset ou “reajustar”), se a entrada R estiver em 1 e a entrada S
estiver em 0. Se ambas as entradas S e R estiverem em 1 a saída não se modifica, ou seja, mantém o
valor de Q que tinha guardado no instante imediatamente anterior às entradas mudarem para R=S=1.
Se, entretanto, ambas as saídas S e R estiverem em 0, nenhum comportamento particular é garantido
(estado proibido, seguido de instabilidade quando R e S retornam juntos a 1).
Na Figura 3 observa-se um Latch RS com a inclusão de uma terceira entrada de controle C (habilitação
ou enable). Trata-se de um Latch RS cujo instante da mudança de estado pode ser controlado, por
exemplo, por um sinal temporizado por um relógio (ou clock). O diagrama lógico do novo Latch RS é
mostrado na Figura 3.
sd6.docx 2
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aula 6: Projeto e Simulação de Circuitos sequenciais básicos na forma de esquemáticos
(flip-flops e latches)
Note que há uma nova inversão no caminho de S e de R na Figura 3. Reavalie o comportamento deste
circuito para diferentes valores de R, S e C comparando-o com o circuito da Figura 2.
Os latches são sensíveis ao nível dos sinais de entrada e controle. Já os flip-flops são sensíveis à borda do
[3]
sinal de controle . Flip-flops D e latches D são circuitos lógicos sequenciais que têm por objetivo
memorizar dados aplicados na sua entrada. Latches D podem ser construídos a partir de Latches RS com
entrada de controle, bastando que façamos com que a entrada S do Latch RS receba a entrada D e a
entrada R receba D’.
As entradas de controle nos permitem construir flip-flops que variam seu comportamento lógico
(mudança de estado) de duas formas distintas:
Flip-flops com entradas sensíveis à borda de transição do sinal de controle (Figura 4). Podem ser
sensíveis à borda de subida ou à borda de descida do sinal de controle, onde o sinal de controle é
normalmente um sinal de relógio ou clock (edge triggered flip-flops). O dado é armazenado e
colocado na saída na mesma borda do relógio, a menos de atraso de portas. A sensibilidade à borda
é disponibilizada dentro do integrado por um circuito eletrônico específico para esse fim.
FIGURA 4: Um flip-flop D gatilhado pela borda de subida do clock (circuito interno simbolizado por: >)
Flip-flops formados por dois latches em dois estágios, por exemplo latches D em configuração
mestre-escravo ou master-slave (Figura 5): durante o primeiro nível lógico, o dado se propaga da
entrada para a saída do primeiro estágio (mestre) e o segundo estágio (escravo) não o lê, pois está
armazenando o dado anterior. Na mudança para o nível oposto do sinal de controle, enquanto o
mestre mantém seu dado armazenado, ele permite que tal dado se propague para a saída do
escravo. Quando o sinal de controle retornar mais uma vez para o nível lógico anterior, o escravo
estará armazenando o último dado lido, enquanto o mestre armazena o novo dado na sua entrada
e o ciclo se repete. O resultado global visto de fora desse bloco é um comportamento de
sensibilidade à borda.
[4]
Flip-flops JK também podem ser construídos a partir de Latches RS. Se o leitor fez a análise
comparativa sugerida entre a Figura 2 e a Figura 3, agora sabe que – mesmo com entrada de controle –
a condição de instabilidade permanece (S=1 e R=1 na Figura 3). No caso de flip-flops JK com transição
sensível à borda e de flip-flops JK mestre-escravos com sua atualização em dois eventos de transição
distintos, o problema do estado instável pode ser solucionado da seguinte forma: em primeiro lugar,
3
O autor Frank Vahid classifica em seu livro “Sistemas Digitais, Projeto, Otimização e HDLs” os latches como sensíveis ao nível e os
flip-flops como sensíveis à borda do sinal de clock, embora esta definição não seja consenso na área.
4
O nome JK vem de homenagem a “Jack Kilby”, engenheiro da Texas Instruments e inventor do Circuito Integrado em 1958.
sd6.docx 3
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aula 6: Projeto e Simulação de Circuitos sequenciais básicos na forma de esquemáticos
(flip-flops e latches)
usam-se as saídas opostas Q e Q’ para habilitar apenas aquela entrada que comandará uma alteração de
estado (mudança de estado = toggle). A condição de corrida é controlada pelo mecanismo de transição
síncrona de estado empregado:
No caso do flip-flop (sensível à borda do clock e não ao nível), os atrasos de propagação do novo
estado através das portas do circuito se encarregam de eliminar a instabilidade, pois o novo estado
chega atrasado à entrada, isto é, após a borda ativa do clock.
FIGURA 5: Flip-flop RS Mestre-Escravo: entradas de clock CP1 e CP2, onde CP2 = CP1’
Flip-flops T ( toogle) podem ser construídos facilmente a partir de flip-flops JK, bastando para isso que as
entradas J e K sejam curto-circuitadas em uma única entrada T. Este tipo de flip-flop é muito usado em
circuitos seqüenciais tais como divisores de freqüência e contadores.
sd6.docx 4
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aula 6: Projeto e Simulação de Circuitos sequenciais básicos na forma de esquemáticos
(flip-flops e latches)
ATIVIDADES NO LABORATÓRIO :
a) Implemente na forma de um componente o flip-flop RS da Figura 3 e verifique seu comportamento
lógico via simulação temporal.
b) Aplique uma onda quadrada de freqüência muito baixa na entrada C do circuito do item (a) e faça
variar as entradas RS de modo que você observe o comportamento do circuito. Monitore o
funcionamento do circuito via simulação e implementação no kit XD301.
c) Implemente na forma de um componente o flip-flop D a partir do flip-flop RS item (a) e verifique seu
comportamento lógico. Teste-o no kit XD301.
sd6.docx 5
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aula 7: Integração Diagrama e VHDL estrutural/comportamental (desenvolvimento)
OBJETIVOS:
Esta aula prática tem o objetivo de promover a familiarização dos alunos com:
MATERIAL UTILIZADO:
INTRODUÇÃO:
Na aula 5 o grupo implementou dois exemplos em codificação estrutural, usando as construções “WITH-
SELECT” e “WHEN-ELSE”. Nesta prática, você irá construir um mesmo projeto, mas usando as duas
formas de codificação: estrutural e comportamental.
1
Note que na síntese de circuitos, você não pode contar com os resultados das operações envolvendo SIGNAL dentro da estrutura
PROCESS, pois a atualização nas modificações dos sinais somente acontece ao final da execução da estrutura. Esta característica
diferencia substancialmente esta programação da programação de computadores convencional, daí a palavra “similar”. Na síntese
de circuitos, apenas as modificações nas variáveis (de caráter temporário, declaradas como “VARIABLE”) acontecem dentro da
estrutura PROCESS.
sd7.docx 1/3
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aula 7: Integração Diagrama e VHDL estrutural/comportamental (desenvolvimento)
Como você ainda não lidou neste curso com codificação comportamental em VHDL (i.e. usando process),
vamos dar uma olhada mais de perto, para ressaltar que você não deve perder de vista que está
codificando hardware, e não software convencional. O código a seguir na Figura 1-A visa implementar
uma porta AND de 3 entradas usando código comportamental. No entanto, ao invés de obter a função
mostrada na Figura 1-(B), obtemos a função incorreta mostrada na Figura 1-(C). Se você duvida,
programe no Quartus, simule seu comportamento no QSim e verifique a implementação no RTL-Viewer.
Note que um “latch” foi instanciado inadvertidamente 2 , não só prejudicando o funcionamento
esperado para o circuito, mas também ocupando mais recursos da CPLD, desnecessariamente.
(B)
(C)
(A)
FIGURA 1: Implementação INCORRETA de uma porta AND de três entradas usando código comportamental.
ATIVIDADES DO PRÉ-RELATÓRIO:
2
A Seção 19.5 do Livro “Eletrônica Digital Moderna e VHDL” (autor: Volnei Pedroni, Ed. Campus, 2010) traz uma tabela (Figura
19.7) que explicita as condições para a inferência de registradores pelo compilador VHDL na abribuição de SIGNAL e VARIABLE.
sd7.docx 2/3
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aula 7: Integração Diagrama e VHDL estrutural/comportamental (desenvolvimento)
f) Integre o novo Módulo 2 desenvolvido no item (e) com o elemento de memória (Módulo 1),
produza um arquivo de simulação (ou aproveite o arquivo .vwf já existente) e valide o novo sistema
através de simulação usando o QSim.
g) Prepare e mostre ao professor no dia da aula um pré-relatório por grupo, apresentando sua solução
criativa – itens (c) até (f) – na forma dos seguintes itens:
ATIVIDADES NO LABORATÓRIO:
h) Esclarecimento de dúvidas com o professor.
i) Gravação e testes do seu sistema no kit XD301.
j) Apresentação da sua situação abordada e da solução adotada para os demais alunos da classe
(apenas no kit).
k) Por ser uma atividade avaliativa, o grupo deverá entregar um relatório no Moodle até 24 horas
após a realização da aula prática correspondente, contendo as correções eventualmente
necessárias ocorridas na aula, documentando as atividades de (b) até (g).
sd7.docx 3/3
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aula 8: Circuitos Sequenciais Básicos: Registradores implementados em VHDL
OBJETIVOS:
Esta aula prática tem o objetivo de promover a familiarização dos alunos com:
MATERIAL UTILIZADO :
Microcomputador com software Quartus II – Altera – Web Edition.
Kit didático de lógica programável marca EXSTO (http://www.exsto.com.br), modelo XD301 com CPLD
da família MAX3000A, modelo EPM3064ALC44-10, Gravador USB Blaster e cabo USB.
INTRODUÇÃO:
Podemos descrever os flip-flops na forma da linguagem VHDL de forma muito simples. Basta acharmos uma
equação lógica que descreva seu comportamento no tempo, denominada “equação característica” do flip-
flop. Veja na Tabela 1 o exemplo para o caso do flip-flop JK. A partir da tabela de transição de estados do
flip-flop, obtemos a equação característica Q[t+1]=Q[t]K’[t]+Q’[t]J[t] após simplificação usando o mapa de
Karnaugh, onde as entradas são Q[t], J[t] e K[t]:
“Set”
Q[t+1]=Q[t]K’[t]+Q’[t]J[t]
A principal aplicação dos flip-flops tipo D são os registradores. As principais funções de um registrador são:
armazenar um valor binário qualquer, converter dados paralelo-serial ou serial-paralelo ou ainda deslocar
uma palavra binária.
D3 D2 D1 D0
D Q D Q D Q D Q
Clk
S3 S2 S1 S0
sd8.docx 1/4
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aula 8: Circuitos Sequenciais Básicos: Registradores implementados em VHDL
A primeira função descrita no parágrafo anterior é realizada por um registrador paralelo, que são circuitos
sequenciais que armazenam dados de um barramento (Figura 1). Na ocorrência de um evento de clock os
dados D3, D2, D1 e D0 são memorizados e ficam disponíveis nas saídas S3, S2, S1, S0 dos respectivos
registradores.
Clear
S D Q D Q D Q D Q
Clk
P3 P2 P1 P0
LEITURA RECOMENDADA
O aluno deve estudar o conceito de “Macrocélula”, essencial ao entendimento do funcionamento interno
de uma CPLD. Sugestões de pesquisa:
Para uma referência mais formal de derivação de equações características de flip-flops, o aluno pode
referir-se ao livro “Introdução aos sistemas digitais” de Milos D. Ercegovac (et al.), Editora Bookman, 2000.
b) Uma vez testados e funcionando, documente a estrutura interna da CPLD gerada para cada um dos flip-
flops pelo Quartus II, consultando-a em Tools > Netlist Viewers > RTL Viewer. Com base no seu estudo
das macrocélulas existentes na CPLD usada no kit (Figura 3), responda às perguntas:
sd8.docx 2/4
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aula 8: Circuitos Sequenciais Básicos: Registradores implementados em VHDL
ii. Qual foi a implementação mais “natural” de flip-flop observada para o chip em questão ?
Porque?
e) Escolha um dos tipos de flip-flop D acima – itens (c) ou (d) – e programe o registrador de deslocamento
de 4 bits da Figura 2.
f) Modifique o registrador de deslocamento do item (e) acima de forma que ele se comporte como um
registrador que realiza uma rotação da palavra armazenada para a direita, de uma posição a cada
evento de clock. Monitore as saídas P do circuito.
g) Modifique o circuito do item (e) para que apresente o comportamento temporal cíclico mostrado na
Tabela 2:
sd8.docx 3/4
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aula 8: Circuitos Sequenciais Básicos: Registradores implementados em VHDL
TABELA 2
0 0 0 0
1 0 0 0
1 1 0 0
1 1 1 0
1 1 1 1
0 1 1 1
0 0 1 1
0 0 0 1
0 0 0 0
Valide-os no Quartus II com simulação na modalidade temporal (“timing”). Os códigos dos flip-flops
desenvolvidos servirão como componentes básicos para a construção dos circuitos sequenciais desta aula
prática e da próxima aula. Traga todos os seus arquivos VHDL também para a próxima aula.
Prepare e apresente impresso ao professor no dia da aula um pré-relatório por grupo, apresentando os
itens a) até g) na forma dos seguintes itens:
1. Programas VHDL acompanhados dos respectivos circuitos gerados (disponível em Tools >
Netlist Viewers > RTL Viewer após a compilação)
2. Formas de onda da simulação (estímulos e saídas).
.
ATIVIDADES NO LABORATÓRIO :
h) Esclarecimento de dúvidas com o professor.
i) Gravação e testes dos seus circuitos no kit XD301.
j) Demonstração de funcionamento para avaliação pelo professor.
sd8.docx 4/4
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aula 9: Máquinas de Estados Finitos em VHDL – síntese, simulação e montagem
OBJETIVOS:
Esta aula prática tem o objetivo de promover a familiarização dos alunos com:
MATERIAL UTILIZADO :
Microcomputador com software Quartus II – Altera – Web Edition.
Kit didático de lógica programável marca EXSTO modelo XD301 com CPLD da família MAX3000A,
modelo EPM3064ALC44-10 e Gravador USB Blaster e cabo USB.
INTRODUÇÃO:
Uma forma padrão para a construção de qualquer rede seqüencial é a implementação canônica (ou
implementação de Huffman-Moore), que baseia-se na descrição dos estados de um sistema:
Esta implementação está ilustrada na Figura 1, e consiste em um registrador de estado e em uma rede
combinacional que implementa as funções de transição de estado G(⋅) e de saída H(⋅). Como trata-se de
um sistema síncrono, o sinal de clock determina o momento em que o novo estado é carregado no
registrador. A cada pulso periódico do clock, o “próximo estado” é carregado no registrador de estado e
permanece armazenado lá até a ocorrência de novo ciclo do clock, quando é feita nova atualização e
assim sucessivamente.
Reiniciar
G(⋅) e H(⋅)
Registrador de
Rede Combinacional
S[t] Próximo
estado
estado: Estado
S[t+1] atual: S[t]
Entrada
atual: X[t]
Saída
atual: Z[t]
Clock
Vimos anteriormente que para construir o registrador de estado, podemos utilizar qualquer um dos
diferentes tipos de flip-flops, mas o tipo escolhido irá influenciar na forma das funções lógicas G(⋅) e H(⋅).
Uma forma alternativa em VHDL é criar máquinas de estados finitos (FSMs – Finite State Machines) a
partir da definição de sinais que guardem os estados necessários. Para isso, podemos usar a palavra
reservada “type” para definir um novo tipo de sinal que irá assumir os estados necessários ao projeto.
Vamos desenvolver a seguir um exemplo de máquina de estado em VHDL usando esta técnica. O tipo de
flip-flop a ser usado – usualmente tipo D – será escolhido automaticamente pelo compilador, baseado
na arquitetura das macrocélulas do chip e dos algoritmos de simplificação empregados no processo.
sd9.docx 1/5
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aula 9: Máquinas de Estados Finitos em VHDL – síntese, simulação e montagem
Por isso, foi desenvolvida a metodologia de dois processos (TPM – two-process methodolgy).
Independente da complexidade do módulo, só dois processes são criados, que são o processo
combinacional e o processo registrador. Assim, o processo combinacional é sensível às mudanças das
entradas e das saídas dos registradores, enquanto o processo registrador é sensível ao clock e ao clear
(ou reset).
Vamos então realizar um circuito sequencial exemplo de um contador módulo 3 na forma canônica de
uma máquina de estado em VHDL, implementando os dois blocos da Figura 2 usando apenas dois
processos, um para o registrador de estado e outro para a rede combinacional.
sd9.docx 2/5
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aula 9: Máquinas de Estados Finitos em VHDL – síntese, simulação e montagem
Podemos criar um tipo para guardar os estados através da palavra chave type e programar um
process(clear,clk) para a parte sequencial (registradores) do modelo canônico, que atualiza o estado na
transição de clock ou no comando assíncrono de clear (Figura 4).
Por fim, um segundo process (x, estado_atual) implementa a rede combinacional a partir da entrada x e
do estado atual (Figura 5).
sd9.docx 3/5
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aula 9: Máquinas de Estados Finitos em VHDL – síntese, simulação e montagem
O projeto de máquinas de estados finitos (FSMs – Finite State Machines) se traduz então em um
procedimento de cinco passos:
Passo 1 – Capture o comportamento da FSM: desenhe o diagrama da FSM que descreva seu
comportamento.
Passo 2 – Crie a arquitetura. No caso de programação em VHDL você pode, por exemplo, definir a
arquitetura na forma canônica e usar o modelo de dois processos (TPM).
Passo 3 – Codifique os estados. No caso da metodologia TPM sugerida aqui, atribua estados usando a
palavra “type” em VHDL para definir um tipo que assume os estados desejados (a atribuição binária de
cada estado será feita automaticamente pelo compilador). Crie então um process (clear,clock) para
atualizar o estado.
Passo 4 – Crie a tabela de transição de estados e a tabela de saída: crie uma tabela-verdade para a lógica
combinacional de modo tal que a lógica irá gerar as saídas Z[t] e os sinais de próximo estado S[t+1] a
partir do estado atual S[t] e das entradas X[t]. Estas tabelas são a base para o projeto da lógica
combinacional – funções G(⋅) e H(⋅). Na construção desta rede combinacional, aplique métodos de
simplificação (mapas de Karnaugh, etc.) se necessário.
Passo 5 – Implemente a lógica combinacional usando qualquer método apropriado para tal função –
no caso da metodologia TPM citada, implemente um process(entradas, estado atual) para a rede
combinacional.
1
Figura 6: Sistema de Aquecimento de Água
1
Figura extraída do caderno de experiências do kit XD301 – Exsto Tecnologia LTDA
sd9.docx 4/5
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aula 9: Máquinas de Estados Finitos em VHDL – síntese, simulação e montagem
O mostrador de um relógio de pulso pode fornecer uma de quatro informações: hora atual,
alarme, cronômetro e data, que são controladas por dois sinais s1 e s0 (00 exibe a hora atual,
01 o alarme, 10 o cronômetro e 11 a data – assuma que s1 s0 controla um multiplexador de N
bits de largura que deixa passar os dados do registrador apropriado). Quando se pressiona um
botão B (o que faz B = 1), o próximo item da sequencia será exibido (se, no momento, o item
mostrado for a data, o próximo será a hora atual). Crie um diagrama de estados para uma FSM
que descreva esse comportamento de forma sequencial. A FSM terá um bit de entrada B e dois
bits de saída, s1 e s0. Sempre que o botão for pressionado, assegure-se de que ocorrerá o
avanço de apenas um item, independentemente de quanto tempo o botão permanece
pressionado; isto é, depois de ter avançado para o próximo item dentro da seqüência primeiro,
espere primeiro que o botão seja solto. Altere o código que você desenvolveu anteriormente
2
para o decodificador BCD / display 7 segmentos e use varredura nos 4 displays de 7 segmentos
do kit para mostrar as 4 situações propostas. Use nomes curtos, mas sugestivos para cada
estado. Por exemplo: hora atual deverá imprimir HOrA nos displays; alarme deverá imprimir
ALAr; cronômetro deverá imprimir: CrOn e data imprimirá: dAtA. Faça com que a exibição da
hora atual seja o estado inicial.
ATIVIDADES NO LABORATÓRIO :
Valide as FSM dos itens 2 e 3 acima no kit XD301.
2
O kit XD301 usado não permite a ligação dos quatro displays simultaneamente. Deve-se implementar um esquema
de varredura dos displays em alta frequência para se obter a sensação de que estão todos ligados, mostrando a
palavra desejada.
sd9.docx 5/5
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aula 10: Máquina de Estados Finitos (Máquinas de Mealy e Máquinas de Moore)
OBJETIVOS:
Esta aula prática tem o objetivo de promover a familiarização dos alunos com:
MATERIAL UTILIZADO :
Microcomputador com software Quartus II – Altera – Web Edition.
Kit didático de lógica programável marca EXSTO modelo XD301 com CPLD da família MAX3000A,
modelo EPM3064ALC44-10 e Gravador USB Blaster e cabo USB.
INTRODUÇÃO:
Uma máquina de estados finitos pode ser implementada de duas formas: como Máquina de Mealy ou
Máquina de Moore (Figura 1):
Máquina de Mealy – neste modelo, a saída Z[t] de uma FSM é gerada diretamente a partir de
ambos estado atual S[t] e valores das entradas simbolizadas X[t] no momento da transição de um
sinal de sincronismo. Este é o caso mais geral e corresponde à maioria dos projetos;
Máquina de Moore – neste modelo, as saídas Z[t] são geradas diretamente a partir apenas do
estado atual da máquina S[t] e dependem das entradas apenas de forma indireta, via estado.
Reiniciar
estado:
do próximo
S[t]
Combinacional
estado
S[t+1]
estado
Rede
Saída
das saídas
Entrada
atual: X[t]
X[t]
Clock
Somente para Máquina de Mealy
Máquina de Mealy: as saídas Z[t] dependem Máquina de Moore: as saídas Z[t] dependem diretamente apenas do estado
diretamente do estado atual e das entradas: atual. A dependência das entradas se dá de forma indireta, via estado:
ZMealy[t]=H(S[t],X[t]) ZMoore[t]=H(S[t])
sd10.docx 1/2
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aula 10: Máquina de Estados Finitos (Máquinas de Mealy e Máquinas de Moore)
Passo 1 – Capture o comportamento da FSM: desenhe o diagrama da FSM que descreva seu
comportamento.
Passo 2 – Crie a arquitetura. No caso de programação em VHDL você pode, por exemplo, definir a
arquitetura na forma canônica e usar o modelo de dois processos (TPM).
Passo 3 – Codifique os estados. No caso da metodologia TPM sugerida aqui, atribua estados usando a
palavra “type” em VHDL para definir um tipo que assume os estados desejados (a atribuição binária de
cada estado será feita automaticamente pelo compilador). Crie então um process (clear,clock) para
atualizar o estado.
Passo 4 – Crie a tabela de transição de estados e a tabela de saída: crie uma tabela-verdade para a lógica
combinacional de modo tal que a lógica irá gerar as saídas Z[t] e os sinais de próximo estado S[t+1] a
partir do estado atual S[t] e das entradas X[t]. Estas tabelas são a base para o projeto da lógica
combinacional – funções G(⋅) e H(⋅). Na construção desta rede combinacional, aplique métodos de
simplificação (mapas de Karnaugh, etc.) se necessário.
Passo 5 – Implemente a lógica combinacional usando qualquer método apropriado para tal função –
no caso da metodologia TPM citada, implemente um process(entradas, estado atual) para a rede
combinacional.
ATIVIDADES NO LABORATÓRIO :
a) Valide as FSM de Mealy e de Moore do cronômetro no kit XD301.
b) Aponte as vantagens e desvantagens de cada implementação do cronômetro.
c) Valide sua solução do semáforo no kit, usando um sinal de clock de entrada de 1Hz.
d) Mostre as montagens ao professor para avaliação.
sd10.docx 2/2
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aulas 11 e 12: Construção de bibliotecas VHDL com componentes parametrizáveis.
OBJETIVOS:
Projeto de componentes em VHDL. Projeto e simulação de uma biblioteca de componentes em VHDL no
ambiente Quartus II – Altera para construção de um caminho de dados (ou bloco operacional) e de um
bloco de controle (ou unidade de controle) para implementação de lógica RTL. Implementação prática no
kit didático de lógica programável Exsto XD301.
Criação de uma biblioteca de componentes parametrizáveis (de tamanho genérico).
MATERIAL UTILIZADO:
Microcomputador com software Quartus II – Altera – Web Edition (gratuita). Kit didático de lógica
programável marca EXSTO modelo XD301 com CPLD da família MAX3000A, modelo EPM3064ALC44-10,
gravador USB Blaster e cabo USB.
INTRODUÇÃO:
Nessa prática você estudará e implementará em VHDL uma biblioteca de componentes. Os componentes que
você implementará nessa prática são normalmente encontrados em qualquer processador.
Todos os processadores são constituídos de dois blocos básicos: o caminho de dados (ou bloco operacional) e a
parte de controle (ou unidade de controle). O caminho de dados é a parte responsável por levar dados de um
componente de armazenamento a outro e de processar (ou modificar) esses dados de alguma forma, seja
através de uma operação lógica (AND, OR, etc.) ou uma operação aritmética qualquer. A unidade de controle,
por sua vez, é a parte do processador responsável por instruir os componentes que constituem o caminho de
dados a executarem suas funções em uma ordem pré-estabelecida. Essa ordem pré-estabelecida é a sequência
de ações que caracteriza um processador, ou seja, sua capacidade de executar tarefas encadeadas.
Keyword GENERIC
Em VHDL, o construto generic permite a criação de estruturas com tamanhos parametrizáveis. Por exemplo, as
entradas e saídas do multiplicador seguinte têm tamanhos que são definidos pela variável “n”:
Figura 1: VHDL - Exemplo de uso do construto generic: componente “mult_se_neg” com valor default de n=16 bits.
sd11_e_sd12.docx 1/5
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aulas 11 e 12: Construção de bibliotecas VHDL com componentes parametrizáveis.
O tipo do generic pode ser natural ou integer. O generic pode ser usado na definição do tamanho de um
std_logic_vector. Dessa forma, estruturas aritméticas podem ser usadas. Por exemplo, as sentenças seguintes
n
definem o sinal teste1 com o tamanho de “n” bits e o sinal teste2 com o tamanho de 2 bits (‘**’ = ‘elevado a’).
Em um projeto hierárquico os generic de vários módulos podem ser conectados. Isso é feito pelo construto
generic map. Por exemplo, o CPLD EMP3064ALC44-10 existente no kit Exsto não comporta um multiplicador de
16 bits como estabelece o valor default de n=16 na rotina “mult_se_neg” mostrada na Figura 1. Mas podemos
instruir o compilador para usar um valor diferente do default, digamos gen=4 bits como mostra o exemplo a
seguir (Figura 2).
Figura 2: Exemplo de sobreposição do parâmetro default n=16 bits por gen=4 bits no uso do componente “mutl_se_neg” pela
entity “projeto”.
sd11_e_sd12.docx 2/5
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aulas 11 e 12: Construção de bibliotecas VHDL com componentes parametrizáveis.
Neste exemplo o generic “gen” do módulo “projeto” conecta-se com o generic “n” do módulo mult_se_neg, de
tal forma que “n” para a instância “instancia_mult1” do componente “mult_se_neg” assume o valor contido
em “gen”, ou seja, “instancia_mult1” tem efetivamente 4 bits (e não 16 bits, que seria seu valor default caso a
senteça generic fosse omitida), como mostra a Figura 3 a seguir.
Note que a arquitetura para o componente mult_se_neg constante da Figura 1 testa o valor da multiplicação e
só o coloca na saída se este for “negativo” (bit mais significativo em 1 quando usamos aritmética em
complemento de dois). Veja na Figura 3-a que a realização prática desta arquitetura no CPLD usa o bit mais
significativo para habilitar os latches (a variable temp[7] vai nas entradas “ENABLE” dos latches ). No caso da
saída incondicional (com a linha do “else” não comentada), temos a saída ligada direto no multiplicador (Figura
3-b).
(b)
(a)
Figura 3: Diferença entre as implementações do componente mult_se_neg implementado na Figura 1, sem o “else” (a) e com
o “else” (b). A arquitetura para o componente que testa o valor “negativo” usa o bit mais significativo para habilitar os latches
(temp[7] vai nas entradas “ENA” dos latches ). No caso da saída incondicional (com a linha do else ativa), temos apenas o
multiplicador, sem interferência de latches.
sd11_e_sd12.docx 3/5
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aulas 11 e 12: Construção de bibliotecas VHDL com componentes parametrizáveis.
T AREFAS QUE DEVERÃO SER FEITAS ANTES DOS DIAS DAS AULAS (PRÉ-RELATÓRIO)
3. Implemente em VHDL cada um dos componentes acima de maneira a formar uma biblioteca, onde
eles possam ser reutilizados em um projeto de processador dedicado com capacidade de
processamento de um número qualquer de bits. Em outras palavras, escreva cada componente em
VHDL de forma parametrizável. Valide cada um dos componentes por meio de simulação temporal.
Devido à quantidade de componentes, teremos as aulas práticas 11 e 12 disponíveis para esta tarefa.
ATIVIDADES NO LABORATÓRIO :
Cada um dos componentes desenvolvidos deverá ser testado no kit XD301. Dada a quantidade de
componentes, teremos as aulas práticas 11 e 12 disponíveis para esta tarefa.
O texto na caixa mostrada na próxima página foi extraído do Help do Quartus II e diz como gerar uma library
com o nome que você escolher (ao invés de jogar tudo na library "work"). A Altera também recomenda que
toda cláusula "use" seja precedida de uma cláusula "library" correspondente. Em assignments > settings >
libraries você especifica a localização dos arquivos de library que irá usar.
RELATÓRIO:
O grupo deverá entregar um relatório final no Moodle, até 72 horas após o final da aula prática 12,
documentando o item 3 do Pré-Relatório e contendo as correções eventualmente necessárias verificadas nas
aulas práticas.
sd11_e_sd12.docx 4/5
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aulas 11 e 12: Construção de bibliotecas VHDL com componentes parametrizáveis.
Note: The Quartus II software cannot process VHDL designs with two or more entities of the same name even if the entities
are compiled into separate custom libraries.
Prior to analyzing the sources files in a design, you may specify a different destination library for the design units in a source file.
You can use one of the following three methods, described in more detail below:
In the File Properties dialog box in the Quartus II graphical user interface (GUI)
In the Quartus Settings File (.qsf) or with a Tcl command
In the VHDL file itself, using a synthesis directive
When the Quartus II Compiler analyzes the file (in a flow that requires analysis of the source file), it stores the analyzed design
units in the file's destination library.
To specify a library name in the GUI for one of your VHDL files, follow these steps:
1. In the File name list on the Files page of the Settings dialog box, select the appropriate VHDL file.
2. Click Properties.
3. In the Type list, select VHDL (if it is not already selected).
4. In the Library box, type the library name or select an existing library name
In the QSF or through Tcl commands, you can specify the VHDL library name with the -library argument associated with the
VHDL_FILE assignment.
For example, the following QSF or Tcl assignment specifies that the Quartus II software should analyze my_file.vhd and store its
contents (design units) in the VHDL library my_lib.
You can use the library synthesis directive to specify a library name in your VHDL source file. This directive takes a single
string argument: the name of the destination library. Specify the library directive in a VHDL comment prior to the context
clause for a primary design unit (a package declaration, an entity declaration, or a configuration), using one of the supported
keywords for synthesis directives, i.e. synthesis, pragma, synopsys, or exemplar.
The library directive overrides the default destination library work, the Library setting specified for the current file through
the GUI, QSF or Tcl, and any prior library directive in the current file. The directive remains effective until the end of the file or
the next library synthesis directive.
The following is an example using the library synthesis directive to create a library called my_lib that contains the design
unit my_entity.
Note: Specifying the library name through the GUI, QSF or Tcl allows you to specify only a single destination library for all
the design units in a given source file. This synthesis directive allows you to change the destination VHDL library within a
source file, providing the option of organizing the design units in a single file into different libraries, rather than just a single
library.
The Quartus II software gives an error if you use the library directive in the middle of a design unit.
sd11_e_sd12.docx 5/5
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aulas 13: Projetar um pequeno processador dedicado em VHDL.
OBJETIVOS:
• Esta aula prática tem como objetivo capacitar o aluno no projeto de um pequeno processador dedicado
em VHDL (controladora + caminho de dados) a nível RTL usando uma biblioteca de componentes.
MATERIAL UTILIZADO:
• Microcomputador com software Quartus II – Altera – Web Edition (gratuita). Kit didático de lógica
programável marca EXSTO modelo XD301 com CPLD da família MAX3000A, modelo EPM3064ALC44-10 e
Gravador USB Blaster e cabo USB.
INTRODUÇÃO:
Nessa prática você realizará o projeto de um pequeno processador, o qual executará uma sequência pré-
definida de operações. Você deverá usar alguns dos componentes que desenvolveu na aula passada. A escolha
desses componentes, bem como a adaptação dos mesmos ao projeto, faz parte da sua solução.
1
O projeto de um processador dedicado segue o método de projeto RTL – Register Transfer Level em VHDL.
Esse é composto por uma sequência de passos:
1
Capítulo 5 do livro “Sistemas Digitais, Projeto Otimização e HDLs” de Frank Vahid.
sd13 1/2
Universidade Federal de Minas Gerais
Escola de Engenharia – Departamento de Engenharia Eletrônica
Laboratório de Sistemas Digitais
Aulas 13: Projetar um pequeno processador dedicado em VHDL.
Usando o método descrito na introdução, desenvolva um projeto RTL que exiba nos LEDs do kit o valor máximo
encontrado em um banco de registradores consistido de 4 números de 4 bits se selecionarmos um botão B1,
ou então o menor valor encontrado no banco de registradores se apertarmos o botão B2. Um botão B0 deverá
fazer com que o conteúdo dos registradores do banco seja zerado. Um botão B3 fará com que um dado de 4
bits (selecionado pelas chaves do kit) seja gravado em um endereço de um dos 4 registradores do banco. O
endereço para gravação do dado no registrador deverá vir de 2 chaves usadas pelo kit.
ATIVIDADES NO LABORATÓRIO:
Valide sua solução montando-a no kit XD301. Apresente-a ao professor para conferência e arguição.
sd13 2/2