Jste zde

Softwareový logický analyzátor Logan

Při realizaci a oživování digitálních obvodů je velmi často zapotřebí přístroje zvaného logický

analyzátor. Pokud nám stačí sledovat relativně pomalé děje s kmitočty řádově desítky až nízké stovky kHz, pak k

tomuto účelu většinou postačí počítač typu PC s funkčním portem LPT.

Úvod

Jedná se o velmi jednoduchý 8 kanálový logický analyzátor. Slovy „velmi jednoduchý“ je myšleno, že je to jen program pro PC, který v podstatě nepotřebuje žádné externí součástky. Jeho hlavní výhodou je především cena - ta je v tomto případě složena jen z ceny software, který je nabídnut jako tzv. freeware, tudíž zcela zdarma. Jeho nevýhodami jsou omezení vzorkovací frekvence dané použitým počítačem či nemožnost nastavení přesné požadované vzorkovací frekvence.


Jak LoganQ pracuje

Základem je osobní počítač typu PC. Jako vstup program využívá paralelní port (port pro tiskárnu), resp. jeho osmi datových linek nebo 5 vstupních linek (stavové linky pro tiskárnu - Error, Select, PE, ACK, Busy). U starých portů, které pracovaly jen v tzv. SPP módu, byly datové linky jen výstupní. U novějších typů lze paralelní port nakonfigurovat do tzv. EPP nebo ECP módu. V těchto módech lze přepínat směr toku dat, tudíž datové linky používat i jako vstupy (tiskárně stačí jen výstupní LPT, ale třeba skenery, externí ZIP mechaniky a další zařízení potřebují obousměrnou komunikaci). Port je tedy nutné v BIOSu počítače nebo na základní desce přepnou do EPP nebo ECP módu, pokud chcete využívat jako vstupy datové linky ( = 8 vstupů). Pokud Vám stačí 5 vstupů, můžete mít port SPP, tj. původní výstupní port.

Program čte v těsné smyčce stav portu a ukládá jej do připraveného bufferu. Až se buffer naplní, zobrazí se na monitoru naměřené průběhy. Uživatel pak má možnost si prohlížet i detaily těchto průběhů, zjišťovat časové údaje v průbězích a ukládat je na disk.

Rozdíly oproti předchozí verzi

  1. přidána možnost spouštění vzorkování na základě nastavené podmínky (vzestupná a/nebo sestupná hrana)
  2. zpřehledněno menu programu

Návod k obsluze

Program je jednoduchý a přehledný. Náhled je zde.

V programu jsou implementovány dva režimy spouštění vzorkování:

  1. spuštění vzorkování okamžitě po stisku tlačítka "START" - ukončení po naplnění bufferu
  2. po stisku tlačítka "START" se čeká na splnění podmínky pro spuštění vzorkování (tzv. trigger). Pokud není podmínka spuštění splněna do nastavené doby, čekání je ukončeno. Vzorkování končí opět po naplnění bufferu.

Před spuštěním vzorkování lze nastavit potřebné parametry v menu programu. Zde je popis menu:

Menu Soubor

V tomto menu jsou položky:

„Otevřít…“ – otevře uložený soubor s průběhy
„Uložit jako…“ – uloží zobrazené průběhy
„Konec“ – ukončí aplikaci


Menu Nastavení

V tomto menu jsou položky:

„Obecné…“ – zde se nacházejí záložky:


Port

  • Port LPT1 či LPT2
  • Vzorkované linky portu - buď stavové (možno vždy), nebo datové (port musí být obousměrný)

Vzorkování

  • Velikost bufferu pro vzorkování (větší buffer = delší doba vzorkování)
  • Zpoždění = zpoždění vzorkovací smyčky - slouží pro snížení vzorkovací frekvence. Při hodnotě 0 se vzorkuje max. možnou rychlostí. Tato hodnota nemá žádný exaktní matematický vztah k vzorkovací frekvenci, pokud požadujeme zpomalení vzorkování, musíme s touto hodnotou experimentovat až k dosažení požadovaného vzorkovacího kmitočtu.

Zobrazení

  • Posuv - udává precentuálně posuv okna se zobrazenými průběhy při posuvu pomocí šipek.
  • Násobnost kreslení - je jasné, že při velikosti bufferu např. 1 000 000 nelze kreslit všech milión navzorkovaných hodnot (to by bylo moc pomalé), ale jen např. každou desetitisící hodnotu. Kdybychom kreslili jen tolik hodnot, kolik je bodů pro nakreslení na monitoru, tak to zase nepostřehneme detaily průběhu při malém zvětšení. Tato hodnota vyjadřuje, kolik položek z bufferu se má nakreslit na 1 x-ovou souřadnici na monitoru. Čím více, tím lépe, ale musíme volit kompromis vůči rychlosti zobrazení.
  • Počet čas. značek - určuje kolik časových údajů bude zobrazeno na časové ose (+/- 50%)
  • Zobrazovat průběh vzorkování – pouze při nepoužívání triggeru! Umožní zapnout nebo vypnout „teploměr“, který ukazuje průběh vzorkování. Je vhodnější mít jej vypnutý, neboť jeho změna je časově docela náročná a způsobí momentální odchylku vzorkovací frekvence.

Trigger

  • Trigger zapnout - zapíná a vypíná trigger
  • Zdroj triggeru - trigger lze nastavit na jednu z vzorkovaných linek, či na všechny najednou
  • Typ triggeru - lze nastavit čekání na sestupnou a/nebo na vzestupnou hranu signálu na nastavené lince
  • Pre-trigger - nastaví v procentech velikosti bufferu část průběhu, který se navzorkuje a zobrazí před splněním podmínky triggeru
  • Časové omezení - pokud do nastavené doby nepřijde nastavená hrana na dané lince, čekání na trigger se přeruší.

Barvy a názvy...“ – zde lze nastavit:

  • Názvy jednotlivých průběhů
  • Barvy křivek
  • Barvu pozadí
  • Barvu kurzorů


Možnosti zobrazení průběhů

Při zobrazení průběhů je možno měnit barvy jednotlivých čar a přidávat jim názvy. Na časové ose je malým červeným trojúhelníkem naznačeno místo triggeru.

Po úspěšném ukončení vzorkovacího cyklu, jsou navzorkované průběhy zobrazeny uživateli. Pro pohodlnější práci při studiu průběhů jsou v programu následující nástroje:

  • kurzory - automaticky se zobrazí po kliknutí myší do okna s průběhy. Jeden kurzor lze posouvat při stisku levého tlačítka myši, druhý při stisku pravého tlačítka myši. V levé dolní části se pak zobrazuje časový rozdíl kurzorů a jeho převrácená hodnota, tj. frekvence.
  • lupa - zobrazené průběhy lze přibližovat (zvětšovat) a oddalovat (zmenšovat). Zvětšování lze provádět dvěma způsoby: pomocí tlačítka (tím se zvětší na celou šíři obrazovky střední třetina), lépe pak pomocí kuzorů - kurzory umístíme na okraje části, kterou chceme zvětšit, a po stisku tlačítka se tato část zobrazí přes celou šíři obrazovky. Tlačítkem lze pak oddalovat průběhy.
  • posuv - pomocí tlačítek a lze posouvat průběhy vlevo a vpravo.
  • reset - toto tlačítko vynuluje všechna provedená zvětšení, zmenšení a posuvy.

Obr. 1: Náhled programu (klikni pro zvětšení)

Technické parametry

Tato otázka bude asi zajímat všechny nejvíce. Jak již bylo řečeno, vzorkování probíhá v těsné smyčce, z čehož plyne, že vzorkovací frekvence závisí především na výkonu procesoru a celého počítače. Během vzorkování je programu přiřazena nejvyšší možná priorita ve WINDOWS (priorita REAL_TIME). Tuto frekvenci lze snížit, a to ZPOŽDĚNÍM v menu „Nastavení - Obecné - Vzorkování“. Přesné nastavení vzorkovací frekvence se mi zrealizovat nepodařilo. Přibližná hodnota vzorkovací frekvence je v stavovém řádku programu. Další otázkou je, co zvládá port. Podle mnou zjištěných údajů paralelní port spolehlivě přenáší data do asi 1MHz rychlosti.

Na mém počítači s procesorem Celeron 300MHz, přetaktovaném na 340MHz, je vzorkovací frekvence kolem 740kHz. Vzorkovací frekvence je však silně závislá nejen na rychlosti procesoru ale i na typu základní desky, případně dalším harware počítače.

Upozornění !!!

Něco o paralelním portu: Paralelní port je velmi lehce zničitelný!

Nesmí se:

  • Zkratovat výstupní linky – max. dovolený proud je 10mA a linky nemají omezení zkratového proudu (na rozdíl od sériového portu)
  • Spojovat výstupní linky mezi sebou
  • Přivést na jakoukoliv linku jiné napětí než 0 až 5V
  • Připojovat a odpojovat od portu zařízení při zapnutém počítači

V žádné případě nedoporučuji porušovat první tři body! Ani není rozumné vyvést „dráty“ přímo z portu. Asi nejrozumnější by bylo použít galvanické oddělení (optočleny), ale tak rychlé optočleny by byly velmi drahé. Já jsem použil na oddělení budič sběrnice 74HCT241 s odporem 560W pro omezení zkratového proudu pod 10mA pro případ, že redukce bude připojena na port ve výstupním módu. Schéma tohoto oddělení pro jednu linku je na následujícím obrázku.

Tento „adaptér“ lze umístit přímo do krytky konektoru CANON, soubor v Eagle 4.01 je v závěru dokumentu. Tento obvod napájím přímo z testovaného zařízení. Při jednoduchých pokusech se obvod napájí sám z portu přes zdvihací rezistory 56k. Používáte-li více linek a jejich stav se rychle mění, nutno externí napájení použít.


Obr. 2: Princip oddělení paralelního portu

Příklady použití

  • čtení scan-kódů klávesnice počítače - klávesnice komunikuje s PC pomocí dvou vodičů, jeden slouží pro generování dat, druhý pro generování hodinového signálu. Tento hodinový signál má kmitočet kolem 20kHz, takže k zjišťování scan-kódů LoganQ plně postačuje.
  • čtení dat na sériové lince - na klasické asynchronní sériové lince je přenosová rychlost řádově 9600Bd. Lze použít i pro sledování jiných sériových linek, např. I2C, při oživování zařízení s mikroprocesory - rychlost I2C lze v takovém případě uměle snížit a umožnit tak pohodlné sledování linky programem LoganQ s dostatečnou rezervou.
  • s IR přijímačem a demodulátorem pro dálkové ovladače spotřební elektroniky (např. obvodem SFH 5110) lze zjistit kódy jednotlivých tlačítek - nosný signál tohoto způsobu přenosu dat má kmitočet zhruba 38kHz (záleží na výrobci), modulační je pak několikrát nižší.

 

Závěr

Rád bych upozornil, že nejsem žádný velký programátor a tak bych chtěl všechny poprosit, aby omluvili případné chyby a nedostatky tohoto programu. Jestli ale někdo narazíte na nějaký problém, napište mi prosím a já se budu snažit chybu opravit.

Dále znovu upozorňuji, že program lze spustit pouze pod operačním systémem MS Windows 95/98/ME. Operační systémy MS Windows NT/2000/XP používají odlišný přístup k periferiím počítače, než požaduje popsaná aplikace.

Program je freeware, což znamená, že ho můžete libovolně kopírovat svým kamarádům a známým.

Protože program pracuje s paralelním portem, rád bych upozornil, že na sebe neberu žádnou zodpovědnost za případné škody jakéhokoli rázu. Paralelní port je náchylný i k nechtěnému zničení a tak se k němu tak chovejte.

DOWNLOAD & Odkazy

  • [1] Kainka B., Berndt H-J.: Využití rozhraní PC pod Windows, HEL, 2000
  • [2] Stránka o paralelním portu (v angličtině) - http://www.lvr.com/jansfaq.htm
  • Program LoganQ verzi 2.0beta - loganqv20.zip
  • Podklady pro výrobu oddělovače pro LPT v Eagle 4.01 - eagle.zip
     
Hodnocení článku: