so, it's time to finalize an old project that I have in my head, it's a matrix keyboard controller with a classic debounce-circuit
and row-col decoder with works with a keyboard recycled from a laptop.
it works in a similar way to the following
it has more columns and rows lines, and it currently uses pull-up (two SIL packs of 10K each) instead of pulldown.
Once designed the PCB, I was ready to send the file to a service but surfing on internet I found this warning message by Xilinx:
Avoid pull-down resistors. Always use external pull-up resistors if external termination is required. This is because the CPLD, which includes some I/O driving circuits beyond the input and output buffers, may have contention with external pull-down resistors, and, consequently, the I/O will not switch as expected.
and elsewhere they recommend:
Avoid pull-down resistors on pins. All Xilinx CPLDs include additional circuitry on an I/O pin beyond just the I/O buffer. This includes ESD as well as circuits that manage power up behavior. For example:
XC9500 has High-Z during power on
XC9500XL/XV has High-Z during power on, then a keeper latch
XPLA3 has High-Z during power on, then a keeper “half latch”
CoolRunner-II has High-Z during power on, then a keeper latch
Pull-down resistors “fight” the internal pin electronics, which may misbehave due to the external pull-down. For the most predictable behavior, avoid pin pull-down resistors.
Thus, mumble, it seems to me that manufacturers's warning is referred to pull-downs which might conflict with *external* pull-ups.
Which is NOT my case, since the above circuit uses pull-up just to force a stable known state when buttons are opened.
Button Opened -> "0"
Button Closed -> "1"
Pull-up will have the negative logic
Button Opened -> "1"
Button Closed -> "0"
From the point of view of the CPLD logic. It's not tricky to modify the VHDL code, and even the PCB is simple to be modified. I just wonder if I had better modify it or not.
I am 90% sure I don't need to turn it into pulldown, but in my head some doubts about the warning
like:
-1- what would happen if I disregard the manufacturers' warning?
-2- and what if I use an extremely weak pull-down?
oh, well
edit:
ups, I am using a XC9572XL PC84, the I/O core is powered at 3.3V.