Buscar

Logica_Programavel_AulaTeorica2

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

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

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ê viu 3, do total de 73 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

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

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ê viu 6, do total de 73 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

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

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ê viu 9, do total de 73 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

Prévia do material em texto

72
1
Prof. Ederson Cichaczewski
Lógica Programável
Aula 2
72
2
Linguagem VHDL – Elementos Básicos
72
3
Conversa Inicial 
72
4
Tema 1
Conhecendo os aspectos elementares de 
VHDL
Tema 2
Representação de dados e operadores em 
VHDL
72
5
Tema 3
Comandos concorrentes em VHDL
Tema 4
Estruturas sequenciais em VHDL
Tema 5
Funções em VHDL
72
6
A linguagem de descrição de hardware VHDL, 
sendo universal, possibilita a troca de 
informações de circuito entre diferentes 
fabricantes e ferramentas de projeto.
Contextualizando
72
7
Conhecendo os aspectos 
elementares de VHDL
72
8
O hardware pode ser descrito em sua 
arquitetura segundo dois níveis de abstração: 
Estrutural: lista de ligações 
Comportamental: modo de operação
VHDL permite descrever circuitos em nível 
RTL (Register Transfer Level), que consiste 
em descrever o fluxo dos sinais entre 
registradores e portas lógicas, por meio de 
uma sintaxe familiar a uma linguagem de 
programação.
72
9
Fornecem um meio para a definição de recursos de uso comum. Podem ser:LIBRARY ieee;LIBRARY std;LIBRARY work;
Package é uma subdivisão de uma biblioteca, especificado por USE. 
Por exemplo: o pacote que define tipos de dados, funções etc., é o IEEE 1164. No código o seu uso é dado por:USE ieee.std_logic_1164.all;
Bibliotecas (Library)
72
10
Execução concorrente (em paralelo)
A princípio todos as linhas de código 
são executadas concorrentemente
Isso quer dizer que a ordem de 
apresentação dos comandos é irrelevante 
na operação do circuito
É possível delimitar regiões de código 
sequencial em que será seguida a ordem 
de apresentação dos comandos.
72
11
Exemplo de execução concorrente:
Os códigos das linhas 8 e 9 podem ser 
trocados de posição, não haverá diferença 
na operação.
72
12
Fonte: D’AMORE, ROBERTO. VHDL Descrição e Síntese de Circuitos Digitais. 2ª ed. Rio de Janeiro: LTC, 2012. Capítulo 1. Pg. 2
72
13
A sintaxe não diferencia letras minúsculas 
de maiúsculas.
Como padrão, usa-se maiúsculas em 
palavras-chave da linguagem. 
As letras minúsculas devem ser usadas para 
variáveis criadas pelo desenvolvedor.
Comentários se inicial após dois hifens 
“--” e terminam ao final da linha.
72
14
Fonte: D’AMORE, ROBERTO. VHDL Descrição e Síntese de Circuitos Digitais. 2ª ed. Rio de Janeiro: LTC, 2012. Capítulo 2. Pg. 10
Entidade de projeto
Design Entity - é composta de duas partes:
Declaração da entidade: interfaces de 
I/O
Arquitetura: operação
72
15
Fonte: D’AMORE, ROBERTO. VHDL Descrição e Síntese de Circuitos Digitais. 2ª ed. Rio de Janeiro: LTC, 2012. Capítulo 2. Pg. 11
Exemplo de entidade:
72
16
Após ENTITY vem o nome que a identifica, 
seguido por IS.
GENERIC permite declarar constantes.
PORT define o modo e o tipo das portas de 
entrada e saída.
END seguida do nome da entidade encerra a 
construção.
72
17
Modos das portas
IN: apenas entrada
OUT: apenas saída
INOUT: entrada e saída
BUFFER: permite uma conexão interna à 
entidade
Fonte: D’AMORE, ROBERTO. VHDL Descrição e Síntese de Circuitos Digitais. 2ª ed. Rio de Janeiro: LTC, 2012. Capítulo 2. Pg. 11
72
18
Arquitetura:
Fonte: D’AMORE, ROBERTO. VHDL Descrição e Síntese de Circuitos Digitais. 2ª ed. Rio de Janeiro: LTC, 2012. Capítulo 2. Pg. 12
72
19
Após ARCHITECTURE vem o nome que a 
identifica, depois OF e o nome da entidade, 
seguido por IS
Logo abaixo podem ser feitas declarações
Por fim, entre BEGIN e END, ficam os 
comandos concorrentes que descrevem a 
entidade
72
20
Representação de dados e 
operadores em VHDL
72
21
Elementos que contêm valor armazenado. 
São quatro:
CONSTANT (constante): valor estático
VARIABLE (variável): valor pode ser 
alterado, usado apenas em código 
sequencial
Classes de objetos
72
22
SIGNAL (sinal): valor pode ser alterado, 
usado em código concorrente e sequencial
FILE (arquivo): associados à criação de 
arquivos
72
23
Tipos escalares
BIT: níveis lógicos 0 ou 1
BOOLEAN: valores TRUE ou FALSE
CHARACTER: qualquer caractere ASCII
INTEGER: valores inteiros positivos ou negativos. Subtipos: NATURAL e POSITIVE
REAL: números em ponto flutuante
TIME: tipo físico com unidade 10-15s
Tipos de Dados
72
24
Tabela com exemplos dos tipos escalares.
Fonte: D’AMORE, ROBERTO. VHDL Descrição e Síntese de Circuitos Digitais. 2ª ed. Rio de Janeiro: LTC, 2012. Capítulo 2. Pg. 15
72
25
Tipos compostos
BIT_VECTOR: contém elementos do tipo BIT
STRING: contém elementos do tipo 
CHARACTER
Tabela com exemplos:
Fonte: D’AMORE, ROBERTO. VHDL Descrição e Síntese de Circuitos Digitais. 2ª ed. Rio de Janeiro: LTC, 2012. Capítulo 2. Pg. 16
72
26
O número de elementos é especificado com a 
palavra DOWNTO
Ex: SIGNAL a, b: BIT_VECTOR(4 DOWNTO 0);
72
27
Tipos do Padrão IEEE 1164
Podem assumir 9 valores: 
‘U’, ‘X’, ‘0’, ‘1’, ‘Z’, ‘W’, ‘L’, ‘H’, ‘–’.
São eles:
STD_LOGIC
STD_LOGIC_VECTOR
72
28
Fonte: D’AMORE, ROBERTO. VHDL Descrição e Síntese de Circuitos Digitais. 2ª ed. Rio de Janeiro: LTC, 2012. Capítulo 10. Pg. 154
72
29
Tipos do padrão IEEE 1076.3
Valores com sinal (SIGNED) e 
sem sinal (UNSIGEND) do tipo BIT 
(pacote numeric_bit) ou STD_LOGIC 
(pacote numeric_std)
Em um vetor que tem um número com 
sinal negativo, este é representado em 
complemento de 2
72
30
Fonte: D’AMORE, ROBERTO. VHDL Descrição e Síntese de Circuitos Digitais. 2ª ed. Rio de Janeiro: LTC, 2012. Capítulo 11. Pg. 173
72
31
Atribuição
:= usado para atribuir valor a um objeto das 
classes VARIABLE ou CONSTANT
<= usado para atribuir valor a um objeto da 
classe SIGNAL e para portas (PORT)
=> usado para atribuir valor a um elemento 
de um vetor ou aos elementos não 
especificados (OTHERS)
Operadores
72
32
Operadores lógicos
Realizam operações lógicas
Os tipos de dados envolvidos podem ser: 
BIT, BIT_VECTOR, STD_LOGIC e 
STD_LOGIC_VECTOR
72
33
Na prática implementam as funções das 
portas lógicas.
Fonte: D’AMORE, ROBERTO. VHDL Descrição e Síntese de Circuitos Digitais. 2ª ed. Rio de Janeiro: LTC, 2012. Capítulo 2. Pg. 19
72
34
Operadores aritméticos
Realizam operações aritméticas 
Os tipos de dados envolvidos podem ser: 
INTEGER, SIGNED, UNSIGNED e REAL
72
35
Fonte: D’AMORE, ROBERTO. VHDL Descrição e Síntese de Circuitos Digitais. 2ª ed. Rio de Janeiro: LTC, 2012. Capítulo 2. Pg. 21
72
36
Operadores relacionais
Realizam comparações em operações de 
igualdade, desigualdade e ordenação
Qualquer tipo de dado é aceito
Fonte: D’AMORE, ROBERTO. VHDL Descrição e Síntese de Circuitos Digitais. 2ª ed. Rio de Janeiro: LTC, 2012. Capítulo 2. Pg. 19
72
37
Operadores de deslocamento de Bit
Deslocamento lógico para esquerda ou direita
Deslocamento aritmético para esquerda ou 
direita
Rotação lógica para esquerda ou direita
O operando da esquerda deve ser do tipo 
BIT_VECTOR e o operando da direita do tipo 
INTEGER
72
38
Fonte: D’AMORE, ROBERTO. VHDL Descrição e Síntese de Circuitos Digitais. 2ª ed. Rio de Janeiro: LTC, 2012. Capítulo 2. Pg. 20
72
39
São informações adicionais associadas a 
sinais, vetores e tipos
Atributos de sinais
ACTIVE: retorna se o sinal está ativo
QUIET[t]: retorna se o sinal está inativo 
em um instante de tempo especificado
Atributos
72
40
EVENT: retorna se o sinal teve uma 
mudança de valor, ocorreu um evento
STABLE: retorna se não ocorreu nenhum 
evento
72
41
Comandos concorrentes em VHDL
72
42
Podemos fazer uma relação de comparação 
com os circuitos combinacionais e 
sequenciais.
Circuitos combinacionais não possuem 
memória e suas saídas dependem apenas 
do estado atual das entradas. Portanto, só 
podem ser descritos com código concorrente.
Código concorrente versus sequencial
72
43
Em circuitos sequenciais, a saída depende de 
uma entrada anterior, há uma realimentação 
da saída para a sua entrada. Portanto, só 
podem ser descritos com código sequencial.
72
44
Os comandos concorrentes são: WHEN, 
GENERATE e BLOCK.
Quando estamos elaborando um código 
concorrente, é necessário ter cuidado 
para não criar iterações que geram loop,causando instabilidade.
72
45
Em uma região de código concorrente, a 
ordem das linhas não deve interferir no 
resultado, buscando-se uma condição 
estável do circuito. 
Em certos casos, é mais fácil implementar 
um circuito combinacional utilizando código 
sequencial, mesmo que o circuito lógico não 
tenha elementos sequenciais.
72
46
WHEN
Permite duas construções:
WHEN / ELSE : permite a transferência 
condicional de um sinal, com prioridade na 
ordem das condições.
WITH / SELECT / WHEN : transfere um 
valor a um sinal de destino segundo uma 
relação de opções, sem prioridade.
72
47
Exemplo de construção WHEN/ELSE
A primeira condição que retorna o valor 
verdadeiro define o valor que é transferido 
para o sinal de destino.
Fonte: D’AMORE, ROBERTO. VHDL Descrição e Síntese de Circuitos Digitais. 2ª ed. Rio de Janeiro: LTC, 2012. Capítulo 3. Pg. 32
72
48
Exemplo de construção WITH / SELECT / 
WHEN 
Todas as condições de seleção devem ser 
consideradas, e elas devem ser mutuamente 
exclusivas.
Fonte: D’AMORE, ROBERTO. VHDL Descrição e Síntese de Circuitos Digitais. 2ª ed. Rio de Janeiro: LTC, 2012. Capítulo 3. Pg. 33
72
49
GENERATE
Permite repetir comandos concorrentes segundo duas construções:
FOR / GENERATE : contém um identificador local e os limites da geração
IF / GENERATE : faz uma réplica dos comandos contidos, caso a condição seja satisfeita
Aplica-se a circuitos como somadores, multiplicadores e unidades lógicas aritméticas
72
50
Exemplos de construção FOR / GENERATE
Fonte: D’AMORE, ROBERTO. VHDL Descrição e Síntese de Circuitos Digitais. 2ª ed. Rio de Janeiro: LTC, 2012. Capítulo 7. Pg. 107
72
51
Exemplo de construção IF / GENERATE
A condição é verificada por uma expressão 
estática
Fonte: D’AMORE, ROBERTO. VHDL Descrição e Síntese de Circuitos Digitais. 2ª ed. Rio de Janeiro: LTC, 2012. Capítulo 7. Pg. 109
72
52
BLOCK (bloco)
Permite dividir o código em regiões para 
facilitar o entendimento da descrição.
Sinais podem ser declarados com 
visibilidade restrita ao interior do bloco.
72
53
Exemplo de construção:
Fonte: D’AMORE, ROBERTO. VHDL Descrição e Síntese de Circuitos Digitais. 2ª ed. Rio de Janeiro: LTC, 2012. Capítulo 3. Pg. 35
72
54
Estruturas sequenciais em VHDL
72
55
Ficam em regiões específicas de código, 
como processos ou subprogramas, que são:
PROCESS
FUNCTION
PROCEDURE
Comandos sequenciais
72
56
Comandos sequenciais:
IF
CASE
WAIT
LOOP
72
57
PROCESS
Em sua construção, possui uma lista de sensibilidade em que são definidos sinais que disparam a execução do processo
É equivalente à interrupção em um microcontrolador
Em determinadas aplicações, pode ser usado em conjunto com o atributo EVENT, para identificar o tipo de mudança ocorrida no sinal
A atualização do valor de uma variável é imediata, mas de um sinal pode ocorrer após o término do processo
72
58
Construção IF / ELSE
Permite execução condicional, em 
função de condições 
O comando IF pode ser seguido de 
cláusulas ELSIF, sendo a última ELSE 
(ambas opcionais)
72
59
Exemplo:
Fonte: D’AMORE, ROBERTO. VHDL Descrição e Síntese de Circuitos Digitais. 2ª ed. Rio de Janeiro: LTC, 2012. Capítulo 4. Pg. 46
72
60
Construção CASE WHEN
Permite execução condicional em função de uma expressão
As condições devem ser mutuamente exclusivas
Exemplo:
Pode-se agrupar condições com o operador “|”, que equivale a “OU”
Fonte: D’AMORE, ROBERTO. VHDL Descrição e Síntese de Circuitos Digitais. 2ª ed. Rio de Janeiro: LTC, 2012. Capítulo 4. Pg. 48
72
61
Comando WAIT
Suspende a execução de um processo ou procedimento
Cláusulas:
ON: suspende o processo até a alteração de um dos sinais mudar de valor
UNTIL: suspende o processo enquanto a expressão booleana não for satisfeita
FOR: suspende o processo por um determinado tempo
72
62
Fonte: D’AMORE, ROBERTO. VHDL Descrição e Síntese de Circuitos Digitais. 2ª ed. Rio de Janeiro: LTC, 2012. Capítulo 4. Pg. 49
72
63
Comando LOOP
Permite repetir a execução de 
comandos sequenciais
Esquemas FOR e WHILE
FOR / LOOP
Contém um identificador local 
e os limites de iteração
72
64
Fonte: D’AMORE, ROBERTO. VHDL Descrição e Síntese de Circuitos Digitais. 2ª ed. Rio de Janeiro: LTC, 2012. Capítulo 7. Pg. 110
72
65
WHILE / LOOP
Um conjunto de comandos são executados 
se uma condição for verdadeira.
Fonte: D’AMORE, ROBERTO. VHDL Descrição e Síntese de Circuitos Digitais. 2ª ed. Rio de Janeiro: LTC, 2012. Capítulo 7. Pg. 110
72
66
EXIT: comando usado para sair do loop
NEXT: usado para pular passos do loop, 
indo para o final do loop
72
67
Funções e procedimentos em VHDL
72
68
Conjunto de comandos sequenciais usados 
frequentemente
Recebem parâmetros
Retornam valores
Podem ser chamados em regiões de código 
concorrente ou sequencial
Objetos declarados localmente perdem o seu 
valor ao sair do subprograma
Não é permitido declarar sinais
Subprogramas
72
69
É chamada por uma expressão e retorna 
um único valor (comando RETURN)
Muito similar ao processo (PROCESS), os 
mesmos comandos podem ser utilizados 
(IF, CASE, LOOP)
Possui duas partes:
O corpo da função
A chamada da função
FUNCTION (Função)
72
70
Exemplo de construção de uma função:
Fonte: D’AMORE, ROBERTO. VHDL Descrição e Síntese de Circuitos Digitais. 2ª ed. Rio de Janeiro: LTC, 2012. Capítulo 8. Pg. 124
72
71
É chamado por um comando e permite 
retornar mais de um valor
O comando RETURN não é obrigatório
Possui duas partes:
O corpo do procedimento
A chamada do procedimento
PROCEDURE (Procedimento)
72
72
Exemplo de construção de um procedimento:
Fonte: D’AMORE, ROBERTO. VHDL Descrição e Síntese de Circuitos Digitais. 2ª ed. Rio de Janeiro: LTC, 2012. Capítulo 8. Pg. 125
72
73

Outros materiais