Dans la doc de WinCupl, il est indiqué qu'il faut utiliser l'extension .D pour utiliser une bascule sur une variable de sortie.
C'est sur que ça manque d'exemples sur le Net pour arriver à se faire une idée précise du code à écrire.
Chez Atmel il y a aussi un équivalent :
ATF22V10B (
eBay)
Edit: Un
ATF16V8B (
eBay) devrait même suffire :
- PaginationEPROM-Forum.png (64.77 Kio) Consulté 5418 fois
Reste plus qu'à écrire le script CUPL...
Edit 2: Voici le script :
Code : Tout sélectionner
Name EEPROM-Paging ;
PartNo 00 ;
Date 11/06/2017 ;
Revision 01 ;
Designer Silou78 ;
Company Futura ;
Assembly None ;
Location None ;
Device g16v8a ;
/* *************** INPUT PINS ***********************************************/
PIN 1 = cpu_clk ; /* CPU Clock */
PIN [2..6] = [d0..4] ; /* CPU Data Bus */
PIN 7 = !memrw ; /* Memory Read/Write (write active low) */
PIN 8 = a15 ; /* CPU Address Bus */
PIN 9 = reset ; /* System Reset */
PIN 11 = !oe ; /* Output Enable (active low) */
/* *************** OUTPUT PINS **********************************************/
PIN [12..16] = [ra15..19] ; /* ROM Address Bus */
PIN 17 = !rom_ce ; /* ROM Chip Enable (active low) */
PIN 18 = !rom_oe ; /* ROM Output Enable (active low) */
PIN 19 = select_page ; /* ROM Page Selection Mode */
/* **** Declarations and Intermediate Variable Definitions ******************/
select_rom = a15 & !memrw ;
/* **** Logic Equations *****************************************************/
select_page = a15 & memrw ;
/* Principe de la bascule D pour memoriser le numero de page ROM : */
/* Quand la selection de page n'est pas activee (select_page = niveau bas), */
/* alors la sortie [ra15..19] conserve son etat precedent (num. page ROM). */
ra15.D = d0 & select_page # ra15 & !select_page ;
ra16.D = d1 & select_page # ra16 & !select_page ;
ra17.D = d2 & select_page # ra17 & !select_page ;
ra18.D = d3 & select_page # ra18 & !select_page ;
ra19.D = d4 & select_page # ra19 & !select_page ;
rom_ce = a15 ;
rom_oe = select_rom ;
Et le résultat de la simulation :
- PaginationEPROM-ResSimu.png (19.05 Kio) Consulté 5418 fois
Ca semble pas mal fonctionner du tout !
Après il faudra voir sur quelle machine tu veux implémenter ça, par rapport aux signaux (actif haut, bas ?) comme par exemple le Read/Write ?
Le Chip Select des ROM d'origine ont-elles un câblage spécifique par rapport au RESET (qu'il faudrait reproduire dans la GAL - actuellement l'entrée RST n'est pas utilisée) ?
La rapidité de commutation de l'Output Enable (OE) de la ROM via la GAL est-elle suffisante afin d'éviter de se retrouver avec 2 composants (ROM et CPU par exemple) qui écrivent sur le bus de données en même temps ?