PC01 lever

Husköp och dito försäljning är klart.

Nu har jag äntligen fått lite tid över för att testa PC01 lite grann. Steg 1 var att demontera den sned-monterade GLUE-kretsen och snygga upp lite. Inkoppling av ström kändes lite läskigt, så jag använde mitt strömbegränsade labb-agg, kopplade in två multimetrar (en för ström och en för spänning) och oscilloskopet. Medan jag sakta vred upp matningsspänningen kontrollerade jag noga vågformen från switchregulatorn för att se när den kickade igång.

Vid en matningsspänning på ca 6V hade den reglerade spänningen stabiliserat sig på 4.93V. Tillräckligt nära 5.0V för alla 5V-kretsar i designen. Ganska bra utan trimning och med 1%-tolerans på de kritiska komponenterna.

Nästa steg blir att montera GLUE-kretsen och programmera den. Då börjar det svåra…

PC01

Äntligen klar med kretskorten till PC01. Gerber-filerna är skickade till leverantören i Kina, och ska levereras ca 1:a Augusti.

Bäst att set till att vi kan får ihop lite firmware tills dess…, och en manual…, och en simulator…, och en C-kompilator….

Ganska mycket kvar att göra således 🙂

Hoppas det finns 20 personer (till) som vill köpa en dator med ordentlig retro-känsla 🙂

Barry Green

I morse löste jag problemet med de 407 produkttermerna. Det var så enkelt som skillnaden mellan:

always @(ale) begin
    spiffy < = (& ab[15:2]);
end

och

always @(negedge ale) begin
    spiffy < = (& ab[15:2]);
end

Hmm. Det första är en kombinatorisk krets, så tilldelningen kommer gälla hela tiden, och implementeras med ett logiknät som optimeras av ISE för hastighet, och därmed tar upp en stor mängd grindar.

Det nedersta uttrycket är en sekvensiell krets. “spiffy” är ett register i båda fallen, men tack vare att vi bara är intresserade av signalen ale när den går låg (då läggs data ut på databussen) klockas rätt värde in i spiffy, som i sin tur används på en massa andra ställen. Bingo! Vi har sparat 251 produkttermer.

Helt orelaterat har vi nyss kastat ut vår julgran, tidigare döpt till Barry. Han inväntar nu transport till kommunens flisanläggningbredvid vår brevlåda.

Nu är det bara lite julskinka och en adventsstjärna kvar av julen. Ja, lite kola finns ju förstås, och ischoklad, och… Julen dröjer sig nog kvar i några skrymslen till Knut iallafall.

GLUE

Nu har jag lagt Nova-implementationen åt sidan ett tag, och ägnat mig åt PC01. Klisterlogiken i GLUE närmare bestämt.

Den har följande funktioner:

  1. De-multiplexning av adress-/data- buss
  2. Baud-rate generator.
  3. Hårddisk-interface i form av SD-kort-interface. (SPI)
  4. Se till att CPU startar i rätt mode.
  5. MMU

Ganska mycket va? Steg 1) var enklast och bestod av tre rader kod:

always @(posedge ale) begin

   ab < = {a_i, da_i};

end

Detta betyder att när insignalen ale går hög, ska 16-bitars ut-registret (signalerna definieras i en tidigare del av koden) tilldelas insignalen a_i i den övre halvan och da_i i den undre halvan. Enkelt så det förslår.

MMU verkar mer än det är. Egentligen är det bara logik som ger chip-select till RAM, ROM och I/O-bussen vid rätt tillfällen. För maximal flexibilitet tänkte jag mig att det ska finnas (m.a.o är inte MMU-delen klar ännu) fyra eller åtta fasta konfigurationer, med 0, 4, 8, 16 eller 32k ROM och 2x2k I/O eller ingen I/O.

Tyvärr är det något som är lite fel med logiken för MMU, så att 407 sk produkttermer förbrukas av 360 möjliga…

Retro PC

 Tillsammans med ett par arbetskamrater har jag startat ett litet projekt: En Retro PC . Det finns plats för fler intresserade i projektet. Vi kommer tillverka max 22 enheter, eftersom komponenterna inte räcker till fler. Fler detaljer på wiki-sidan ovan.