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:
- De-multiplexning av adress-/data- buss
- Baud-rate generator.
- HÃ¥rddisk-interface i form av SD-kort-interface. (SPI)
- Se till att CPU startar i rätt mode.
- 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…