Radioelektronik Audio-HiFi-Video 5/2001
Ten uk³ad ma walor
bezporedniej
u¿ytecznoci: umo¿liwia
grê w koci na jachcie,
sp³ywie kajakowym,
w czasie d³ugiej nu¿¹cej
podró¿y czy na
wakacjach z namiotem.
O
pisy takich uk³adów zrealizowa-
nych prostymi rodkami nietrudno
znaleæ, ale zamieszczenie w Re-
AV akurat tego projektu ma wa¿-
niejsz¹ przyczynê _ mimo swej prostoty KOST-
KA-PLD umo¿liwia zetkniêcie siê z niektórymi
problemami projektowania uk³adów PLD. Bo-
wiem o ile nowsze generacje logicznych uk³a-
dów programowalnych (CPLD,
FPGA) s¹ i pozostan¹ domen¹ specjalistów,
najprostsze wersje PLD jak rodzina
GAL16V8/20V8/22V10 mog¹ staæ siê dla
uczniów, amatorów i hobbystów tworzywem
do realizacji ich pomys³ów. Niejeden z tych pro-
jektów mo¿e siê staæ podrêcznikowym przy-
k³adem aplikacji (podobnie jak tysi¹ce amatorów
_ krótkofalowców otworzy³y dla radiokomunika-
cji fale krótkie, zdaniem ówczesnych uczo-
nych w pimie do niczego powa¿niejszego
nieprzydatne).
Masowo produkowany (wiêc tani) uk³ad PLD po
wpisaniu doñ programu to taki niby ASIC _
uk³ad scalony dostosowany do indywidualnych,
a nawet (poniewa¿ PLD mo¿na wielokrotnie
KOSTKA-PLD
ELEKTRONICZNA
GRA W KOCI
programowaæ) zmieniaj¹cych siê potrzeb u¿yt-
kownika _ ogniwo porednie miêdzy uk³adami
niskiego stopnia scalenia a mikroprocesorami.
Niestety, wobec ró¿norodnoci i stopnia do-
stêpnoci programowych i sprzêtowych narzê-
dzi do programowania PLD (kompilatorów, pro-
gramatorów, algorytmów minimalizacji iloci
równañ logicznych itp.) systematyczny kurs
programowania nawet najprostszej rodziny
GAL16V8/20V8/22V10 oraz jej wersji programo-
walnej w systemie (typ isp) nie mieci siê w pro-
jektach na weekend. Istniej¹ jednak niez³e pu-
blikacje u³atwiaj¹ce pierwsze kroki (wykaz m.in.
w [1]), bezp³atne programy, a reszty dokona
dociekliwoæ i praktyka.
Zasada dzia³ania
Specjalici okreliliby ten rodzaj uk³adu jako
synchroniczny automat wielostanowy sterowa-
ny programem KOSTKA. Synchronizm dzia-
³ania zapewnia generator taktuj¹cy US1. Przy
w³¹czonym zasilaniu wciniêcie przycisku P (rys.
1) jest jakby rzuceniem kostki _ po ka¿dym im-
pulsie taktuj¹cym z US1 wyjcia 19, 18, 17 i 16
uk³adu US2 kolejno przechodz¹ ze stanu 0 do
1. W wewnêtrznych rejestrach GAL,a pod-
czas jednego cyklu roboczego s¹ pamiêtane ko-
lejne wyjcia przyjmuj¹ce w³anie w danym
momencie stan aktywny.
Zwolnienie przycisku P to jakby zatrzymanie
siê kostki _ GAL16V8 przestaje reagowaæ na im-
pulsy z generatora taktuj¹cego US1, zostaje
odczytany stan ostatnio zapamiêtanego wyj-
cia z US2 i zapala siê jemu przyporz¹dkowa-
na LED. Przy czêstotliwoci impulsów taktuj¹-
cych powy¿ej 1 kHz jest ma³o prawdopodobne,
¿eby gracz wcelowa³ siê w same szóstki _
przypadkowoæ wyników jest raczej wystarcza-
j¹ca. Ponowne wciniêcie P powoduje nowe
rzucenie koci.
Program KOSTKA
Konstruktor uk³adów zawieraj¹cych PLD musi
na podstawie opisu projektu (np. za pomoc¹
schematu elektrycznego, tablicy prawdy, jêzy-
ka opisu sprzêtowego HDL _ Hardware De-
scription Lanquage, grafu automatowego) u³o-
¿yæ uk³ad równañ logicznych (algebra Boole,a)
np. w postaci przedstawionej na Wydruku 1.
Uk³ady PLD s¹ pewnego rodzaju procesorami
logicznymi i zale¿nie od swej architektury
(GAL16V8/20V8/22V10, CPLD czy FPGA)
umo¿liwiaj¹ przetwarzanie mniej czy bardziej
z³o¿onych uk³adów równañ. Jest oczywiste, ¿e
projektant d¹¿y do zmieszczenia projektu
w najmniejszym uk³adzie PLD i pod tym k¹tem
analizuje uk³ad równañ opisuj¹cy zadanie. Pa-
miêtajmy, ¿e cz³ony w równaniach logicznych to
modele matematyczne obwodów elektrycz-
nych we wnêtrzu PLD (bramek, inwerterów, re-
jestrów, przerzutników itp.) realizuj¹cych opera-
cje AND, OR, EXOR, NAND, NOR oraz powi¹-
zania miêdzy stanami na wejciach i wyjciach.
Rys. 1.
Schemat uk³adu
do gry w koci
Rys. 2. Tablica stanów chwilowych i wynikowych
uk³adu do gry w koci (skala 1:2)
Wersja
modelowa
kostki;
p³ytka
z dodatkowym
polem
lutowniczym
mocowana
do pojemnika
z bateriami
WYDRUK 1
9
W pierwszym etapie projektowania przyjêto na-
stêpuj¹ce za³o¿enia:
q
projekt KOSTKA musi rozró¿niaæ 6 stanów
(od 1 do 6 oczek), jest wiêc potrzebny licznik do
6 (zajmie to 6 z 8 wyjæ uk³adu US2);
q
wyjcia GAL,a musz¹ byæ typu rejestrowe-
go, poniewa¿ chwilowy stan licznika bêdzie pa-
miêtany w rejestrze 3-bitowym _ potrzebne do-
datkowo 2
÷
3 wyjcia;
q
3 bity umo¿liwiaj¹ zapis liczb 0
÷
8 (8 = 2
3)
a to
oznacza, ¿e obok 6 stanów potrzebnych do
dzia³ania kostki pojawi¹ siê 2
3
_ 6 = 2 stany nie-
dozwolone).
Widaæ, ¿e bez optymalizacji zasoby
GAL16V8/20V8 (jedynie 8 wyjæ) nie wystarcz¹,
ponadto stany niedozwolone mog¹ zak³óciæ
dzia³ania uk³adu.
Z dowiadczenia wiadomo, ¿e pocz¹tkowe we-
rsje uk³adu równañ z regu³y nie s¹ optymalne je-
li idzie o wykorzystanie zasobów uk³adu PLD
_ sugeruj¹ potrzebê stosowania znacznie wiêk-
szych uk³adów ni¿ to naprawdê konieczne, bo
ka¿dy cz³on równania to jaka bramka, rejestr itp.
Potrzebna jest minimalizacja uk³adu równañ al-
bo graficzn¹ metod¹ tablic Karnaugh (prostsze
projekty) lub przez wykorzystanie procedur mi-
nimalizacji uk³adu równañ Boole
,
a i weryfikacji
wyników (symulacja), które to funkcje udostêp-
niaj¹ rozbudowane kompilatory PLD jak ABEL,
CUPL, PALASM i inne dostêpne tak¿e w bez-
p³atnej wersji zubo¿onej. Niektóre sharewa-
re,owe kompilatory z Internetu np. Fgal, Galasm,
czy podobne nie umo¿liwiaj¹ ani optymalizacji ani
te¿ weryfikacji programu ród³owego, nadaj¹
siê raczej do prostych projektów (np. CHOINKA
z [1]), natomiast równie prosty w realizacji pro-
jekt KOSTKA zmieci³ siê w GAL16V8 dopiero
po optymalizacji uk³adu równañ Boole,a, któr¹
wykonali za nas autorzy ksi¹¿ki [2].
Na rys. 2 przedstawiono tablicê stanów uk³adu
Radioelektronik Audio-HiFi-Video 5/2001
KOSTKA uzupe³nion¹ (z prawej stro-
ny) o wyniki rzutu czyli u³o¿enie zapa-
lonych LEDów. rodkowa tablica opisu-
je chwilowe stany na wyjciach Q1, Q2,
Q3 i Q4 (US2), prawa _ stany wyniko-
we w zale¿noci od liczby oczek (zapa-
lonych LED,ów) jak¹ wywietla zatrzy-
mana kostka. Zauwa¿my, ¿e po mini-
malizacji projektu wystarczy odró¿niaæ
i pamiêtaæ jedynie 4 stany, a LED,y mo¿-
na po³¹czyæ z wyjciami US2 jak na
rys. 1. Skutecznoæ minimalizacji iloci
cz³onów logicznych wg [2] ilustruje pra-
wa strona rys. 2. Widaæ, ¿e w³asn¹
reprezentacjê maj¹ jedynie liczby 1, 2,
4 i 6 (okrelmy to jako stany S(1),
S(2), S(4) i S(6). Stany S(3) oraz S(5)
wystêpuj¹ przy jednoczesnym pojawieniu siê ze-
ra na wyjciach (Q4 i Q2) oraz (Q1, Q2 i Q4).
Potrzebne s¹ jedynie 3 wyjcia z US2, a po do-
daniu obs³ugi stanu S4 dochodzi czwarte; po-
zosta³e 4 mog¹ Czytelnicy wykorzystaæ do w³a-
snych prób i rozbudowy urz¹dzenia.
Do u³o¿enia, weryfikacji i kompilacji programu KO-
STKAna podstawie zoptymalizowanego uk³adu
równañ pos³u¿ylimy siê bezp³atn¹ okrojon¹ we-
rsj¹ pakietu ABEL. Jak widaæ (Wydruk 1), pro-
gram ród³owy KOSTKA.ABL to uk³ad równañ
uzupe³niony o nag³ówek oraz dane pomocni-
cze i informacyjne. Format, sk³adnia i symbole
operacji logicznych odpowiadaj¹ wymogom kom-
pilatora ABEL.
Wynikiem kompilacji programu ród³owego jest
plik wynikowy o nazwie KOSTKA.JED (Wy-
druk 2) w formacie JEDEC, akceptowanym
przez wiêkszoæ programatorów GAL,i oraz ra-
portów z wynikami operacji pomocniczych. Za
pomoc¹ programatora ALL03a program wyni-
kowy zosta³ przeniesiony do uk³adu GAL16V8
jako mapa przepaleñ.
Budowa uk³adu
Jako generator taktuj¹cy wykorzy-
stano popularny uk³ad 555 (lub
C555). Czêstotliwoæ impulsów nie
jest krytyczna, mo¿na j¹ zmieniaæ
dobieraj¹c rezystor Rx. Wy³¹cznik
W³ w³¹cza/wy³¹cza zasilanie, prze-
³¹cznik przyciskowy P uruchamia
(w stanie wciniêtym) lub zatrzy-
muje (po zwolnieniu) cykl roboczy.
Aby zmniejszyæ liczb¹ potrzebnych
czêci, sterujemy LEDy bezpo-
rednio z wyjæ US2. Maksymalne
natê¿enie pr¹du pobieranego
przez GAL16V8 wynosi 24 mA [3],
ka¿de z wyjæ mo¿na obci¹¿yæ
pr¹dem do 2,4 mA, potrzebny jest
wiêc rezystor ograniczaj¹cy o war-
toci równej w przybli¿eniu:
(U
CC
_
∆
U)/I
x
∆
U _ suma spadków napiêcia na
GAL16V8 (przy U
CC
= 5 V mo¿na
przyj¹æ 0,5 V) i diody, I
x
_ ¿¹dana
wartoæ pr¹du p³yn¹cego przez
diodê.
Spadek napiêcia na LED,ach zale-
¿y od koloru emitowanego wiat³a:
(1,6 V _ czerwony, 2,4 V_ ¿ó³ty, 2,7 V _ zielo-
ny) oraz od I
x
. To oznacza, ¿e przy konfiguracji
jak na rys. 1 (2 diody ³¹czone w szereg) mo¿-
na u¿ywaæ jedynie diod o czerwonym wietle.
Jako D1
÷
D6 nale¿y wybraæ diody typu energo-
oszczêdnego (zasilanie z baterii).
Na rys. 3 przedstawiono p³ytkê drukowan¹. Jak
widaæ, u³o¿enie diod D1
÷
D6 przypomina obraz
oczek prawdziwej kostki. Ca³oæ (fot.) wraz z
bateriami umieszczono w dostêpnym na rynku
pude³ku plastykowym o wymiarach 80x35 mm.
Uwagi
W literaturze [3] zalecane jest po³¹czenie niewy-
korzystanych wyjæ z GAL16V8 z mas¹ (wypro-
wadzenie 10) lub U
CC
(wyprowadzenie 20), ma
to eliminowaæ nieprzewidywalne zachowanie
GAL,a.
Uk³ady PLD mo¿na do 100 razy kasowaæ i zapi-
sywaæ od nowa, warto o tym pamiêtaæ. W na-
szym modelu zasoby US2 nie zosta³y w pe³ni wy-
korzystane; wolne s¹ 4 wejcia i 4 wyjcia _ to
bardzo du¿o _ mo¿na wbudowaæ nowe funkcje.
Warto wiedzieæ, ¿e GAL16V8/20V8/22V10 ma-
j¹ funkcjê power-up reset _ w³¹czeniu zasilania
towarzyszy samoczynne zerowanie wewnêtrz-
nych rejestrów wyjciowych i to niezale¿nie od
ich polaryzacji. Proponujemy Czytelnikom samo-
dzielne eksperymenty, np. wzbogacenie KOST-
KI o prze³¹cznik przyciskowy, który jednoczenie
w³¹cza zasilanie i uruchamia cykl roboczy (ozna-
cza oszczêdnoæ energii), u¿ycie do zasilania
KOSTKI akumulatorka 2,4
÷
3,5 V i przetworni-
cy dc/dc jak¹ opisano w [4] itp.
Nie wykluczone, ¿e w przysz³oci opiszemy
w projektach na weekend prosty programator
GAL,i oraz uk³ady do uruchamiania i diagnosty-
ki projektów z GAL,ami nadaj¹ce siê do samo-
dzielnej budowy. Aalgebra Boole,a? Podstawo-
we wiadomoci s¹ w programach szkolnych _
wystarczy uwa¿aæ na lekcjach i trochê poczy-
taæ (nie ma lekko). Powodzenia!
n
Jerzy Frydrychowicz
<jerzy.frydrychowicz@pro.onet.pl>
L I T E R A T U R A
[1] J. Frydrychowicz: wiat³a choinkowe, ale jakie! Re-
AV nr 12/2000
[2] D. Bitterle GALs Programmierbare Bausteine in The-
orie und Praxis. Wyd. III Franzis
,
Verlag Müenchen
1997
[3] Materia³y firmowe Lattice Data Book 1996
[4] M. Foltyniewicz: Modu³ zasilacza bateryjnego z uk³a-
dem MAX856. ReAV nr 10/1999
[5] J. Frydrychowicz: Programowanie ukladów PLD _
wykresy Karnaugh.
a)
b)
WYDRUK 2
Rys. 3. P³ytka drukowana (skala 1:1)
a _ strona druku, b _ rozmieszczenie elementów