Serwis Edukacyjny
Nauczycieli
w I-LO w Tarnowie

Do strony głównej I LO w Tarnowie

Materiały dla uczniów liceum

  Wyjście       Spis treści       Poprzedni       Następny  

©2018 mgr Jerzy Wałaszek
I LO w Tarnowie

Autor artykułu: mgr Jerzy Wałaszek
Konsultacje: Wojciech Grodowski, mgr inż. Janusz Wałaszek

 

 

Elementy

Liczniki

Rozdziały artykułu:
Wstęp
Teoria
Warsztat
Elementy
    Przewody
    Złącza
    Baterie i akumulatory
    Obwody elektroniczne
    Przyciski
    Oporniki
    Kondensatory
    Diody
    Tranzystory
    Bramki cyfrowe
    Sieci logiczne
    Układy kombinacyjne
    Przerzutniki
    Rejestry
    Liczniki
    Generatory
    Przekaźniki
Projekty

 

Co to jest licznik?

Licznik (ang. counter lub timer) jest układem cyfrowym, który zlicza impulsy zegarowe, tzn. po każdym impulsie zegara stan licznika się zmienia w zależności od jego typu. Stan licznika, czyli liczbę zliczonych impulsów odczytujemy z jego wyjść w postaci liczby binarnej:

Liczniki budowane są z przerzutników synchronicznych wyzwalanych zboczem oraz sieci logicznych, które określają sposób zliczania impulsów zegarowych, np. licznik może zliczać impulsy w przód, tzn. każdy nowy impuls zegarowy dodaje 1 do stanu licznika; wstecz, tzn. każdy nowy impuls zegarowy odejmuje 1 od stanu licznika; lub w obu kierunkach (licznik rewersyjny). Liczba zliczonych impulsów może być w różny sposób kodowana, np. w NBC, w BCD, w kodzie Gray'a, itp.

Z licznikami spotkasz się przy programowaniu mikrokontrolerów, ponieważ wchodzą one w skład każdego z nich.

 

Asynchroniczny licznik szeregowy

Rozważmy następujący układ pracy przerzutnika typu D:

Przerzutnik jest wyzwalany opadającym zboczem sygnału zegarowego, tzn. stan wejścia D zostaje zapisany w przerzutniku, gdy sygnał zegarowy zmienia poziom z 1 na 0. Załóżmy, że w przerzutniku zapisany jest stan 0. W takim przypadku na wyjściu Q jest stan 0, a na wyjściu Q jest stan 1:

Ponieważ wejście D sprzężone jest z wyjściem Q, to na wejściu D panuje stan 1. Jeśli teraz na wejściu zegarowym CLK pojawi się ujemne zbocze sygnału, to stan 1 z wejścia D zostanie wpisany do przerzutnika:

Na wyjściu Q pojawi się stan 1, a na wyjściu Q stan 0. Stan ten będzie również obecny na wejściu D przerzutnika. Ponowne zbocze ujemne sygnału zegarowego spowoduje wpisanie tego stanu do przerzutnika:

Wynika z tego, iż każdy impuls zegarowy powoduje zmianę stanu przerzutnika na przeciwny. Na wykresie czasowym wygląda to następująco:

Własność ta pozwala zbudować z tak połączonych przerzutników licznik dwójkowy:

Wyjście Q przerzutnika jest połączone z wejściem zegarowym następnego przerzutnika. Licznik zlicza kolejne impulsy zegarowe. Stan odczytujemy z wyjść jako liczbę binarną: QD QC QB QA:

Zwróć uwagę, że po osiągnięciu stanu 15 (QD = 1, QC = 1, QB = 1, QA = 1) licznik zeruje się przy kolejnym ujemnym zboczu impulsu zegarowego.

Dlaczego licznik nazywamy asynchronicznym? Zmiana stanu przerzutnika wchodzącego w skład licznika nie następuje natychmiast, lecz po upływie czasu propagacji, który zależy od parametrów użytego przerzutnika (zwykle około 30...50 ns). W rezultacie stan przerzutników nie zmienia się natychmiast, co pokazuje poniższy rysunek:

Różnymi kolorami zaznaczono kolejne stany licznika. Przeanalizuj go. Ze względu na opóźnienia wnoszone przez poszczególne przerzutniki licznik faktycznie wskazuje kolejno liczby (kolorem czerwonym zaznaczono wartości nieprawidłowe, które powstają z powodu opóźnień w przełączaniu się przerzutników):

0, 1, 0, 2, 3, 2, 0, 4, 5, 4, 6, 7, 6, 4, 0, 8, 9, 8, 10, 11, 10, 8, 12, 13, 12, 14, 15, 14, 12, 8, 0, 1...

Stan licznika ustala się dopiero wtedy, gdy minie okres równy sumie czasów propagacji poszczególnych przerzutników. A więc nie odbywa się jednocześnie, dlatego nazywamy go licznikiem asynchronicznym, czyli niejednoczesnym. Zwykle nie ma to znaczenia i liczniki asynchroniczne stosuje się dosyć powszechnie. Jeśli jednak jest to istotne, to należy zastosować licznik synchroniczny, który opisujemy dalej w tym rozdziale.

 

Liczniki asynchroniczne o różnych modułach

Przez moduł licznika będziemy tutaj rozumieli liczbę impulsów zegara, po której licznik wraca do stanu początkowego. Na przykład licznik z poprzedniego rozdziału ma moduł 16, ponieważ, jeśli zliczanie odbywa się od stanu początkowego licznika równego 0, to po zliczeniu 16 impulsów zegarowych licznik wraca z powrotem do stanu 0.

Liczniki buduje się z gotowych układów scalonych. Dla przykładu opiszemy układ SN7493. Zawiera on 4 przerzutniki J-K połączone w taki sposób, iż tworzą dwa liczniki: 1-bitowy i 3-bitowy:

Dodatkowo przerzutniki posiadają wejścia zerowania sterowane bramką NAND (licznik jest zerowany, jeśli oba wejścia R0(1) i R0(2) znajdą się w stanie wysokim). Rozwiązanie takie umożliwia tworzenie liczników o różnych modułach.

Przerzutniki J-K pracują w trybie przerzutnika T, tzn. zmieniają stan swoich wyjść Q na przeciwny przy każdym zboczu opadającym sygnału na swoich wejściach C.

Na schematach ideowych licznik SN7493 przedstawia się symbolicznie jako:

A wejście zegarowe dla pierwszego przerzutnika (licznik 1-bitowy)
B wejście zegarowe dla licznika 3-bitowego
QA wyjście licznika 1-bitowego
QB,QC,QD wyjścia licznika 3-bitowego, QB jest najmłodszym bitem, QD jest najstarszym bitem
R0(1),R0(2) wejścia zerujące licznik, stan 1 na obu powoduje ustawienie stanu 0 na wszystkich wyjściach obu liczników.

Licznik 4-bitowy w kodzie 8421 uzyskamy następująco:

Inne moduły uzyskuje się przez odpowiednie wykorzystanie wyjść oraz wejść zerujących:

n Układ licznika modulo n   n Układ licznika modulo n   n Układ licznika modulo n
  2          7          12
3   8   13
4   9   14
5   10   15
6   11   16

Zasada działania polega na tym, iż w momencie, gdy licznik osiągnie wartość modułu, to zostaje wyzerowany.  Dla przykładu rozważmy licznik modulo 12:

Licznik zostanie wyzerowany, gdy na wyjściach QC i QD pojawi się stan 1, ponieważ wyjścia te łączą się z wejściami zerującymi licznik:

n QD QC QB QA
0 0 0 0 0
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 0 1 0 0
5 0 1 0 1
6 0 1 1 0
7 0 1 1 1
8 1 0 0 0
9 1 0 0 1
10 1 0 1 0
11 1 0 1 1
12 1 1 0 0
0 0 0 0 0

Stan 12 będzie trwał bardzo krótko: przez czas propagacji zerowania przerzutników. Jednak musi wystąpić, aby zadziałało zerowanie. Przebieg sygnałów będzie następujący:

W ten sam sposób działają pozostałe układy liczników modulo n z wyjątkiem tych, które nie wymagają zerowania (czyli liczniki dwójkowe dla n = 2, 4, 8, 16). Pamiętaj również, że w licznikach szeregowych stan ustala się dopiero po okresie propagacji, zatem odczyt licznika nie powinien być dokonywany przy opadającym zboczu sygnału zegarowego, lepiej robić to przy zboczu narastającym, jeśli impulsy zegarowe mają wystarczającą długość (ponad 50 ns).

Oprócz liczników dwójkowych, produkowane są układy scalone innych liczników:

 

Asynchroniczny licznik liczący wstecz

Licznik zliczający wstecz liczy w kierunku odwrotnym, tzn. każdy impuls zegarowy powoduje zmniejszenie o 1 stanu takiego licznika. Najprostszym rozwiązaniem jest zanegowanie wyjść zwykłego licznika:

lub wykorzystanie wyjść Q (co jest równoważne zanegowaniu wyjść Q), jeśli są one dostępne:

CIN jest wejściem sygnału zegarowego. COUT jest wyjściem sygnału zegarowego do następnej kaskady licznika.

Poniższa tabelka pokazuje kolejne stany licznika:

QD QC QB QA n QD QC QB QA n
0 0 0 0 0 1 1 1 1 15
0 0 0 1 1 1 1 1 0 14
0 0 1 0 2 1 1 0 1 13
0 0 1 1 3 1 1 0 0 12
0 1 0 0 4 1 0 1 1 11
0 1 0 1 5 1 0 1 0 10
0 1 1 0 6 1 0 0 1 9
0 1 1 1 7 1 0 0 0 8
1 0 0 0 8 0 1 1 1 7
1 0 0 1 9 0 1 1 0 6
1 0 1 0 10 0 1 0 1 5
1 0 1 1 11 0 1 0 0 4
1 1 0 0 12 0 0 1 1 3
1 1 0 1 13 0 0 1 0 2
1 1 1 0 14 0 0 0 1 1
1 1 1 1 15 0 0 0 0 0
0 0 0 0 0 1 1 1 1 15
0 0 0 1 1 1 1 1 0 14
0 0 1 0 2 1 1 0 1 13
... ... ... ... ... ... ... ... ... ...

Licznik zliczający wstecz można również otrzymać z przerzutników wyzwalanych zboczem dodatnim:

Jako zadanie pozostawiam ci przeanalizowanie tego układu. Najpierw dokonaj analizy działania pojedynczego przerzutnika, a później całości.

Asynchronicznych liczników zliczających wstecz nie produkuje się jako układów scalonych, ponieważ łatwo można je utworzyć ze zwykłych liczników asynchronicznych.

 

Liczniki synchroniczne

Wadą liczników asynchronicznych jest to, iż stany poszczególnych przerzutników nie zmieniają się jednocześnie, lecz musi upłynąć pewien krótki czas aż stan licznika się ustali. Co więcej, przez krótką chwilę wyjścia licznika mogą przyjmować nieprawidłowe stany, co pokazaliśmy powyżej.

Jeśli jednoczesne przełączanie przerzutników jest istotne, stosuje się liczniki synchroniczne (ang. synchronous counters). Zasada ich działania nie opiera się na propagacji sygnału kolejno z wyjść przerzutników na wejścia następnych (co prowadzi do hazardów), lecz na wymuszaniu kolejnego stanu wyjść na podstawie stanu, który wyjścia licznika posiadają w danej chwili. Licznik synchroniczny oprócz przerzutników wymaga również odpowiednio zaprojektowanej sieci logicznej, która steruje przełączaniem przerzutników. Sygnał zegarowy doprowadzany jest do wejścia zegarowego każdego przerzutnika, zatem zmiana stanu przerzutników odbywa się jednocześnie. Poniżej pokażemy krok po kroku sposób projektowania licznika synchronicznego.

Licznik będzie 4-bitowy. Będzie posiadał jedno wejście zegarowe CLK oraz cztery wyjścia QA ... QD:

Zrealizujemy go z przerzutników typu J-K Master Slave, tzn. takich, które są przełączane ujemnym zboczem sygnału zegarowego. Przypomnijmy tabelkę stanów przerzutnika J-K:

J K C Q
X X 0 Qn-1
0 0 X Qn-1
1 0 1 1
0 1 1 0
1 1 Qn-1

Impuls zegarowy powoduje zmianę stanu przerzutnika J-K na przeciwny, jeśli oba wejścia J i K są w stanie 1. Jeśli oba wejścia są w stanie 0, przerzutnik nie zmienia stanu. Wykorzystamy te własności przerzutnika J-K do konstrukcji licznika synchronicznego. Najpierw przyjrzyjmy się tabelce stanów licznika:

CLK Wyjścia
QD QC QB QA
0 0 0 0 0
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 0 1 0 0
5 0 1 0 1
6 0 1 1 0
7 0 1 1 1
8 1 0 0 0
9 1 0 0 1
10 1 0 1 0
11 1 0 1 1
12 1 1 0 0
13 1 1 0 1
14 1 1 1 0
15 1 1 1 1

Stan wyjścia QA zmienia się na przeciwny przy każdym impulsie zegarowym. Zachowanie takie otrzymamy umieszczając na wejściach J-K przerzutnika sterującego tym wejściem stany 1. Wtedy zgodnie z tabelką będzie on realizował przerzutnik T:

Stan wyjścia QB zmienia się na przeciwny, jeśli w poprzednim stanie licznika na wyjściu QA panował stan 1. Jeśli na wyjściu QA panował stan 0, to wyjście QB nie zmienia swojego stanu. Zachowanie takie osiągniemy przez dołączenie nowego przerzutnika J-K, którego wejścia J i K będą połączone w wyjściem QA:

Jeśli wyjście QA znajduje się w stanie 0, to na wejściach J i K przerzutnika panuje stan 0 i impuls zegarowy nie zmienia stanu wyjścia QB. Jeśli wyjście QA znajduje się w stanie 1, to impuls zegarowy zmieni stan wyjścia QB na przeciwny. Zwróć uwagę, że zmiana stanu wyjść QA i QB odbywa się w obu przerzutnikach równocześnie, synchronicznie z impulsami sygnału zegarowego CLK. Nie występują tutaj stany pośrednie, jak w licznikach asynchronicznych.

Wyjście QC zmienia stan na przeciwny, jeśli w poprzednim stanie oba wyjścia QA i QB znajdowały się w stanie 1. Wejścia J i K trzeciego przerzutnika muszą być zatem sterowane z bramki AND, na której wejścia podajemy stany wyjść QA i QB. Jeśli oba wyjścia będą w stanie 1, to na wejściach J i K przerzutnika pojawi się stan 1 i impuls zegarowy przełączy wyjście QC w stan przeciwny. W przeciwnym razie na wejściach J i K będzie stan 0 i impuls zegarowy nie zmieni stanu wyjścia QC.

Rozumiesz już? Wyjście QD zmienia swój stan na przeciwny, jeśli w poprzednim stanie licznika wszystkie trzy wyjścia QA, QB i QC znajdowały się w stanie 1. W takim przypadku należy podać na wejścia J i K kolejnego przerzutnika stan 1. Możemy zastosować trójwejściową bramkę AND:

Licznik jest gotowy. Jeśli przeanalizowałeś jego konstruowanie, to na pewno zauważyłeś prawidłowość: wejścia J i K następnego przerzutnika sterujemy wyjściem bramki AND, której wejścia dołączone są do wyjść Q poprzednich przerzutników. Zatem rozszerzenie tego licznika na 5 bitów wygląda następująco:

W poniższym symulatorze licznika synchronicznego możesz prześledzić opisane sygnały sterujące wejściami poszczególnych przerzutników. Wejście C jest wejściem impulsowym i każde kliknięcie generuje jeden takt zegarowy. Stany wyjściowe licznika zmieniają się synchronicznie z opadającym zboczem sygnału zegarowego.

Liczniki synchroniczne produkowane są w postaci układów scalonych:

 

 

Liczniki synchroniczne modulo n

Asynchroniczne liczniki modulo n działają w ten sposób, iż po osiągnięciu stanu n są zerowane i cykl zliczania rozpoczyna się od nowa. Wadą tego rozwiązania jest krótkotrwałe pojawienie się stanu n na wyjściu licznika. W liczniku synchronicznym wada ta nie występuje, ponieważ kolejne stany pojawiają się na podstawie stanu poprzedniego.

Dla przykładu zaprojektujemy licznik synchroniczny modulo 9. Będzie to licznik 4-bitowy:

Zbudujemy go z przerzutników J-K pracujących jako przerzutniki T.

Najpierw określamy tabelkę pożądanych stanów:

CLK Wyjścia
QD QC QB QA
0 0 0 0 0
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 0 1 0 0
5 0 1 0 1
6 0 1 1 0
7 0 1 1 1
8 1 0 0 0
9 0 0 0 0

Po osiągnięciu stanu 1000(2) kolejny impuls zegarowy powoduje wyzerowanie licznika i cykl zliczania odbywa się od nowa.

Rozpoczynamy konstruowanie licznika. Wszystkie 4 przerzutniki J-K będą sterowane wspólnym sygnałem zegarowym, a ich wejścia J i K będą ze sobą połączone:

Teraz tworzymy tabelkę określającą stany wejść TA ... TD w zależności od stanów wyjściowych przerzutników. Jeśli dany przerzutnik ma zmienić swój stan po impulsie zegarowym, to jego wejście T powinno przyjąć stan 1. Jeśli przerzutnik ma pozostać w swoim stanie, to jego wejście T powinno przyjąć stan 0. Stany wejść określimy na podstawie tabelki stanów licznika. Pokażę jak to zrobić na jednym przykładzie, resztę robi się tak samo. Tworzymy tabelkę przejść:

Stan Wyjścia Przejście
stanu
Przełączanie
QD QC QB QA TD TC TB TA
0 0 0 0 0 0 → 1        
1 0 0 0 1 1 → 2        
2 0 0 1 0 2 → 3        
3 0 0 1 1 3 → 4        
4 0 1 0 0 4 → 5        
5 0 1 0 1 5 → 6        
6 0 1 1 0 6 → 7        
7 0 1 1 1 7 → 8        
8 1 0 0 0 8 → 0        
0 0 0 0 0 0 → 1        
1 0 0 0 1 ...        

Licznik ze stanu 0 (0000) ma przejść w stan 1 (0001). Zatem wyjście QA ma zmienić stan na przeciwny, a pozostałe wyjścia mają pozostać niezmienione. Stanie się tak, jeśli wejście TA przyjmie stan 1, a pozostałe będą miały stan 0. Zatem w pierwszym wierszu zapisujemy:

Stan Wyjścia Przejście
stanu
Przełączanie
QD QC QB QA TD TC TB TA
0 0 0 0 0 0 → 1 0 0 0 1
1 0 0 0 1 1 → 2        
2 0 0 1 0 2 → 3        
3 0 0 1 1 3 → 4        
4 0 1 0 0 4 → 5        
5 0 1 0 1 5 → 6        
6 0 1 1 0 6 → 7        
7 0 1 1 1 7 → 8        
8 1 0 0 0 8 → 0        
0 0 0 0 0 0 → 1        
1 0 0 0 1 ...        

 

Identycznie wypełniamy pozostałe wiersze. Ze stanu 1 (0001) licznik ma przejść w stan 2 (0010). Wyjścia QA i QB zmieniają się na przeciwne (TA = 1, TB = 1), a pozostałe nie zmieniają stanu (TC = 0, TD = 0):

Stan Wyjścia Przejście
stanu
Przełączanie
QD QC QB QA TD TC TB TA
0 0 0 0 0 0 → 1 0 0 0 1
1 0 0 0 1 1 → 2 0 0 1 1
2 0 0 1 0 2 → 3        
3 0 0 1 1 3 → 4        
4 0 1 0 0 4 → 5        
5 0 1 0 1 5 → 6        
6 0 1 1 0 6 → 7        
7 0 1 1 1 7 → 8        
8 1 0 0 0 8 → 0        
0 0 0 0 0 0 → 1        
1 0 0 0 1 ...        

I reszta wierszy:

Stan Wyjścia Przejście
stanu
Przełączanie
QD QC QB QA TD TC TB TA
0 0 0 0 0 0 → 1 0 0 0 1
1 0 0 0 1 1 → 2 0 0 1 1
2 0 0 1 0 2 → 3 0 0 0 1
3 0 0 1 1 3 → 4 0 1 1 1
4 0 1 0 0 4 → 5 0 0 0 1
5 0 1 0 1 5 → 6 0 0 1 1
6 0 1 1 0 6 → 7 0 0 0 1
7 0 1 1 1 7 → 8 1 1 1 1
8 1 0 0 0 8 → 0 1 0 0 0
0 0 0 0 0 0 → 1 0 0 0 1
1 0 0 0 1 ... ... ... ... ...

 

Układamy mapy Karnaugha dla kolejnych wejść T. Funkcje przełączające jako argumenty używają stanów wyjściowych:

TA:

 

 

TB:

 

TC:

 

TD:

Gotowe. Podana tutaj metoda pozwala projektować dowolne liczniki synchroniczne. Jako zadanie proponuję ci zaprojektowanie licznika synchronicznego modulo 13.

 

Liczniki synchroniczne rewersyjne

Licznik rewersyjny potrafi zliczać w przód i w tył. Licznik, oprócz wejścia dla impulsów zegarowych, posiada również wejście określające kierunek zliczania (istnieją również rozwiązania z dwoma wejściami zegarowymi, jedno do zliczania w górę i jedno do zliczania w dół):

Stan niski na wejściu D/U (ang. Down/Up = w dół/w górę) powoduje, że impulsy zegarowe zwiększają stan licznika. Stan wysoki powoduje, że impulsy zegarowe zmniejszają stan licznika.

Licznik rewersyjny projektuje się wg metody podanej w poprzednim podrozdziale, ponieważ jest to metoda uniwersalna. Dla przykładu zaprojektujemy 3-bitowy licznik rewersyjny. Zaczynamy od tabelki stanów (kolorem niebieskim są oznaczone stany dla zliczania w górę, kolorem czerwonym oznaczyliśmy stany dla zliczania w dół):

D/U QC QB QA n
0 0 0 0 0
0 0 0 1 1
0 0 1 0 2
0 0 1 1 3
0 1 0 0 4
0 1 0 1 5
0 1 1 0 6
0 1 1 1 7
0 0 0 0 0
1 1 1 1 7
1 1 1 0 6
1 1 0 1 5
1 1 0 0 4
1 0 1 1 3
1 0 1 0 2
1 0 0 1 1
1 0 0 0 0
1 1 1 1 7

Licznik będzie zawierał 3 przerzutniki J-K sterowane wspólnym sygnałem zegarowym:

Przerzutniki pracują w trybie przerzutnika T: podanie stanu niskiego 0 na wejście T nie powoduje zmiany stanu przerzutnika po impulsie zegarowym, podanie stanu wysokiego 1 na wejście T powoduje zmianę stanu przerzutnika na przeciwny po impulsie zegarowym.

Na podstawie tabeli stanów tworzymy tabelę przełączeń, w której określone są stany wejść T:

D/U QC QB QA n Przejście TC TB TA
0 0 0 0 0 0 → 1 0 0 1
0 0 0 1 1 1 → 2 0 1 1
0 0 1 0 2 2 → 3 0 0 1
0 0 1 1 3 3 → 4 1 1 1
0 1 0 0 4 4 → 5 0 0 1
0 1 0 1 5 5 → 6 0 1 1
0 1 1 0 6 6 → 7 0 0 1
0 1 1 1 7 7 → 0 1 1 1
0 0 0 0 0 0 → 1 0 0 1
1 1 1 1 7 7 → 6 0 0 1
1 1 1 0 6 6 → 5 0 1 1
1 1 0 1 5 5 → 4 0 0 1
1 1 0 0 4 4 → 3 1 1 1
1 0 1 1 3 3 → 2 0 0 1
1 0 1 0 2 2 → 1 0 1 1
1 0 0 1 1 1 → 0 0 0 1
1 0 0 0 0 0 → 7 1 1 1
1 1 1 1 7 7 → 6 0 0 1

Na podstawie tabelki przełączeń układamy funkcje przełączające dla wejść T:

TA:

 

TB:

 

TC:

 

Licznik rewersyjny jest gotowy.

Przemysł elektroniczny produkuje synchroniczne liczniki rewersyjne w postaci gotowych układów scalonych:

 

Zespół Przedmiotowy
Chemii-Fizyki-Informatyki

w I Liceum Ogólnokształcącym
im. Kazimierza Brodzińskiego
w Tarnowie
ul. Piłsudskiego 4
©2018 mgr Jerzy Wałaszek

Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.

Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl