Você está na página 1de 16

ESCOLA POLITCNICA DA UNIVERSIDADE DE SO PAULO

Departamento de Engenharia Mecatrnica e de Sistemas Mecnicos

PMR 2433 Eletrnica Analgica e Digital


2o Semestre 2005

Experincia 3 CIRCUITOS SEQENCIAIS & FPGA (REV A)

Uma FPGA (Field Programmable Gate Array) representa hoje uma das tecnologias mais avanadas para a implementao de circuitos lgicos digitais. So dispositivos facilmente programveis, de alta densidade, com os quais podemos implementar sistemas digitais equivalentes a milhes de transistores a baixo custo. Esta experincia uma introduo ao ambiente de desenvolvimento Foundation Series,da Xilinx, para a programao de FPGAs. Alm de conhecer os rudimentos da utilizao deste software, vamos programar e testar uma FPGA utilizando a placa de desenvolvimento Digilab, da Digilent. O projeto do circuito feito no computador com o programa da Xilinx, e o arquivo de configurao resultante transferido para a FPGA atravs da porta paralela. Alm desta apostila, voc vai precisar do manual de usurio da placa de desenvolvimento Digilab XL, que ser utilizada no laboratrio para testar nossos projetos em FPGA. A seu critrio, voc pode obter o manual introdutrio do software Foundation Series, que usaremos para projetar os circuitos. Esse manual se encontra disponvel para download no endereo http://www.poli.usp.br/d/pmr2433. No estritamente necessrio ter este manual, uma vez que durante a aula voc poder consultar a documentao on-line instalada no computador. No entanto, uma leitura prvia do manual certamente facilitar sua vida durante a experincia. Usaremos esse sistema de desenvolvimento para estudar alguns circuitos seqenciais utilizando latches e flip-flops. Portanto, faa uma reviso do captulo 6 do livro texto.

PARTE I

TEORIA

3.1 FPGA (Field Programmable Gate Array)


Internamente, uma FPGA composta por clulas padro que podem ser programadas individualmente para constituir funes lgicas de n entradas e m sadas, chamadas de PLB (programmable logic block). As m sadas de um PLB podem ser conectadas a suas prprias entradas (formando circuitos realimentados) ou a entradas de outros PLBs, atravs de matrizes de interconexes denominadas de SM (switch matrix). Por sua vez, as SMs tambm podem ser programadas individualmente. Como uma pastilha FPGA tpica possui centenas de PLBs e SMs, temos um dispositivo capaz de implementar desde funes lgicas simples a sistemas digitais bastante complexos. A Figura 3.1 ilustra a estrutura simplificada de uma FPGA. Neste exemplo, cada PLB contm duas memrias programveis (do tipo RAM), cada uma contendo 16 posies de 1 bit. Essa memria chamada LUT (look up table), e cada uma delas permite implementar qualquer funo booleana de 4 variveis de entrada, como se fossem tabelas da verdade eletrnicas.

PMR2433 Eletrnica Analgica e Digital

Experincia 3 (rev. A)

Celso M. Furukawa

(a) Figura 3.1

(b)

a) Estrutura matricial de uma FPGA, com PLBs interconectadas por SMs; b) Exemplo de PLB, composta por duas LUTs de 4 variveis

Note que, neste exemplo, temos n = 8 e m = 2. Observe que a estrutura desse exemplo de PLB no permite realizar qualquer funo lgica de 8 variveis, e sim duas funes de 4 variveis cada. Alm disso, a matriz de interconexo SM no permite conectar quaisquer PLBs. Mas estas restries podem ser superadas, interconectandose vrios PLBs. A Figura 3.2 ilustra como implementar um somador completo de 1 bit usando uma PLB. Repare que a LUT superior (G) reproduz a tabela da verdade do vai-um (ci+1) e a inferior (H) contm a tabela da verdade do isimo bit da soma (si). Como se tratam de funes de trs variveis, uma das entradas de cada LUT no utilizada. No caso da LUT G, por exemplo, a entrada g1 foi deixada em aberto, e portanto o contedo da LUT deve ser o mesmo tanto para g1 = 0 como para g1 = 1 (na figura, isto indicado com X na coluna g1 de endereos). Analogamente, na LUT H, a entrada h4 no foi utilizada.

Figura 3.2

Somador completo (ci+1 si) implementado com uma PLB

Uma pastilha FPGA possui vrios pinos, sendo a maioria deles capazes de serem individualmente configurveis para servirem de entradas ou de sadas para as funes programadas no seu interior. A programao de PLBs, SMs e pinos armazenada internamente nas FPGAs em memria voltil, o que significa que uma pastilha pode ser reprogramada milhares de vezes. Isso as torna uma excelente tecnologia para a prototipagem rpida de sistemas digitais. Projetistas de circuitos integrados, por exemplo, costumam utiliz-las para testar por partes o projeto de CIs complexos, como um micro-processador moderno. No laboratrio, utilizaremos uma FPGA da Xilinx, modelo Spartan XCS10.

Escola Politcnica da USP, Dep. de Eng. Mecatrnica e de Sistemas Mecnicos, 2o sem. 2005

PMR2433 Eletrnica Analgica e Digital

Experincia 3 (rev. A)

Celso M. Furukawa

3.2 Programao
A programao interna de PLBs e SMs normalmente bastante complexa, mesmo para se implementar funes lgicas bem simples. Para facilitar a sua vida, os fabricantes de FPGAs investem pesadamente no desenvolvimento de softwares integrados para a programao automtica desses dispositivos. So os chamados compiladores de silcio. A idia permitir que voc faa o projeto utilizando portas lgicas e bibliotecas de funes, de forma hierrquica. O compilador cuida de converter seu projeto em seqncias de bits que posteriormente so transferidas para a memria da FPGA. Em linhas gerais, o ciclo de desenvolvimento com uma FPGA envolve as seguintes etapas. Projeto digital (design entry): o projeto propriamente dito do circuito que ser implementado dentro da FPGA. Em projetos mais simples, utilizam-se normalmente editores grficos para se desenhar o diagrama lgico do circuito o chamado modo de captura esquemtica (schematic entry). Em casos mais complicados, podem ser utilizadas linguagens de programao (HDL, hardware description language), como as linguagens ABEL, VHDL e Verilog. So linguagens que lembram C, por exemplo, onde funes lgicas so definidas por expresses algbricas (do tipo Y = A & B) e chamadas de sub-rotinas. Simulao funcional: simula o funcionamento do circuito projetado com portas lgicas, sem considerar os atrasos de propagao, para que se possa verificar se a lgica implementada corresponde ao esperado. Implementao: quando o projeto compilado para formar os bits de programao da FPGA. hora de se verificar se o modelo de FPGA a ser utilizada (target) comporta o projeto, isto , se o CI contm PLBs e SMs em quantidade suficiente para implementar o circuito desejado. Verificao: simula eletricamente o circuito implementado na FPGA, considerando tempos de atraso, para se verificar se o circuito capaz de operar na velocidade desejada, e se problemas como harzard no afetam o funcionamento do circuito. Nesta experincia, utilizaremos o software Foundation Series, da Xilinx. Trata-se de um ambiente de desenvolvimento profissional bastante complexo. Nesta aula, procuraremos aprender a usar as funes elementares do programa. Ao utiliz-lo em sala, procure ler os manuais on-line disponveis no menu Help e, em algumas situaes, teclando-se F1 aps selecionar algum elemento das janelas. As dicas desta apostila visam dar a voc um ponto de partida, mas ao se limitar apenas a elas, voc acabar com uma viso muito fragmentada do podereso sistema que ter em mos.

3.3 Placa de Desenvolvimento Digilab


No laboratrio, vamos testar os circuitos projetados utilizando a placa de desenvolvimento Digilab XL, da Digilent. Ela contm uma FPGA Spartan XCS10 PC84, da Xilinx, de 84 pinos, capaz de acomodar circuitos equivalentes a at 10.000 portas lgicas, aproximadamente. A programao da FPGA feita por um cabo conectado porta paralela de um computador. A placa contm ainda vrios conectores e dispositivos que permitem verificar o funcionamento do circuito programado na FPGA. Dentre eles, temos 4 displays de 7 segmentos, 8 chaves de duas posies, 8 LEDs, 4 botes de contato momentneo (push buttons). Veja, em anexo, o manual de usurio da placa. Nesta experincia, utilizaremos apenas esses dispositivos citados. Veja a pgina 12 do manual. A tabela indica em que pinos da FPGA esses dispositivos esto conectados, e essa informao deve ser levada em conta no projeto do circuito. Por exemplo, para acender e apagar o led LD1, devemos conectar o pino 69 da FPGA a uma sada do circuito projetado. Veja os circuitos eltricos de acionamento dos dispositivos nas pginas 5 e 6 do manual. Veja na pgina 13 do manual um exemplo de um circuito que controla o led LD1 atravs de um AND entre as chaves SW1 (pino 28 da FPGA) e SW2 (pino 27). Note que, para configurar um pino da FPGA como entrada, devemos incluir no projeto dois elementos: o IPAD e o IBUF. O primeiro determina o nmero do pino a ser usado, e o segundo insere um circuito eltrico (buffer) que permite utilizar o sinal presente no pino como entrada de portas lgicas. Analogamente, a configurao de um pino da FPGA como sada exige os elementos OBUF (buffer eltrico de sada) e OPAD (definio do pino).

3.4 Contadores Sncronos


Uma aplicao bastante simples e no entanto muito importante dos flip-flops a construo de contadores binrios. A Figura 3.3 mostra como construir um contador de um bit, usando um flip-flop tipo D com a sada Escola Politcnica da USP, Dep. de Eng. Mecatrnica e de Sistemas Mecnicos, 2o sem. 2005

PMR2433 Eletrnica Analgica e Digital

Experincia 3 (rev. A)

Celso M. Furukawa

invertida realimentada na entrada. A cada borda de subida do sinal CLK, a sada Q se inverte de 0 para 1 e de 1 para 0, sucessivamente. Repare que este circuito somente funciona porque h atrasos envolvidos. Se a sada Q mudasse instantaneamente na borda do clock, o seu valor ficaria indefinido, uma vez que temos D = Q e Q D. Como o sinal presente na entrada D leva alguns nanossegundos para se inverter aps a borda de clock, o flip-flop registra o valor atual de Q. Considerando-se esses atrasos, a indefinio se resolve, uma vez que para o instante k, temos: D = (Qk) e Qk+1 D. Ou seja, ocorrendo uma borda de clock, o prximo valor da sada Q ser o inverso do valor atual, aps um pequeno atraso, conforme mostra a carta de tempos da Figura 3.3.

0 Q D CLK Q CLK D = Q Q
Figura 3.3 Contador de 1 bit

Podemos cascatear vrios contadores de 1 bit para formar um contador binrio de n bits. Mas para isso vamos usar flip-flops tipo JK, que so mais adequados para esta aplicao. A Figura 3.4 ilustra um flip-flop JK com entrada de clear (CLR) assncrono, que zera a sada Q quando em 1, independentemente do sinal de clock (C). Com CLR = 0, a sada Q atualizada na borda de subida do clock, conforme o valor das entradas de comando J e K. A entrada J leva a sada a 1, enquanto que K zera a sada; para JK = 00, a sada se mantm no valor atual, e para JK = 11 a sada se inverte.

CLR
1 0 0 0 0
Figura 3.4

C
X

JK
XX 00 01 10 11

Qk+1
0 Qk 0 1 (Qk) (clear assncrono) (mantm) (reset) (set) (inverte)

Flip-flop tipo JK e sua tabela caracterstica

Podemos utilizar esse flip-flop para construir um contador binrio sncrono de 2 bits, denominado xxCB2, ilustrado na Figura 3.5. A entrada CLR zera o contador, assincronamente com o sinal de clock C. A entrada CE, chamada count enable, habilita a contagem quando em 1, fazendo as sadas Q1 Q0 contarem ciclicamente de 00 a 11, a cada borda de subida do clock. As sadas auxiliares TC (terminal count) e CEO (count-enable output) permitem fazer o cascateamento desse contador. A sada TC vale 1 sempre que a contagem atinge o valor mximo (ou seja, 11). A sada CEO tambm indica a condio de final de contagem, mas vale 1 somente quando o contador se encontra habilitado (CE = 1). A Figura 3.6 mostra do diagrama lgico do circuito do contador. Repare que, por ser um circuito sncrono, o sinal de clock o mesmo para os dois flip-flops. O primeiro flip-flop complementa a sada Q0 a cada borda de clock, desde que esteja habilitado (CE =1) e no haja sinal de clear (CLR = 0). Nessas mesmas condies (CE = 1 e CLR = 0), o segundo flip-flop complementa a sada Q1 sempre que a anterior for 1, ou seja, quando o bit menos significativo atinge seu final de contagem. As portas AND2 geram as sadas TC e CEO, seguindo a tabela da Figura 3.5.

CLR CE
1 0 0 X 0 1

C
X X

(Q1 Q0)k+1
0 (Q1 Q0)k (Q1 Q0)k + 1

CEO
0 0 Q1.Q0

TC
0 (clear assncrono) Q1.Q0 (clock desabilitado) Q1.Q0 (incremento mdulo 4)

Figura 3.5

Contador sncrono de 2 bits, com clear assncrono e enable

Escola Politcnica da USP, Dep. de Eng. Mecatrnica e de Sistemas Mecnicos, 2o sem. 2005

PMR2433 Eletrnica Analgica e Digital

Experincia 3 (rev. A)

Celso M. Furukawa

Figura 3.6

Circuito do contador sncrono de 2 bits

3.5 Cascateamento de contadores sncronos


A sada CEO e serve para cascatear contadores, e assim expandir o nmero de bits. Nesse caso, basta interligar todas entradas C ao mesmo sinal de clock, e ligar a sada CEO entrada CE do contador seguinte, como mostra a Figura 3.7. Repare que quando a entrada geral CE igual a zero, o primeiro contador desabilitado e sua sada CEO_A tambm vai a zero, garantindo que o segundo contador tambm seja desabilitado. Por outro lado, se CE = 1 e o primeiro contador atinge o final de contagem (Q1Q0 = 11), teremos CEO_A = 1 e o segundo contador estar habilitado. Na prxima borda do clock C, as sadas Q3Q2 tambm sero incrementadas.

Figura 3.7

Contador de 4 bits construdo a partir de 2 contadores de 2 bits.

3.6 Divisores de Freqncia


Contadores tambm so conhecidos como divisores de freqncia. Suponha, por exemplo, que o sinal CLOCK na Figura 3.6 seja uma onda quadrada peridica de freqncia fCK. Como a sada Q0 se inverte a cada borda de subida do CLOCK, temos em Q0 uma onda quadrada de freqncia fCK/2 (ou com o dobro do perodo). Analogamente, em Q1 teramos uma freqncia fCK/4 e assim por diante. Verifique este fato voc mesmo, fazendo o Exerccio 3.3 do pr-relatrio.

3.7 Chaves, Botes e o Problema de Bouncing


Chaves e botes so dispositivos muito utilizados como entradas em circuitos eletrnicos para permitir a interao do usurio com o circuito. No entanto, eles apresentam um problema de natureza eletro-mecnica que pode interferir no funcionamento do circuito. Observe a Figura 3.8. Seria de se esperar que a sada Q se invertesse cada vez que o boto BTN fosse pressionado. No entanto, devido a vibraes mecnicas e contatos eltricos imperfeitos, o sinal CLK apresenta Escola Politcnica da USP, Dep. de Eng. Mecatrnica e de Sistemas Mecnicos, 2o sem. 2005 5

PMR2433 Eletrnica Analgica e Digital

Experincia 3 (rev. A)

Celso M. Furukawa

rpidas oscilaes, conhecidas como bounce, que podem durar at alguns milissegundos. Como a entrada CLK do flip-flop sensvel borda de subida, ocorrero transies a mais por ciclo de acionamento do boto. O problema de bounce acontece com todo tipo de dispositivo com contato eletro-mecnico, em maior ou menor grau. Dependendo da aplicao, podem ser utilizados circuitos eletrnicos para minimizar o problema os chamados circuitos de debounce. Os mais comuns so filtros RC e temporizadores.
VCC D R1 CLK BTN R2 t Q CLK Atuao Liberao

Figura 3.8

Circuito sujeito ao problema de bouncing

3.8 Aplicao: Acionamento do Mostrador de Sete Segmentos


Na placa Digilab, temos quatro mostradores de sete segmentos. H quatro terminais de alimentao (chamados de anodo comum, uma vez que cada segmento nada mais do que um led), sendo um para cada mostrador, que so acionados atravs sinais A1 a A4 ligados aos pinos P44, P40, P39 e P38 respectivamente (confira na pgina 12 do manual da placa). Os sinais CA, CB, ... CF e DP (chamados de catodos) comandam cada um dos sete segmentos e o ponto decimal. Por exemplo, o segmento a (trao superior) se acende sempre que fazemos CA = 0, como voc pode verificar na Figura 3.9. Na FPGA, os catodos CA a CF esto ligados aos pinos P51 a P45. O catodo DP (do ponto decimal) no est ligado FPGA, mas est disponvel no conector J1 da placa (confira na pgina 11 do manual)
Ai CA CB CC CD CE CF CG DP a f g e d c dp CA CB CG DP b a b g dp Ai

...

Figura 3.9

Estrutura do mostrador de sete segmentos

Note, no entanto, que os catodos so comuns aos quatro mostradores. Ou seja, ativando os quatro anodos (A1 a A4) ao mesmo tempo, os mostradores mostraro o mesmo dgito imposto nos catodos CA a CG. Como faramos, ento, para mostrar dgitos diferentes nos mostradores? A soluo acionar os anodos um de cada vez, ciclicamente, e utilizar multiplexadores para colocar nos catodos o padro de cada dgito, de forma sincronizada com a ativao dos anodos. Ou seja, cada mostrador piscaria um dgito diferente, um de cada vez. Se a taxa de varredura dos mostradores for alta (acima de trinta vezes por segundo, aproximadamente), ficaremos com a impresso que os mostradores esto sempre ligados, j que no conseguiremos mais observar o efeito pisca-pisca. A Figura 3.10 mostra um exemplo de circuito para mostrar quatro dgitos hexadecimais (DA a DD) nos mostradores da placa Digilent. Os dgitos entram em um multiplexador qudruplo de 4 bits (bloco H2), que a cada instante passa adiante apenas um deles. O bloco H3 faz a converso do nmero em binrio para o padro correspondente para apresentao no mostrador de sete seguimentos (o ponto decimal foi omitido no esquema). O bloco H1 representa um contador cclico de 2 bits, que gera os bits de seleo do multiplexador e tambm do decodificador (bloco H3), garantindo a sincronizao entre o dgito selecionado no mux e o mostrador a ser ligado. O sinal de CLOCK deve ter uma freqncia superior a 4 x 30 = 120 Hz. Essa a taxa mnima necessria para que cada mostrador seja ligado pelo menos 30 vezes por segundo. O sinal ENABLE permite ligar e desligar todos os mostradores conjuntamente, desabilitando o decodificador e o contador.

Escola Politcnica da USP, Dep. de Eng. Mecatrnica e de Sistemas Mecnicos, 2o sem. 2005

PMR2433 Eletrnica Analgica e Digital


ENABLE CLOCK Contador Mdulo 4 Q1Q0 DA[3:0] DB[3:0] DC[3:0] DD[3:0] H2 Mux qudruplo de 4 bits H1

Experincia 3 (rev. A)

Celso M. Furukawa

H4 Decodificador 2:4 H3 A1 Z0 Z3 Conversor Hex / 7 seg CA CG A2 A3 A4

Figura 3.10 Circuito para acionamento dos mostradores de sete segmentos.

Escola Politcnica da USP, Dep. de Eng. Mecatrnica e de Sistemas Mecnicos, 2o sem. 2005

PMR2433 Eletrnica Analgica e Digital

Experincia 3 (rev. A)

Celso M. Furukawa

PARTE II

PR-RELATRIO

Exerccio 3.1 Anlise do circuito de teste Veja o diagrama lgico XLA5 em anexo. Esse circuito ser utilizado para testar a placa Digilab logo no incio da aula. No canto esquerdo, h trs blocos, CB8 e CB16 e CD4CE, conectados em seqncia. Os dois primeiros formam um contador, cuja funo dividir a freqncia do clock de entrada presente em P13, enquanto que CD4CE conta ciclicamente de 0 a 9, em binrio. O bloco H4 faz a converso para acionar os displays de 7 segmentos, que esto ligados aos pinos P45 a P51. Atente agora para o restante do circuito, concentrado na parte inferior direita. Ele implementa uma lgica que acende os leds atravs das chaves e dos botes da placa. Determine a lgica que faz o led LDi acender, em funo das chaves (SW) e dos botes (BTN). Em outras palavras, apresente a equao booleana fi tal que LDi = fi (SW1, SW2, ... SW8, BTN1, BTN2, ... BTN4)

Consulte o manual da placa Digilab para verificar em que pinos da FPGA esses dispositivos esto ligados.
Exerccio 3.2 Latch RS Negativo Dado o diagrama lgico do latch RS negativo mostrado na Figura 3.14, apresente a sua tabela da verdade (ou tabela caracterstica). Inclua no diagrama os elementos necessrios (IPADs e IBUFS) para conectar as entradas R e S do latch aos botes BTN2 e BTN1, respectivamente, da placa Digilab, atravs de inversores. Os sinais fornecidos pelos botes devem ser invertidos antes de chegarem s entradas do latch, uma vez que os botes em repouso fornecem nvel lgico 0. Num latch RS negativo as entradas normalmente devem permanecer em 1. As sadas Q e Q devem ser conectadas aos leds LD1 e LD2, atravs dos OBUFS e OPADS necessrios. No se esquea de indicar os pinos corretos da FPGA (por exemplo, P59 para o boto BTN1). Consulte o manual da placa Digilab para verificar em que pinos da FPGA esses dispositivos esto ligados. Exerccio 3.3 Cascateamento de Contadores Sncronos Verifique que o circuito da figura Figura 3.7, composto por dois contadores em cascata, funciona. Considere os sinais de entrada mostrados na Figura 3.11, onde as mudanas em CLR e CE ocorrem sincronizadas com alguma borda do clock C. Desenhe uma carta de tempos contendo as formas de onda das sadas Q0, Q1, CEO_A, TC_A, Q2 e Q3 (nesta ordem). Lembre-se que em um flip-flop voc considerar o nvel presente nas entradas apenas no exato momento das bordas de clock (com exceo do sinal CLR, que atua de forma assncrona).
0 C CLR CE 1 2 3 4 5 6 7 8 9 10 11

Figura 3.11 Formas de onda de entrada Exerccio 3.4 Contador Sncrono de 3 bits Projete um contador sncrono de 3 bits, incluindo mais um flip-flop JK e outras portas lgicas no circuito da Figura 3.6. Dica: no exerccio anterior, repare que, se o contador est habilitado (CE = 1), o bit Qi se inverte na borda de clock em que todos os i bits menos significativos que ele se encontram em 1 (com exceo de Q0, que se inverte sempre). Exerccio 3.5 Controlador de Display de 7 Segmentos Faa o diagrama lgico detalhado do circuito de acionamento do mostrador de sete segmentos, mostrado na Figura 3.10. O circuito a ser implementado o que se encontra delimitado pela linha tracejada; o display de 7 segmentos no faz parte dele, j que um componente separado. No seu projeto, utilize os elementos mostrados na Figura 3.12.

Escola Politcnica da USP, Dep. de Eng. Mecatrnica e de Sistemas Mecnicos, 2o sem. 2005

PMR2433 Eletrnica Analgica e Digital

Experincia 3 (rev. A)

Celso M. Furukawa

Figura 3.12 Smbolos para o projeto do acionador de mostrador de sete segmentos

O componente CB2CE um contador de dois bits, com entradas de Clock Enable (CE = 1 habilita a contagem) e Clear assncrono (CLR = 1 zera o contador, independentemente do sinal de Clock). A sada TC (Terminal Count) vai a um sempre que a contagem em Q1Q0 atinge o valor mximo neste caso, 112. Por fim, a sada CEO simplesmente um AND entre TC e a entrada CE, e serve para cascatear contadores como esse para expandir o nmero de bits. Nesse caso, bastaria interligar todas entradas C ao mesmo sinal de Clock, e ligar a sada CEO entrada CE do contador seguinte (veja a Atividade 3.6 da parte prtica). No seu projeto, no se esquea de aterrar a entrada CLR, j que esta no ser usada. As macros MUX4_4_1 e 7SEG implementam o multiplexador qudruplo e o conversor de cdigo para sete segmentos, e estaro disponveis no laboratrio. Os esquemticos destas duas macros esto em anexo. Finalmente, o bloco D2_4E um decodificador 2:4 com entrada de Enable (E).

Escola Politcnica da USP, Dep. de Eng. Mecatrnica e de Sistemas Mecnicos, 2o sem. 2005

PMR2433 Eletrnica Analgica e Digital

Experincia 3 (rev. A)

Celso M. Furukawa

PARTE III PRTICA


Atividade 3.1 Teste da Placa Vamos testar a placa Digilab XL com um projeto j existente. Conecte a placa porta paralela do PC e conecte o plugue de alimentao fonte fornecida com a placa. Ligue o computador. Carregue o software de programao da placa: menu Start Programs Xilinx Foundation Series Project Manager. Na janela de abertura, selecione Open an Existing Project e clique no boto More Projects. Localize e carregue o projeto XLA5 em C:\PMR2433. Abra o editor esquemtico, dando um clique duplo no arquivo XLA51.SCH que aparece na janela da direita.

Voc ver o diagrama lgico do circuito de teste, como mostra o esquema em anexo. Na barra de menu do editor, clique em Options e em seguida em Create Netlist. Isto cria um arquivo atualizado de descrio de conexes (anlogo a um arquivo obj que gerado por um compilador C), que vai forar a re-implementao do circuito em PLBs e SMs da FPGA (isso, em termos de gerao de programas, seria anlogo a gerar o arquivo exe a partir dos arquivos obj). Encerre o editor e volte ao Project Manager. Clique agora no boto Implementation na janela Flow direita. O programa vai compilar o esquema para gerar o arquivo de programao da FPGA. Acompanhe os passos dessa transcrio. Translate e Map: converte seu projeto em funes lgicas que podem ser implementadas nos PLBs Place and Route: decide em quais PLBs da FPGA as funes lgicas sero programadas e faz a programao das interconexes entre elas (SMs). Configure: gera o arquivo binrio (extenso bit) que ser enviado FPGA para program-la. Descarregue agora o arquivo bit gerado na FPGA da placa. Use para isso o programa C:\Xilinx\ConfigUtil.exe. Nesse programa, clique em Control e em seguida em Configure Device from File. Localize o arquivo XLA5.bit em c:\PMR2433\XLA5. Selecione e abra-o. O programa vai transferir o contedo deste arquivo para a memria da FPGA. Verifique se o circuito est funcionando corretamente. Como vimos no Exerccio 3.1, em funcionamento normal os displays mostraro os digitos de 0 a 9, ciclicamente. Acione os leds atravs das chaves e dos botes e verifique se isso condiz com o previsto no exerccio. Ateno: empurre as chaves SW para cima para gerar entradas iguais a 0, e puxe-as para baixo para gerar entradas iguais a 1. Os botes BTN geram entradas iguais a 1 quando apertados. Nota: o Foundation Series possui um mdulo prprio de configurao da FPGA (ativado pelo boto Programming), mas que no est funcionando nos computadores do lab, provavelmente devido ao Windows Me instalado. O programa ConfigUtil fornecido pela Digilent como paliativo. Para o relatrio: verifique se a sua resposta ao Exerccio 3.1 condiz com o funcionamento dos leds observado nesta atividade. Caso contrrio, comente os erros detectados.
Atividade 3.2 Cpia dos Arquivos de Projeto O disco de seu computador contm alguns arquivos que sero utilizados nessa experincia, tais como macros prontas e esquemticos incompletos, agrupados no projeto Exp3. Para no danificar os arquivos desse projeto, antes de mais nada vamos copi-lo com outro nome para o seu diretrio de trabalho. Volte janela do programa Project Manager. Clique no menu File | Copy Project. No campo Source Project, digite C:\PMR2433\EXP3\EXP3_05.PDF. No campo Destination Directory digite c:\PMR2433\seugrupo, onde seugrupo o nome de guerra do seu grupo. No campo Destination Name, digite algo como xxFF, onde xx so as 2 primeiras letras do nome do seu grupo. Clique em OK. Podemos agora carregar o projeto copiado no Project Manager. Clique no menu File | Open Project, e localize o arquivo xxFF.PDF no diretrio C:\PMR2433\seugrupo. Selecione o arquivo e clique em Open. Estamos prontos para comear a experincia.

Escola Politcnica da USP, Dep. de Eng. Mecatrnica e de Sistemas Mecnicos, 2o sem. 2005

10

PMR2433 Eletrnica Analgica e Digital

Experincia 3 (rev. A)

Celso M. Furukawa

Atividade 3.3 Latch RS Negativo Vamos construir uma macro para implementar um latch RS negativo. Uma macro como uma sub-rotina, que pode ser inserida vrias vezes em outros projetos. Dispare o editor de esquemticos: no menu Tools, selecione Design Entry | Schematic Editor (ou clique no cone correspondente na sub-janela Flow). O editor cria o arquivo de nvel hierrquico mais alto do projeto, xxFF1.sch. O latch ser uma macro, de nvel hierrquico inferior (a famosa caixa-preta).

Para criar a macro, no menu Tools, selecione Symbol Wizard. Esse mdulo define as interfaces de entrada e sada da macro, e cria um smbolo (a cara da caixa-preta). Passe pela janela de apresentao do mdulo e avance para a janela Design Wizard Contents. No campo Symbol Name, digite xxNRS (xx so as iniciais do seu grupo) e selecione Schematic no campo Contents. Clique em Next. Na janela Design Wizard Ports, definimos os sinais _R e _S de entrada e os sinais _Q e Q de sada (o trao indica que os sinais so ativos em 0). Clique em New, e digite _R no campo Name, e selecione Input no campo Direction. Repita esse processo para criar a entrada _S. Em seguida, crie a sada _Q (clique em New, digite _Q no campo Name e selecione Output no campo Direction) e Q. Neste ponto, a definio de sua macro deve ter o aspecto mostrado na Figura 3.13. Avance para a janela seguinte com Next.

Figura 3.13 Definio da macro xxNRS

Na janela seguinte, Attributes, digite no campo Longer Comment algo como Latch RS negativo (deixe o campo Shorter em branco). Clique em Next, e na janela seguinte em Finish. O programa constri o esqueleto da macro, j com os pontos de entrada e sada rotulados. Complete o esquema, conforme mostra a Figura 3.14, e salve o arquivo (menu File | Save). Uma dica: insira primeiro todos os smbolos (no caso, dois NANDs), acionando o modo de inserso atravs do menu Mode | Symbols, ou clicando no cone de um AND que aparece na barra lateral esquerda. Voc ver uma extensa lista de nomes mneumnicos dos smbolos. Digitando no campo inferior dessa janela, fica mais fcil para encontrar o smbolo desejado. Selecione e inclua-o no projeto, clicando na posio desejada. Para incluir outras cpias, clique em um smbolo j posicionado e posicione a nova cpia. Ao incluir um smbolo, estamos instanciando a macro correspondente a ele, ou seja, estamos fisicamente inserindo no nosso projeto os componentes do circuito representado pela macro. Esses componentes sero repetidos tantas vezes quanto a macro for instanciada no projeto. Complete as conexes ativando o menu Mode | Draw Wires. Clique num terminal de um smbolo e depois em outro para lig-los. Clicando em posies intermedirias, possvel definir uma rota. Para inserir uma derivao em um fio, basta clicar sobre ele no ponto desejado. ATENO: para conectar o terminal de um smbolo ao terminal de outro, no basta sobrep-los ao posicionar os smbolos. Uma conexo somente se d atravs de um fio. Por isso, posicione os smbolos mantendo uma certa distncia entre os terminais a serem conectados. Voc ainda pode mover os smbolos e fios, copiar, colar... etc. Consulte o manual on-line do editor, no menu Help | Schematic Editor. Verifique se est tudo em ordem. Clique no menu Options | Integrity Test for Current Sheet. Se houver algo errado ou estranho, aparecero mensagens na tela (Console) do Project Manager. Nesse caso, corrija, teste de novo, e salve. Escola Politcnica da USP, Dep. de Eng. Mecatrnica e de Sistemas Mecnicos, 2o sem. 2005 11

PMR2433 Eletrnica Analgica e Digital

Experincia 3 (rev. A)

Celso M. Furukawa

Agora, vamos fazer um teste rpido na macro xxNRS que voc acabou de editar, ligando uma instanciao da macro s chaves e leds da placa Digilab, e ver se est funcionando direito.

Figura 3.14 Macro xxNRS

Volte folha xxFF1. Insira nela a macro xxNRS: clique no menu Mode | Symbols, ou clique no cone correspondente na barra esquerda. O smbolo xxNRS est no fim da lista, debaixo da hierarquia do nosso projeto (xxFF). Complete as ligaes, como mostra a Figura 3.15. Atente para a ordem dos pinos de entrada e sada nas faces laterais do smbolo U1. Se voc no incluiu os sinais na ordem descrita anteriormente, provavelmente eles estaro diferentes. Voc pode corrigir isso, atravs do editor de smbolos: no Schematic Editor, clique no menu Tools | Symbol Editor. Na janela do Symbol Editor, abra o arquivo xxNRS atravs do menu File | Open, e reordene os terminais. Para isso, arraste um por vez para a posio correta.

Figura 3.15 Circuito de teste do latch xxNRS

Lembre-se que necessrio mapear cada IPAD e OPAD em um pino da FPGA. Clique duas vezes em um deles para abrir a janela Symbol Properties. Na parte inferior da janela (Parameters), selecione LOC no campo Name, e digite a identificao do pino no campo Description (por exemplo, P59). Clique em Add, caso contrrio isso no ter efeito. Veja a Figura 3.16. Clicando sobre a marca preta direita de LOC, voc pode ajustar a forma como esse parmetro ser exibido no desenho: uma marca exibir apenas o valor do parmetro (P59), duas exibir LOC=P59, e nenhuma marca far com que o programa no exiba o parmetro. Experimente.

Figura 3.16 Configurao de um IPAD

Os identificadores dos fios, tais como BTN1 e LD1, podem ser inseridas clicando-se duas vezes sobre os fios. Isto abre a janela Net Name. Digite o nome e clique em OK. Por fim, salve o arquivo. Clique no boto Implementation do programa Project Manager para gerar a implementao do circuito. Descarregue o arquivo bit (c:\pmr2433\seugrupo\xxFF\xxFF1.bit) na placa, com o programa c:\Xilinx\ConfigUtil.exe. Teste o funcionamento do latch acionando os botes. O boto BTN1 seta o latch, acendendo o led LD1 e apagando o led LD2. J o boto BNT2 causa o reset do latch, apagando LD1 e acendendo LD2.

Escola Politcnica da USP, Dep. de Eng. Mecatrnica e de Sistemas Mecnicos, 2o sem. 2005

12

PMR2433 Eletrnica Analgica e Digital

Experincia 3 (rev. A)

Celso M. Furukawa

Para o relatrio: Verifique em particular o que acontece quando os dois botes so pressionados ao mesmo tempo. Em seguida, tente soltar os botes tambm ao mesmo tempo. O estado final sempre o mesmo em vrias tentativas? Discuta a razo do comportamento observado.
Atividade 3.4 Contador Sncrono de 3 bits Vamos implementar o contador sncrono de 3 bits projetado no Exerccio 3.4, e test-lo usando o circuito mostrado na Figura 3.17.

Figura 3.17 Circuito de teste do contador de 3 bits

Voc no precisar construir todo esse de teste. No diretrio do projeto j existe um arquivo parcialmente feito. No Schematic Editor, use o menu File | Open para abrir o arquivo TestC3.SCH no diretrio C:\PMR2433\seugrupo\xxFF. Para incluir o arquivo no projeto, clique no menu Hierarchy | Add Current Sheet to Project. Em seguida, no Project Manager, remova do projeto o arquivo utilizado na atividade anterior (xxFF1.sch); para tanto, clique sobre o nome do arquivo na rvore do projeto e clique no menu Document | Remove, confirmando em seguida. No Schematic Editor, encontre o componente XXCB3. Trata-se de uma macro, contendo o contador de 2 bits que foi descrito no incio da apostila. Verifique seu contedo, clicando sobre ela com o boto da direita e clicando em seguida em Hierarchy Push. Modifique o circuito, seguindo o seu projeto, e salve. Retorne a folha TestC3.sch. Implemente o projeto e transfira-o para a memria da FPGA. Teste o funcionamento. Deixe a chave SW1 em 1 (posio para baixo) para habilitar o contador. Os pulsos de clock CK do contador so gerados pelo latch RS positivo XXPRS: aperte o boto BTN1 para set-lo e o boto BTN2 para resetlo. O estado de CK pode ser observado no led LD1. O boto BTN4 permite zerar o contador. Faa o contador contar ciclicamente de 0 a 7. Ao atingir 7 (isto , Q[2:0] = 111), as sadas CEO e TC devem ir a 1 (observe-as nos leds LD4 e LD3). Nesta condio, zere a chave SW1: apenas TC deve zerar, e o contador dever estar desabilitado. Para o relatrio: se voc encontrou algum erro no projeto, descreva o erro e o efeito que ele causava.
Atividade 3.5 Observao do Efeito de Bounce Remova o latch XXPRS e ligue o boto BTN1 diretamente na entrada de clock C do contador XXCB3. Salve o arquivo, implemente e teste o circuito. Atente para o efeito de bouncing do boto. Pressione o boto variando a fora e a velocidade vrias vezes. Voc ver que a contagem pula de vez em quando. Atividade 3.6 Controlador de Display de 7 Segmentos Crie uma macro que implemente o acionador de mostrador de sete segmentos que voc projetou no Exerccio 3.5. Repita o procedimento de criao de macro, como visto na Atividade 3.3: menu Tools | Symbol Wizard, Symbol Name = xxDsDrv, Contents = Schematic.

As entradas DA, DB, DC e DD so barramentos (buses), de quatro bits cada. Para defini-las, clique New na janela Ports, digite o nome do bus no campo Name (por exemplo, DA), e ajuste a dimenso do bus para [3:0] no campos Bus (ao lado do campo Name). Defina as demais entradas e sadas da macro. Temos ainda a entrada de habilitao EN e a entrada de Clock CLK. As sadas so os sinais de ativao dos anodos (A1 a A4) e dos catodos (CA a CG) dos mostradores. A Figura 3.18 mostra o smbolo resultante ao final da definio dos pinos.

Escola Politcnica da USP, Dep. de Eng. Mecatrnica e de Sistemas Mecnicos, 2o sem. 2005

13

PMR2433 Eletrnica Analgica e Digital

Experincia 3 (rev. A)

Celso M. Furukawa

Figura 3.18 Definio do smbolo xxDsDrv

As macros MUX4_4_1 e 7SEG j esto disponveis no disco do seu computador, como parte da biblioteca xxFF, e podem ser instanciadas normalmente no seu projeto. Complete o esquema do circuito e salve. As linhas grossas indicam barramentos (buses). Os barramentos de entrada podem ser ligados diretamente aos barramentos da macro MUX4_4_1, como mostra a Figura 3.19. Para desenhar um barramento no Schematic Editor, clique em Mode | Draw Buses (ou clicando no cone correspondente). Para terminar o bus, clique duas vezes sobre ele.

Figura 3.19 Ligao entre barramentos

Vamos testar o acionador utilizando o circuito de um cronmetro, mostrado na Figura 3.20. O sinal de Clock gerado pelo smbolo OSC4, cuja sada F490 fornece um sinal de 400 Hz. Esse sinal ser utilizado para fazer a varredura do mostrador, e portanto cada mostrador piscar a uma taxa de 100 vezes por segundo. O contador CB2CE divide a freqncia do sinal por 4, resultando em uma base de tempo de um centsimo de segundo. frente deste, temos quatro contadores CD4CE de quatro bits que contam ciclicamente de 0 a 9 (so os chamados contadores de dcada ou contadores BCD). Portanto, cada um deles divide a freqncia por 10. Como o primeiro contador acionado a cada 0,01 s, temos no barramento DD a contagem decimal em centsimos de segundo. Analogamente, em DC temos a contagem em dcimos de segundo, e assim por diante. Note como o cascateamento dos contadores feito. O sinal de Clock de 400 Hz conectado em todas as entradas C, mas apenas o contador CB2CE (de mdulo 4) est habilitado continuamente. A sada CEO deste contador habilita o primeiro contador CD4CE. Como vimos no Exerccio 3.3, essa sada CEO vai a um somente nos perodos em que a contagem passa pelo mximo (3, neste caso) e portanto o primeiro contador CD4CE incrementado apenas a cada 4 ciclos de Clock. Pelo mesmo princpio, o segundo contador CD4CE incrementado a cada 40 ciclos, o terceiro a cada 400 ciclos, e o ltimo a cada 4000 ciclos. O boto BTN4 est ligado s entradas CLR (Clear) dos contadores. Dessa forma, o cronmetro zerado sempre que pressionamos esse boto. Voc no precisar construir todo o circuito da Figura 3.20. No diretrio do projeto j existe um arquivo parcialmente feito. No Schematic Editor, use o menu File | Open para abrir o arquivo CronSemi.SCH no diretrio C:\PMR2433\seugrupo\xxFF. Em seguida, salve-o com outro nome, por exemplo xxCron.SCH (onde xx so as iniciais do seu grupo), no diretrio do seu projeto, usando o menu File | Save as. Para incluir o arquivo no projeto, clique no menu Hierarchy | Add Current Sheet to Project. Em seguida, no Project Manager, remova do projeto o arquivo utilizado na atividade anterior (TestC3.sch): clique sobre o nome do arquivo na rvore do projeto e clique no menu Document | Remove, confirmando em seguida. Complete o esquemtico com a instanciao da macro xxDsDrv que voc criou. Para conectar os pinos do primeiro CD4CE ao bus DD, clique no menu Mode | Draw Bus Taps. Em seguida, basta clicar num pino que o programa automaticamente faz a ligao com o bus que estiver em frente. Em Escola Politcnica da USP, Dep. de Eng. Mecatrnica e de Sistemas Mecnicos, 2o sem. 2005

14

PMR2433 Eletrnica Analgica e Digital

Experincia 3 (rev. A)

Celso M. Furukawa

seguida, necessrio indicar qual via do bus foi ligada (por exemplo, DD0). Para isso clique duas vezes no fio e digite o nome da via no campo Net Name. Implemente o circuito e transfira para a FPGA. Verifique o funcionamento do circuito. Para o relatrio: Se o seu projeto do acionador de display (feito no pr-relatrio) apresentou algum erro, descreva-o no relatrio, juntamente com a correo feita.
Atividade 3.7 Start/Stop Faa uma pequena alterao no circuito do cronmetro para incluir mais dois botes: Run (BTN1) e Stop (BTN2). Ao pressionar o boto Run, o cronmetro deve disparar. Precionando-se Stop, a cronometragem se detm; nessa condio, pressionando-se Run novamente o cronmetro continua a partir da contagem em que parou. Ateno: o boto Clear (BTN4) somente pode zerar o cronmetro quando este estiver parado. Dica: use o latch xxNRS para controlar a habilitao dos contadores (pino CE).

Para o relatrio: faa um diagrama lgico do cronmetro modificado.

3.9 Relatrio
Prepare o relatrio em sala de aula. O relatrio deve conter: 1. As anotaes solicitadas nas atividades da parte prtica 2. Os pr-relatrios de todos os membros da equipe.

Escola Politcnica da USP, Dep. de Eng. Mecatrnica e de Sistemas Mecnicos, 2o sem. 2005

15

PMR2433 Eletrnica Analgica e Digital

Experincia 3 (rev. A)

Celso M. Furukawa

Figura 3.20 Circuito do cronmetro

Escola Politcnica da USP, Dep. de Eng. Mecatrnica e de Sistemas Mecnicos, 2o sem. 2005

16