Beh, non è proprio fuori tema ... parliamo *anche* di sostituire il PLA o no?
E io ho detto la mia sul PLA ...
Non so se un utente medio prende il 27c512 o la flash e la programma, perché avrebbe bisogno di una attrezzatura (programmatore di EEPROM o Flash) abbastanza costosa ... Forse gliela fornisci tu già programmata, ma è un altro discorso ...
Ma la CPLD (una 7032) la trovi su RS a pochi euro così come il programmatore (Nuova Elettronica). Il programma per programmarle viene distribuito gratuitamente dalla Altera e il file per ottenere un PLA è
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY PLA_MODULE IS
PORT
(
P_A12 : IN STD_LOGIC; -- pin 27
P_A13 : IN STD_LOGIC; -- pin 2
P_A14 : IN STD_LOGIC; -- pin 3
P_A15 : IN STD_LOGIC; -- pin 4
P_VA12 : IN STD_LOGIC; -- pin 20
P_VA13 : IN STD_LOGIC; -- pin 21
P_VA14_N : IN STD_LOGIC; -- pin 5
P_LORAM_N : IN STD_LOGIC; -- pin 8
P_HIRAM_N : IN STD_LOGIC; -- pin 7
P_CHAREN_N : IN STD_LOGIC; -- pin 6
P_CAS_N : IN STD_LOGIC; -- pin 9
P_GAME_N : IN STD_LOGIC; -- pin 22
P_EXROM_N : IN STD_LOGIC; -- pin 23
P_RW_N : IN STD_LOGIC; -- pin 24
P_AEC_N : IN STD_LOGIC; -- pin 25
P_BA : IN STD_LOGIC; -- pin 26
P_CHAROM_N : OUT STD_LOGIC; -- pin 15
P_KERNAL_N : OUT STD_LOGIC; -- pin 16
P_BASIC_N : OUT STD_LOGIC; -- pin 17
P_ROMH_N : OUT STD_LOGIC; -- pin 10
P_ROML_N : OUT STD_LOGIC; -- pin 11
P_GRW_N : OUT STD_LOGIC; -- pin 13
P_CASRAM_N : OUT STD_LOGIC; -- pin 18
P_IO_N : OUT STD_LOGIC -- pin 12
);
END PLA_MODULE;
ARCHITECTURE rtl OF PLA_MODULE IS
SIGNAL ROML_N_S,
ROMH_N_S,
IO_N_S,
GRW_N_S,
CHAROM_N_S,
KERNAL_N_S,
BASIC_N_S,
CASRAM_N_S : STD_LOGIC;
BEGIN
ROML_N_S <= NOT (
(P_LORAM_N AND P_HIRAM_N AND P_A15 AND NOT P_A14 AND NOT P_A13 AND NOT P_AEC_N AND P_RW_N AND NOT P_EXROM_N) OR
(P_A15 AND NOT P_A14 AND NOT P_A13 AND NOT P_AEC_N AND P_EXROM_N AND NOT P_GAME_N)
);
ROMH_N_S <= NOT (
(P_HIRAM_N AND P_A15 AND NOT P_A14 AND P_A13 AND NOT P_AEC_N AND P_RW_N AND NOT P_EXROM_N AND NOT P_GAME_N) OR
(P_A15 AND P_A14 AND P_A13 AND NOT P_AEC_N AND P_EXROM_N AND NOT P_GAME_N) OR
(P_AEC_N AND P_EXROM_N AND NOT P_GAME_N AND P_VA13 AND P_VA12)
);
IO_N_S <= NOT (
(P_HIRAM_N AND P_CHAREN_N AND P_A15 AND P_A14 AND NOT P_A13 AND P_A12 AND P_BA AND NOT P_AEC_N AND P_RW_N AND P_GAME_N) OR
(P_HIRAM_N AND P_CHAREN_N AND P_A15 AND P_A14 AND NOT P_A13 AND P_A12 AND NOT P_AEC_N AND NOT P_RW_N AND P_GAME_N) OR
(P_LORAM_N AND P_CHAREN_N AND P_A15 AND P_A14 AND NOT P_A13 AND P_A12 AND P_BA AND NOT P_AEC_N AND P_RW_N AND P_GAME_N) OR
(P_LORAM_N AND P_CHAREN_N AND P_A15 AND P_A14 AND NOT P_A13 AND P_A12 AND NOT P_AEC_N AND NOT P_RW_N AND P_GAME_N) OR
(P_HIRAM_N AND P_CHAREN_N AND P_A15 AND P_A14 AND NOT P_A13 AND P_A12 AND P_BA AND NOT P_AEC_N AND P_RW_N AND NOT P_EXROM_N AND NOT P_GAME_N) OR
(P_HIRAM_N AND P_CHAREN_N AND P_A15 AND P_A14 AND NOT P_A13 AND P_A12 AND NOT P_AEC_N AND NOT P_RW_N AND NOT P_EXROM_N AND NOT P_GAME_N) OR
(P_LORAM_N AND P_CHAREN_N AND P_A15 AND P_A14 AND NOT P_A13 AND P_A12 AND P_BA AND NOT P_AEC_N AND P_RW_N AND NOT P_EXROM_N AND NOT P_GAME_N) OR
(P_LORAM_N AND P_CHAREN_N AND P_A15 AND P_A14 AND NOT P_A13 AND P_A12 AND NOT P_AEC_N AND NOT P_RW_N AND NOT P_EXROM_N AND NOT P_GAME_N) OR
(P_A15 AND P_A14 AND NOT P_A13 AND P_A12 AND P_BA AND NOT P_AEC_N AND P_RW_N AND P_EXROM_N AND NOT P_GAME_N) OR
(P_A15 AND P_A14 AND NOT P_A13 AND P_A12 AND NOT P_AEC_N AND NOT P_RW_N AND P_EXROM_N AND NOT P_GAME_N)
);
GRW_N_S <= NOT (
(NOT P_CAS_N AND P_A15 AND P_A14 AND NOT P_A13 AND P_A12 AND NOT P_AEC_N AND NOT P_RW_N)
);
CHAROM_N_S <= NOT (
(P_HIRAM_N AND NOT P_CHAREN_N AND P_A15 AND P_A14 AND NOT P_A13 AND P_A12 AND NOT P_AEC_N AND P_RW_N AND P_GAME_N) OR
(P_LORAM_N AND NOT P_CHAREN_N AND P_A15 AND P_A14 AND NOT P_A13 AND P_A12 AND NOT P_AEC_N AND P_RW_N AND P_GAME_N) OR
(P_HIRAM_N AND NOT P_CHAREN_N AND P_A15 AND P_A14 AND NOT P_A13 AND P_A12 AND NOT P_AEC_N AND P_RW_N AND NOT P_EXROM_N AND NOT P_GAME_N) OR
(P_VA14_N AND P_AEC_N AND P_GAME_N AND NOT P_VA13 AND P_VA12) OR
(P_VA14_N AND P_AEC_N AND NOT P_EXROM_N AND NOT P_GAME_N AND NOT P_VA13 AND P_VA12)
);
KERNAL_N_S <= NOT (
(P_HIRAM_N AND P_A15 AND P_A14 AND P_A13 AND NOT P_AEC_N AND P_RW_N AND P_GAME_N) OR
(P_HIRAM_N AND P_A15 AND P_A14 AND P_A13 AND NOT P_AEC_N AND P_RW_N AND NOT P_EXROM_N AND NOT P_GAME_N)
);
BASIC_N_S <= NOT (
(P_LORAM_N AND P_HIRAM_N AND P_A15 AND NOT P_A14 AND P_A13 AND NOT P_AEC_N AND P_RW_N AND P_GAME_N)
);
CASRAM_N_S <= (
(P_LORAM_N AND P_HIRAM_N AND P_A15 AND NOT P_A14 AND P_A13 AND NOT P_AEC_N AND P_RW_N AND P_GAME_N) OR
(P_HIRAM_N AND P_A15 AND P_A14 AND P_A13 AND NOT P_AEC_N AND P_RW_N AND P_GAME_N) OR
(P_HIRAM_N AND P_A15 AND P_A14 AND P_A13 AND NOT P_AEC_N AND P_RW_N AND NOT P_EXROM_N AND NOT P_GAME_N) OR
(P_HIRAM_N AND NOT P_CHAREN_N AND P_A15 AND P_A14 AND NOT P_A13 AND P_A12 AND NOT P_AEC_N AND P_RW_N AND P_GAME_N) OR
(P_LORAM_N AND NOT P_CHAREN_N AND P_A15 AND P_A14 AND NOT P_A13 AND P_A12 AND NOT P_AEC_N AND P_RW_N AND P_GAME_N) OR
(P_HIRAM_N AND NOT P_CHAREN_N AND P_A15 AND P_A14 AND NOT P_A13 AND P_A12 AND NOT P_AEC_N AND P_RW_N AND NOT P_EXROM_N AND NOT P_GAME_N) OR
(P_VA14_N AND P_AEC_N AND P_GAME_N AND NOT P_VA13 AND P_VA12) OR
(P_VA14_N AND P_AEC_N AND NOT P_EXROM_N AND NOT P_GAME_N AND NOT P_VA13 AND P_VA12) OR
(P_HIRAM_N AND P_CHAREN_N AND P_A15 AND P_A14 AND NOT P_A13 AND P_A12 AND P_BA AND NOT P_AEC_N AND P_RW_N AND P_GAME_N) OR
(P_HIRAM_N AND P_CHAREN_N AND P_A15 AND P_A14 AND NOT P_A13 AND P_A12 AND NOT P_AEC_N AND NOT P_RW_N AND P_GAME_N) OR
(P_LORAM_N AND P_CHAREN_N AND P_A15 AND P_A14 AND NOT P_A13 AND P_A12 AND P_BA AND NOT P_AEC_N AND P_RW_N AND P_GAME_N) OR
(P_LORAM_N AND P_CHAREN_N AND P_A15 AND P_A14 AND NOT P_A13 AND P_A12 AND NOT P_AEC_N AND NOT P_RW_N AND P_GAME_N) OR
(P_HIRAM_N AND P_CHAREN_N AND P_A15 AND P_A14 AND NOT P_A13 AND P_A12 AND P_BA AND NOT P_AEC_N AND P_RW_N AND NOT P_EXROM_N AND NOT P_GAME_N) OR
(P_HIRAM_N AND P_CHAREN_N AND P_A15 AND P_A14 AND NOT P_A13 AND P_A12 AND NOT P_AEC_N AND NOT P_RW_N AND NOT P_EXROM_N AND NOT P_GAME_N) OR
(P_LORAM_N AND P_CHAREN_N AND P_A15 AND P_A14 AND NOT P_A13 AND P_A12 AND P_BA AND NOT P_AEC_N AND P_RW_N AND NOT P_EXROM_N AND NOT P_GAME_N) OR
(P_LORAM_N AND P_CHAREN_N AND P_A15 AND P_A14 AND NOT P_A13 AND P_A12 AND NOT P_AEC_N AND NOT P_RW_N AND NOT P_EXROM_N AND NOT P_GAME_N) OR
(P_A15 AND P_A14 AND NOT P_A13 AND P_A12 AND P_BA AND NOT P_AEC_N AND P_RW_N AND P_EXROM_N AND NOT P_GAME_N) OR
(P_A15 AND P_A14 AND NOT P_A13 AND P_A12 AND NOT P_AEC_N AND NOT P_RW_N AND P_EXROM_N AND NOT P_GAME_N) OR
(P_LORAM_N AND P_HIRAM_N AND P_A15 AND NOT P_A14 AND NOT P_A13 AND NOT P_AEC_N AND P_RW_N AND NOT P_EXROM_N) OR
(P_A15 AND NOT P_A14 AND NOT P_A13 AND NOT P_AEC_N AND P_EXROM_N AND NOT P_GAME_N) OR
(P_HIRAM_N AND P_A15 AND NOT P_A14 AND P_A13 AND NOT P_AEC_N AND P_RW_N AND NOT P_EXROM_N AND NOT P_GAME_N) OR
(P_A15 AND P_A14 AND P_A13 AND NOT P_AEC_N AND P_EXROM_N AND NOT P_GAME_N) OR
(P_AEC_N AND P_EXROM_N AND NOT P_GAME_N AND P_VA13 AND P_VA12) OR
(NOT P_A15 AND NOT P_A14 AND P_A12 AND P_EXROM_N AND NOT P_GAME_N) OR
(NOT P_A15 AND NOT P_A14 AND P_A13 AND P_EXROM_N AND NOT P_GAME_N) OR
(NOT P_A15 AND P_A14 AND P_EXROM_N AND NOT P_GAME_N) OR
(P_A15 AND NOT P_A14 AND P_A13 AND P_EXROM_N AND NOT P_GAME_N) OR
(P_A15 AND P_A14 AND NOT P_A13 AND NOT P_A12 AND P_EXROM_N AND NOT P_GAME_N) OR
(P_CAS_N)
);
P_ROML_N <= ROML_N_S;
P_ROMH_N <= ROMH_N_S;
P_IO_N <= IO_N_S;
P_GRW_N <= GRW_N_S;
P_CHAROM_N <= CHAROM_N_S;
P_KERNAL_N <= KERNAL_N_S;
P_BASIC_N <= BASIC_N_S;
P_CASRAM_N <= CASRAM_N_S;
END rtl;
Ognuno potrà realizzare da solo il proprio PLA a pochi euro ...