Bygge av Folk-CPU

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

Re: The Human Computer

Inlägg av Spisblinkaren »

Du har helt rätt både vad gäller PCHB och att det tar 10 klockcykler att utföra "min" branch.

Observera dock att detta projekt inte avser åstadkomma hastighetsrekord vad beträffar databehandling. Det avser bara få saker och ting att fungera och det på ett lagom användarvänligt sätt sett ur programmeringssynvinkel och nytta.

MVH/Roger
PS
Det är svårt att undvika förkortningar i dessa sammanhang.
Användarvisningsbild
Spisblinkaren
EF Sponsor
Inlägg: 12990
Blev medlem: 13 december 2012, 21:41:43

Re: The Human Computer

Inlägg av Spisblinkaren »

Så, nu var blockschemat färdigritat.

Återstår att ta reda på och införskaffa grind-cad för Spartan 3 FPGA.

Som jag dock hoppas skall kunna kombineras med lite Verilog för annars blir det omöjligt att realisera instruktionsregistret (ROM) i samma kapsel.

Lite nomenklatur:

SR: Shift Register (ett för varje håll)
FA: Full Adder (heladderare)
CCR: Condition Code Register (flaggregister)
SP: Stack Pointer (nyttjas för subrutiner dvs push/pull)
PC: Program Counter
HB/LB: High Byte/Low Byte (skall dock läsas High Word/Low Word i mitt fall)
IRR: Instruction Register Register (fantasilöst, jag vet, men det är här OP-koderna latchas in i instruktionsregistret)
BR: Branch Register (laddas med flaggvärdena hos N & Z för bestämning av huruvida en branch ska utföras eller ej)
IR: Index Register (laddas med b1 & b0 för bestämning av typ av indexerad addresering)
IRC: Instruction Register Counter (räknar klockcykler vid realisering av instruktion)
ROM: Instruction Register (realiserat med EPROM idag)
POR: Power On Reset (en negativ spik som sätter alla viktiga register till rätt startvärde)
AR: Address Register
OE: Output Enable
IE: Input Enable
A: ALU Bus
D: Data Bus (intern)
CP: Clock Pulse (systemklocka)
E: E-Clock (Enable-klocka förskjuten 180 grader för att utföra saker efter att saker och ting hunnit stabilisera sig)

Mycket nöje!

MVH/Roger
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Spisblinkaren
EF Sponsor
Inlägg: 12990
Blev medlem: 13 december 2012, 21:41:43

Re: Bygge av Folk-CPU

Inlägg av Spisblinkaren »

Jag har nu lyckats porta min primitiva CPLD-baserade CPU till Spartan 3 FPGA (med mycket större utvecklingsmöjlighet).

Jag har också skapat både en extra accumulator (B), ett tempregister (T) och ett indexregister (X).

I morgon hoppas jag orka bygga om instruktionsregistret (IR) så det kan ta hand om indexerad adressering.

Wish me luck ;)

MVH/Roger
PS
Bifogar en galen bild på "Top Level"-designen.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Senast redigerad av Spisblinkaren 22 oktober 2014, 23:59:02, redigerad totalt 1 gång.
Användarvisningsbild
Spisblinkaren
EF Sponsor
Inlägg: 12990
Blev medlem: 13 december 2012, 21:41:43

Re: Bygge av Folk-CPU

Inlägg av Spisblinkaren »

Nu har jag lyckats uppgradera min FPGA-CPU till att teoretiskt fungera med en extra accumulator (B), ett indexregister (X) och ett tempregister (T).

Det var inte helt lätt av flera skäl. Främst krånglade ISE en aning men det blev också lite väl trångt på "ritbordet".

Nåväl, denna CPU är bara en 8/16-processor liknande 6809. Och om jag får alla instruktioner att fungera kanske jag dubblerar bussarnas bredd. Men i så fall måste jag nog ta till nåt HDL-språk modell Verilog. Detta helt enkelt för att "ritbordet" är för litet.

I vilket fall som helst har jag nu strukturen/algoritmen och "subrutinerna" så det är bara att koda om.

Vill inte gärna lära mig Verilog, dock :)

Bifogar "Synthesis Report" som bevis på min framgång :D

MVH/Roger
PS
Tänk er en 6809 som i det här fallet faktiskt kan gå på drygt 50 MHz :D
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Skriv svar