Ja det är alldeles för sällan det skrivs nåt här, så här kommer lite
bilder på ett annat datorprojekt jag hittade på som omväxling från den
stora datorn. Jag ville få nånting byggt som fungerade, så jag svängde
ihop en liten mikrodator med en 6502-processor, lite RAM och EEPROM, och
ett par serieinterface:
http://www.update.uu.se/~bjarni/temp/6502-dator/
Brum heter den. Den har 32K RAM, 8K EEPROM, två RS-232-interface, och en
behändig kontrollpanel som jag använde för att bootstrappa
programmerandet. Som det är nu har kontrollpanelen bara funktionalitet
för att läsa och skriva i minnet, men det finns lite förberett för
instruktionsstegning och lite andra mindre funktioner. EEPROMet kan
skrivskyddas med en jumper och skyddet kan även slås på och av med en
särskild signal på bussen som jag tänkte koppla till en knapp på panelen.
Serieinterfacet använder sig av två stycken 6402-UARTar, vilka jag valde
för att de har alla kontroll- och statussignaler utdragna till egna
pinnar istället för register man måste pilla med för att konfigurera
gränssnittet, vilket gör att jag har kunnat designa det så att portarna
kommer upp automatiskt förkonfigurerade för 9600 8N1 efter
strömtillslag, vilket är en angenäm bekvämlighet.
Varje port har fyra skrivregister [data, handskakning, baudrate,
kontroll] och fyra läsregister [data, handskakning, status, reset].
Reset görs alltså med en läsning, för att det var bekvämt att
implementera i hårdvaran och det fanns ett ledigt läsregister.
Handskakningen är bara två utgående och två ingående GPIO-signaler, som
man egentligen kan göra vad man vill med men som kan användas till
RS-232-handskakning om man behöver. I och med att de är helt
mjukvarustyrda kan man göra både gammaldags assymmetrisk handskakning
och modern symmetrisk handskakning. Nivåkonverterarna är inte
installerade än, så just nu är det bara dataledningarna som funkar, men
det är tillräckligt för att prata med både en terminal och en
terminalväxel, så jag kan programmera datorn över nät från en
Linuxmaskin. :)
Kontrollregistret styr antal data- och stoppbittar samt paritet på/av,
udda/jämn. Statusregistret meddelar data mottagna, overrun, paritetsfel,
framingfel, samt utgående databuffert tom och utgående överföring
färdig. Framingfelsbitten på den ena porten har jag också kopplat till
NMI-ledningen på bussen, så man kan ovillkorligt interrupta processorn
genom att skicka ett break från terminalen. I NMI-hanteraren har jag ett
filöverföringsprogram för att uppdatera firmwaret.
Andra interrupts är planerade men inte implementerade än. Jag var för
sugen på att börja skriva mjukvara. :)
Chassit är nån botten med ram för framsidan som låg i min skothög hemma,
och sidoplåten är utklippt ur sidan av ett gammalt trasig
Tektronix-oscilloskop. Nätagget som sitter i på bilden gick sönder
nästan direkt, så nu är det en liten väggvårta istället. Den får jag nog
byta ut när det kommer lite mer saker i lådan.
Det tomma kortet i botten är alltså en systembuss utan kontakter
monterade. Det enda kortet hittills är device 0, som är serieinterfejset
(inte med i bilderna, som jag tog innan jag byggt det, utom sista bilden
som var mitt första test av seriekortet). Längst in, i plan med
bussmoderkortet, sitter själva datorkortet, som är kanske 10x10cm och
rätt fullproppat, med processor, RAM, ROM, adressavkodning, samt en
massa logik som har att göra med kontrollpanelen.
Mina såna där roadrunner-remsor tog slut när jag hade byggt
processorkortet, så för serieportskortet ritade jag en modell och lät en
kompis skriva ut lite nya på 3D-skrivare. De funkar hyfsat, men går
sönder lite för lätt. Ska prata med honom om ifall det går att göra nåt
åt det för nästa omgång remsor.
Nu funderar jag på vad som ska bli nästa instickskort att bygga. Nån
sorts lagring kanske, eller grafikkort, eller ljudkort, eller en massa
GPIO, vilket jag skulle ha nytta av hemma. Ethernet är lockande också.
Angående ditt nätagg Ragge så har jag inga kommentarer. Det är lite
utanför mitt kunskapsområde. Men jag bidrar med hurrarop och hoppas att
du får nånting byggt snart! Och 200kHz tycker jag är helt tillräckligt!
Jag har förresten designat en hyfsad instruktionsuppsättning för min
rördator, men inte testat den. Får ta och skriva en emulator och en
assembler och prova att skriva lite program och se hur användbar den är,
och hur kompakt koden blir. Kompakt kod är nog den viktigaste egenskapen
jag vill ha, med den minnesstorlek jag har tänkt.
Har sugnat igen på att bygga på rördatorn, så det kanske kommer ett brev
om det om inte alltför länge. :)
Bjarni
Nu var det ett tag sen det skrevs nåt, så jag får väl skriva några rader :-)
Jag hade som mål att kunna ha en cykeltid på 1ns när jag började med det
här, och nu visar det sig att det även går att köra betydligt fortare
när man testat lite.
Men: Det gör att man behöver rejält med ström, och det blev jobbigt.
Så; om man backar lite och räknar med rejält lägre anodström (5-10mA)
samt skippar en del katodföljare så börjar det bli hanterbart, men då
går det långsammare.
Man går hålla sig under 200kHz. Å andra sidan är det här ju ett första
försök, så det får duga. Man får snabba på maskinen efter hand :-)
Nåväl, själva nätdelarna är ju ändå en lika delikat fråga.
Det vore trevligt att kunna använda sig av isolertrafos, det går att
hitta såna lite här och där, och då får man ut 230V.
Jag kommer att behöva 150V, 70V och -100V ser det ut som.
Jag hade tidigare tänkt slippa använda reglering, men det kommer nog
inte att funka, så jag ritade ett reglerat nätagg för 400mA 150V med
inspänning från två isolertrafos:
http://www.ludd.ltu.se/~ragge/vtc/drawings/VTC1-power-stab-150V.jpg
Här är själva konstruktionen dessutom rippeldämpande, så att man ligger
vid full last på ungefär 100mV rippel. Torde vara helt OK.
Zenerdioden motsvarar en 85A2, alltså spänningsreferens 1-10mA.
Fyra st UY1N som likriktare gör att man kan koppla glödspänningen i
serie till dom och mata med 220 direkt (50V styck). Klarar 140mA styck,
tar ut 100mA.
2 stycken 6080 som man använder som serieregulatorer, 100mA per anod
(dubbeltrioder). Ca 50V spänningsfall, ger 5W per anod (max 13).
Det enda som försämrar regleringen är katodmotstånden på 6080, men det
får man stå ut med, dom behövs eftersom trioderna är parallella. Det är
bara några volt sving man får iallafall.
Några kommentarer på detta?
-- Ragge