Bjarni Juliusson skrev den 2015-03-17 17:46:
On 03/16/2015 10:44 PM, Anders Magnusson wrote:
Först och främst de grundläggande byggstenarna jag bygger med: http://www.ludd.ltu.se/~ragge/vtc/drawings/basic-blocks.html
Inga överraskningar där. Nope. Det verkar faktiskt vara standardsättet att göra maskiner på den tiden "det begav sig" :-) Det som kan skilja är spänningar och komponentvärdena.
Borde vara hyfsat korrekta värden för att snurra i 200kHz på de flesta komponenter.
Det låter bra. Det är väl i princip samma kretsar som i IBM 604, och där körde de på 50kHz bara, men om du tror 200kHz funkar så kör nog jag på samma eller snarlika kretsar. Börjar känna lust att sätta igång med datorn igen! Kom igen! Jo, 5us klocka är rätt lång tid. RC-kretsarnas tidskonstanter är betydligt kortare än 20us, så det borde ha gått att sparka upp 604:an i betydligt högre hastigheter. Men jag tänkte fokusera på att spara ström till att börja med, och då ligger det bra till.
Sen så har jag hållit på och ritat blockscheman över Nova-CPUn och nu tror jag att det börjar vara nåt som kan fungera. Inte helt olikt DGs från den tiden: http://www.ludd.ltu.se/~ragge/vtc/drawings/Blockschema-150314.jpg
Jag har också ritat alla ingående delar förutom carry-logiken och statemaskinen för exekveringen, det väntar bara på att bli renskrivet i elektronisk form. Vad som görs för varje instruktion är dock klart. En add kommer till exempel att ta upp 6 klockpulser.
Mycket spännande att det närmar sig implementation! Jag har iallafall kommit fram till att jag gör allt som 19"-enheter. Då kan man ha 16 rör på en höjdenhet vilket blir rätt bra :-)
Men: nu kommer det jag stör mej mest på: Det går en oherrans massa rör.
:)
Värst är åtgången av heptoder. Det är främst MUXarna som slukar såna (jag har open-anode i MUXen), så har man 6 ingångar * 16 bit blir det 96 stycken. Här skulle jag behöva tips på hur man kan göra för att få till MUXar som inte behöver såna mängder för att fungera... :-)
Är varje 6-vägs mux alltså 6 såna pentod-NAND-grindar som du hade i tabellen du urlade, med en spänningsdelare för utgången som de delar på, alla anoder ihopkopplade bara?
Yep. Det kommer ju bara att vara en åt gången som leder iallafall.
Jag kan tänka mig att det går att få ner det lite med diodlogik om man kan tänka sig att dedikera utgångarna som insignalerna till muxen kommer från till att bara mata en mux. Tyvärr finns det inte så många såna ställen i ditt blockschema.
Nu har jag tänkt lite, och man kanske kan göra lite roligheter här med diodlogik som du föreslår :-) SX och D består av 6*16 = 96 heptoder vardera == 192 rör. Kör man resistor-diod-logik blir det en diod + ett motstånd per AND, samt att man behöver en triod-or. Det gör att SX och D blir 48 dubbeldioder + 48 dubbeltrioder vardera = 192 rör. Samma som tidigare. Men om man har diodlogik så behöver man katodföljare ut från registren, det blir 48 rör till. Inte bra. Men: Man skall kunna invertera SX i ingången till ALUn, det är 2H*16 + 1T*8 = 40 rör. Dessutom så driver man fulladdern med katodföljare. Det är 16 rör. Om man nu tänker sig att man tar ut och matar SX med inverterade utgången från registren istället för att ha en inverterare och så har man en CF-OR så kan man ersätta inverterlogiken med 32 rör. Vart är vi nu? Originalritningen har 192+40+16=248 rör för SX, D och invertern. Modifierat får vi 192+48+32=272 rör. Det är mera. Får vi dynamiska effekter? Vi borde kunna driva AR->REG med diodlogik, då sparar vi 32 rör. Nu är det break-even. PC får CF-drivning ut vilket gör att MA-MUX kan ha diodlogik. Nu sparar vi 16 rör till. Det här är fortfarande rätt mycket, men jag har en känsla av att det ger ett stabilare system. Dock kräver det dubbeltrioder med fristående katod, och såna har jag ont om. Dessutom kanske man skulle designa om registren att vara CF-INV-CF-INV istället. IBM hade det i 650 tror jag att jag läst nånstans, och det ger ett stabilare register anser dom. Men då blir det ett rör till per bit. Det hade varit trevligt att slippa OR-rören i multiplexern, då hade man sparat en hel del. -- Ragge