.
X    

Diagnostická ISA karta (POST karta)


Toto je jednoduchá diagnostická ("POST" - Power On Self Test) 8-bitová ISA karta pro diagnostiku starých základních desek s ISA sloty. Během POSTu (samo-test, který provádí BIOS spolu s inicializací komponent po zapnutí počítače) BIOS posílá na I/O port 80h diagnostické kódy. Na této diagnostické kartě je 2-místný, 7-segmentový displej, který zobrazuje v hexadecimální podobě poslední kód poslaný na port 80h. V případě, že počítač odmítá startovat a ani se neprovede inicializace grafické karty, a tudíž se nezobrazí na monitoru žádné diagnostické informace, je diagnostická karta užitečný nástroj, protože hexadecimální diagnostické kódy mají podstatně větší výpovědní hodnotu oproti zvukovým, "pípaným" kódům. Jedná se o vhodnou pomůcku pro opravu "historických" (<2000) desek.

Karta v provozu (červený displej), v pozadí je další POST karta se zeleným displejem
Karta v provozu (červený displej), v pozadí je další POST karta se zeleným displejem (klikněte pro plné rozlišení)


Popis

Schéma zapojení
Schéma zapojení (klikněte pro plné rozlišení)

Tato karta pro své napájení používá pouze +5V větev. Je možné použít HCT, LS či ALS logiku. Integrovaný obvod U3 (74HCT688 - equality komparátor) dekóduje spodních osm adresních linek a přepne výstup do logické 0, pokud A[7:0]=80h. OR logická hradla (U5) jsou použita pro dekódování adresních linek A8, A9 (tato karta dekóduje pouze spodních 10 adresních linek), AEN (DMA vs CPU) a ~IOW (příkaz pro I/O zápis, aktivní v log. 0). Karta naslouchá na portu 80h. Pokud A[9:0]=80h, AEN=0 (sběrnici řídí CPU, ne DMA) a ~IOW=0 (probíhá I/O zápis), tak dojde ke stažení uzlu LAT_CLK na log. 0, jinak je uzel LAT_CLK v log. 1. Jakmile je během sekvence zápisu deaktivován signál ~IOW (přejde do log. 1), zatímco na sběrnici jsou ještě validní data (D[7:0]), LAT_CLK také přejde z log. 0 do 1. U1 (74HCT574 či '374 - jiné zapojení pinů, stejná funkce) data uloží na náběžné hraně LAT_CLK.

Při resetu systému dojde k resetu U6A (1/2 74HCT74) - invertovaný výstup (vedoucí na uzel RST_LOGIC) přejde do log. 1. Jakákoliv náběžná hrana LAT_CLK (tzn. jakákoliv data poslaná na port 80h) překlopí U6A a uzel RST_LOGIC se přepne do logické 0. Protože resetovací vstupy 74HCT74 jsou aktivní v log. 0, RESET signál z ISA sběrnice je invertován pomocí obvodu s tranzistorem Q2.

Přijatý hexadecimální kód je zobrazen na displeji skládajícím se ze dvou multiplexovaných 7-segmentových zobrazovačů se společnou katodou. Taktovací signál pro multiplex je získán pomocí integrovaného obvodu U7 (časovač 555, může být jak klasický, tak CMOS) a má frekvenci přibližně 1 kHz. Anody displeje jsou buzeny pomocí bufferu 74HCT245 (U4), katody jsou buzeny pomocí tranzistorů Q3 a Q4, jejichž vypínání je zrychleno pomocí kondenzátorů C6 a C7. Strany A a B bufferu '245 lze přehodit, pokud se pin 1 připojí na GND místo +5 V. Dekódování hexadecimálních dat pro 7-segmentový displej a řízení multiplexu zajišťuje ROM typu 2764 (U2, 27C64 - lze použít například NMC27C64Q či podobnou), případně 27C256 (pokud je pin 26 připojen k +5V nebo GND). ROM je naprogramovaná tak, aby na pinu D7 byla obrácená log. úroveň oproti pinu A8 (MUX_CLK) pro řízení katody druhého zobrazovače, a aby na pinech D0-D6 byly úrovně pro řízení segmentů (A-G) odpovídající hexadecimální hodnotě buď adresních linek ROM A[7:4] (první zobrazovač - pokud je MUX_CLK v log. 1) či A[3:0] (druhý zobrazovač, MUX_CLK=0). Pokud je uzel RST_LOGIC, tedy i pin ROM A9 v log. 1, na displeji je zobrazeno pouze "--" jako signalizace, že po resetu zatím nebyl přijat žádný kód.

V sérii s katodami zobrazovačů jsou zapojeny diody 1N4148 - pokud na konektor J4 budou připojeny stejné či podobné sedmisegmentovky, tak díky úbytku diod (cca 0,7 V) na zabudované zobrazovače nezbyde dostatečné napětí a budou v provozu pouze externí sedmisegmentovky. Kondenzátory C2-C5, C9-C11 by měly být umístěny blízko příslušných integrovaných obvodů. Pro ochranu citlivého MOSFETu BSS138 je zde použit B-E přechod tranzistoru BC547 jako nízkokapacitní Zenerova dioda (Q1 musí být umístěn blízko Q2). Bylo by možné, a i vhodnější, použít jeden invertor z obvodu 74HCT04 či '14 místo tohoto diskrétního obvodu. Pokud nevadí u RESETu zpoždění okolo ~1 ms pro zaznamenání přechodu RESETu ISA sběrnice do log. 1 (pravděpodobně nevadí), lze použít klopný obvod U6B (připojit ~S a D na +5V, ~R na RESET linku sběrnice, vstup C na MUX_CLK, výstup Q nechat nezapojen, výstup ~Q připojen na ~R vstup Q6A - v tomto případě, stejně jako s invertorem '04/'14, součástky R8-9, C12, Q1-2 zůstanou neosazeny).

Tento obvod byl sestaven na univerzální ISA kartě s pomocí pájitelného lakovaného drátu. Byly použity převážně THT komponenty. Na ochranu desky byl použit lak z šelaku s příměsí kalafuny.

ROM je nutné pro správnou funkci naprogramovat. Já jsem použil programátor TL866II+. Binární soubory jsou dostupné ke stažení na konci stránky. Z ROM je využit pouze 1 kB (prvních 10 adresních linek - data se poté opakují) a obvod je možné upravit i pro jiné typy ROM.


Fotografie, soubory ke stažení

Prototyp, vrchní strana
Prototyp, vrchní strana (klikněte pro plné rozlišení)

Prototyp, spodní strana
Prototyp, spodní strana (klikněte pro plné rozlišení)

Soubory ke stažení - 7z archiv

Errata

Pin 8 integrovaného obvodu U7 (ICM7555) spolu se součástkami C10, R12 by měl být připojen k +5V větvi, ale ve schématu toto propojení chybí. Bez něj nebude displej pracovat správně.



Reklama (od webhostingu):