I did a new version of the Glue chip with the outputs defined as active low. Upon doing this, the ROM was always selected regardless of the IO page ($FE00) being active and/or any of the I/O selects being active. Basically, I couldn't find any combination of logic statements that would work when defining ROM as active low. I then took a different approach... as, ideally, I wanted to have the unused bytes of the IO Page accessible if I wasn't using any of the five IO selects (this wasn't possible using the previous 74xx chips). So I changed the (ROM) logic statement to use the 5 IO selects as part of the statement. This actually works, which is nice... I gained back 3x32 bytes in the ROM which I can use for additional code or data.
Now that I have this new glue configuration working, I did another measurement on operating current and it's identical, i.e., 36ma. The initial attempt did result is a much smaller JED file. The first working file is roughly 3.29KB. The first attempt for the second version was around 1.68KB but had the anomaly of never deselecting the ROM for IO accesses. The new working version is larger however at 4.03KB.
Here's the current PLD file:
Code:
Name SBC-Glue3 ;
PartNo 01 ;
Date 10/4/2017 ;
Revision 01 ;
Designer K. Maier ;
Company Analogue Technologies ;
Assembly SBC-02 ;
Location U4 ;
Device g22v10 ;
/* *************** INPUT PINS *********************/
PIN 1 = CLK ; /* */
PIN 2 = A15 ; /* */
PIN 3 = A14 ; /* */
PIN 4 = A13 ; /* */
PIN 5 = A12 ; /* */
PIN 6 = A11 ; /* */
PIN 7 = A10 ; /* */
PIN 8 = A9 ; /* */
PIN 9 = A8 ; /* */
PIN 10 = A7 ; /* */
PIN 11 = A6 ; /* */
PIN 13 = A5 ; /* */
PIN 23 = RW ; /* */
/* *************** OUTPUT PINS *********************/
PIN 14 = !IO1 ; /* */
PIN 15 = !IO2 ; /* */
PIN 16 = !IO3 ; /* */
PIN 17 = !IO4 ; /* */
PIN 18 = !IO5 ; /* */
PIN 19 = !ROM ; /* */
PIN 20 = !RAM ; /* */
PIN 21 = !MWR ; /* */
PIN 22 = !MRD ; /* */
RAM = !A15;
ROM = A15 & !(IO1 $ IO2 $ IO3 $ IO4 $ IO5);
IO1 = (A15 & A14 & A13 & A12 & A11 & A10 & A9 & !A8 & !A7 & !A6 & !A5);
IO2 = (A15 & A14 & A13 & A12 & A11 & A10 & A9 & !A8 & !A7 & !A6 & A5);
IO3 = (A15 & A14 & A13 & A12 & A11 & A10 & A9 & !A8 & !A7 & A6 & !A5);
IO4 = (A15 & A14 & A13 & A12 & A11 & A10 & A9 & !A8 & !A7 & A6 & A5);
IO5 = (A15 & A14 & A13 & A12 & A11 & A10 & A9 & !A8 & A7 & !A6 & !A5);
MWR = (CLK & !RW);
MRD = (CLK & RW);
I would also mention that WinCUPL is buggy... at one point, every compile showed errors... I had to kill it and relaunch it, then is started compiling without errors. Also, regardless of how I structure the first set of parameters (Name, Part No, etc.) these always show as warnings as being incorrect, yet I used the WinCUPL new project wizard and simply filled in the data. In any case, the ATF22V10 is working as I want it to. It does draw more current then the rest of the system, but I guess that's just the way these devices are. Unless someone has some other advice on getting the current consumption down, I think I have a functional glue chip to use going forward. Of course, thanks to all who replied!