Dual Core CPU

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

Dual Core CPU

Inlägg av Spisblinkaren »

Hej!

Såhär ser min plan ut för min 2G CPU.

Skillnaden här är främst att jag kommer använda CPLDs för både själva CPU'n, instruktionsregistret och BIOS:et som dock till en början mest kommer agera som testprogramminne pga att instruktionerna måste fintrimmas.

Ett batteriuppbackat RAM kommer sedan agera "Floppy".

Först när jag ritat klart mitt blockschema insåg jag att, rackans, BIOS:et kan inte bara ta hand om resetvektorn, det måste innehålla ett primitivt program för tangentbord och skärm också. Detta för att vid jungfruelig start är RAM "blankt".

Det lutar även åt att BIOS minst kommer innehålla en kopieringsfunktion (Copy) så att RAM-partitionen av RAM (där du skriver ditt program och lagrar variabler) kan flyttas till ROM-partitionen av RAM (där program körs). När man sedan kör Copy flyttas data mellan dom båda partitionerna så att RAM blir att innehålla kod på körbar plats och kan förvaras som back-up av det program du just skapat.

Nåt sånt tror jag det blir :)

MVH/Roger
PS
Men detta blir ett dyrt projekt då riktiga mönsterkort måste tas fram och bestyckas så det kommer nog stanna vid en pappersprodukt även om jag kommer skapa Xilinx programmeringsfiler för alla CPLDs så att man iaf kan drömma lite :)
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
JimmyAndersson
Inlägg: 26308
Blev medlem: 6 augusti 2005, 21:23:33
Ort: Oskarshamn (En bit utanför)
Kontakt:

Re: Dual Core CPU

Inlägg av JimmyAndersson »

Riktigt intressant (och udda) projekt! :tumupp:

Men.. nu får du väl i sådana fall byta signatur? :D
Användarvisningsbild
Spisblinkaren
EF Sponsor
Inlägg: 12990
Blev medlem: 13 december 2012, 21:41:43

Re: Dual Core CPU

Inlägg av Spisblinkaren »

Tack!

Jag tycker dock inte att jag komplicerar saken då min enkla CPU inte har fler än c.a 15 unika instruktioner, vilket utan tvivel gör den till en RISC.

Fast det är klart, projektet är inte direkt enkelt :D

MVH/Roger
PS
Antar att du har koll på min andra relevanta tråd, dvs den CPU jag redan byggt?
Användarvisningsbild
Glenn
Inlägg: 33667
Blev medlem: 24 februari 2006, 12:01:56
Ort: Norr om Sthlm
Kontakt:

Re: Dual Core CPU

Inlägg av Glenn »

fast mönsterkort är ju ganska billiga idag bara storleken inte går upp.
Användarvisningsbild
stekern
Inlägg: 453
Blev medlem: 2 november 2008, 08:24:18
Ort: Esbo, Finland

Re: Dual Core CPU

Inlägg av stekern »

Är det med flit du undviker att använda en FPGA till förmån för en handfull CPLDer?
Användarvisningsbild
Spisblinkaren
EF Sponsor
Inlägg: 12990
Blev medlem: 13 december 2012, 21:41:43

Re: Dual Core CPU

Inlägg av Spisblinkaren »

Jag har blivit bekant med CPLDs och gillar dom. Själva kärnan är t.ex gjord enbart mha grindar (ECS) och instruktionsregistret har jag precis lyckats göra mha Verilog (som jag dock fick mycket hjälp med av en trevlig snubbe på Xilinx forum).

BIOS kommer också skrivas i Verilog för den hanterar stora adressareor bättre än ECS.

Jag har dock nystat lite i möjligheten att bygga med FPGAs istället men det stöp på att jag skulle behöva "skriva" om all kod då motsvarande grind-CAD inte var kompatibelt.

Målet med denna CPU/dator är mest att få den att fungera och lära sig hur man kan bygga en dator. Alltså, inte hur man faktiskt bygger en dator.

Att den sen pga CPLDs och inte gamla slöa PROMs teoretiskt skulle kunna gå på uppemot 100MHz är roligt men inte nödvändig.

Min plan är att få den att fungera på typ 1/2 Hz :D Detta kommer jag alltså kunna se mikroinstruktion för mikroinstruktion då det återigen kommer byggas in ett hundratal lysdioder (<1mA/st) som debug av alla bussar.

MVH/Roger
PS
Det snabbaste "färdiga" batteriuppbackade RAM jag hittat (32kX8) är på 70ns. Dock finns det vanliga DIL på 12ns som jag funderar på att koppla ett 3,6V-batteri + en germaniumdiod till :D

När jag först berättade för en kompis vad jag höll på med sa han "Men Roger, du kan ju köpa en för 10 spänn" :D
Användarvisningsbild
stekern
Inlägg: 453
Blev medlem: 2 november 2008, 08:24:18
Ort: Esbo, Finland

Re: Dual Core CPU

Inlägg av stekern »

Att köpa en för 10 spänn lär man sig inte lika mycket av dock ;)
Användarvisningsbild
Spisblinkaren
EF Sponsor
Inlägg: 12990
Blev medlem: 13 december 2012, 21:41:43

Re: Dual Core CPU

Inlägg av Spisblinkaren »

Jag har nu skapat ett litet Verilog-program som jag precis lyckats fitta i min favorit-CPLD (XCR3512XL).

Det är tänkt att utvecklas till ett BIOS men är preliminärt bara ett enkelt testprogram.

Såhär ser det ut:

Kod: Markera allt

module BIOS_P2
(
  input wire [15:0] address,
  output reg [7:0] data // Note that data is now a "reg" instead of "wire"
);

always @*
  case (address)
    16'hC000: data = 8'hC6; //LDA $, tune in 01 eventually
    16'hC001: data = 8'h80; //I/O-address
    16'hC002: data = 8'h00; 
    16'hC003: data = 8'hA1; //CMP #
    16'hC004: data = 8'h01; 
    16'hC005: data = 8'h26; //BNE
    16'hC006: data = 8'hFA; //(-6)
    16'hC007: data = 8'hC7; //STA $
    16'hC008: data = 8'h80; 
    16'hC009: data = 8'h00; //01 is written to I/O
    16'hC00A: data = 8'hC6; //LDA $, tune in 02 eventually
    16'hC00B: data = 8'h80; 
    16'hC00C: data = 8'h00; 
    16'hC00D: data = 8'hA1; //CMP #
    16'hC00E: data = 8'h02; 
    16'hC00F: data = 8'h26; //BNE
    16'hC010: data = 8'hFA; //(-6)
    16'hC011: data = 8'hC7; //STA $
    16'hC012: data = 8'h80; 
    16'hC013: data = 8'h00; //02 is written to I/O
    16'hC014: data = 8'hCC; //JMP $
    16'hC015: data = 8'hC0; 
    16'hC016: data = 8'h00; //Restart

    16'hFFFE: data = 8'hC0; //Here is the reset vector programmed which is where the program begins
    16'hFFFF: data = 8'h00; 


   default: data = 43'bX;
  endcase
endmodule
Skriv svar