In the MAX7000S datasheet, it says the I/O pins are tri-stated and (weakly) pulled-up, to avoid board conflicts, during programming. What should the state of the I/O pins be _before_ programming? I have a sample EPM7128S device here which appears to be pulling them low - but it also fails the blank test, so I think it must have been programmed. How should a brand-new part behave?
There's some internal bit in the MAX7000A and later that says that the device contains a valid configuration. If this bit is not set, the device remains in tristate. In the MAX7000S, this bit is not present, but if the device is blank, it should still stay in slightly-pulled-up-tristate.
Only if the device is not blank (this does _not_ mean that it has a _valid_ configuration), it will go out of tristate and do something.
C:\>quartus_pgm -c "ByteBlasterMV [LPT1]" -m JTAG -- must be one of the following combinations: P, V, B, S, E, L, PVBL, PBL, PVB, PVL, PL, VL where P = Program V = Verify B = Blank-check L = Lock/Security Bit S = Skip/Bypass* E = Examine* (* Cannot be used in combination with other options)
There doesn't appear to be an R option.
I'm using Quartus II Programmer Version 4.1 Build 181 06/29/2004 SJ Web Edition
For MAX® 7000S devices, they are shipped blank but have specific bits set to tri-state all their I/O pins. If the part is erased, it is blank, but the factory default tri-state bit settings are also erased and therefore pins will no longer be tri-stated. To tri-state the blank part again, you need to have the blank POF (programming object file) from a factory shipped blank device that has never been programmed. You can get the blank POF by examining a factory shipped MAX 7000S device using the MAX+PLUS II software (Quartus II does not support examine for MAX 7000S); the examined POF will be blank but will have the tri-state bit settings. Programming a MAX 7000S device with this POF will tri-state the I/Os and blank the design.
MAX 7000AE, MAX 3000A, and MAX 7000B devices differ from MAX 7000S - if the part is blank or erased it will automatically tri-stated the all the I/O pins and does not need tri-state bit settings. If you erase these devices, they will tri-state all I/Os. This is because MAX
7000AE, MAX 3000A, and MAX 7000B remain tri-state until a specific bit is set during ISP called the ISP_DONE bit. It is the last bit to be programmed when programming the device - if that bit is not set, the device remains tri-stated.
All MAX3000A, 7000S, 7000A, 7000B, and MAX II devices are shipped blank from the factory. When a blank device is powered up, all of the I/O pins are tri-stated.
If you erase a MAX 3000A, 7000A, 7000B, or MAX II device it behaves the same as a blank new factory shipped device. The I/O pins of a blank device are tri-stated when powered. However, this is not true for MAX 7000S. A new factory shipped MAX 7000S device will tri-state when powered, but if this device is erased in some manner (Jam, JBC, SVF, etc), then the I/O pins will drive out undetermined values. This is because a new factory shipped MAX 7000S part is blank except for some OE control bits which are set to tri-state the I/O pins. When erased, those OE bits are cleared and the I/O pins drive out. The only way to get the I/O pins to tri-state again is if the customer examined and saved the .pof from a new factory shipped MAX 7000S device. Program a MAX 7000S with that .pof and it will behave the same as the new factory shipped part, that is it will be blank with tri-stated I/Os.
For the benefit of others, those expired links are:
Perhaps the most useful link for me, since I don't have the old MAX+PLUS II software, and can't use "Examine" to create a POF file from a fresh factory-shipped device, is this link which explains how to blank a MAX7000S device using the JAM player:
OK, having gone round the loop one last time (this blank/erased business is very confusing!) I believe that reading a blank POF is (quote) "The only way to get the I/O pins to tri-state again" - so I'm hosed.