Skavsår i öronen

Lilla K har haft bästa kompisen på besök idag. Årets favoritjulklapp har gått varm: Singstar (Svensk schlager). De höll på i nästan två timmar och ylade till favoritlåten För Kung och fosterland och ett fåtal andra låtar.

Sedan kom Stora K hem från skidåkningen och tog över efter ett litet lunch-brejk. Hennes variation var något mindre, eftersom hon bara körde Kom och håll om mig.

Skönt att skolan börjar i morgon. Dagis är stängt, så min semester varar ytterligare en dag.

När jobbet kör igång kanske jag kan få lite fart på läsandet av min nya bok:

scott_hauck-andre_dehon-reconfigurable_computing-small.jpg

Till skillnad från den förra (inspirerande läsning) verkar detta inte vara något man sträckläser pärm-till-pärm direkt. Drygt 900 sidor ganska teoretisk text…

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…

Nova 2008

Under årens lopp har jag funderat över möjligheten att bygga en 16-bitars Eclipse med modern teknik. En mjukvaruemulator (SIMH) finns som man kan jämföra med. Eclipse är egentligen en Nova med vissa utökade instruktioner för att göra den lämplig för “kontorssysslor”.

Mitt första steg är att försöka implementera en Nova i en XC95108 som sitter på ett litet demo-kort. XC95108 är en CPLD, och som sådan räcker den till ganska lite logik, (108 bittar minne, tex.) så det är långt ifrån säkert att en Nova får plats. Å andra sidan är Novan ganska enkel till sin uppbyggnad, så en FPGA (typ Spartan 3E) skulle vara ett fruktansvärt “overkill”. FPGA-lösningen tar jag till om XC95108’an skulle visa sig otillräcklig, och även nästa större storlek (XC95144XL) skulle komma till korta. De större CPLD:erna blir ganska dyra, så en billig Spartan 3E för $10 kan bli en bättre lösning.

xc95108-demo.jpg

Kretsen i mitten är en XC95108 i PLCC84-kapsel, och ca 3×3 cm. Om man kompletterar med två minneskapslar för totalt 32kb x 16, har man fyllt upp Novans maximala minnesrymd på 2×2 cm.

Den sista modellen av Nova var Nova 4, som skillde sig från Eclipse S/140 endast genom mikrokoden. Det var också den första generationen utan “Blinkenlights”; knappar och lampor på fronten för att mata in boot-kod och debugga program.

nova4.jpg

Novan ovan är egentligen sektionen med gulaktiga kanter överst till höger i bild. Den svarta delen är en 100-300 MB stor hårddisk. Längst ner bakom gallret sitter en stor tangential-fläkt. Skåpen är ca 60cm breda och 180cm höga.

Xilinx ISE

Nu har jag installerat ISE webpack, en gratisvariant av Xilinx ISE. Egentligen hade jag laddat ner den för flera månader sedan, men det hade inte blivit av att installera förr’ns nu. Min installation var en 9.1, men 9.2 finns redan att tanka hem. Eftersom paketet är på någon GB vill jag nog prova och se först.

Min ursprungliga uppfattning av “Webpack” var att det var ett mindre program för att ta en färdig-syntetiserad konstruktion och anpassa den till mål-kretsen, och sedan “slanga” ner den i målsystemet. Det var en mycket grov underskattning.

ISE Webpack är ett komplett IDE för FPGA- och CPLD-konstruktion. Det innehåller allt från “projekt”-hantering och texteditor till syntetisering och simulering av såväl VHDL som Verilog och gamla Abel. Samt det jag trodde ovan.

Ska bli spänande att se vad som händer 🙂