Sie sind auf Seite 1von 26

1 Introduo

Dispositivos programveis so componentes que contem arrays de elementos lgicos (AND,OR, INVERT, LATCH, FLIP-PLOP) que podem ser configurados para realizar uma determinada funo. Existem vrias classes de dispositivos programveis: FPGAs, PLAs, PROMs, PALs, GALs, PLDs... O uso deste tipo de dispositivo apresenta as seguintes vantagens: Reduo do nmero de componentes; Reduo da rea de placa, com a reduo de custo correspondente Maior confiabilidade (consequncia direta do menor nmero de conexes); Flexibilidade: modificaes no circuito podem ser feitas atravs de programao, sem alterao de placa; Menor ciclo de projeto.

2 Arquiteturas bsicas
A seguir sero apresentadas as arquiteturas bsicas de alguns dispositivos programveis. Sero tambem realizados exerccios referentes implementao do circuito apresentado no Exerccio 2-1 Equaes do circuito combinacional 1.
Exerccio 2-1 Equaes do circuito combinacional 1

Definir as equaes do circuito combinacional a seguir: A B C Y 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 0 1


A B C Y

soluo: Y = A B C + A B C + A B C

Alberto do Canto

PLD2008_10.doc

1 de 26

2.1 PROM
As memrias programveis de apenas leitura (PROM Programable Read Only Memory) so os dispositivos programveis mais conhecidos. A Ilustrao 2-1 PROM 8 X 1 ao lado mostra um exemplo de um dispositivo programvel.

Ilustrao 2-1 PROM 8 X 1

Observe a existncia dos 8 fusveis identificados como F0, F1..F7.

Considere a possibilidade de queimar qualquer um destes fusveis, e que esta queima represente deixar a entrada da porta OU com o valor lgico 0 (zero).

Exerccio 2-2 Implementar com PROM

Que fusveis devem ser queimados na PROM acima, para que seja implementada a lgica especificada no Exerccio 2-1 (Y = A B C + A B C + A B C ) ?

Alberto do Canto

PLD2008_10.doc

2 de 26

2.2 PAL
PAL (Programable Array Logic) um dispositivo programvel cuja arquitetura exemplificada na Ilustrao 2-2 PAL ao lado.

Observe a existncia de 18 fusveis identificados como F0, F1, ... F17. Considere a possibilidade de queimar qualquer um destes fusveis, e que esta queima represente deixar a entrada da porta AND com o valor lgico 1 (um).

Ilustrao 2-2 PAL Exerccio 2-3 Implementar com PAL

Que fusveis devem ser queimados Ilustrao 2-2 acima, para que seja implementada a lgica especificada no Exerccio 2-1 (Y = A B C + A B C + A B C ) ?
Exerccio ?? ?? Limitaes de uma PAL

D um exemplo de circuito combinacional S=F(A,B,C) que no possa ser implementado como o dispositivo apresentado na Ilustrao 2-2 acima.

Alberto do Canto

PLD2008_10.doc

3 de 26

Entendendo a notao A Ilustrao 2-3 ao lado representa um PLD com 4 entradas e duas saidas. Observe que as portas AND so representadas como uma linha horizontal, qual esto conectadas as entradas atravs de fusveis. Neste exemplo, os fusveis so numerados de 0 a 47, conforme mostrado na figura a seguir.

Ilustrao 2-3 - PAL4L2 Pal didtico

Exerccio 2-4 Implementar com PAL A 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 B 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 C 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 D 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 S1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 S2 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0

Implementar com o dispositivo mostrado na Ilustrao 2-3 - PAL4L2 Pal didtico. Esta implementao deve ser realizada atravs da especificao de: extrao das equaes: S1 = f(A,B,C,D) S2 = f(A,B,C,D) mapeamento de entradas: mapear as entradas lgicas (A,B,C,D) para as entradas fsicas (I1,I2,I3,I4) Mapeamento de saidas: mapear as saidas lgicas (S1, S2) para as saidas fsicas (O1, O2). Especificao dos nmero de fusveis que devem ser queimados.

2.3 Exemplos de arquitetura


Nas prximas pginas so apresentadas ilustraes das arquiteturas dos seguintes dispositivos comerciais: PAL16L8 PAL16R8 GAL22V10
Exerccio 2-5 Implementar com PAL16L8

Implementar com o PAL16L8 (Ilustrao 2-4, mostrada na pgina seguinte) um circuito combinacional com 6 entradas (A, B, C, D, E, F) e uma saida SAIDA1, que implemente a equao:

SAIDA = A + B + C + D + E + F
Especifique o mapeamento das entradas e saidas para os pinos do dispositivo e o nmero dos fusveis que devem ser queimados.

Alberto do Canto

PLD2008_10.doc

4 de 26

Ilustrao 2-4 - PAL16L8

Alberto do Canto

PLD2008_10.doc

5 de 26

Ilustrao 2-5 PAL16R8

Alberto do Canto

PLD2008_10.doc

6 de 26

Ilustrao 2-6 - GAL22V10

Alberto do Canto

PLD2008_10.doc

7 de 26

Ilustrao 2-7 - Macroclula GAL22V10

Exerccio 2-6 Implementar com PAL16L8

Implementar com o PAL16L8 (Ilustrao 2-4, mostrada na pgina seguinte) um circuito combinacional com 6 entradas (A, B, C, D, E, F) e uma SAIDA, que implemente a equao:

SAIDA = A + B + C + D + E + F + A.B + C.D.E


Especifique o mapeamento das entradas e saidas para os pinos do dispositivo e o nmero dos fusveis que devem ser queimados.

3 Implementando PLDs
A implementao de um projeto com o uso de PLDs feita atravs dos seguintes passos: 1. Projetar a Lgica 2. Selecionar o componente 3. Descrever a Lgica 4. Gerar o arquivo de queima 5. Queimar o dispositivo Neste captulo ser apresentado o software wincupl utilizado como ferramenta de apoio para o desenvolvimento com PLDs. Este software faz uso da linguagem CUPL (Cornel University Programming Langage) pode ser obtido gratuitamente no site http://www.atmel.com/products/PLD/

Alberto do Canto

PLD2008_10.doc

8 de 26

3.1 Utilizando equaes


Neste tutorial ser implementado o circuito GATES, apresentado na Ilustrao 3-1 Circuito "GATES". Nele sero demonstradas as seguintes prticas: Seleo do PLD Mapeamento dos pinos Utilizao do wincupl: o Wizard para seleo de componentes o Mapeamento de pinos o Descrio de lgica com uso de equaes

Ilustrao 3-1 Circuito "GATES"

3.1.1

Seleo do PLD

O projeto do circuito GATES faz uso do componente ATF22V10 cuja arquitetura apresentada na Ilustrao 2-6 - GAL22V10. A pinagem deste dispositivo mostrada na Ilustrao 3-2 ao lado. A seleo do componente passa pelo conhecimento da arquitetura interna do mesmo. Observe que o componente atende os requisitos de: Nmero de entradas Nmero de sadas Arquitetura

Ilustrao 3-2 - Pinagem do ATF22V10

Alberto do Canto

PLD2008_10.doc

9 de 26

3.1.2

Mapeamento dos pinos

Nesta etapa realizado um mapeamento entre o circuito lgico e o componente, ao nvel de pinagem. Com este mapeamento, ser criado um componente, cuja pinagem :

Ilustrao 3-3 - mapeamento dos pinos

Alberto do Canto

PLD2008_10.doc

10 de 26

3.1.3

Descrever o circuito

Nesta etapa o circuito ser descrito no programa Wincupl. 1. iniciar o Wincupl 2. iniciar um novo arquivo de projeto

3. Digitar informaes de cabealho. As informaes de cabealho tem fins de documentao

4. especificar o nmero de pinos de entrada

5. Especificar o nmero de pinos de saida

6. Zero pinnodes

Alberto do Canto

PLD2008_10.doc

11 de 26

Terminada esta etapa, ser exibido um cdigo fonte de um programa escrito na linguagem CUPL. Observe que os dados digitados no assistente de criao do projeto so utilizados para construir um esqueleto a partir do qual se construiro as demais informaes:
Name PartNo Date Revision Designer Company Assembly Location Device GATES ; 00 ; 7/10/2005 ; 01 ; abcanto ; ufrgs ; None ; DELET ; virtual ;

/* *************** INPUT PINS *********************/ PIN = ; /* PIN = ; /* /* *************** OUTPUT PINS *********************/ PIN = ; /* PIN = ; /* PIN = ; /* PIN = ; /* PIN = ; /* PIN = ; /* PIN = ; /* PIN = ; /*

*/ */

*/ */ */ */ */ */ */ */

Ilustrao 3-4 - esqueleto criado pelo assistente

7. ir para o dilogo de seleo de dispositivos.

8. No dilogo de seleo de dispositivo, selecionar o dispositivo ATF22V10B. Neste dilogo possvel identificar o mnemnico que ser utilizado para especificar o dispositivo:

g22v10
9. Pressione o boto OK, para retornar ao editor de textos

10.No editor de textos altere o cdigo fonte, substituindo o nome do dispositivo:

De:
Device virtual ;

para:
Device g22v10 ;

Alberto do Canto

PLD2008_10.doc

12 de 26

11. Acrescentar o mapeamento dos pinos de entrada: 12.acrescentar o mapeamento dos pinos de saida

/* *************** INPUT PINS *********************/ PIN 2 = I_1 ; /* entrada I_1 */ PIN 3 = I_0 ; /* entrada I_0 */

/* *************** OUTPUT PINS *********************/ PIN 23 = O_INV_1 ; /* inversao entrada I_1 */ PIN 22 = O_INV_0 ; /* inversao entrada I_0 */ PIN 21 = O_AND ; /* AND das entradas */ PIN 19 = O_NAND ; /* NAND das entradas */ PIN 18 = O_OR ; /* OR das entradas */ PIN 17 = O_NOR ; /* NOR das entradas*/ PIN 16 = O_XOR ; /* OU EXCLUSIVO das entradas */ PIN 15 = O_XNOR; /* EQUIVALENCIA das entradas */

Observe:

as informao de mapeamento dos pinos so extradas da Ilustrao 3-3, acima; os comentrios possuem o formato /* <comentrio */ nesta verso do wincupl no permitida acentuao, mesmo nos comentrios;
/********** equacoes ************/ O_INV_1 = !I_1; O_INV_0 = !I_0; O_AND = I_1 & I_0; O_NAND = !(I_1 & I_0); O_OR = I_1 # I_0; O_NOR = !(I_1 # I_0); O_XOR = I_1 $ I_0; O_XNOR = !(I_1 $ I_0);

13. Acrescentar as equaes, que estabelecem as relaes entra as entradas e saidas:

Observe: a tabela a seguir apresenta os operadores lgicos e sua precedncia: Operador ! & # $ Exemplo !A A&B A#B A$B Descrio NOT AND OR XOR Precedncia 1 2 3 4

14. No menu options..compiler, configurar o compilador:

Alberto do Canto

PLD2008_10.doc

13 de 26

15.Selecionar o menu Run..Device Dependent Compile F9 ou teclar F9, para realizar a compilao 16.No dilogo Compilation Results, certifique-se de que no ocorreram erros:

17.Salvar o arquivo utilizando o menu File..Save.

4 Simulao
Aps compilar sem erros, possvel simular o funcionamento do PLD. 1. Selecionar a ferramenta de simulao:

2. Criar um novo arquivo de simulao:

3. Para especificar o projeto que ser simulado, no dilogo Design Properties, selecionar o boto Design File...

4. Selecionar o arquivo GATES.PLD criado na etapa anterior e teclar OK...

5. Selecionar o menu Signal..Add Sinal, para especificar os sinais simulados...

Alberto do Canto

PLD2008_10.doc

14 de 26

6. Aparecer a caixa de dilogo Add Signal, com o primeiro sinal I_0 selecionado na caixa de seleo Signal List. Pressione o obto OK, para informar que este sinal deve fazer parte da simulao.

7. Aparecer novamente a caixa de dilogo, permitindo selecionar o sinal I_1. Pressionar OK, para selecion-lo para simulao.

8. Repetir o procedimento at que todos os sinais de entrada e saida tenham sido selecionados e a caixa de dilogo Add Signal seja apresentada com a caixa de seleo Signal List vazia. Teclar o boto Done, para encerrar o procedimento de adio de sinais para simulao. 9. Aparecer um quadro de simulao semelhante ao mostrado na figura ao lado. Observe a existncia de um nico vetor de testes, com as entradas I_1 e I_0 indefinidas.

10. Selecionar o menu Signal..Add Vector

Alberto do Canto

PLD2008_10.doc

15 de 26

11. No dilogo Add Vector, especificar a adio de mais 3 vetores de testes:

12. Com operaes de arrastar e soltar, reordenar os nomes dos sinais conforme mostrado na figura ao lado

13. Definir o valor 0 (zero) para: a entrada I_0; o vetor 1. Observe: clicar no canto inferior esquerdo para especificar o valor 0 clicar no canto superior esquerdo para especificar o valor 1

14. Repetir o procedimento para especificar os valores de I_1 e I_0 nos quatro vetores de teste, conforme mostrado na figura ao lado

Alberto do Canto

PLD2008_10.doc

16 de 26

15. Realizar a simulao, selecionando o menu Simulator..Run Simulator

16. Verificar os resultados da simulao

5 Entendendo os Arquivos Gerados


O resultado do trabalho realizado neste tutorial um conjunto de arquivos. 1. Retornar ao WinCupl

2. Abrir o arquivo Gates.doc

3. Localizar a seco Expanded Product Terms e observar:


O_AND => I_0 & I_1

Equaes AND Equao NAND iguais a equaes AND. Isto , o programa projetou a queima para um AND com inverso na macroclula de sada. Este mesmo tipo de abordagem utilizado para OR e NOR XOR e EQU

O_NAND => I_0 & I_1

O_NOR =>

Alberto do Canto

PLD2008_10.doc

17 de 26

O_XNOR => !I_0 & I_1 # I_0 & !I_1 O_AND.oe 1 =>

O OU EXCLUSIVO gerado considerando a identidade

A B = A.B + A.B
Output Enable da saida O_AND: saida de 3 estados habilitada.

4. Avanar at a seco Fuse Plot e observar o Mapa de Queima correspondente ao primeiro inversor (O_INV_0, pino 22): Observe o mapa de queima e a arquitetura: A legenda:
LEGEND X : fuse not blown - : fuse blown Pin #22 05810 Mode -00440 -------------------------------------------00484 ---------x---------------------------------00528 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 00572 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 00616 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 00660 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 00704 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 00748 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 00792 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 00836 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 00880 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

A queima de todos os fusveis da linha 440, habilitando a sada; A linha 484, apenas mantido o fusvel correspondente ao pino 3, invertido Os fusveis 5810 e 5811 so queimados, configurando a macroclula de sada com S1.S0 = 11 (sada combinacional no invertida) As linhas sem fusveis queimados geram um produto (AND) igual a zero

Alberto do Canto

PLD2008_10.doc

18 de 26

5. Localizar a seco Chip Diagram e visualizar o desenho do componente projetado:

=============================================================================== Chip Diagram =============================================================================== ______________ | GATES | x---|1 24|---x I_1 x---|2 23|---x I_0 x---|3 22|---x x---|4 21|---x x---|5 20|---x x---|6 19|---x x---|7 18|---x x---|8 17|---x x---|9 16|---x x---|10 15|---x x---|11 14|---x GND x---|12 13|---x |______________|

Vcc O_INV_1 O_INV_0 O_AND O_NAND O_OR O_NOR O_XOR O_XNOR

6 Utilizao de Tabelas Verdade


Neste captulo ser apresentada uma funcionalidade do software WinCupl, que permite o uso de tabelas verdade para projeto de circuitos combinacionais. Esta caracterstica ser demonstrada atravs do projeto de um binrio 7 segmentos.

6.1 Projeto Lgico


A figura ao lado apresenta um decodificador BCD 7 segmentos, cuja tabela verdade mostrada a seguir assume que as sadas em 0 acendem o led:

0 1 2 3 4 5 6 7 8 9

B3 0 0 0 0 0 0 0 0 1 1

B2 0 0 0 0 1 1 1 1 0 0

B1 0 0 1 1 0 0 1 1 0 0

B0 0 1 0 1 0 1 0 1 0 1

a 0 1 0 0 1 0 0 0 0 0

b 0 0 0 0 0 1 1 0 0 0

c 0 0 1 0 0 0 0 0 0 0

d 0 1 0 0 1 0 0 1 0 0

e 0 1 0 1 1 1 0 1 0 1

f 0 1 1 1 0 0 0 1 0 0

g 1 1 0 0 0 0 0 1 0 0

Alberto do Canto

PLD2008_10.doc

19 de 26

6.2 Mapeamento dos Pinos


Assumindo-se a utilizao do ATF22V10B, ser realizada a atribuio de pinos conforme ilustrao ao lado:

6.3 Descrever o circuito no WinCupl


1. Iniciar o WinCupl 2. Criar um novo projeto 7SEG-22V10 3. Completar o mapeamento dos /* *************** pinos PIN 2 = b0;
PIN PIN PIN 3 4 5 = = = b1; b2; b3;

INPUT PINS *********************/

/* *************** OUTPUT PINS *********************/ PIN 23 = a ; PIN 22 = b ; PIN 21 = c ; PIN 20 = d ; PIN 19 = e ; PIN 18 = f ; PIN 17 = g ;

4. Acessar o menu Edit..Insert Table 5. Preencher o a caixa de dilogo Create Table com os dados mostrados na figura ao lado.

6. Aps o preenchimento, clicar sobre a regio de visualizao da tabela. Aparecer a tabela verdade, conforme mostra a figura ao lado. 7. clicar sobre as clulas da tabela que devem ser alteradas, adequando o seu preenchimento conforme o projeto. 8. Ao final clicar sobre o boto OK.

Alberto do Canto

PLD2008_10.doc

20 de 26

9. Observe: o dilogo Create Table cria um texto que descreve uma tabela verdade na linguagem WinCupl a sintaxe utilizada para a descrio de uma tabela

TABLE b3,b2,b1,b0 => a,b,c,d,e,f,g { 'b'0000 => 'b'0000001; 'b'0001 => 'b'1001111; 'b'0010 => 'b'0010010; 'b'0011 => 'b'0000110; 'b'0100 => 'b'1001100; 'b'0101 => 'b'0100100; 'b'0110 => 'b'0100000; 'b'0111 => 'b'0000000; 'b'1000 => 'b'0000000; 'b'1001 => 'b'0000100;}

10.Atualizar o dispositivo

Device

g22v10 ;

11. Compilar e simular

7 Equaes de prximo estado


Neste captulo ser apresentrado o projeto de um circuito sequencial simples, realizado com o uso de equaes de prximo estado.

7.1 Projeto Lgico


O projeto refere-se a um contador simples, cujo diagrama de estados mostrado na Ilustrao 7-1ao lado. A partir do diagrama de estados, possvel extrair a tabela a seguir, da qual se definem as equaes de prximo estados.

Q1
0 0 1 1

Q0
0 1 0 1

D1
0 1 1 0

D0
1 0 1 0

D1 = Q1 Q0 D0 = Q0

Ilustrao 7-1 Diagrama de estados

7.2 Mapeamento dos pinos


A Ilustrao 7-2 mostra definio de mapeamento de pinos do ATF22V10

Ilustrao 7-2 Mapeamento dos pinos

Alberto do Canto

PLD2008_10.doc

21 de 26

7.3 Descrever o circuito


1. Iniciar o WinCupl 2. Criar um novo arquivo de projeto Nome: cont1 Device: g22v10 Pinos de Entrada: 1 Pinos de Saida: 2 Pin Nodes: 0
/* *************** INPUT PINS *********************/ PIN 1 = clock;

3. Completar o mapeamento dos pinos

/* *************** OUTPUT PINS *********************/ PIN 23 = Q1; PIN 22 = Q0;

4. Especificar as equaes de prximo estado

Q1.D = Q1 $ Q0; Q0.D = !Q0;

5. Alternativamente ao uso de equaes de prximo estado, pode-se criar uma tabela de prximo estado

TABLE Q1,Q0 => Q1.D, Q0.D { 'b'00 => 'b'01; 'b'01 => 'b'10; 'b'10 => 'b'11; 'b'11 => 'b'00;}

Observe a existncia de extenses referentes a macroclula de sada: Extenso Significado .AP Asynchronous preset of flip-flop .SP Synchronous preset of flip-flop .D D nput of D-type flip-flop .CK Programmable clock of flip-flop .OE Programmable output enable

6. Acrescente as equaes referentes aos demais sinais da macroclula

Q1.AR = 'b' 0; Q1.SP = 'b' 0; Q1.OE = 'b' 1;

Q0.AR = 'b' 0; Q0.SP = 'b' 0; Q0.OE = 'b' 1;

Alberto do Canto

PLD2008_10.doc

22 de 26

7. Realize a simulao. Observe a possibilidade de definir um sinal como clock, para todos os vetores (set whole signal.. C)

8 Diagramas de estado
A linguagem Cupl permite que se descreve um diagrama de estados para especificar uma lgica sequencial.

8.1 Projeto Lgico


O uso de diagramas de estados ser demontrado atravs do projeto do contador BCD encadevel mostrado na Ilustrao 8-1 ao lado. As caractersticas deste contador so as seguintes: Reset Assncrono (entrada R) Operaes sncronas definidas a partir das entradas Ci e Ii, conforme a seguinte tabela: A Tabela 8-1 ao lado mostra as operaes do contador, conforme especificado nos bits de comando Ci e Ii. Este contador projetado para ser encadeado com outros idnticos, conforme apresentado na Ilustrao 8-2 abaixo.
Ci 0 1 1 Ii b3 0 0 1

Ilustrao 8-1 - Contador BCD

Ci 0 1 1

Ii X 0 1

Operao sncrona Mantem contagem Decrementa Incrementa

Tabela 8-1 Operaes do contador

contagem
B2 B1 B0 qualquer 0 0 0 0 Diferente de 0000 1 0 0 1 Diferente de 1001

Co 0 1 0 1 0

Io 0 0 0 1 0

Tabela 8-2 comandos de saida

Ilustrao 8-2 Encadeamento de contadores A Tabela 8-2 acima mostra os bits de sada Co Io, utilizados no encadeamento de contadores.

Alberto do Canto

PLD2008_10.doc

23 de 26

A Ilustrao 8-3 ao lado apresenta o diagrama de estados, que descreve de forma completa o funcionamento do contador.

Ilustrao 8-3 Diagrama de estados

8.2 Implementao
A implementao do contador BCD ser realizada considerando-se a utilizao do PLD ATF22V10B. 1. Especificar a pinagem desejada, conforme Ilustrao 8-4 ao lado 2. Iniciar o WinCupl e criar um projeto com as seguintes caractersticas: Nome: BCD_Count Dispositivo: g22v10 Nmero de Entradas: 4 Nmero de Sadas: 6 Ilustrao 8-4 Pinagem 3. Especificar os pinos de entrada e de sada Observe: a forma
PIN [21..18] = [Q3..0] ; /* *************** INPUT PINS *********************/ PIN 1 = clock; /* clock */ PIN PIN PIN 2 3 4 = R; /* Reset Assincrono */ = Ci; /* Contar */ = Ii; /* Incrementar (1) / Decrementar (0) */

equivalente a
PIN PIN PIN PIN 21= 20= 19= 18= Q3; Q2; Q1; Q0;

/* *************** OUTPUT PINS *********************/ PIN [21..18] = [Q3..0] ; /* saidas do contador */ PIN 22 = Co ; /* comando para celula seguinte contar */ PIN 23 = Io ; /* Comando para celula seguinte incrementar / decrementar */

4. Declarar as variveis associadas a um conjunto de bits. Observe:

field cont = [Q3..0]; /* valor do contador */ field modo = [Ci,Ii]; /* modo de operacao */

A varivel cont declarada acima corresponde a uma palavra de 4 bits, composta por Q3, Q2, Q1, Q0. possvel atribuir valores a esta varivel, conforme mostrado na tabela ao lado:

Expresso
cont = 'b'1001;

equivalente a:
Q3 = Q2 = Q1 = Q0 = cont 'b'1; 'b'0; 'b'0; 'b'1; = 'b'1001;

cont = 'h'9;

Alberto do Canto

PLD2008_10.doc

24 de 26

A tabela ao lado mostra algumas alternativas para a especificao de valores numricos:

Number 'b'0 'B'1101 'O'663 'D'92 'h'BA 'O'[300..477]

Base Binary Binary Octal Decimal Hexadecimal Octal (range)

Decimal Value 0 13 435 92 186 192..314

5. Utilizar a diretiva $DEFINE para definir os estados: Observe:


A diretiva $define especifica ao compilador a equivalncia de textos. Antes da realizao da compilao, feita uma substituio pelo texto equivalente. Por exemplo, o comando
cont = S9;

equivalente a;
cont = 'b'1001;

$define $define $define $define $define $define $define $define $define $define

S0 S1 S2 S3 S4 S5 S6 S7 S8 S9

'b'0000 'b'0001 'b'0010 'b'0011 'b'0100 'b'0101 'b'0110 'b'0111 'b'1000 'b'1001

/* definir estados */

6. Especificar as operaes de comparao Equality operations: Observe:

incr = modo:3; /* modo incremento */ decr = modo:2; /* modo decremento */ mant = modo:[0..1]; /* modo manter */

As Equality Operations so expresses de comparao que podem assumir os valores Verdadeiro ou falso. Por exemplo, a expresso decr assumir o valor verdadeiro sempre que a varivel modo tiver o valor 2 (ou b 10, em binrio). Isto , sempre que Ci=1 e Ii=0: verdadeiro quando a operao for decrementar.

7. Descrever o diagrama de estados

Sequenced cont { present S0 if if if if present S1 if if if present S2 if if if present S3 if if if present S4 if if if present S5 if if if present S6 if if if present S7 if if if present S8 if if if present S9 if if if if }

incr decr mant decr incr decr mant incr decr mant incr decr mant incr decr mant incr decr mant incr decr mant incr decr mant incr decr mant incr decr mant incr

next S1; next S9; next S0; out Co; next S2; next S0; next S1; next S3; next S1; next S2; next S4; next S2; next S3; next S5; next S3; next S4; next S6; next S4; next S5; next S7; next S5; next S6; next S8; next S6; next S7; next S9; next S7; next S8; next S0; next S8; next S9; out Co out Io;

Alberto do Canto

PLD2008_10.doc

25 de 26

8. Especificar as operaes de Set e Reset

Q3.ar Q2.ar Q1.ar Q0.ar

= = = =

R; R; R; R;

Q0.sp Q3.sp Q2.sp Q1.sp

= = = =

'b'0; 'b'0; 'b'0; 'b'0;

Alberto do Canto

PLD2008_10.doc

26 de 26