Você está na página 1de 41

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

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

3. Normas de segurança e conduta no laboratório:


Ao término de todas as aulas:
 Desligue todos os equipamentos utilizados.
 Mantenha a bancada limpa.
 Devolva todos os componentes usados na prática para o professor.
 Não coma nem beba no laboratório.
 Em caso de dúvida, consulte sempre o professor ou monitor antes de executar
qualquer tarefa.

4. Matrizes de Contato ou Protoboards:


Uma matriz de contato também chamada de Protoboard (figura 1) é usada para fazer
montagens de circuitos eletronicos e teste de projetos. Na superfície de uma matriz de contato
há uma base de plástico com centenas de orifícios onde são encaixados os componentes. Já
na parte inferior dessa base plástica são instalados contatos metálicos interligados segundo um
padrão básico que o usuário precisa conhecer para saber utilizá-la corretamente em suas
montagens.

Figura 1 – Matriz de Contatos ou Protoboard

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.

Figura 2 – Furos da regiao central de uma Matriz de Contatos ou Protoboard

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.

A parte experimental dessa aula é composta por três experimentos simples:


 Montagem de um circuito eletrônico capaz de representar um sinal binário visualizados
por intermédio de LEDs;
 Montagem de um circuito eletrônico capaz de representar uma palavra binária de 4 bits
visualizados por intermédio de LEDs;
 Montagem de um circuito lógico com chaves e verificação de seu funcionamento com
LEDs.

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.

Ao final da montagem o circuito deverá se parecer com o mostrado na Figura 3.

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

Figura 3 – Circuito eletrônico a ser montado na Protoboard

Tarefas a serem realizadas:


a) Variar a entrada do circuito de modo a verificar a transição dos níveis lógicos;
b) Meça a tensão e a corrente sobre o LED para nível lógico 1 e 0, utilizando um
multímetro;
c) Determine a tensão de condução real do LED;
d) Calcule o real valor do resistor R, por meio das medições realizadas acima;

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

Figura 4 - Montagem do Experimento 2

Tarefas a serem realizadas:


Utilizando a montagem, mostrar os seguintes números em base binária com complemento de
dois:
a) Base decimal: 1, 5, -7, -5, -1
b) Base Hexadecimal: 0x02, 0x04, 0x0A, 0x0B, 0x0F.

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

Figura 5 - Pinagem de um Display de 7 segmentos

Figura 6 - Identificação de LEDs (A – anodo, K - catodo)

Tabela de cores de resistores (fonte: http://www.teletronica.kit.net/resistores.htm)

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:

• Matriz de contatos ou Protoboard • dip switchs


• 4 LEDS • fonte de alimentação
• CIs 7400, 7402, 7404, 7432, 7408 e 7486 • Cabos
• barra de pinos • fios
• Jumpers

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:

TABELA 1: PARÂMETROS SELECIONADOS DE UMA PORTA LÓGICA


Símbolo Significado Valor
Vih Tensão mínima de entrada para o nível lógico “1”.
Vil Tensão máxima de entrada para o nível lógico “0”.
Voh Tensão mínima de saída para o nível lógico “1”.
Vol Tensão máxima de saída para o nível lógico “0”.
Iih Corrente de entrada para o nível lógico “1”.
Iil Corrente de entrada para o nível lógico “0”.
Ioh Corrente de saída para o nível lógico “1”.
Iol Corrente de saída para o nível lógico “0”.
Tplh Atraso de propagação na transição de “0” para “1”
Tphl Atraso de propagação na transição de “1” para “0”

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

Vnh : Margem de ruído para o nível lógico alto.


alto Vnl: Margem de ruído para o nível lógico baixo.
baixo
Aqui a porta da esquerda fornece corrente Aqui a porta da esquerda absorve corrente
(current sourcing) para a porta da direita. (current sinking)) fornecida pela porta da direita.
direita

FIGURA 3: Margem de ruído para níveis lógicos alto e baixo, respectivamente Vnh e Vnl.

Quando conectamos portas lógicas de famílias


famíli lógicas iguais ou diferentes para montar um circuito digital, surgem
dois outros conceitos essenciais que devem ser levados em consideração para que seu circuito lógico funcione
corretamente conforme esperado. Esses parâmetros relacionados ao acoplamento de portas lógicas são o Fan-in e
o Fan-out:

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.

Para a família TTL temos:

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:

a) Iil para nível lógico 0.


b) Iih para nível lógico 1.

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

Para a família TTL temos:

• 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:

• Níveis de tensão aceitáveis nas entradas e saídas;


• Consumo de energia;
• Velocidade de chaveamento;
• Níveis de tensão de alimentação.
3
Estude a folha de dados (datasheet ) de um fabricante de um dos CIs apresentados na Lista de Material, encontre
e escreva no pré-relatório:

• 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:

• A margem de ruído para níveis lógicos 0 e 1.


• O tempo de propagação de um sinal lógico através da porta para o pior caso (em ns).
• Calcule o Fan-in (corrente máxima de entrada, usualmente em µA).
• Calcule o Fan-out (quantidade máxima de portas que se pode ligar na saída, adimensional).

3
Acesse http://www.electronics-lab.com/downloads/datasheets/ttl.html ou

http://www-ee.eng.hawaii.edu/~tep/EE260/TTL/ para consultar o datasheet escolhido.

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.

Entregue um pré-relatório por dupla para o professor no início da aula.

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.

O símbolo ⊕ representa uma operação ou-exclusivo (XOR).


4

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:

• Edição de circuitos na forma de esquemáticos (diagrama em blocos) no ambiente Quartus II – Altera.


• Simulação lógica (funcional) e temporal (timing) do circuito gerado.
• Gravação do circuito gerado no Quartus II no CPLD da Altera (www.altera.com) usando kit didático EXSTO.
• Criação de componentes reutilizáveis a partir do diagrama esquemático.

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”.

T AREFAS QUE DEVERÃO SER FEITAS ANTES DO DIA DA AULA:


1. Baixar e instalar em seu microcomputador pessoal o software Quartus II na versão indicada acima.
2. Ler atentamente e executar em seu microcomputador os passos definidos no arquivo: Tutorial_quartus2_v1-
3.pdf.
3. Simplificar e levantar a tabela verdade da seguinte função lógica:
• S = ((NOT A) OR (NOT B)) XOR (A AND (NOT B))

4. Levantar o esquema de portas lógicas de um decodificador de 2 para 4.

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 :

• S = ((NOT A) OR (NOT B)) XOR (A AND (NOT B))


12. Confira como ficou a estrutura interna do CPLD a partir do seu projeto em Tools > Netlist Viewers > RTL Viewer.
13. Confira como ficou a estrutura interna do CPLD após as operações de otimização adequadas à arquitetura do
dispositivo escolhido (EPM3064ALC44-10) em Tools > Netlist Viewers > Technology Map Viewer. O que aconteceu?
14. Crie, compile, simule e teste no kit um novo componente decodificador de 2 para 4.

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

3. Tarefas que deverão ser feitas antes do dia da aula:


a) Escreva uma situação problema criativa para um circuito exclusivamente
combinacional e projete a solução na forma de esquemáticos com o auxílio do
Quartus II. Seu projeto deve conter no mínimo 2 componentes1 criados pelo
grupo.
b) Escreva a tabela verdade do circuito combinacional.
c) Apresente de forma escrita as simplificações necessárias
d) Desenvolva o circuito na forma de esquemáticos no Quartus II
e) Produza um arquivo de simulação e valide o sistema.
f) Prepare um pré-relatório por grupo apresentando os itens de a) a e),
mostrando as formas de onda da simulação (estímulos e saídas). Apresente o
pré-relatório impresso ao professor no dia da aula.

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:

• Projeto e simulação (lógica e de temporização) de circuitos combinacionais básicos na forma de


programação VHDL no software Quartus II.
• Gravação e teste prático no Kit Exsto XD301 do programa gerado no ambiente Quartus II.

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

Já códigos estruturais não requerem a declaração de um “PROCESS” e a necessidade de variáveis


internas é suprida pela declaração “SIGNAL” (e não por “VARIABLE” como no caso comportamental).
Toda sentença tem execução concorrente com as demais sentenças, inclusive com blocos “PROCESS”
eventualmente presentes, ou seja, suas execuções são “simultâneas” e usam construções como
“WHEN”, “SELECT”, GENERATE, “PORT MAP”, etc. Note que existe uma equivalência entre as estruturas
COMPORTAMENTAIS  ESTRUTURAIS que pode ser explorada: “IF”  “WHEN”, “CASE”  “SELECT” e
“LOOP” “GENERATE”. Na construção estrutural, uma sentença só é avaliada se algum dos seus sinais à
direita da sentença sofrer modificação.

T AREFAS QUE DEVERÃO SER FEITAS ANTES DO DIA DA AULA:


A partir da leitura da bibliografia recomendada acima e da introdução, faça o que se pede:

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?

Entradas BCD Valor Saídas


A3 A2 A1 Decimal S7 S6 S5 S4 S3 S2 S1 S0
0 0 0 0 0 0 0 0 0 0 0 1
0 0 1 1 0 0 0 0 0 0 1 0
0 1 0 2 0 0 0 0 0 1 0 0
0 1 1 3 0 0 0 0 1 0 0 0
1 0 0 4 0 0 0 1 0 0 0 0
1 0 1 5 0 0 1 0 0 0 0 0
1 1 0 6 0 1 0 0 0 0 0 0
1 1 1 7 1 0 0 0 0 0 0 0

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:

Projeto e simulação (lógica e de temporização) de circuitos sequenciais básicos na forma de


esquemáticos no software Quartus II.
Gravação e teste prático no Kit Exsto XD301 do circuito gerado no ambiente Quartus II.

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.

FIGURA 1: Elemento de memória usando portas NOT

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.

Existem quatro tipos de flip-flop, a saber:

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).

FIGURA 2: Latch RS construído usando portas NAND

O aparecimento do estado indefinido ou de instabilidade (estado R=S=0 para o circuito acima)


representa uma desvantagem dos flip-flops RS.

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.

FIGURA 3: Latch RS com portas NAND e entrada de controle (habilita ou enable)

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.

No caso do flip-flop a partir de latches (sensíveis ao nível, como na configuração mestre-escravo), a


saída somente assumirá o novo estado após a segunda transição do clock, evitando assim que seja
realimentada na entrada no momento inadequado, eliminando assim a instabilidade.

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.

T AREFAS QUE DEVERÃO SER FEITAS ANTES DO DIA DA AULA:


A partir da leitura da introdução, faça o que se pede:

1. Levante as tabelas verdades para os seguintes circuitos:

Latch tipo RS construído com portas NAND e com portas NOR;


Latch tipo RS com portas NAND e entrada de controle;
Flip-flop tipo D, sensível à borda de descida;
Flip-flop tipo JK mestre-escravo;
Flip-flop tipo T.

2. Responda às seguintes questões:

Qual é a principal diferença entre um flip-flop RS e um flip-flop JK ?


Qual a vantagem do flip-flop JK em relação ao flip-flop RS?
Considerando flip-flops gatilhados por borda de subida do clock, qual tipo de flip-flop seria
mais adequado para se construir um registrador (memória) de 1 bit?
Qual tipo de flip-flop você considera mais adequado para construir um contador? Porquê?
Prepare um pré-relatório por grupo apresentando os itens acima e antecipando a implementação no
Quartus II dos circuitos previstos para implementação em sala (“Atividades no Laboratório” descritas a
seguir) com suas respectivas simulações. Apresente o pré-relatório impresso ao professor no dia da
aula.

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.

d) A Figura 6 a seguir representa um flip-flop JK construído a partir de um latch RS com entrada de


clock “R” usando portas NAND e AND como base, mas sem os mecanismos de sincronismo acima
descritos que impeçam a instabilidade. Uma condição que leva ao comportamento errado deste
circuito acontece quando J=1, K=1, Q=0 e Q’=1 e o sinal de clock (entrada “R” de relógio na Figura 6)
vai para nível lógico 1, habilitando suas entradas. Implemente na forma de um componente este
flip-flop JK e verifique seu comportamento lógico. Teste-o no kit XD301. Corrija o defeito da
instabilidade alterando o circuito mostrado, simule e teste novamente no kit XD301 para constatar
que a condição de erro descrita acima foi corrigida.

FIGURA 6: Flip-flop JK instável, com portas NAND e entrada de controle (R = relógio)

e) Implemente na forma de um componente o flip-flop T a partir do flip-flop JK corrigido no item


anterior 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)

VALOR DA ATIVIDADE: 20% DOS PONTOS DO LABORATÓRIO.

OBJETIVOS:
Esta aula prática tem o objetivo de promover a familiarização dos alunos com:

• Edição de circuitos em VHDL no ambiente Quartus II – Altera.


• Diferenciação de arquiteturas estruturais e comportamentais em VHDL.
• Integração entre VHDL e circuito esquemático, com simulação e implementação prática.

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
laboratório, disponível em https://www.altera.com/download/software/quartus-ii-we/11.1sp2.
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.
• Documento “Atribuição de Sinais em VHDL.pdf” .

INTRODUÇÃO:

Em VHDL, código comportamental é de execução seqüencial, programado dentro de construções como


“PROCESS”, por exemplo. Nele, as sentenças têm uma sequência de execução similar [1] a um programa
de 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”.

Já códigos estruturais não requerem a declaração de um “PROCESS” e a necessidade de variáveis


internas é suprida pela declaração “SIGNAL” (e não por “VARIABLE” como no caso comportamental).
Toda sentença tem execução concorrente com as demais sentenças, inclusive com blocos “PROCESS”
eventualmente presentes, ou seja, suas execuções são “simultâneas” e usam construções como
“WHEN”, “SELECT”, GENERATE, “PORT MAP”, etc.

Lembre-se também que existe alguma equivalência entre as estruturas COMPORTAMENTAIS 


ESTRUTURAIS que pode ser explorada: “IF”  “WHEN”, “CASE”  “SELECT” e “LOOP” “GENERATE”.

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.

Codificação incorreta de uma porta AND FUNÇÃO DESEJADA:


(VHDL comportamental)

(B)

FUNÇÃO OBTIDA (RTL Viewer):

(C)

(A)

FIGURA 1: Implementação INCORRETA de uma porta AND de três entradas usando código comportamental.

ATIVIDADES DO PRÉ-RELATÓRIO:

a) Leia atentamente o documento tutorial “Atribuição de Sinais em VHDL.pdf”


b) Corrija o código da Figura 1-A para que implemente corretamente uma porta AND de três entradas.
Confirme a correta implementação através de Simulação e no RTL Viewer. Documente sua solução e
explicando porque o problema estava ocorrendo e mostre ao professor no dia da aula.
c) Aborde uma situação de projeto criativa que, para sua implementação, exija tanto circuitos
combinacionais quanto elementos de memória (um ou mais flip-flops). Separe o problema em no
mínimo dois módulos que serão integrados:

• O Módulo 1 será o módulo de memória (contendo os flip-flops) e deverá ser implementado em


diagrama esquemático. O grupo poderá usar flip-flops já desenvolvidos a partir de portas
lógicas primitivas (NAND, NOR, etc.) ou poderá usar flip-flops da biblioteca do Quartus II.

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)

• O Módulo 2 será combinacional e deverá ser projetado em VHDL na forma comportamental


(usando process).

d) Integre os módulos, produza um arquivo de simulação e valide o sistema usando o QSim.


e) Para a mesma situação problema, refaça agora o Módulo 2 (circuito combinacional) em uma
descrição VHDL do tipo estrutural (fora do process).

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:

1. Definição da situação abordada, incluindo explicação da solução adotada, suas


entradas, saídas e módulos componentes.
2. Descrição do funcionamento dos módulos e do sistema apresentação dos diagramas
esquemáticos de interligação entre os módulos.
3. Programas VHDL nas versões comportamental e estrutural, acompanhados das
respectivas tabelas verdades e simplificações, assim como circuitos gerados
(disponível em Tools > Netlist Viewers > RTL Viewer após a compilação)
4. Formas de onda da simulação com TODAS as combinações dos sinais de entrada
(estímulos e saídas).

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:

Projeto e Simulação e teste de flip-flops e registradores em VHDL no ambiente Quartus II – Altera.


Programação de Registradores e mapeamento em Macrocélulas de uma CPLD.

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]:

TABELA 1: Estados de um Flip-flop JK


Mapa de Karnaugh: Q[t+1]
Estado atual Entradas J[t]K[t]
Q[t] 00 01 11 10 J[t]K[t]
0 0 0 1 1 Q[t]
1 1 0 0 1 00 01 11 10
0 0 0 1 1

Próximo Estado = Q[t+1] 1 1 0 0 1


“Toggle”
“Reset”
“Store”

“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

Q' Q' Q' Q'

Clk
S3 S2 S1 S0

FIGURA 1: Registrador paralelo de 4 bits

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.

A função de conversão de dados paralelo-serial ou serial-paralelo é realizada por um registrador de


deslocamento (figura 2), que possui uma única entrada serial S e quatro saídas paralelas P3, P2, P1, P0. 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
P3, P2, P1, P0 dos respectivos registradores.

Clear

S D Q D Q D Q D Q

Q' Q' Q' Q'

Clk
P3 P2 P1 P0

FIGURA 2: Registrador de deslocamento de 4 bits

LEITURA RECOMENDADA
O aluno deve estudar o conceito de “Macrocélula”, essencial ao entendimento do funcionamento interno
de uma CPLD. Sugestões de pesquisa:

1. Capítulo 18 da bibliografia complementar, livro “Eletrônica Digital Moderna e VHDL” de Volnei


Pedroni, Editora Campus Elsevier, 2010.
2. Datasheet da família de chips CPLD MAX3000A da Altera
(disponível no link http://www.altera.com/literature/ds/m3000a.pdf)

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.

Para um melhor entendimento da diferença de funcionamento na atribuição de sinais em construções


VHDL estruturais e comportamentais, leia atentamente o documento: “Atribuição de sinais em VHDL.pdf”,
disponibilizado pelo professor. Com certeza o entendimento da “sutileza” no funcionamento desta
atribuição de sinais nos diferentes cenários irá economizar muitas horas de depuração de código.

T AREFAS QUE DEVERÃO SER FEITAS ANTES DO DIA DA AULA (PRÉ-RELATÓRIO)

Parte I – Implementação dos Flip-flops:

a) Determine as tabelas de estado de todos os flip-flops desenvolvidos na forma de esquemáticos na aula


prática 6. Faça as simplificações necessárias e determine as respectivas equações características.
Programe estas equações em VHDL e simule todos os flip-flops no Quartus II.

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:

i. Quantas macrocélulas existem no chip usado (EPM3064ALC44-10)

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?

FIGURA 3: Macrocélula da CPLD da família MAX3000A

Parte II – Implementação de sinal de “CLEAR” e de Registradores

c) Programe em VHDL e simule temporalmente um flip-flop D e um flip-flop JK com entradas de CLEAR


síncronas.

d) Programe em VHDL e simule temporalmente um flip-flop D e um flip-flop JK com entradas de CLEAR


assíncronas

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:

Projeto e simulação de Máquinas de Estados Finitos em VHDL no ambiente Quartus II – Altera.


Implementação prática no Kit didático de lógica programável.

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:

Função de transição de estado: S[t+1] = G(S[t], X[t])

Função de saída: Z[t] = H(S[t], X[t])

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

FIGURA 1: Implementação canônica de uma rede sequencial

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

Projetos grandes sofrem com vários problemas como:

• Falhas no código pelo número grande de processos e sinais


• Latches indesejados que criam situações imprevisíveis
• Inflexibilidade pela estrutura do projeto

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.

Para este sistema, temos a seguinte proposição:

Entrada: X[t] {0,1}


Saída: Z[t] {0, 1, 2}
Estado: S[t] {S0, S1, S2}
Estado inicial: S[0] = S0

A máquina de estado correspondente é mostrada na Figura 2. Sua “entity” é mostrada na Figura 3.

Z=0 Z=1 Z=2

FIGURA 2: Contador Módulo 3 – Máquina de estado

Figura 3: Entity para o contador módulo 3

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).

Figura 4: Definição dos estados usando type e programação do bloco sequencial

Por fim, um segundo process (x, estado_atual) implementa a rede combinacional a partir da entrada x e
do estado atual (Figura 5).

Figura 5: Implementação do bloco combinacional.

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.

T AREFAS QUE DEVERÃO SER FEITAS ANTES DO DIA DA AULA (PRÉ-RELATÓRIO)

1
Figura 6: Sistema de Aquecimento de Água

1. Responda à pergunta: os braços “else” no bloco combinacional da Figura 5 são realmente


necessários ou são dispensáveis ? Justifique sua resposta com base nos requisitos para um bom
projeto de máquina de estados (consulte Vahid, Seção 3.4). Ilustre mostrando como fica a
estrutura interna da CPLD com e sem estes braços “else” (vá em Tools >> Netlist Viewer >> State
Machine Viewer e também em Netlist Viewer >> RTL Viewer).
2. Desenvolva o procedimento de 5 passos para a construção da máquina de estados finitos da
situação problema a seguir:

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

a) Um sistema de aquecimento de água está representado na Figura 6. O funcionamento desse


sistema segue os seguintes passos:
b) O tanque deve encher acionando-se a bomba (BOMBA) até que o líquido atinja o nível máximo
do tanque, o que será indicado pelo sensor NMAX.
c) Quando o tanque estiver cheio, aciona-se o aquecimento através de uma resistência controlada
pelo relé AQUECE. Essa resistência deve ficar acionada até que a temperatura atinja o valor
pré-estabelecido, quando o sensor STEMP irá atuar.
d) Atingida a temperatura máxima a válvula VALV deve ser aberta. Ela deverá permanecer aberta
até que o nível de água chegue ao mínimo, acusada pelo sensor NMIN.
e) Quando o tanque estiver vazio, a válvula deve ser fechada e o processo se reinicia.

3. Implemente a FSM para a seguinte situação problema:

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.

Mostre ao professor para avaliação.

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:

Projeto e simulação de Máquinas de Estados Finitos em VHDL no ambiente Quartus II – Altera.


Implementação prática no Kit didático de lógica programável.
Implementação na forma de máquinas de Mealy.
Implementação na forma de máquinas de Moore.

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

S[t+1]=G(S[t],[X[t]) Moore: Z[t]=H(S[t])


Próximo Mealy : Z[t]=H(S[t],X[t])
Registrador de
Combinacional

estado:
do próximo

S[t]
Combinacional
estado

S[t+1]
estado
Rede

Saída
das saídas

Estado atual: S[t] atual: Z[t]


Rede

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])

FIGURA 1: Implementação canônica das redes sequenciais de Mealy e de Moore

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)

Apesar da diferença, o procedimento de projeto destas máquinas de estados não difere do


procedimento apresentado na aula prática anterior. Adota-se, como visto, um algoritmo de 5 passos, os
quais são relembrados a seguir:

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.

T AREFAS QUE DEVERÃO SER FEITAS ANTES DO DIA DA AULA (PRÉ-RELATÓRIO)

1. Desenvolva o procedimento de 5 passos para a construção da máquina de estados finitos


segundo o modelo de Mealy e segundo o modelo de Moore para a situação problema do
mostrador de relógio de pulso apresentado no item 3 da aula prática anterior. Assuma que
quando o botão B for pressionado, um bipe será emitido. Observação: Esse projeto está
especificado no Livro de Sistemas Digitais do Frank Vahid no capítulo 6 (exemplo 6.18).
2. Implemente uma FSM para a seguinte situação problema segundo o modelo de Mealy ou o
modelo de Moore: um controlador de semáforos possui três condições distintas. Sinal VERDE,
AMARELO e VERMELHO. O tempo em que o semáforo fica em cada cor é respectivamente:
VERDE (7 segundos), AMARELO (2 segundos) e VERMELHO (5 segundos). O controlador inicia-se
com a cor VERMELHA.
3. Complete o pré-relatório com as atividades a seguir.

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.

A definição de um generic precisa ser feito na entity do módulo. A sintaxe é:


entity
generic (
<nome do generic1> : <tipo do generic1> := <valor default>;
<nome do generic2> : <tipo do generic2> := <valor default>;
);

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’).

signal teste1 : std_logic_vector (n-1 downto 0);


signal teste2 : std_logic_vector (2**n-1 downto 0);

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)

1. Estude os comandos em VHDL mais apropriados para descrição de componentes parametrizáveis e


geração de pacotes de componentes: GENERIC, GENERATE e PACKAGE.
2. Estude no capítulo 4 do livro de Sistemas Digitais do Frank Vahid o funcionamento dos seguintes
componentes:

a. Registrador de carga paralela;


b. Registrador de deslocamento (sequencial);
c. Somadores (ripple carry);
d. Deslocadores (combinacional);
e. Comparadores de igualdade e de magnitude;
f. Contadores Ascendentes/Descendentes;
g. Temporizadores;
h. Banco de Registradores

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.

ESCLARECIMENTOS SOBRE BIBLIOTECAS (LIBRARIES) NO QUARTUS II:


Cada vez que se compila um package ele é acrescentado à biblioteca work, sendo necessário somente fazer a
declaração "use.work.nome_do_package.all". A condição default é jogar todas as design units para a biblioteca
work. Você pode deixar desta forma ou então acrescentar uma diretiva para jogá-las para um outro arquivo.
Veja abaixo como isso é feito no Quartus II.

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.

Texto extraído do “Help” do Quartus II:


A VHDL library stores analyzed design units. Every design unit in a VHDL design must be compiled into a library, and two design
units with the same name cannot be compiled into the same library. For example, if a design contains declares two packages with
the same name, it must compile the packages into different libraries. By default, the Quartus II software compiles all VHDL files
into the work library. If a VHDL design refers to a library that does not exist, or if the library does not contain a referenced design
unit, the software searches for the design unit in the work library. This behavior allows the Quartus II software to compile most
VHDL designs with minimal setup.

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 destination library name in the Quartus II GUI:

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

To specify a destination library name in the QSF or with Tcl:

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.

set_global_assignment VHDL_FILE my_file.vhd -library my_lib

To specify a destination library name in your VHDL file:

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.

-- synthesis library my_lib


library ieee;
use ieee.std_logic_1164.all;
entity my_entity(...)
end entity 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.

TRABALHO EM GRUPO – AVALIATIVO:


• Trabalho em grupo de até 3 alunos (livre associação).
• Valor: 25% dos pontos de laboratório.

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:

Passo 1. Crie uma máquina de estados finitos de alto nível.


• A FSM de alto nível tem condições de transição de estado de alto nível, que extrapolam as expressões
puramente booleanas (p.ex. A>B, A+B=C, etc.)
Passo 2. Crie o caminho de dados com os componentes necessários ao projeto.
• Os componentes necessários ao caminho de dados são aqueles – sequenciais e ou combinacionais –
responsáveis pela transformação das condições de transição de estado e saídas descritas em alto nível
para descrições equivalentes de baixo nível, ou seja, expressões booleanas (p.ex: comparadores,
somadores, contadores, registradores, etc.).
Passo 3. Conecte o caminho de dados à unidade de controle.
• Defina quais serão os sinais binários que irão transitar entre os módulos do caminho de dados e a
unidade de controle. Conecte-os aos respectivos blocos.
Passo 4. Obtenha a Máquina de Estados Finitos da unidade de controle
• A FSM da unidade de controle é a mesma máquina de estados de alto nível, mas modificada: as
condições de transição de estado de alto nível são substituídas pelas condições de transição de estado
de baixo nível (booleanas) vindas do caminho de dados.
Passo 5. Implemente a Controladora (FSM de baixo nível que realiza a FSM de alto nível) em VHDL.

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.

T AREFAS QUE DEVERÃO SER FEITAS ANTES DO DIA DA AULA (PRÉ-RELATÓRIO)


1. De posse dos componentes desenvolvidos na aula anterior:

a. Registrador de carga paralela;


b. Registrador de deslocamento (sequencial);
c. Somadores (ripple carry);
d. Deslocadores (combinacional);
e. Comparadores de igualdade e de magnitude;
f. Contadores Ascendentes / Descendentes;
g. Temporizadores.
h. Banco de Registradores

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.

MATERIAL A SER ENTREGUE:

Os alunos deverão entregar a documentação correspondente ao projeto do grupo, contendo, no mínimo, os


seguintes itens:

• Breve descrição da situação abordada e da solução implementada, e descrição textual do projeto,


incluindo:
o Diagrama de estados de alto nível.
o Diagrama de blocos do caminho de dados e descrição textual de funcionamento de seus
componentes. Diagramas esquemáticos de interligação , se houver.
o Diagramas de interligação entre o caminho de dados e a controladora.
o Diagrama de estados da controladora (FSM de baixo nível que realiza a FSM de alto nível).
• Programas VHDL, acompanhados das respectivas máquinas de estado geradas (disponível em Tools >
Netlist Viewers > State Machine Viewer).
• Formas de onda da simulação (estímulos e saídas) para no mínimo dois cenários de teste.

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