Buscar

ApostilaLogicaProgramavelAula4

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

LÓGICA PROGRAMÁVEL 
AULA 4 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Prof. Ederson Cichaczewski 
 
 
2 
CONVERSA INICIAL 
Nesta aula, iremos conhecer o projeto em VHDL de uma unidade lógica 
e aritmética, circuitos codificadores, multiplexadores, contadores, registradores 
de deslocamento e geradores de sinais. 
A linguagem de descrição de hardware VHDL nos permite implementar 
qualquer circuito digital sem que tenhamos que nos preocupar com quais são 
as primitivas de base (portas lógicas, flip-flops etc.) para configuração ou como 
conectá-las. 
Após a síntese, você verá uma representação gráfica do circuito final. 
TEMA 1 – UNIDADE LÓGICA E ARITMÉTICA (ULA) 
A unidade lógica e aritmética (ULA) realiza todas as operações lógicas e 
aritméticas de um sistema computacional. 
As operações são realizadas de acordo com instruções provenientes da 
unidade de controle. 
Os dados utilizados nessas operações são binários e provenientes da 
memória do sistema. 
1.1 Exemplo prático: ULA de quatro operações 
A ULA de 1 bit de dados e 2 bits de controle realiza apenas quatro 
operações lógicas (e não contempla operações aritméticas). 
As entradas "d1" e "d0" definem a operação executada entre os bits das 
entradas "a" e "b". O resultado é apresentado na saída "s". 
Figura 1 ‒ Diagrama de uma unidade lógica de 1 bit de dados 
 
 
 
 
3 
Tabela 1 ‒ Operações de uma unidade lógica de 2 bits de controle 
 
Em VHDL, pode-se usar as estruturas “IF ELSE” e “CASE WHEN” com 
ou sem aninhamento em uma codificação sequencial. 
Figura 2 ‒ Exemplo de descrição sem aninhamento em estrutura “IF ELSE” 
 
Figura 3 ‒ Exemplo de descrição com aninhamento em estrutura “IF ELSE” 
 
 
 
4 
Figura 4 ‒ Exemplo de descrição sem aninhamento em estrutura “CASE 
WHEN” 
 
Figura 5 ‒ Exemplo de descrição com aninhamento em estrutura “CASE 
WHEN” 
 
Nos casos sem aninhamento, os sinais que definem a decisão são 
concatenados em um único sinal, o que resulta em descrições mais concisas e 
claras. 
No processo de síntese das estruturas aninhadas, cada comando 
“CASE” ou “IF” leva à inserção de um circuito de seleção. No caso das 
descrições sem aninhamento, a decisão é tomada utilizando-se um único 
circuito de seleção. 
 
 
5 
 
1.2 Exemplo prático: ULA de oito operações 
A ULA que realiza oito operações, entre lógicas e aritméticas, possui 3 
bits de controle. 
Figura 6 ‒ Diagrama de uma unidade lógica de 3 bits de controle 
 
Tabela 2 ‒ Operações de uma unidade lógica de 3 bits de controle 
opr Operação 
000 ts  rs + ss 
001 ts  rs + ss + ci 
010 ts  rs - ss 
011 ts  rs - ss - ci 
100 ts  rs E ss 
101 ts  rs OU ss 
110 ts  rs OU-EXLUSIVO ss 
111 ts  NÃO rs 
 
Na entrada, o barramento "opr" define a operação a ser realizada entre 
os dados "‘rs" e "ss", e "ci" é uma entrada de carry. A saída "ov" significa 
overflow, "zr" indica resultado nulo e "ts", o resultado da operação. 
Para os barramentos de dados de entrada e saída, pode-se usar a 
definição de sinal com o padrão "STD_LOGIC_VECTOR". 
O bit MSB da entrada de controle pode definir se a operação será lógica 
ou aritmética, e as operações em si são definidas pelos demais bits. 
A estratégia de codificação concorrente também pode ser utilizada por 
meio da estrutura “WITH SELECT”. 
 
 
6 
1.3 Exemplo prático: ULA de oito bits e 16 operações 
Aqui, vemos a ULA com barramento de dados de oito bits, oito 
operações lógicas e oito operações aritméticas em código concorrente. 
Figura 9 ‒ Descrição VHDL de uma ULA de 8 bits de dados e 16 operações 
 
 
 
 
 
 
 
7 
TEMA 2 – CIRCUITOS CODIFICADORES E MULTIPLEXADORES 
2.1 Codificador de prioridade 
Um codificador monitora várias entradas; quando uma delas é ativada, 
este produz um código na saída. 
Quando mais de uma entrada é ativada ao mesmo tempo, o codificador 
de prioridade ignora a entrada menos significativa. 
Figura 7 ‒ Exemplo de diagrama de um codificador de prioridade 
 
Tabela 3 ‒ Exemplo de tabela verdade da operação de um codificador de 
prioridade 
p3 p2 p1 c1 c0 
 
 
-  não importa 
1 - - 1 1 
0 1 - 1 0 
0 0 1 0 1 
0 0 0 0 0 
 
O circuito é um codificador de prioridade entre três entradas 
denominadas “p3”, “p2” e “p1”, sendo a entrada “p3” a de maior privilégio. Caso 
ela esteja ativa ‒ “p3 = 1” ‒, seu código é representado nas said́as “c1” e “c0”, 
independentemente da condição das outras entradas. As entradas restantes, 
“p2” e “p1”, têm uma prioridade decrescente. 
A descrição VHDL com construção concorrente "WHEN ELSE" é 
apresentada a seguir. 
 
 
 
8 
Figura 8 ‒ Descrição do detector de prioridade com construção WHEN ELSE 
 
Essa descrição tem uma maior correspondência com a operação do 
circuito, em que a condição de cada entrada é verificada individualmente 
segundo a sua prioridade. 
Figura 9 ‒ Descrição do detector de prioridade com construção WITH SELECT 
 
No caso da construção “WITH SELECT”, como todas as condições 
devem ser incluid́as na construção, o código contém um detalhamento maior. 
2.2 Multiplexador (MUX) 
O multiplexador (MUX) é um dispositivo que atua como uma chave 
seletora para sinais digitais. 
As entradas de seleção são usadas para especificar o canal de entrada 
que transferirá os dados para a saída. 
 
 
 
9 
Figura 10 ‒ Exemplo de MUX de quatro entradas 
 
A descrição VHDL de um MUX com 4 bits de entrada usando construção 
concorrente "WITH SELECT" é apresentada a seguir. 
Figura 11 ‒ Descrição do MUX de quatro entradas com construção WITH 
SELECT 
 
2.3 Decodificador BDC para sete segmentos 
É um circuito usado para receber uma entrada no código BCD de 4 bits 
("D3", "D2", "D1", "D0") e gerar sete saídas ("a", "b", "c", "d", "e", "f", "g") que 
acionem os segmentos de um display de LEDs. 
 
 
 
10 
Figura 12 ‒ Configurações de um display de sete segmentos de LED 
 
A tabela verdade para a configuração anodo comum é apresentada a 
seguir. 
Tabela 4 ‒ Tabela verdade de um conversor BCD para sete segmentos em 
anodo comum 
 
A descrição VHDL que usa o "PROCESS" do decodificador BCD para 
sete segmentos é apresentada a seguir. 
Figura 13 ‒ Descrição VHDL de um decodificador BCD para sete segmentos 
 
 
 
11 
TEMA 3 – CONTADORES EM VHDL 
Um contador pode ser descrito como uma máquina de estados em que o 
código de cada estado corresponde ao valor da contagem. 
Não é necessário preocupar-se em como conectar flip-flops na 
descrição, mas é importante considerar algumas características: 
 entrada de clock ativo por borda; 
 entrada de reset assíncrona; 
 a saída é atualizada sincronamente à ocorrência de uma borda ativa 
(subida ou descida) no clock. 
Figura 14 ‒ Exemplo de um contador de 0 a 9 (4 bits) 
 
A descrição VHDL de um contador de 0 a 9 que usa o "PROCESS" e a 
estrutura sequencial "IF ELSE" é apresentada a seguir. 
Figura 15 ‒ Exemplos de descrição VHDL de um contador de 0 a 9 
 
 
 
12 
Essa descrição realiza uma contagem entre os valores “0” e “9” com 
reset assińcrono e carga de dados paralela sińcrona. A operação de carga é 
controlada pelo sinal “ld” (load). Como o incremento do contador é realizado 
por meio de uma operação de soma, o tipo dos sinais “d” e “q”, bem como o da 
variável “qv”, são declarados como inteiros. O código se utiliza do emprego de 
uma variável em vez do de um sinal para definir o registrador que armazena o 
valor da contagem. O teste executado na linha 20 leva o contador a um estado 
previsto ‒ o valor “0” ‒ caso o valor da contagem exceda “9”. Isso previne a 
ocorrência de problemas devidos à falta de inicialização ou carga de um valor 
incorreto. A borda ativa é a de subida no clock. 
Em síntese: a ferramenta associa a primitiva de um módulo contador 
"conter_up_sload_sclear_aclear_clock4". 
Figura 16 ‒ Contador sintetizado em nível RTL 
 
TEMA 4– REGISTRADORES DE DESLOCAMENTO 
Os registradores de deslocamento realizam a transferência de dados, 
podendo realizar conversões de dados em formatos serial e paralelo. 
Em VHDL, utilizam-se vetores para descrever os dados. 
O deslocamento de dados significa que cada bit é transferido para a 
posição imediatamente à direita nos índices do vetor. 
O novo bit é armazenado na posição mais à esquerda; já o último bit, na 
posição mais à direita, é perdido. 
 
 
 
13 
Figura 17 ‒ Exemplo de processo de deslocamento de bits para a direita 
 
O novo bit entra na posição "Q3". O bit da posição "Q0" é perdido. 
4.1 Registrador de entrada serial/saída serial (SISO) 
Aqui é utilizado um vetor de bits como registrador. 
O deslocamento se dá por uma operação de concatenação (&). 
Uma entrada chamada shift permite habilitar a operação de 
deslocamento; se isso não ocorrer, mantém-se na saída os dados atuais (que 
já estão guardados lá). 
A descrição VHDL do registrador SISO com "PROCESS" e estrutura 
sequencial "IF" é apresentada a seguir. 
Figura 18 ‒ Descrição VHDL do registrador SISO 
 
4.2 Registrador de entrada paralela/saída serial (PISO) 
Esse registrador possui entradas de controle distintas para: 
 carga (load) paralela; 
 deslocamento (shift) serial. 
 
 
14 
A operação de concatenação é usada para o deslocamento de bits. Um 
vetor de bits é usado como registrador. 
A descrição VHDL do registrador PISO é apresentada a seguir. 
Figura 19 ‒ Descrição VHDL do registrador PISO 
 
TEMA 5 – GERADORES DE SINAIS 
A partir de um sinal de clock, podemos obter sinais com formatos 
específicos (arbitrários) e frequências diferentes. 
Uma estratégia para a sua implementação é utilizar a máquina de 
estados. 
A base para definir o formato do sinal arbitrário é um contador. 
Pode-se implementar circuitos monoestáveis, que mantêm sua saída 
ativa por um tempo definido. 
5.1 Exemplo prático: gerador de sinal arbitrário com máquina de estados 
As características do gerador de sinal são as seguintes: 
 máquina de oito estados; 
 contador de 0 a 7; 
 detecta a borda de subida do clock. 
O sinal a ser gerado é apresentado a seguir. 
 
 
15 
Figura 20 ‒ Diagrama de tempo com 1 período do sinal 
 
A descrição VHDL do gerador é apresentada a seguir. 
Figura 25 ‒ Descrição VHDL do gerador de sinal arbitrário com máquina de 
estados 
 
5.2 Gerador de sinal arbitrário sem máquina de estados que utiliza a 
construção "CASE WHEN" 
Características do gerador de sinal: 
 contador de 0 a 7; 
 
 
16 
 detecta a borda de subida do clock; 
O resultado da simulação deste gerador é apresentado a seguir. 
Figura 21 ‒ Diagrama de tempo do gerador de sinal arbitrário sem máquina de 
estados 
 
A descrição VHDL do gerador de sinal arbitrário sem máquina de 
estados é apresentada a seguir. 
Figura 22 ‒ Descrição VHDL do gerador de sinal arbitrário sem máquina de 
estados 
 
5.3 Exemplo prático: gerador de sinal monoestável 
Aqui, um sinal de disparo (trigger) carrega um contador descrescente; a 
saída fica em nível alto enquanto o contador não chega a zero, e o gerador de 
sinal monoestável utiliza abordagem não redisparável. 
 
 
17 
A descrição VHDL do gerador de sinal monoestável é apresentada a 
seguir. 
Figura 23 ‒ Descrição VHDL do gerador de sinal monoestável 
 
A simulação do gerador de sinal monoestável é apresentada a seguir. 
Figura 24 – Diagrama de tempo do gerador de sinal monoestável 
 
A saída é ativada apenas na borda de subida do clock quando o trigger 
está ativado. 
Eventos de trigger durante a contagem são ignorados. 
 
 
18 
FINALIZANDO 
Nesta aula, vimos o projeto em VHDL de uma unidade lógica e 
aritmética, circuitos codificadores, multiplexadores, contadores, registradores 
de deslocamento e geradores de sinais. 
A compreensão do conteúdo desta aula é fundamental para darmos 
continuidade do conteúdo da disciplina. 
 
 
 
19 
REFERÊNCIAS 
COSTA, C. Projetos de circuitos digitais com FPGA. 3. ed. São Paulo: Érica, 
2014. cap. 3. 
D’AMORE, R. VHDL: descrição e síntese de circuitos digitais. 2. ed. Rio de 
Janeiro: LTC, 2012. cap. 3, 4, 6 e 11. 
PEDRONI, V. A. Eletrônica digital moderna e VHDL. Rio de Janeiro: Elsevier, 
2010. cap. 5 e 9. 
TOCCI, R.; WIDMER, N. S. Sistemas digitais: princípios e aplicações. 11. ed. 
São Paulo: Pearson, 2011. cap. 7 e 9.

Continue navegando