Televizní displej k CPU 8080/8085

s obvodem Intel 8275



Když já byl ještě malý brouček, já nesekal souček, ani jsem si neusekl paleček, ale snil jsem o tom, že si postavím jednoduchý TV displej s CRT kontrolérem Intel 8275. Moje představa byla taková, že když je ten 8275 takovej velkej a chytrej brouk, tak že se k tomu přivedou adresy, data a nějaký ty řídící signály, vytáhne se video a už to pofrčí. Ó, jak velký to byl omyl. 8275 je sice velkej a chytrej, ale taky je hodně společenskej a potřebuje kolem sebe mít spoustu kamarádů, abyste z něj nějaký to použitelný video dostali. A to nemluvě o tom, že 8275 vůbec není určen pro běžné televizory, nýbrž pro speciální monitory s větší šířkou pásma a jiným časováním, než klasická televize. Jenže já už jsem taky velkej a chytrej brouk, takže ten TV displej s 8275 bude a basta:-)


Pokusné zapojení TV displeje s 8275
Pokusné zapojení TV displeje s 8275
8275 zobrazuje 40x30 znaků na CRT TV
8275 zobrazuje 40x30 znaků na CRT TV


Zatím mám na nepájivém poli jen takové ověřovací zapojení, ale v podstatě to je už kompletní zobrazovadlo. Chybí jen DMA řadič 8257 a videoram. Obojí zatím zastupuje jednočip Atmel 89S51, který tak ke svému běžnému procesorování dostal ještě za úkol krmit 8275 daty. Takže supluje i ten zmiňovaný DMA řadič i tu zmiňovanou videoram. Stíhá to. Musí:-) A k tomu ještě v přerušení šoupe kurzorem sem a tam:-) Ale i ten 8257 a videoram nakonec bude. Cílem je deska pro PMI-80 (připojitelná pochopitelně k jakémukoliv systému s 8080, resp. 8085). Chtěl bych to postavit na unikartě, ale je jasný, že se nevejdu. Budu ji muset nějak nastavit:-) Karta ponese i programovou Eprom s rutinami pro obsluhu displeje. Schéma pochopitelně zatím neexistuje. Pouze v hlavě. Plošňáček vlevo je můj jednoduchý tester krystalů s 74S04, který zde slouží jako generátor hodin pro zobrazování. Osazený je 8 MHz krystal. Plošňáček vpravo je zase videosměšovač a převodník signálů TTL na úrovně PAL video. Je to v podstatě zapojení převzaté z desky AND-1 systému SAPI, které bylo využíváno snad ve všech konstrukcích TV displejů popsaných v Amáru. SMD čip na snímku je EEPROM 28C64 v roli generátoru znaků. Ve finálním provedení tam bude klasická EPROM 2716.

Displej zatím disponuje těmito (prakticky ověřenými) fičůrami:

Textové rozlišení 40x30 znaků v rastru 8x8 bodů, nebo 40x15 znaků v rastru 8x16 bodů. Oba režimy jsou přepínány softwarově. V režimu 40x15 jsou znaky "nataženy" na výšku. Používá se tedy jediný generátor znaků pro oba režimy. Znakové rastry těsně navazují, displej je tedy vhodný i pro semigrafiku.

Normální (bílé na černém), nebo inverzní (černé na bílém) zobrazení přepínatelné softwarově.

Dvě znakové sady (při použití Eprom 2716 jako generátor znaků), každá po 128 (více nelze) znacích. Přepínatelné softwarově.

Autonomní kurzor jako inverzní stabilní či blikající znak s možností jeho skrytí. Vše opět řízeno softwarově.

Možnost plynulého vycentrování obrazu na obrazovce víceotáčkovými trimry.

Autonomní činnost pomocí DMA. Možnost generování přerušení CPU na konci každého snímku. Možnost připojení světelného pera (bude v budoucnu zkoumáno:-))

Možnosti 8275, které nebudou aplikovány: Podtržení znaku a kurzor jako podtržení, znakové grafické atributy a highlight. S podtržením jsou jisté problémy (viz. datasheet, skrývání horních a dolních linek znaku) a navíc by si to vyžádalo další integrované obvody. Znakové atributy jsou vůbec velmi obvodově náročné. Podobné je to i s highlightem. Vše navíc vyžaduje i náročnou softwarovou obsluhu videoram.

Počet IO na poli vypadá docela děsivě, ale to je bohužel realita. A to tam ještě nejsou všichni kamarádi. Pár pouzder by se dalo vyšetřit tak, že bych se vzdal všech výše uvedených fičůr a zvolil jedno pevné rozlišení, jednu znakovou sadu a vzdal bych se inverzního obrazu (ke kterému musím generovat dodatečný BackPorch) i kurzoru. Jenže, když už mi to tak hezky běhá, tak to ponechám a raději tu unikartu fakt nastavím a těch pár drátů navíc natahám:-)

Jediná vada na kráse je zatím to, že obraz je občas trošičku nestabilní (zatřese se) a musí se trimry doladit synchronizace. Horizontální a vertikální synchronizační impulsy jsou generovány pomocí celkem 4 MKO (2 pouzdra 74221). Není to žádný můj vynález, ale používám zapojení přímo od Intelu z jejich referenčních designů sériových terminálů s 8275 a 8276. Stejné zapojení je použito i na CGA kartě k počítači Cosmac ELF 2K. Takže fungovat to musí. Já tedy doufám, že problém je právě jen v tom nepájivém poli (a jeho parazitních odporech a kapacitách), a že na plošňáku to bude OK.

Použít k synchronizaci přímo signály HRTC a VRTC z 8275 na klasické TV nelze. Tedy nelze... Rusáci to dokázali a ve svém počítači RADIO-86RK to používali. Oni tam vůbec ten 8275 používají tak nějak jinak... Mám dokonce i tušení, jak jim to celé funguje, ale myslím, že je to za cenu obrovských kompromisů a chaotického uspořádáni videoram. Ani jedno jsem ve své konstrukci mít nechtěl. Chtěl jsem to mít alespoň částečně kompatibilní se svou TV kartou, abych mohl pro PMI-80 portovat svého Chrobáka Wurmiho x52:-)

Poznámka: Odložte lupy. ANO, na tom nepájivém poli je opravdu bolšanský klon KR580VG75. Originální 8275 nemám.


Přidán řadič DMA Intel 8257


A je to tady. Zkusil jsem přidat i ten DMA řadič typu 8257 (zatím je tam bolševik, ale origoš Intela mám taky) a vlastní videoram (6116). Byla docela fuška to naprogramovat, protože jak s 8275, tak s 8257 jsem nikdy předtím nepracoval a nemám ani žádné vzorové příklady, čeho bych se chytil. Tedy vyjma těch vzorových designů "Low Cost Terminals" od Intelu, ale tam se nepoužívá DMA. K 8257 mám jen datasheet, nic víc. Muselo to stačit. Taky obestavět jednočip x51 tak, aby se navenek choval jako CPU 8080, nebylo jen tak. A když už to bylo vše hotové, tak jsem zjistil, že jsem se dostal na hranice možností nepájivých polí a bylo nutno silně posilovat rozvody napájení a jeho blokaci kondy (na fotografii ještě není zachyceno). Ale vše nakonec vyřešeno (i ta neklidná synchronizace je lepší) a displej dělá přesně to, co jsem po něm chtěl...


Pokusné zapojení TV displeje s 8275
K CRT 8275 přidán DMA 8257 a videoram
8275 zobrazuje 40x30 znaků na LCD TV
40x30 znaků na LCD TV 16:9
40x15 znaků na LCD TV 16:9
40x15 znaků na LCD TV 16:9
40x15 znaků invertovaně
40x15 znaků invertovaně


Vím, že pohled na tu spoušť na nepájivém poli vypadá děsivě, ale zas tak strašné to není. Samotný jednočip a několik obvodů simulujících sběrnici 8080 na finální zobrazovací kartě nebude. Ale zase tam budou posilovače adresové sběrnice, Eprom, kongigurační registr a adresové dekodéry, které zde nejsou. Takže nula od nuly pojde...:-) Celé zapojení má v tuto chvíli spotřebu asi 350mA a to tam jsou jen dva TTL obvody, které nejsou LS. Raději dám na kartu zvláštní napájecí konektor.

Z hlediska činnosti je zobrazovací jednotka zcela autonomní. Není využito ani přerušení na konci každého snímku (ale bude jej možno využívat). K přesunu dat z videoram do 8275 je využíván kanál 2 obvodu 8257, který jediný lze naprogramovat do režimu autoload s automatickou reinicializací po přesunu definovaného počtu bajtů. Po počátečním nastavení se tak CPU o zobrazovací obvody nemusí nijak starat. Prvotní synchronizace, aby se počátek videoram zobrazoval opravdu na počátku obrazovky, je provedena softwarově čtením statusu 8275 a čekáním na nastavení bitu IR. Zobrazování tedy začíná až od druhého TV snímku. Ale těch 20ms zpoždění snad nikoho nezabije:-)


Generátor znaků Tesla MHB2501


Bylo si do mě rýpnuto, že bych jako generátor znaků měl ve svém TV displeji použít slavný komunistický generátor znaků Tesla MHB2501 odpovídající normám RVHP. Proběhlo to asi nějak takto: ...jednak gratuluji, druhak se mi tam vůbec nelíbí ten mikrokontrolér:-D A generátor znaků tam samozřejmě MUSÍ být MHB2501, jinak nehraju... Ještě, že ten rejpal nepožadoval MHB2502. To bych zase nehrál já:-) Takže za prvé, ten jednočip není součástí zobrazovací desky. Zastupuje zde budoucí hostitelský počítač, protože ty obvody 8275 a 8257 je nutné něčím inicializovat, naprogramovat a spustit. A taky je potřeba něčím do RAM nasoukat ukázková data určená k zobrazení. K tomu se jdnočip se sériovým downloadem (ISP) výtečně hodí. Finální karta se pochopitelně bude připojovat k počítačům s klasickým procesorem. Jednočip zde simuluje kompletní počítač s procesorem 8080.

Co se týká generátoru znaků MHB2501, potažmo azbukové verze MHB2502, tak neexistuje jediný rozumný důvod, proč ho použít. Dá se tak učinit opravdu jen v případech, kdy je jedinci diagnostikována těžká a neléčitelná nostalgie. Zato důvodů, proč ho nepoužít, je opravdu dost:

Nemyslím si, že se jedná o ekvivalent nějakého dobového obvodu od Intelu a tudíž si nemyslím, že má nutně nějakou souvislost s použitými obvody 8275 a 8257. Edit: tak jsem dostal informaci, že MHB2501 je ekvivalentem, resp. kopií jiného obvodu tradičního výrobce. Nejedná se sice o Intel, ale ani taková značka jako Texas Instruments není přece žádné ořezávátko a ti právě přišli s obvodem TMS2501JC jehož kopii známe jako MHB2501. Za info děkuji Petrovi (EC1045). Nic to ovšem nemění na jeho nepoužitelnosti pro mé účely:-)

Zobrazuje jen a pouze 64 základních ASCII znaků. Neumí malá písmena, celou řadu symbolů a o semigrafice si můžete nechat jen zdát.

Zobrazuje v rastru 5x7 znaků (fakticky 5x8 s jednou prázdnou linkou navíc). Opět tedy naprosto nevhodné pro semigrafiku.

Vyžaduje krom standardních +5V ještě -12V! Toto napětí není ani v PMI-80 a že jich tam jinak je:-) Pokud by na tomto obvodu ale někdo trval, lze se inspirovat deskou AND-1 ze SAPI [8], kde je MHB2501 použit a je k němu navržen jednoduchý měnič na -12V.

Má výstupy s otevřeným kolektorem a jsou nutné pullupy - tedy další součástky navíc.

Má šílenou přístupovou dobu 600ns a "vylepšená" verze A dokonce celou jednu mikrosekundu!

Přes to všechno jsem mu šanci dal a alespoň ho vyzkoušel. Napětí -12V jsem přivedl z dalšího zdroje. Jako pullupy jsem použil odpory 10k. Problém nastal v přístupové době. Mám sice verzi bez A, ale i tak je 600ns hodně. Ve své prozatímní konstrukci to mám tak, že při kmitočtu krystalu 8MHz trvá vykreslení jednoho znaku (jedné jeho linky) 1 mikrosekundu, přičemž další znak připravuji v polovině tohoto intervalu. Je tedy potřeba generátor znaků s přístupovou dobou do 500ns. Tomu bez problému vyhoví v podstatě libovolná EPROM. Jenže můj MHB2501 potřebuje 600ns... Řešením je posunout latchování dalšího znaku o dva takty. K tomu ve svém zapojení potřebuji jeden invertor navíc. To není problém. Ale já do zapojení už nechtěl dělat další změny a tak jsem to udělal jinak. Vyměnil jsem krystal 8 MHz za 4 MHz a přeprogramoval 8275 na 20 znaků horizontálně. Tím jsem získal celých 1000ns na přípravu znaku v MHB2501. Nyní už jsem mohl vyzkoušet generátor znaků MHB2501 ve své konstrukci:


TV displej s CRT 8275 a MHB2501
TV displej s CRT 8275 a MHB2501
TV displej s CRT 8275 a MHB2501
Zobrazujeme 20x15 znaků s MHB2501


Rastr znaku 5x8 z MHB2501 je namapovám do mých 8x8 tak, že zbývající 3 vstupy posuvného registru jsou na log.0. Horizontální odstup mezi znaky je tedy 3 body a je to akorát. To rozlišení 20x15 vypadá docela působivě a krásně kostrbaté znaky jsou fakt úžasné retro, které se k PMI-80 bude opravdu hodit. Proto jsem se rozhodl, že tuto možnost ponechám i ve finálním provedení. Krystal sice zůstane 8 MHz, ale (ručním) vřazením dalšího stupně děličky bude možné přenastavit kartu na 4 MHz. Vyzkoušel jsem i provoz z krystalem 8 MHz při rozlišení 40 znaků a podle očekávání to nefungovalo. MHB2501 se prostě do těch 500ns nevešel...


80 znaků na řádek na běžné TV?


Když už jsem si hrál s těmi záměnami krystalů, zkusil jsem to i na druhou stranu. Co kdyby se namísto 8 MHz použil 16 MHz a zobrazovalo se 80 znaků na řádek? To by CP/M pošuci chrochtali blahem:-) Jenže ejhle. To nepůjde. To by totiž bylo potřeba nastavit kromě 80 viditelných znaků (to 8275 umí) ještě 48 tzv. retrace znaků (a to 8275 neumí, maximum je 32). Jinak by znakový kmitočet 2 MHz (16/8) byl v pohodě a 8275 to zvládá. Zkusil jsem to tedy navýšit jen o polovinu na 12 MHz. Pak lze naprogramovat 64 viditelných znaků a 32 retrace znaků. Výsledek? Paráda. Těch 64 znaků na řádce je opravdu koukatelných a použitelných. Přesto mi to nedalo, a tak jsem na to šel z druhé strany. Jaký je potřeba kmitočet, abych mohl naprogramovat 80 viditelných znaků při 32 retrace? Výsledek je 14 MHz. Žůžo, ten krystal tu mám. Radost trochu kalí to, že těch 80 znaků se bude vykreslovat těsně nad 45uS. Obával jsem se, že minimálně krajní znaky už budou mimo obrazovku. Ale nejsou! Je to opravdu těsné, zvláště na klasické CRT s kulatými rohy, ale je to vidět. Stejně jako u 64 znaků, je i 80 znaků na řádek koukatelných a použitelných, a to prosím na stařičké klasické analogové televizi s úhlopříčkou 32 cm! To vše už ale pochopitelně se svým generátorem znaků v EEPROM. Škoda, že akorát došly baterky ve foťáku... Ale byl to jen pokus. Zůstanu u svého rozlišení 40 znaků na řádce s možností snížení na polovic. U těch vyšších rozlišení totiž nejde jen o to, jestli budou znaky čitelné (jsou), ale taky o časovou náročnost DMA přenosu z videoram do 8275. A takové PMI-80 se svými 1.11MHz... To by toho procesor už moc neudělal, když je během DMA je odstaven:-)


Pryč s MKO a nestabilním obrazem!


Bystřejší čtenáři si jistě všimli, že na fotce "grafárny" s MHB2501 již chybí trimry na doladění MKO 74221. Je to tak. Už mě nebavilo po každém zapnutí dolaďovat obraz, který se po několika minutách provozu zase začal "rozjíždět". Takhle tedy ne. Zkusil jsem to jinak, bez MKO. Nejprve jsem je odstranil úplně a jako synchropulsy použil přímo signály HRTC a VRTC z 8275 po vzoru ruského RADIO-86RK [7]. Později jsem ale MKO opět vrátil a sice jen na generování synchropulsů. Již je nepoužívám na generování zpoždění synchropulsu a tedy i k centrování obrazu. Právě tohle zlobilo. Zpoždění horizontálního pulsu a horizontální centrování nyní zajišťuje SIPO registr 74164. Ve vertikálním směru je synchropuls startován přímo signálem VRTC a centrování je softwarové skrýváním nepotřebných řádků. Zní to divně a někomu se to možná zdá jako plýtvání, ale není to tak zlé. Navíc ze prázné řádky použít pro vkládání tzv. Field atributů řídících 8275. Obraz je perfektní. Vysvětlím později.



Literatura:

[1] Datasheet 8275
[2] Datasheet 8276
[3] Datasheet 8257
[4] A low cost CRT terminal using the 8275, Application note AP-62, INTEL 1979
[5] 8051 based CRT controller (8276), Application note AP-223, INTEL 1984
[6] The VT1802 video board, User manual COSMAC ELF 2K, Spare Time Gizmos
[7] Amatérské radio A 10/1987: Počítač RADIO-86RK
[8] Amatérské radio B 2/1983: deska AND-1


RET



Odladěno na MS IE 8.0 a Firefoxu při rozlišení min. 1024 x 768 pixelů
www.NOSTALCOMP.cz    2010  -  2017