Close

Adressen

A project log for W6502SBC

a 6502 sbc with the option to be used with a backplane as a module.

wilfried-klaasWilfried Klaas 07/21/2022 at 08:410 Comments

Heute hab ich mir mal ein paar Gedanken über die Adressierung gemacht. Eine erste Version der geplanten Speicheraufteilung steht ja schon in der README.md . Dazu muss aber auch ein PLD File für das CPLD geschrieben werden. Zunächst habe ich die verschiedenen Signal in einer Tabelle mal zusammengefasst.

BereichA15A14A13A12 /AloRAM/AhiRAM/AloROM/AhiROM /CSRAM/CSHiROM/CSLoROM/CSIO/LoRAM/LoROM/HiRAM/HiROM
Base RAM0xxx xxxx 01111111
Lo RAM100x 1xxx 01111111
Lo RAM ext100x 0xxx 11110111
Lo ROM101x xx1x 11011111
Lo ROM ext101x xx0x 11111011
Hi RAM1100 x1xx 01111111
Hi RAM ext1100 x0xx 11111101
IO1101 xxxx 11101111
Hi ROM111x xxx1 10111111
Hi ROM ext111x xxx0 11111110

Der IO Bereich wird mit einem 74138 noch einmal extra unterteilt und braucht somit nicht mit ins CPLD. Geplant ist auch nur ein kleines ATF16V8. Wie man hier sieht, habe ich 8 Eingänge und 8 Ausgänge. Für das RAM wird die notwendige Kombination mit dem PHI2 extern gemacht. Evtl. zieh ich das aber auch hier noch mit rein. Steht noch nicht fest.

Herausgekommen sind die beiden folgenden Dateien: PLD

Name     W6502SBC_ADR ;
PartNo   00 ;
Date     20.07.2022 ;
Revision 01 ;
Designer wkla ;
Company  nn ;
Assembly None ;
Location  ;
Device   G16V8 ;

/* *************** INPUT PINS *********************/
PIN 1   =  A12; PIN 2   =  A13;
PIN 3   =  A14;
PIN 4   =  A15;
PIN 5   =  ALORAM;
PIN 6   =  AHIRAM;
PIN 7   =  ALOROM;
PIN 8   =  AHIROM;

/* *************** OUTPUT PINS *********************/
PIN 12   =  CSRAM;
PIN 13   =  CSHIROM;
PIN 14   =  CSLOROM;
PIN 15   =  CSIO;
PIN 16   =  LORAM;
PIN 17   =  LOROM;
PIN 18   =  HIRAM;
PIN 19   =  HIROM;

CSRAM = (A15 & !A14 & !A13 & !ALORAM) # (A15 & !A14 & A13) # (A15 & A14 & !A13 & !A12 & !AHIRAM) # (A15 & A14 & !A13 & A12) # (A15 & A14 & A13) ;
CSHIROM = !(A15 & A14 & A13 & AHIROM);
CSLOROM = !(A15 & !A14 & A13 & ALOROM);
CSIO= !(A15 & A14 & !A13 & A12);
LORAM= !(A15 & !A14 & !A13 & !ALORAM);
LOROM= !(A15 & !A14 & A13 & !ALOROM);
HIRAM= !(A15 & A14 & !A13 & !A12 & !AHIRAM);
HIROM= !(A15 & A14 & A13 & !AHIROM);

Und der Simulator dazu:

Name     W6502SBC_ADR ;
PartNo   00 ;
Date     20.07.2022 ;
Revision 01 ;
Designer wkla ;
Company  nn ;
Assembly None ;
Location  ;
Device   G16V8 ;

ORDER: A15, A14, A13, A12, ALORAM, AHIRAM, ALOROM, AHIROM, CSRAM, CSHIROM, CSLOROM, CSIO, LORAM, LOROM, HIRAM, HIROM; 
VECTORS:
0 X X X X X X X L H H H H H H H 
1 0 0 X 1 X X X L H H H H H H H 
1 0 0 X 0 X X X H H H H L H H H 
1 0 1 X X X 1 X H H L H H H H H 
1 0 1 X X X 0 X H H H H H L H H 
1 1 0 0 X 1 X X L H H H H H H H 
1 1 0 0 X 0 X X H H H H H H L H 
1 1 0 1 X X X X H H H L H H H H 
1 1 1 X X X X 1 H L H H H H H H 
1 1 1 X X X X 0 H H H H H H H L 

Wer einen Fehler findet mag ihn mir gerne mitteilen.

Discussions