Você está na página 1de 10

Laboratrio de Sistemas Digitais 1 2/2015

Experimento 4:
INTRODUO PROGRAMAO DE FPGAS UTILIZANDO A LINGUAGEM VHDL

1 OBJETIVO 3 INTRODUO
objetivo deste experimento implementar
circuitos combinacionais simples baseados em 3.1 A placa de prototipagem Basys2
FPGA, utilizando a linguagem de descrio de Neste experimento, ser abordada a
hardware VHDL. Todas as etapas do processo so programao do FPGA Spartan 3E-100 da Xilinx,
abordadas, desde a elaborao do cdigo VHDL, utilizando a linguagem de descrio de hardware
passando pelo processo de sntese e at a VHDL. A placa Basys2 da Diligent, ilustrada na
programao propriamente dita, quando o resultado figura 1, contm um circuito FPGA dessa famlia,
da compilao transferido para o FPGA. bem como um microcontrolador Atmel AT90USB2 e
So estudados ainda o conversor de cdigo diversos dispositivos de entrada e sada, como, por
binrio para cdigo de 7 segmentos e um comparador exemplo: chaves, botes de presso, LEDs, displays
de palavras binrias. de 7 segmentos, interfaces PS/2 e VGA, e conectores
Pmod. Assim, essa placa bastante conveniente para
2 MATERIAL UTILIZADO a elaborao de prottipos de sistemas digitais
Placa de prototipagem Basys2 da Diligent, Inc., baseados em FPGA.
com o FPGA Spartan 3E-100 CP132 (XC3S100E- Durante este experimento, ser utilizada a placa
CP132), da Xilinx. Basys2, pela convenincia de programao do
Um microcomputador PC. XC3S100E e de avaliao do sistema final. Alguns
Software de desenvolvimento ISE WebPACK, pinos do FPGA so conectados a chaves, botes,
da Xilinx, para sntese do cdigo VHDL. LEDs e mostradores de 7 segmentos, permitindo a
Software Adept, da Diligent, para programao alterao dos bits de entradas e observao dos bits
do FPGA. de sada sem a necessidade de um circuito externo
placa.

Figura 1 - Placa de prototipagem Basys2, da Digilent, Inc.

1
Laboratrio de Sistemas Digitais 1 2/2015

Na prxima seo, ser mostrado um exemplo projeto. No menu Top-level source type, escolha
de programao do XC3S100E utilizando a placa HDL e clique em Next.
Basys2. O sistema digital abordado um circuito Na janela Project Settings use as opes
combinacional bastante simples, j que o objetivo mostradas na figura 3, e clique em Next. Verifique
apenas ilustrar todas as etapas necessrias. as selees e clique em Finish.

3.2 Exemplo de implementao de uma funo


combinacional utilizando o FPGA
XC3S100E
Nesta seo, ser implementado um detector de
paridade com 4 bits de entrada com uso do FPGA
XC3S100E. O circuito correspondente apresentado
na figura 2. Observe que a sada 1 se e somente se o
nmero de 1s na entrada mpar.

Figura 3 - Configuraes do projeto.


Figura 2 - Detector de paridade com 4 bits de entrada.
Clique em Project\New source para criar um
Neste desenvolvimento, sero utilizados dois novo arquivo VHDL (ou em Process\Add source
programas: o ISE WebPACK, da Xilinx, e o Adept, para adicionar um arquivo VHDL j existente). Na
da Diligent. Os dois programas podem ser obtidos janela Select Source Type, escolha VHDL
gratuitamente nas pginas dos fabricantes. Para Module. O nome do arquivo pode ser detecpar.vhdl,
download do ISE WebPACK (ISE Design Suite), e deve ser salvo na pasta do projeto. Certifique-se de
ser necessrio realizar um cadastro na pgina da que a opo Add to project est marcada e clique
Xilinx. Tambm ser necessrio baixar o arquivo de em "Next.
licena, o que feito gratuitamente. Na janela Define Module, voc deve dar uma
importante que todas as etapas do processo nome para entidade (ex: detector_paridade_4bits) e
sejam reproduzidas, e que todos os resultados para a arquitetura (ex:
intermedirios sejam analisados; admite-se que os detector_paridade_4bits_op). Crie 4 pinos
dois programas encontram-se j instalados e (ports) de entrada (in), chamados a, b, c e d, e 1
configurados no computador de desenvolvimento. pino de sada (out), chamado s. Clique em Next.
Obs.: As opes Bus, MSB e LSB so usados
3.2.1 Elaborao da descrio em VHDL quando se trabalha com ports do tipo
Inicialmente, ser feita a descrio em VHDL BIT_VECTOR ou STD_LOGIC_VECTOR, o que
do circuito da figura 2. veremos na seo 3.3.1.
Para tanto, execute o programa ISE WebPACK Verifique suas selees e clique em Finish.
(cone Xilinx ISE Design Suite 13.1, no desktop). Se Com isso, um template do cdigo VHDL ser
houverem janelas ou projeto abertos, v em exibido na tela. Voc precisa agora escrever a
Window/Close All e em File/Close Project. descrio do circuito a ser implementado (figura 2),
A seguir, clique no boto New Project. Crie conforme apresentado a seguir.
seu projeto na pasta C:\alunos, em uma subpasta
com seu nmero de matrcula (ex:
C:\alunos\0123456). Entre detecpar como nome do

2
Laboratrio de Sistemas Digitais 1 2/2015

library ieee;
use ieee.std_logic_1164.all;
entity detector_paridade_4bits is
port(a,b,c,d: in STD_LOGIC;
s: out STD_LOGIC);
end detector_paridade_4bits;

architecture detector_paridade_4bits_op of detector_paridade_4bits is


signal e,f: STD_LOGIC;
begin
e <= a xor b;
f <= c xor d;
s <= e xor f;
end detector_paridade_4bits_op;

Observe que a novidade desta implementao que o cdigo VHDL. Certifique-se de que a opo
em relao s estruturas estudadas no experimento Add to project est marcada e clique em "Next.
anterior a utilizao do mdulo STD_LOGIC da Verifique suas selees e clique em Finish.
bilioteca IEEE, declarado nas duas primeiras linhas O arquivo aberto ser utilizado para o
(a palavra-chave all, na segunda linha, faz com mapeamento dos pinos. Digite a descrio que se
que sejam carregadas todas as estruturas presentes segue:
no mdulo). O objetivo que se possa utilizar o
tipo de sinal/varivel STD LOGIC, que se NET "a" LOC = "B4"; # SW3
diferencia do tipo BIT antes adotado por apresentar NET "b" LOC = "K3"; # SW2
outros valores alm de 0 ou 1, como o valor NET "c" LOC = "L3"; # SW1
indeterminado e o irrelevante. NET "d" LOC = "P11"; # SW0
Digitada a descrio, salve o arquivo. Utilize NET "s" LOC = "M5"; # LD0
ento a verificao automtica de sintaxe. Na rvore
hierrquica do projeto (janela da esquerda), clique A estrutura deste arquivo (denominado UCF,
no nome da entidade que voc criou. Na janela ou universal constraints file) bastante simples. O
abaixo, clique em Synthesize - XST e selecione que feito aqui a atribuio dos sinais a, b, c, d, s
Check Syntax com um clique duplo. Corrigidos respectivamente aos pinos B4, K3, L3, P11 e M5 do
os eventuais erros de digitao, salve novamente e FPGA. Os quatro primeiros esto ligados s chaves
repita o processo. Se o processo de sntese for SW0, SW1, SW2 e SW3, enquanto que o ltimo
completado com sucesso, feche o editor VHDL. ligado ao led LD0. Na placa, esse led est
localizado bem acima da chave LD0, que a chave
3.2.2 Mapeamento dos sinais de entrada e sada mais direita. A tabela 1 lista os nomes dos pinos
do sistema em pinos do FPGA correspondentes aos principais dispositivos de
Para que o circuito descrito possa ser entrada e sada da placa Basys2.
implementado em FPGA, necessrio associar os Ateno para a sintaxe do cdigo, em especial
sinais de entrada (a, b, c e d) e de sada (s) a pinos para o uso das aspas duplas, do igual e do ponto-e-
desse dispositivo. Em algumas situaes, isso pode vrgula. O texto aps o smbolo # corresponde a um
ser feito de forma automtica; entretanto, como se comentrio, e opcional. Salve ento o arquivo e
dispe da placa Basys2, prefervel neste exemplo feche a janela com o arquivo UCF.
forar a associao das entradas a pinos que j
estejam conectados a dispositivos de entrada 3.2.3 Etapa de sntese
(chaves) e sada (LEDs) da placa. Desta forma, A etapa seguinte, denominada sntese, consiste
possvel avaliar o funcionamento do sistema na compilao inicial do projeto, sem que no
implementado sem a necessidade de circuitos ou entanto seja gerado o arquivo com a configurao a
componentes externos placa. ser enviada ao FPGA.
Para tanto, clique em Project\New Source e Na rvore hierrquica do projeto (janela da
escolha Implementation Constraints File. O nome esquerda), clique no nome da entidade que voc
do arquivo pode ser o mesmo do projeto criou. Na janela abaixo, aplique um clique duplo em
(detecpar.ucf), e pode ser salvo na mesma pasta Synthesize - XST. Verifique se o processo de
sntese for completado com sucesso.

3
Laboratrio de Sistemas Digitais 1 2/2015

Tabela 1 - Nomes dos pinos correspondentes aos placa Basys2, est na posio PC. A seguir,
principais dispositivos de entrada e sada da placa verifique se a placa Basys2 est conectada porta
Basys2. USB do PC e se a chave de liga/desliga est na
Dispositivos de entrada Dispositivos de sada posio ligada (on). Um LED vermelho (status
Chave Pino LED Pino LED) acender quando a placa est ligada.
SW7 N3 LD7 G1 Execute ento o programa Adept. Ao ser
SW6 E2 LD6 P4 ligado, o programa testa a placa. Se a inicializao
SW5 F3 LD5 N4 falhar, feche o programa, repita as instrues do
SW4 G3 LD4 N5 pargrafo acima e tente novamente. Se a mensagem
SW3 B4 LD3 P6 Initialization Complete aparecer, siga em frente.
SW2 K3 LD2 P7 Caso contrrio, chame o professor ou monitor.
SW1 L3 LD1 M11 Na aba Config, h dois botes Browse.
SW0 P11 LD0 M5 Um est associado ao FPGA e outro PROM.
Boto Pino Clique no boto Browse associado ao FPGA e
BTN3 A7 selecione o arquivo detector_paridade_4bits.bit na
BTN2 M4 pasta do projeto. Caso aparea um aviso sobre
BTN1 C11 possveis problemas associado ao clock de startup,
BTN0 G12 ignore esse aviso e clique em Sim para continuar.
Dispositivos de sada - mostrador de 7 segmentos A seguir, clique em Program para programar a
Seletor de mostrador Segmentos do mostrador placa. Se, novamente, o aviso aparecer, clique mais
uma vez em Sim. . Neste momento realizada a
Mostrador Pino Segmento Pino
programao do FPGA.
AN3 K14 a L14
Verifique se a mensagem Programming
AN2 M13 b H12
Successful apareceu. Se tudo deu certo, teste agora
AN1 J12 c N14
o funcionamento do detector de paridade na placa.
AN0 F12 d N11 As chaves de entrada so indicadas por SW0, SW1,
e P12 SW2 e SW3. Se o nmero de chaves acionadas por
f L13 mpar (uma ou trs), o led LD0 deve acender. Caso
g M12 contrrio, ele deve apagar. Teste todas as
ponto N13 combinaes possveis!
decimal Ao terminar, solicite o visto ao professor o
monitor. A seguir, desligue a chave liga/desliga da
3.2.4 Etapa de implementao placa e passe ao prximo item do experimento.
Na fase de implementao, gerado o arquivo
de extenso .bit, com a configurao a ser 3.3 Algumas estruturas em VHDL teis ao
enviada ao FPGA. Neste exemplo, ser gerado o experimento
arquivo detector_paridade_4bits.bit. Duas estruturas em VHDL, alm daquelas
Na rvore hierrquica do projeto (janela da abordadas no experimento 4, sero de grande
esquerda), clique no nome da entidade que voc utilidade para a realizao deste experimento. Uma
criou. Na janela abaixo, aplique um clique duplo em delas um tipo de sinal/varivel denominado
Implement Design. Verifique se o processo de STD_LOGIC_VECTOR, que consiste num vetor de
sntese for completado com sucesso. bits de dimenso ajustvel. A outra estrutura,
A seguir, aplique um clique duplo em denominada with-select, permite vincular o valor
Generate Programming File. Se o processo for a ser atribudo a um sinal ou varivel ao valor de
completado com sucesso, ser criado o arquivo um outro, que pode inclusive ser um vetor.
detector_paridade_4bits.bit na pasta do projeto.
3.3.1 O tipo STD_LOGIC_VECTOR
3.2.5 Programao do FPGA Um sinal ou varivel definido como de tipo
A programao propriamente dita do FPGA STD_LOGIC_VECTOR pode ser visto como um
feita a partir do arquivo .bit obtido na fase de conjunto de elementos do tipo STD_LOGIC,
implementao. Como neste experimento acessados por meio de um ndice. Considere como
utilizada a placa Basys2, o programa a ser utilizado exemplos as seguintes declaraes:
para programao o Adept, da Diligent, Inc.
Antes de comear, verifique se o jumper de signal A: STD_LOGIC_VECTOR(2 downto 0);
modo, azul, localizado no canto direito superior da signal B: STD_LOGIC_VECTOR(0 to 2);

4
Laboratrio de Sistemas Digitais 1 2/2015

Os sinais A e B assim definidos so palavras associar o bit A(2) ao pino P47, por exemplo, deve-
de 3 bits, com ndices 0, 1 e 2. Individualmente, se incluir a seguinte linha no arquivo UCF:
A(2), A(1), A(0), B(0), B(1), B(2) consistem, cada
um, num sinal do tipo STD_LOGIC. Assim, podem NET "A<2>" LOC = "P47";
ser feitas atribuies do tipo A(2) <= 0, B(1) <=
1, e assim por diante. Isto ser muito til quando trabalharmos com
No entanto, uma das vantagens do os mostradores de 7 segmentos.
STD_LOGIC_VECTOR permitir realizar uma
atribuio de valor para todos os bits de uma
palavra numa nica linha de cdigo VHDL. Assim,
as linhas

A <= "100";
B <= "100";

equivalem a:

A(2) <= '1';


A(1) <= '0';
A(0) <= '0'; Figura 4 Criao de ports do tipo
STD_LOGIC_VECTOR no ISE WebPACK.
B(0) <= '1';
B(1) <= '0';
B(2) <= '0';

importante observar a diferena entre os


valores atribudos a A e a B. No primeiro caso,
como os ndices de A foram definidos de 2 a 0
(signal A: STD_LOGIC_VECTOR(2 downto 0)), o
primeiro bit esquerda em 100 atribudo a
A(2), o segundo a A(1), o terceiro a A(0). No caso
de B, os ndices foram definidos em ordem
crescente, de 0 a 2 (signal B:
STD_LOGIC_VECTOR(0 to 2)), de forma que o Figura 5 Modelo de cdigo VHDL gerado pelo ISE
primeiro bit em 100 atribudo a B(0), o segundo WebPACK a partir da configurao apresentada na
a B(1) e o terceiro a B(2). figura 4.
Na janela Define Module do ISE
WebPACK, as opes Bus, MSB (most 3.3.2 A estrutura with-select
significant bit, ou bit mais significativo) e LSB A estrutura with-select permite que a um
(least significant bit, ou bit menos significativo) so dado sinal seja atribudo uma de vrias expresses
usados para criar ports do tipo BIT_VECTOR ou booleanas possveis, escolhida a partir do valor de
STD_LOGIC_VECTOR. Por exemplo, a um segundo sinal. Sua construo mais bsica
configurao apresentada na figura 4 gera o modelo apresentada a seguir.
de cdigo VHDL apresentado na figura 5. Nessa construo, o sinal 1 recebe a expresso
Uma considerao final acerca do tipo booleana 1 se o sinal 2 assume o valor 1, mas
STD_LOGIC_VECTOR diz respeito recebe a expresso booleana 2 se o sinal 2 assume o
implementao de um circuito digital nos FPGAs valor 2, e assim por diante. Se o sinal 2 no assume
Xilinx. Se a descrio em VHDL utilizada com nenhum dos valores relacionados entre valor1 e
este fim, necessrio associar cada bit de um vetor valorn, o sinal 1 recebe a expresso booleana n + 1.
de entrada ou sada a um pino do circuito. No A ltima linha da construo no obrigatria;
arquivo UCF, a sintaxe a ser utilizada : se todos os valores possveis do sinal 2 esto
relacionados entre valor1 e valorn, a ltima linha
NET "A<i>" LOC = "Px"; omitida, e a construo se encerra com o sinal ;
colocado aps a linha (expresso booleana n+1)
em que i o ndice no vetor A do bit a ser associado when others. No entanto quando se trabalha com o
ao pino Px do FPGA. Assim, caso se deseje

5
Laboratrio de Sistemas Digitais 1 2/2015

tipo STD_LOGIC (ao invs do tipo BIT), seria no somente os valores 0 e 1. Assim, quase sempre
necessrio cobrir todas as possibilidades possveis, necessrio incluir a opo when others.
incluindo o valor indeterminado, irrelevante, etc., e

with sinal2 select


sinal1 <= (expresso booleana 1) when (valor1),
(expresso booleana 2) when (valor2),
(expresso booleana 3) when (valor3),
...
(expresso booleana n) when (valorn),
(expresso booleana n+1) when others;

Como um exemplo, considere esta letras de A a F (algumas maisculas, outras


implementao alternativa da funo ou-exclusivo. minsculas). Assim, um dgito hexadecimal
Suponha que os dois bits de entrada so associado univocamente a uma configurao dos 7
representados por uma nica palavra de dois bits A. segmentos, na qual alguns so acesos, outros no.
Se s o sinal de sada, pode-se escrever:

with A select
s <= '1' when "10",
'1' when "01",
'0' when others;

Assim, s recebe 1 se e somente se A(1) = 1 e


A(0) = 0, ou se A(1) = 0 e A(0) =1.
Figura 6 - Disposio dos LEDs em um display de 7
Finalmente, observe que se uma mesma segmentos.
expresso booleana deve ser atribuda ao sinal 1 para
dois ou mais valores diferentes do sinal 2, como no Nesse sentido, um conversor da representao
ltimo exemplo. possvel combinar esses valores binria para a representao em 7 segmentos do
numa nica linha em VHDL, por meio do conectivo hexadecimal correspondente um circuito que, dados
|, como mostrado a seguir: 4 bits de entrada, retorna um nvel lgico para cada
segmento, baixo se ele deve ser aceso, alto em caso
with A select contrrio, de forma a se obter a configurao
s <= '1' when "10" | "01", associada quele dgito. Trata-se, portanto, de um
'0' when others; sistema com 4 entradas e 7 sadas.
A tabela 2 apresenta as possveis combinaes
A interpretao neste caso a seguinte: s recebe dos 4 bits de entrada, o dgito hexadecimal
1 se A 10 ou 01, e recebe 0 para todos os outros correspondente e a configurao de sada dos 7
valores possveis de A. LEDs, fornecida pelo circuito conversor.
Este tipo de estrutura muito til na A placa Basys2 dispe de quatro mostradores de
implementao de conversores de cdigo. 7 segmentos. No entanto, h somente 12 pinos
associados aos mostradores:
3.4 Conversor de cdigo binrio para cdigo de 4 pinos para escolher qual(is) mostrador(es)
7 segmentos est(o) ligado(s);
Um display ou mostrador de 7 segmentos um 7 pinos para acender cada segmento
dispositivo composto por 7 LEDs dispostos individual; e
estrategicamente, de forma a constituir o dgito 8, 1 pino para o ponto decimal.
conforme ilustrado na figura 6. Muitos mostradores A tabela 1 lista o nome de cada um desses pinos da
de 7 segmentos dispem ainda de um LED adicional, placa Basys2, para criao do arquivo UCF. Esses 12
que implementa o ponto decimal. pinos associados aos mostradores de 7 segmentos so
A depender de quais LEDs esto acesos e quais ativos em nvel baixo. Portanto, para acender um dos
esto apagados, o mostrador esquematizado permite segmentos, ou para selecionar um dos mostradores,
representar qualquer dgito decimal, bem como as preciso escrever o bit 0 no mesmo. Uma dica , ao

6
Laboratrio de Sistemas Digitais 1 2/2015

invs de trabalhar com a lgica invertida, no primeiro mostrador. Da mesma forma, se os pinos
simplesmente usar a operao AN2, a, b e c esto em 0, enquanto os demais pinos
not( ) para inverter as sadas correspondentes esto em 1, ento o dgito 7 aparecer no terceiro
aos segmentos e ao seletor de mostrador. mostrador.

Tabela 2 - Configurao do display de 7 segmentos. 4 PARTE EXPERIMENTAL


Bits de Dgito Configurao
entrada hexadecimal do display 4.1 Detector de paridade de 4 bits
0000 0
Execute o procedimento descrito passo-a-passo
na seo 3.2.
0001 1
4.2 Conversor de cdigo binrio de 4 bits para
0010 2 cdigo de 7 segmentos

Implemente em VHDL um conversor do cdigo


0011 3 binrio para o cdigo de 7 segmentos. Os quatro bits
de entrada devem ser representados por um nico
vetor B, com ndices de 0 a 3 sendo 3 o mais
0100 4 significativo. Caso ainda desconhea o cdigo de 7
segmentos, consulte a seo 3.4.
0101 5 Sugesto: represente os 7 bits de sada, a, b, c, d,
e, f, g, tambm por um nico vetor, e utilize a
estrutura with-select para atribuir os valores a estes
0110 6 bits em funo do vetor de entrada.
Associe cada sinal de entrada e de sada do
conversor a um pino do FPGA (utilize para tanto um
0111 7 arquivo UCF, conforme descrito na seo 3.2.2 e na
tabela 1). Para facilitar a avaliao do sistema
1000 8 implementado, utilize para entradas pinos conectadas
a chaves da placa Basys2 (SW3 a SW0) e para sadas
pinos conectados ao mostrador de 7 segmentos AN0.
1001 9 Lembre-se de ativar o mostrador AN0, escrevendo 0
no bit correspondente. Lembre-se ainda que os 7
1010 A segmentos do mostrador tambm so ativos em nvel
baixo.
Realize as etapas de sntese e implementao do
1011 B conversor. A seguir, com o programa Adept,
programe o FPGA da placa Basys2 para que esta
realize a converso de cdigo descrita em VHDL.
1100 C Avalie as sadas do FPGA para todas as 16
combinaes possveis de entrada, usando as chaves.
1101 D
4.3 Comparador de duas palavras de 4 bits

1110 E Um comparador de duas palavras A e B de n bits


tem por objetivo determinar se o inteiro representado
por A menor, igual ou maior do que o representado
1111 F por B.
A comparao deve ser feita bit-a-bit,
comeando pelos bits mais significativos. Isto pois,
se investigando os bits mais significativos descobre-
Assim, o se os pinos AN0, b e c esto em 0,
se que A > B, por exemplo, ento os bits menos
enquanto os demais 9 pinos associados aos
significativos so irrelevantes.
mostradores esto em 1, o dgito 1 ser mostrado

7
Laboratrio de Sistemas Digitais 1 2/2015

Para exemplificar este ponto, vamos supor a Tabela 3 - Codificao de sinais para um comparador
comparao de dois nmeros decimais de quatro bit-a-bit.
dgitos, A = A3A2A1A0 = 3718 e B = B3B2B1B0 = 3649,
feita dgito a dgito. Comeamos pelos dgitos mais entrada resultado da sada
significativos; como A3 = B3 = 3, ento precisamos xi+1yi+1 AiBi comparao xiyi
comparar os prximos dgitos. Ento, vemos que 00 00 A=B 00
A2 = 7 maior que B2 = 6, e com isso conclumos que 00 01 A<B 01
A > B; portanto os valores dos demais dgitos so 00 10 A>B 10
irrelevantes para esta comparao. 00 11 A=B 00
A comparao binria funciona da mesma 01 xx A<B 01
forma. Se estamos comparando duas palavras 10 xx A>B 10
binrias de n bits cada, A = An1An2...A2A1A0 e 11 xx entrada sada
B = Bn1Bn2...B2B1B0, ento comeamos comparando proibida irrelevante
os bits mais significativos, An1 e Bn1. Se eles forem
Obs.: xiyi = 11 no uma sada possvel e, portanto,
diferentes, ento j temos como determinar se A > B
xi+1yi+1 = 11 tambm no uma entrada permitida.
ou se A < B; se forem iguais, seguimos ento para
comparar os prximos bits, An2 e Bn2. Ao comparar
o i-simo bit, antes verificamos se uma deciso j foi
tomada nas comparaes anteriores, isto , se
olhando os bits mais significativos j foi possvel
determinar se A > B ou se A < B; caso contrrio (isto
, todos os bits mais significativos que Ai e Bi eram
iguais), ento comparamos Ai e Bi. Neste caso, se eles
forem diferentes, ento j temos como determinar se
A > B ou se A < B; se forem iguais, seguimos ento
para comparar os prximos bits, Ai1 e Bi1.
Ao comparar os bits Ai e Bi, h trs
possibilidades: A < B, A = B ou A > B. Portanto, so
necessrios no mnimo dois bits para codificar o
resultado da comparao. Uma alternativa para a
implementao de um comparador bit-a-bit desta
forma apresentada na tabela 3, em que as entradas
Ai e Bi, e so os i-simos bits das palavras binrias
sendo comparadas, as sadas xi e yi fornecem o
resultado dessa comparao, enquanto que as
entradas xi+1 e yi+1 indicam o resultado da
comparao dos bits imediatamente mais
significativos. Note que, caso as entradas xi+1 e yi+1
indiquem que os bits mais significativos de A e B no Figura 7 - Comparador de duas palavras de um bit
eram iguais (xi+1yi+1 00), ento as entradas Ai e Bi para implementao de um comparador bit-a-bit de
so simplesmente desconsideradas, uma vez que j duas palavras de n bits.
possvel determinar se A > B ou se A < B.
Assim, um comparador de palavras de n bits Esta etapa ser dividida em dois vistos, descritos
pode ser implementado a partir de n comparadores de a seguir.
duas palavras de 1 bit. Para isso, necessrio que
cada comparador fundamental receba como entradas, Visto 1
alm dos bits Ai e Bi de mesma significncia, os bits x Faa uma descrio em VHDL de um circuito
e y provenientes da comparao dos bits que implementa o comparador da figura 7. Para
imediatamente mais significativos (xi+1 e yi+1). A tal, use a codificao apresentada na tabela 3 (ver
tabela 3 descreve esse comparador e a figura 7 tambm tabela da questo 2 da seo 5.3).
apresenta um diagrama de blocos do mesmo. Implemente esse comparador em FPGA, usando
como entradas as chaves SW3 a SW0, e como
sada os LEDs LD0 e LD1. Associe cada sinal de
entrada e de sada a um pino do FPGA (utilize

8
Laboratrio de Sistemas Digitais 1 2/2015

para tanto um arquivo UCF, conforme descrito componentes bsicos como o da figura 7 e alguns
na seo 3.2.2 e na tabela 1). sinais.
Realize as etapas de sntese e implementao do tabelas listando os nomes dos pinos de entrada e
conversor. A seguir, com o programa Adept, sada do FPGA a serem utilizados em cada um
programe o FPGA da placa Basys2 para que esta dos trs vistos;
realize em VHDL a comparao descrita.
Avalie as sadas do FPGA para todas as 5.2 Vistos
combinaes possveis de entrada, usando as Para conseguir os vistos, o grupo deve realizar
chaves. os procedimentos descritos na seo 4 deste roteiro.
O grupo deve chamar o professor para marcar o visto
Visto 2 ao fim dos itens 4.1 e 4.2, e cada um dos vistos do
Apresente o esquemtico (diagrama de blocos) item 4.3. Cada um dos quatro vistos vale 2 pontos.
de um comparador de duas palavras de 4 bits Os 2 pontos restantes correspondem nota de pr-
utilizando somente quatro componentes bsicos relatrio. O grupo ter duas aulas para conseguir os
como o da figura 7 e alguns sinais. vistos.
Faa uma descrio em VHDL do circuito do
item anterior, com dois vetores de 4 bits de 5.3 Relatrio
entrada e dois bits como sada. Utilize para tanto O relatrio individual, deve ser feito mo, e
a entidade definida no visto anterior como um consiste em responder ao questionrio abaixo. No
componente do novo mdulo. Use valores necessrio entregar um relatrio formal, com
constantes nas entradas x e y do comparador dos introduo, metodologia, resultados, etc.
bits mais significativos.
Implemente o compador de duas palavras de 4 1) Apresente o cdigo VHDL do conversor binrio -
bits em FPGA, usando como entradas as chaves 7 segmentos (inclua comentrios explicando cada
SW7 a SW0, e como sada os LEDs LD0 e LD1. passo).
Associe cada sinal de entrada e de sada a um 2) Complete a tabela verdade do comparador de
pino do FPGA (utilize para tanto um arquivo palavras de 1 bit. Use dont cares onde possvel.
UCF, conforme descrito na seo 3.2.2 e na
tabela 1). X i+1 Yi+1 Ai Bi Xi Yi
Realize as etapas de sntese e implementao do 0 0 0 0
conversor. A seguir, com o programa Adept, 0 0 0 1
programe o FPGA da placa Basys2 para que esta 0 0 1 0
realize a comparao de palavras descrita em 0 0 1 1
VHDL. 0 1 0 0
Avalie as sadas do FPGA para vrias 0 1 0 1
combinaes possveis de entrada, usando as 0 1 1 0
chaves. 0 1 1 1
1 0 0 0
5 INSTRUES PARA A REALIZAO DO 1 0 0 1
EXPERIMENTO 1 0 1 0
1 0 1 1
5.1 Pr-relatrio 1 1 0 0
O projeto a ser apresentado no incio da aula 1 1 0 1
deve conter: 1 1 1 0
tabela verdade de converso de cdigo binrio/7- 1 1 1 1
segmentos, com 4 bits de entrada e 7 bits de
sada;
3) Monte os mapas de Karnaugh para Xi e Yi e
tabela verdade e mapas de Karnaugh do
apresente as equaes lgicas.
comparador de duas palavras de um bit
apresentado na figura 7 e tabela 3. Ver tabela
4) Apresente o cdigo VHDL desse comparador
apresentada na questo 2 da seo 5.3.
utilizando as equaes encontradas na questo
diagrama de blocos de um comparador de duas anterior.
palavras de 4 bits utilizando somente quatro

9
Laboratrio de Sistemas Digitais 1 2/2015

5) Usando a entidade criada na questo anterior,


implemente um comparador de palavras de 3 bits:
a) apresente o diagrama de blocos
b) apresente o cdigo VHDL

Ateno: Alunos que apresentarem cdigos iguais


sero reprovados na disciplina e o fato ser
comunicado coordenao do curso para que as
medidas disciplinares cabveis sejam tomadas.

10

Você também pode gostar