Buscar

Aula 03 Conceitos de VHDL

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 87 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 87 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 87 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

1
Prototipação Rápida de Sistemas 
Digitais usando VHDL e FPGAs
Professor 
Edward David Moreno
edwdavid@gmail.com
Ciência da Computação 
2
Objetivos deste Módulo
� Divulgação de uma nova tecnologia (FPGA-VHDL).
� Dar continuidade nas pesquisas desenvolvidas até 
hoje.
� Encontrar pessoas que tenham verdadeira afinidade 
com a área.
� Aprender a projetar sistemas digitais
� Se possível, fazer a prototipação em FPGAs.
3
Alguns projetos Desenvolvidos ou em 
desenvolvimento.
� Projeto turbina
� Projeto de processadores (HC05 - HC11)
� Projeto GLT
� Projeto de Criptografia
� Projeto do robô
� Projeto Alarme Visual
� Projeto processamento de imagens 
� Arquiteturas para Aplicações Específicas
– REDE, Criptoprocessadores, etc.
� Outros...
4
LAS - Laboratório de Arquitetura de Sistemas
Equipamentos:
� Fonte
� Osciloscópio
� Microcontroladores
� FPGAS
� Multímetro
� Gerador de Sinal
� Kits Didáticos
� e outros...
5
Conteúdo (Resumo por fases)
� Teoria básica de VHDL e FPGA
� Descrição e simulação de circuitos digitais.
� Descrição, simulação e implementação de circuitos 
digitais básicos (combinacionais, sequenciais)
� Circuitos básicos
� Divisor de clock
� Decodificador
� ULA 
� Somadores, Multiplicadores, Divisores
� Relógio Simplificado
� Comunicação Serial
� Processadores
� Outros Circuitos*
*depende do andamento do curso
6
Sistemas Embebidos “Embedded systems”
� Sistemas de Computação 
Embebidos
– Em dispositivos eletrônicos
– Díficil definir. Em principio 
qualquer outro sistema 
computacional diferente a um 
computador de mesa (desktop 
computer)
– Bilhões de unidades produzidas 
a cada ano, versus milhões de 
unidades de desktop
Computadores Estão em 
… 
e em ...
E ainda em ...
Comparação CUSTO
7
Uma “Pequena Lista” de Sistemas 
Embarcados
E a lista continua em crescimento
Anti-lock brakes
Auto-focus cameras
Automatic teller machines
Automatic toll systems
Automatic transmission
Avionic systems
Battery chargers
Camcorders
Cell phones
Cell-phone base stations
Cordless phones
Cruise control
Curbside check-in systems
Digital cameras
Disk drives
Electronic card readers
Electronic instruments
Electronic toys/games
Factory control
Fax machines
Fingerprint identifiers
Home security systems
Life-support systems
Medical testing systems
Modems
MPEG decoders
Network cards
Network switches/routers
On-board navigation
Pagers
Photocopiers
Point-of-sale systems
Portable video games
Printers
Satellite phones
Scanners
Smart ovens/dishwashers
Speech recognizers
Stereo systems
Teleconferencing systems
Televisions
Temperature controllers
Theft tracking systems
TV set-top boxes
VCR’s, DVD players
Video game consoles
Video phones
Washers and dryers
8
Some common characteristics of 
embedded systems
� Single-functioned
– Executes a single program, repeatedly
� Tightly-constrained
– Low cost, low power, small, fast, etc.
� Reactive and real-time
– Continually reacts to changes in the system’s 
environment
– Must compute certain results in real-time without 
delay
9
Um Exemplo de SE - Uma camera digital
Microcontroller
CCD preprocessor Pixel coprocessor
A2D
D2A
JPEG codec
DMA controller
Memory controller ISA bus interface UART LCD ctrl
Display ctrl
Multiplier/Accum
Digital camera chip
lens
CCD
� Funcionamento Simples – sempre uma camera digital
� Fortes Limitações: Baixo custo, baixa potência, pequeno, rápido
� Reativo e tempo-real: aceitam pequenas extensões
10
Parte 2 - Conceitos de FPGAs
� Definição
� Estrutura Interna
� Roteamento
� Reconfiguração
� Áreas de Aplicação
11
Definição
FPGA - Field Programmable Gate Array
� Conjunto de Portas Programáveis
� Prototipação, validação da lógica e desenvolvimento do 
hardware.
� Permite desenvolver circuitos de lógica digital complexa,
� Dispositivos FPGA não possuem registradores, ULA, Unidade 
de Controle ou periféricos convencionais. 
� Um FPGA é constituído por milhares de portas lógicas 
desconexas, as quais serão “interligadas” para formar a lógica 
necessária.
12
XilinxXilinx
AlteraAltera
Kits de PrototipaçãoKits de Prototipação
http://www.xilinx.com
http://www.altera.com
13
FPGAFPGA
14
Estrutura Interna
CLB
Figura 1 : Estutura interna 
FPGA família 4000 
D Q
Slew
Rate
Control
Passive
Pull-Up,
Pull-Down
Delay
Vcc
Output
Buffer
Input
Buffer
Q D
Pad 
D Q
SD
RD
EC
S/R
Control
D Q
SD
RD
EC
S/R
Control
1
1
F'
G'
H'
DIN
F'
G'
H'
DIN
F'
G'
H'
H'
HFunc.Gen.
GFunc.Gen.
FFunc.Gen.
G4
G3
G2
G1
F4
F3
F2
F1
C4C1C2 C3
K
Y
X
H1 DIN S/R EC 
IOB
Um FPGA típico , é constituído por inúmeras células básicas 
(CLB’s), que serão interligadas com base no roteamento.
15
Configurable Logic Block (CLB)
16
I/O Block
17
Roteamento
É a forma com que as Unidades Básicas serão interligadas,
gerando a lógica correspondente ao circuito descrito.
O software de síntese é responsável por configurar as linhas
de roteamento. O roteamento das células (CLBs) influência
diretamente no desempenho geral do circuito descrito. 
18
Reconfiguração
Alguns FPGAs são reconfiguráveis (Virtex), ou seja, 
tem capacidade de alterar sua lógica interna.
� Reconfiguração parcial
� Reconfiguração total
19
Áreas de Aplicação
• Consumo: Decodificador de áudio digital, arcade games, video
games, sistemas de karaokê.
• Industrial: Equipamentos de teste e medidas, equipamentos
médicos, controle remoto, robótica, emulador ASIC, sistemas de
visão.
• Comunicação de Dados: Multiplexadores, roteadores, vídeo
conferencia, criptografia, conectores, modems, compressão de
dados, LAN HUBs, FDDI, Wireless LANS.
• Telecomunicação: Interfaces SONET, interfaces de fibras ópticas,
ATM, interfaces ISDN, controlador de voice-mail, equipamentos
PBX, multiplexadores T1, compressão de dados.
• Militar: Sistemas de computadores e comunicação, Controle de
Fogo.
• Computadores: Interfaces de memória, controladores DMA,
controladores de cache, co-processadores SSP, multimídia,
gráficos.
• Periféricos: Controladores de disco, controladores de vídeo, FAX,
máquinas de caixa, modems, sistemas POS, cartões de aquisição
de dados, terminais, impressoras, scanners, copiadoras.
20
Parte 1 - Conceitos da Linguagem VHDL
� Definição
� Vantagens da linguagem VHDL 
� Breve Histórico
� Padrão IEEE
� Fluxo Concorrente
21
Definição
VHDL : V ery High Speed Integrated Circuit
H ardware
D escription
L anguage
� VHDL é uma linguagem padronizada para descrever 
componentes digitais permitindo a transferência de 
componentes ou projetos para qualquer tecnologia 
em construção de hardware existente ou que ainda 
será desenvolvida.
22
Vantagens da linguagem VHDL:
• Reduz tempo/custo de desenvolvimento.
•Maior nível de abstração.
• Projetos independentes da tecnologia.
• Facilidade de atualização dos projetos. 
• Grande número de usuários (internacional).
23
Breve Histórico
� Começou em 1980 (DoD). 
� Em 1987, todos os circuitos eletrônicos digitais 
descritos em VHDL e 
� O Institute of Electrical and Electronics Engineers 
(IEEE), ratificou o VHDL como IEEE Padrão 1076.
� F22
� Em 1993 a linguagem VHDL foi revisada
� Em 1996, as ferramentas de simulação e de síntese
foram incorporadas pelo padrão IEEE 1076’93
24
Padrão IEEE
� O padrão nada mais é do que uma biblioteca que 
define os tipos da linguagem VHDL e que 
implementam operações lógicas básicas.
� Padrão IEEE 1164 - Atualmente as ferramentas 
CADs (Xilinx Foundation, Altera - Max Plus)utilizam 
este padrão que possibilita a utilização de tipos 
variados e comandos próprios que facilitam a 
implementação dos circuitos.
Library IEEE;
Use IEEE.std_logic_1164.all;
25
Fluxo Concorrente
A linguagem VHDL é uma linguagem concorrente, ou 
seja, permite a construção de “trechos de códigos” 
concorrentes entre si. Trechos seqüenciais também 
são permitido.
Processo1
trecho sequencial
Processo2
trecho sequencial
Execução
Execução
A execução entre 
os processos são
concorrentes
26
Parte 3 - Introdução aos Elementos da 
Linguagem VHDL
� Entidade
� Arquitetura
� Componente
� Tipos da Linguagem VHDL
� Processo
� Variável e Sinal
� Comandos Seqüenciais
27
Entidade - Entity
entity nome_entidade is
<direção>: in, out, inout;
<tipo>: std_logic, std_logic_vector, integer
Declara as interfaces do projeto ( pinos de entrada e saída ) 
port ( pino_0: <direção> <tipo>;
pino_1: <direção> <tipo>);
end nome_entidade;
28
Entidade - Exemplo
entity exemplo is
a
b
cin
in
out
port ( a : in std_logic;
b : in std_logic;
c : out std_logic);
end exemplo;
29
Arquitetura - Architecture
architecture nome_arquitetura of nome_entidade is
<declarações>
<declarações>: sinais, componente, tipos,
constantes, funções
Define a implementação do projeto
begin
<comandos>
end nome_arquitetura ;
30
Arquitetura - Exemplo
architecture comportamento of exemplo is
c <= a and b;
a
b
c
Implementação do projeto
begin
c <= a and b;
end comportamento ;
31
Componentes - Component
O componente é uma estrutura que referência diretamente uma
entidade, e possibilita a instanciação e replicação da mesma
sem a necessidade de descreve-la novamente. A forma geral
para declarar um componente é:
COMPONENT nome
[PORT (lista de portas);]
END COMPONENT [nome];
32
Componente -Exemplo
component ula
port (op: in std_logic_vector(3 downto 0);
A: in std_logic;
B: in std_logic;
Saida: out std_logic);
end component;
33
Tipos da Linguagem VHDL
� integer
variable teste1 : integer;
� boolean 
variable teste4:boolean;
� bit
variable teste2 : bit;
� bit_vector
variable teste3 : bit_vector(7 downto 0);
� std_logic;
variable teste5:std_logic;
� std_logic_vector 
variable teste6: std_logic_vector(7 downto 0) 
34
Processo - Process
� Dá características de paralelismo (concorrência)
� Execução entre processos é paralela;
� Dentro dos processos as ações são seqüenciais, 
executadas passo a passo;
Process
begin
< comandos seqüenciais... >
end;
end process;
< lista sensitiva>
35
Comando ´Event
O comando ´Event é utilizado para sincronização de 
processos em relação a mudança de estado de um 
signal ou uma porta de entrada do circuito.
O processo fica monitorando o signal/porta e entra em 
execução no momento definido em ´Event 
Clock´Event and Clock = ‘1’
Clock´Event and Clock = ‘0’
36
Variable X Signal
� Variable : São variáveis locais ao processo onde 
foram declaradas. São atualizadas de acordo com a 
execução do processo
a:=10;
� Signal : São variáveis globais e tem seu valor 
atualizado ao final do processo. Só pode ocorrer uma 
única atribuição em todo o código 
a<=10;
Na atribuição de variáveis usaNa atribuição de variáveis usa--se se :=:=
Na atribuição de sinais usaNa atribuição de sinais usa--se se <=<=
37
Exemplo de uso : Variable
Process
Variable a,b : std_logic;
Variable c : integer;
begin
a:=‘1’;
b:= not (a);
c:= 15;
end;
end process;
a := ‘0’; NÃO EXISTE !!!
38
Exemplo de uso : Signal
signal a : std_logic;
P1: Process
begin
a<=‘1’;
end;
end process;
P2: Process
begin
case a is
when ‘0’ =>................... < comandos >
when ‘1’ =>....................< comandos >
end;
end process;
Um sinal pode ser utilizado por vários processos
39
Exemplo de uso : Signal
signal a , b : std_logic;
P1: Process
begin
a<=‘1’;
end;
end process;
P2: Process
begin
a<=´0’;
end;
end process;
Não pode ocorrer mais de uma atribucão 
para um mesmo signal !!!
40
Comandos Seqüenciais
� Comando IF
� Comando CASE 
� Comando WHILE
� Comando FOR 
41
Comando IF
if condição then
<comandos>
else
<comandos>
end if ; if condição then
<comandos>
elsif condição then
<comandos>
else
<comandos>
end if ;
42
Comando IF - Exemplos
if a < b then
c <= ´1´;
else
c <= ´0´;
end if;
if a < b then
c <= ´1´;
elsif b < d
e <=´0´;
else
e<= ´1´;
end if;
?
43
Comando CASE
case <expressão> is
when <condição> =>
<comandos>
[when others =>
<comandos>]
end case ;
44
Comando Case - Exemplo
case entrada is
when "0000" => saida <="1111011";
when "1101" => saida <="1111100";
when "1110" => saida <="0110111";
when "1111" => saida <="0010111";
when others => saida<="0000000"; 
end case;
45
Comando WHILE e FOR
while <condição> loop
<comandos>
end loop;
for item in primeiro_item to último_item loop
<comandos>
end loop;
Comando While
Comando FOR
46
Comando While e For - Exemplos
While a>b loop
a<= a-1;
end loop;
Comando While
Comando For
For i in 0 to 100 loop
c<=a;
end loop;
47
Parte 4 - Descrição e Simulação de 
Circuitos Digitais Básicos
� Uso da Ferramenta Foundation
� Portas Lógicas Básicas
� Circuitos Multiplexadores
� Circuitos Aritméticos
� Somadores e Subtratores
� Discussão de Circuitos Multiplicadores e 
Somadores
� Decodificadores e Codificadores
48
Uso da Ferramenta Foundation
49
Portas Lógicas Básicas
Portas implementadas pelo padrão 1164:
� AND
� OR
� XOR
� NOR
� NAND
� XNOR
� NOT
50
Implementação e Simulação de uma porta 
lógica básica AND
library ieee;
use ieee.std_logic_1164.all;
entity exe_and is
port ( a : in std_logic;
b : in std_logic;
c : out std_logic);
end exe_and;
51
Implementação e Simulação de 
uma porta lógica básica AND
architecture comportamento of exe_and is
begin
process (a,b )
begin
c <= a and b;
end process;
end comportamento;
a
b
c
1
1
1
0
0
a b c
0 0 0
0 1 0
1 0 0
1 1 1
(a) ( b) (c)
52
Circuitos Multiplexadores
library ieee;
use ieee.std_logic_1164.all;
entity mult2x1 is
port ( op1,op2,sel: in std_logic;
s: out std_logic);
endmult2x1;
architecturemult2x1_arch of mult2x1 is
begin
process (op1,op2,sel)
begin 
if sel =´1´ then 
s <= op1;
else 
s <= op2;
end if;
end process;
endmult2x1_arch;
E1
E2
SEL
S
E1
E2
SEL S
Sel S
0 E1
1 E2
(a) (b) (c)
53
VHDL x SCHEMATIC
s(0)
s(1)
s(2)
s(3)
s(4)
s(5)
s(6)
s(7)
x(2)x(1)x(0)
case x is 
 when "000" => s <= "00000001"; 
 when "001" => s <= "00000010"; 
 when "010" => s <= "00000100"; 
 when "011" => s <= "00001000"; 
 when "100" => s <= "00010000"; 
 when "101" => s <= "00100000"; 
 when "110" => s <= "01000000"; 
 when "111" => s <= "10000000"; 
 end case; 
Decodificador 3X8
54
VHDL x SCHEMATIC
Estatísticas Espacial
Estatísticas Temporal
Decodificado 3x8 
55
Circuitos Aritméticos
� Somadores e Subtratores
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
entity ULA is
port ( OP1: in std_logic_vector (3 downto 0);
OP2: in std_logic_vector (3 downto 0);
SEL: in STD_LOGIC;
RESUL: out std_logic_vector (3 downto 0));
end ULA;
architecture ULA_archof ULA is
begin
process (OP1,OP2,SEL)
begin
if SEL ='1' then
RESUL <= OP1 + OP2;
else
RESUL <= OP1 - OP2;
end if;
end process;
end ULA_arch;
56
Multiplicadores e Divisores
Obtém-se uma multiplicação através de somas
consecutivas de um mesmo número
De forma semelhante, a divisão é obtida através de 
subtrações consecutivas 
Os operadores para multiplicação e divisão em VHDL
são : * (asterístico) para a multiplicação
/ (barra) para a divisão
Exemplo : RESULTADO <= A * B;
RESULTADO <= A / B;
57
Decodificadores e Codificadores
library IEEE;
use IEEE.std_logic_1164.all;
entity decode is
port ( num: in std_logic_vector (1 downto 0);
led: out std_logic_vector (6 downto 0));
end decode;
58
Decodificadores e Codificadores
architecture decode_arch of decode is
begin
process (num)
case num is
when "00" => led <= "0000000";
when "01" => led <= "0000001";
when "10" => led <= "0000010";
when "11" => led <= "0000011";
when others => null;
end case; 
end process; 
end decode_arch;
59
Parte 5 - Descrição, simulação e 
implementação em FPGAs
� Implementação Real em FPGAs
� Circuito pisca LED
� Circuito Mostra “OLA”
� Circuito Relógio
� CPU de 4 bits Simplificada
� Comunicação Serial
60
Implementação Real em FPGAs
� Kit de Prototipação
� Pinagem
� Arquivos UCF e BIT
61
Kit de Prototipação
� LEDs
� Memória
� Saída VGA
� Microcontrolador
� Porta Paralela
� Discussão sobre EPROM
62
Parte 3 - Implementação
� Como acender um LED do Display ? 
� Como Fazer um Contador ?
� Como Fazer um Divisor de Clock ?
� Como Fazer um Decodificador ? 
� Implementação de um Relógio
63
Como acender um LED do Display ?
O que é preciso para acender um LED ?
� Precisamos conhecer o display da placa
�Agora é só colocar “1” na sua saída e seta-la em 
um dos pinos da sua placa
P18
P19
P20
P23
P24
P25
P26
64
Acende LED 
library IEEE;
use IEEE.std_logic_1164.all;
entity led is
port ( a: out std_logic );
end led;
65
Acende LED
architecture led_arch of led is
signal aux : std_logic;
begin
aux <= '1'; 
process ( aux ) 
begin
if aux='1' then
a <= '1';
end if;
end process;
end led_arch;
66
Alocando Pinos
Para alocar pinos:
� Entre no diretório do projeto 
� Localize o arquivo nome_projeto.ucf
� No final do arquivo digite os pinos e seus respectivos
valores. 
Sintaxe: 
NET <nome_pino> LOC=P<num_pino>; 
67
Implementação para acender
um LED
� Editar o arquivo .UCF com o seguinte 
formato :
NET saida LOC=P20;
68
Locando Pinos
P18
P19
P20
P23
P24
P25
P26
P13 - Pino do clock da FPGA - 12MHz
P18, P19, P20, P23, P24, P25, P26 - Pinos do Display
Pinos Importantes:
69
Como fazer um divisor de clock ?
Para o nosso exemplo iremos gerar um clock a cada 
1 segundo.
O que é preciso para gerar um clock a cada 1 segundo 
?
� Primeiro é preciso conhecer o clock do FPGA, neste 
caso o clock é de 12Mhz
1 Hz = 1 pulso/seg 
1 Mhz = 1.000.000 pulsos/seg
12 Mhz = 12.000.000 pulsos/seg
� E necessário também criar um sinal do tipo inteiro para 
servir como um contador de tempo.
70
Implementação do clock divisor de 
1 segundo
library ieee;
use ieee.std_logic_1164.all;
entity clock_1s is
port ( clk_12Mhz : in std_logic; -- clock de 12Mz da placa
saida : out std_logic); -- clock gerado de 1 segundo
end clock_1s;
architecture comportamento of clock_1s is
signal cont : integer;
begin
Process(clock_12Mhz)
Begin
if clock_12Mhz'Event and clock_12Mhz = '1' then
cont <= cont + 1; --se ocorrer a transição positiva do clock
71
end if;
end process;
end comportamento;
if cont = 6000000 then
saida <= '1'; -- saída recebe “1” quando cont igual 6000000
end if;
if cont = 12000000 then
saida<=‘0’; -- saída recebe “0” quando cont igual 12000000
cont <= 0; -- contador é zerado, para iniciar novo ciclo
end if;
72
Implementação do clock 
divisor de 1 segundo
� Editar o arquivo .UCF com o seguinte 
formato :
NET clk_12Mhz LOC=P13;
NET saida LOC=P20;
73
Como fazer um Decodificador ?
Para o nosso exemplo iremos decodificar para 
aparecer no Display SIC-2003
A decodificação vai ser realizada de acordo 
com o nosso display S - 1100111
I - 0010001
C - 0110011
- - 0000100
2 - 0111110
0 - 1111011
0 - 1111011
3 - 1101110
P20
P19
P25
P18 P23
P24 P26
74
Implementação do Decodificador
library ieee;
use eee.std_logic_1164.all;
entity decodifica is
port (clock_12Mhz : in std_logic;
saida : out std_logic_vector ( 6 downto 0));
end decodifica;
architecture comportamento of decodifica is
signal cont : integer;
begin
process ( clock_12Mhz)
variable conta : integer;
75
Implementação do Decodificador
begin
if clock_12Mhz'EVENT and clock_12Mhz='1' then
cont <= cont+1;
if cont = 6000000 then
conta := conta +1;
end if;
if cont = 12000000 then
cont <= 0;
end if;
if conta = 12 then
conta := 0;
end if;
76
Implementação do Decodificador
case conta is
when 0 =>saida <="1100111";
when 1 =>saida <="0010001";
when 2 =>saida <="0110011";
when 3 =>saida <="0000100";
when 4 =>saida <="0111110";
when 5 =>saida <="0000000";
when 6 =>saida <="1111011";
when 7 =>saida <="0000000";
when 8 =>saida <="1111011";
when 9 =>saida <="0000000";
when 10 =>saida <=" 1101110";
when others => saida <= "0000000";
end case; 
end if;
end process;
end comportamento;
77
Implementação do Decoficador 
Locando os Pinos
Editar o arquivo .UCF com o seguinte formato :
NET clock_12Mhz LOC=P13;
NET saida<0> LOC=P18;
NET saida<1> LOC=P19;
NET saida<2> LOC=P20;
NET saida<3> LOC=P23;
NET saida<4> LOC=P24;
NET saida<5> LOC=P25;
NET saida<6> LOC=P26;
78
Implementação de um Relógio
entity relogio is 
port ( clock_12Mhz : in std_logic; -- clock da placa 12Mz
segundo : out std_logic; -- saida de1 segundo
num: out std_logic_vector(0 to 5)); -- números
end relogio;
clock_12Mz
segundo
num
in
out
out
library ieee;
use ieee.std_logic_1164.all;
79
if cont_clk = 12000000 then
cont_clk <= 0;
segundo<='0';
cont_seg <= cont_seg+1;
end if;
architecture comportamento of relogio is
signal cont_clk, cont_seg, cont_min : integer;
begin
Process(clock_12Mhz)
Begin
if clock_12Mhz'EVENT and clock_12Mhz = '1' then
cont_clk <= cont_clk + 1;
if cont_clk = 6000000 then
segundo <= '1';
end if;
80
when 0 => num <="111111";
when 1 => num <="100100";
when 2 => num <="011110";
when 3 => num <="110110";
when 4 => num <="100101";
when 5 => num <="110011";
when 6 => num <="111011";
if cont_seg = 60 then
cont_seg <= 0;
cont_min <= cont_min+1;
end if;
if cont_min = 10 then
cont_min <= 0;
end if;
81
end if;
end process;
end comportamento;
when 7 => num <="100110";
when 8 => num <="111111";
when 9 => num <="110111";
when others => num <="ZZZZZZ";
end case;
82
Implementação de um Relógio
� Editar o arquivo .UCF com o seguinte 
formato :
NET clock_12Mhz LOC=P13;
NET segundo LOC=P20;
NET num<0> LOC=P18;
NET num<1> LOC=P19;
NET num<2> LOC=P23;
NET num<3> LOC=P24;
NET num<4> LOC=P25;
NET num<5> LOC=P26;
83
Comunicação Serial
Cabo serial
Cabo Serial Conector RS232
84
Comunicação Serial
A comunicação serial é feita com somente um canal de comunicação. 
Os dados são enviados em uma freqüência conhecida
TxD RxD
Transmissor Receptor
0 1 1 0 1 0 1 0
85
Comunicação Serial
START
BIT
0 1 1 0 1 0 1 0
0 1 1 0 1 0 1 0
DADO STOP
BIT
O dado enviado é de4 bits e corresponde o “A” em hexadecimal, 
composto pela seqüência binária 1010
86
Comunicação Serial
O receptor deve estar configurado para palavra de 4 bits e a freqüência
de recepção
87
Arquitetura proposta
Divisor de 
Clock (300Hz)
Monta e
Envia Palavra
12Mhz Serial_out300Hz

Outros materiais

Outros materiais