Beruflich Dokumente
Kultur Dokumente
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
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.
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).
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).
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.
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.
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
Alberto do Canto
PLD2008_10.doc
5 de 26
Alberto do Canto
PLD2008_10.doc
6 de 26
Alberto do Canto
PLD2008_10.doc
7 de 26
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:
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.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
Alberto do Canto
PLD2008_10.doc
9 de 26
3.1.2
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 :
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
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 = ; /*
*/ */
*/ */ */ */ */ */ */ */
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
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);
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
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:
4 Simulao
Aps compilar sem erros, possvel simular o funcionamento do PLD. 1. Selecionar a ferramenta de simulao:
3. Para especificar o projeto que ser simulado, no dilogo Design Properties, selecionar o boto Design File...
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.
Alberto do Canto
PLD2008_10.doc
15 de 26
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
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_NOR =>
Alberto do Canto
PLD2008_10.doc
17 de 26
O_XNOR => !I_0 & I_1 # I_0 & !I_1 O_AND.oe 1 =>
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
=============================================================================== 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 |______________|
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
/* *************** 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 ;
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
Alberto do Canto
PLD2008_10.doc
21 de 26
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
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.
Ci 0 1 1
Ii X 0 1
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
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.
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 */
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
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 */
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.
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
= = = =
R; R; R; R;
= = = =
Alberto do Canto
PLD2008_10.doc
26 de 26