CPU-hemmabygge

Användarvisningsbild
Spisblinkaren
EF Sponsor
Inlägg: 12990
Blev medlem: 13 december 2012, 21:41:43

Re: CPU-hemmabygge

Inlägg av Spisblinkaren »

Jesus, det här förstog jag absolut INGENTING av!

Kan du ta det igen?

2 add r1, r0, r0

Vad betyder det egentligen?

add r1 r0 förstår jag men den extra r0 vad är det för nåt?

Du har väl adderat r1 med r0 varvid summan läggs i r1, eller?

Vänligen förklara för mig som om jag vore en idiot :D

MVH/Roger
PS
|s| också, vad är det för nåt? :)
Användarvisningsbild
Spisblinkaren
EF Sponsor
Inlägg: 12990
Blev medlem: 13 december 2012, 21:41:43

Re: CPU-hemmabygge

Inlägg av Spisblinkaren »

Vad tycker ni om den här videon? :)



MVH/Roger
Användarvisningsbild
stekern
Inlägg: 453
Blev medlem: 2 november 2008, 08:24:18
Ort: Esbo, Finland

Re: CPU-hemmabygge

Inlägg av stekern »

Härliga framsteg rogerk8, jag ska titta närmare på videon när jag har en bättre internetuppkoppling :bravo:
blueint skrev:
stekern skrev:- verilogkoden använder sig av tekniker som var brukligt runt år 2000, men som nu uppfattas som förkastliga
Vilka tekniker tänker du på då?

(finns det någon lista?)
Det mest prominenta är användingen av defines i stället för att använda parameters för att propagera konfigurationer till olika moduler.
Användarvisningsbild
Spisblinkaren
EF Sponsor
Inlägg: 12990
Blev medlem: 13 december 2012, 21:41:43

Re: CPU-hemmabygge

Inlägg av Spisblinkaren »

Tack stekern för den trevliga kommentaren!

Jag fick dock rampfeber och rörde till begreppen på slutet.

Mest beroende på att 0,5Hz-klockan faktiskt var lite för snabb :D

Dock hade jag kunnat halta klockan genom att hålla den manuella klockans switch (längst upp till höger) uppåt.

Jag har nämligen tre klock-moder inbyggt:

1) Astabil vippa (standard)
2) Astabil vippa med halt (enligt ovan)
3) Manuell klocka

Fast jag var alltför ivrig för att ens komma på det i min video :D

Kanske det blir en sansad "Del III" så småningom...

Nu måste jag dock programmera om minst ett PROM (M0) för att komma vidare.

MVH/Roger
Användarvisningsbild
Spisblinkaren
EF Sponsor
Inlägg: 12990
Blev medlem: 13 december 2012, 21:41:43

Re: CPU-hemmabygge

Inlägg av Spisblinkaren »

Jag har nu programmerat om M0 och fått följande funktionalitet:

CPU'n läser snällt alla programraders data och försöker realisera alla instruktioner.

BNE funkar inte alls, den bara läser OP-koden och går vidare.

JMP fungerar dock nästan. Den hoppar faktiskt men inte till rätt adress.

Jag vet nu varför men kommer nog aldrig göra nåt åt det för det blir för jobbigt (omprogrammering av alla 6 PROM krävs).

Den delikat designade bidirektionella databussen fungerar dock då CPU'n både kan läsa data och skriva data till I/O.

Jag kommer koncentrera mig på diverse små hårdvarumässiga problem men siktar mest på att uppgradera till en FPGA mest för att den har ROM-funktioner inbyggda.

Här är videobeviset:



MVH/Roger
Användarvisningsbild
Spisblinkaren
EF Sponsor
Inlägg: 12990
Blev medlem: 13 december 2012, 21:41:43

Re: CPU-hemmabygge

Inlägg av Spisblinkaren »

Jag har tydligen missat att dokumentera det men följande video visar att min primitiva CPU faktiskt kan hoppa korrekt (JMP).

Det verkar dessutom som om både LDA och STA fungerar korrekt men det är inte helt säkert.

MVH/Roger

Användarvisningsbild
Spisblinkaren
EF Sponsor
Inlägg: 12990
Blev medlem: 13 december 2012, 21:41:43

Re: CPU-hemmabygge

Inlägg av Spisblinkaren »

Först idag kom jag att tänka på ett par roliga saker i samband med min primitiva CPU.

De långsamma använda UV-raderbara EPROM från TI är inte en så stor begränsning av hastigheten som jag hela tiden trott.

Använda EPROM är på 120ns dvs 10MHz är att hoppas på lite för mycket men kan gå ty accesstiden garanteras bara vara max 120ns, det finns egentligen inget som säger att den kan vara kortare bara inte mycket kortare, realistiskt sett.

Det här är dock inte vad jag känner att jag egentligen vill berätta, vad jag vill berätta är att mina EPROM 27C512-12 tycks inte gå att få tag i idag MEN dom har hittat på en tråkig men rolig variant som hara i princip samma beteckning men är OTP, dvs One Time Programmable (vad man nu ska med det till, kan tyckas :) ).

MEN grejen med OTP-varianten är att den finns med en så kort accesstid som 45ns!

Nu snackar vi alltså 20MHz som fullt möjligt, kanske 30MHz tom fungerar, vad vet jag.

Och allt detta med samma topologi och svettigt ihovirade och PQ208-lödda moderkort.

Så istället för att göra om alltihopa för att nå 50MHz funderar jag nu på att "tweaka" redan befintlig CPU till 30MHz.

Metoden är som sådan att jag bygger mig en UV-låda (för befintliga EPROM som liksom får vara beta-EPROM innan dom i slutändan byts ut mot OTP), köper mig en EPROM-programmerare, mikrokodar om instruktioner som inte fungerar (t.ex alla brancher, vad det verkar) och profgrammerar (obs!) eventuellt om arkitekturen i CPLD vid behov.

Jag har nyligen fått en JTAG-programmerare (parallellport) av en mycket snäll man här på forumet, allt jag behöver göra är att leta rätt på programmet ImPact som används för att programmera Xilinx kretsar, sen kan jag ändra hur mycket jag vill i arkitekturen för min CPU, speciellt skulle jag vilja hårdkoda instruktionerna MUL/DIV som idag måste göras via mjukvara.

En detalj är sen att RAM behöver bytas, Mitt nya snabba RAM är på 20ns medans det gamla tydligen är på 70ns så det vill jag byta ut.

Så hur byter jag då ut ett DIL28W mot ett DIL28S? :humm:

Lösningen är enkel och stavas ZIF-sockel, jag lyfter alltså ur DIL28W ur sockeln sen trycker jag i ZIF och i ZIF spänner jag fast DIL28S, detta är optimalt för jag har ändå tänkt använda batteriuppbackat RAM som "Floppy".

Fast om jag ska använda RAM som floppy så måste jag addera två dioder, en i serie med batteriet (för att spärra mot laddning) och en spärrdiod från Vdd (så att batteriet inte försörjer hela CPU när matningen är avslagen), detta innebär dock att Vdd-benet på RAM måste vikas upp och dioden införas från tidigare Vdd till Vdd på RAM, som batteri har jag tänkt mig en 3,6V Litium-cell.

Äggklockan ringer, dags för kvällsvard och därefter sängen :)

God natt!

MVH/Roger
Skriv svar