Cheap sometimes makes more work
Especially the popular retailer AliExpress AliExpress sometimes has problems with the Xilinx XC95144XL CPLD components purchased there. After assembling all components, the CPLD is flashed first. Corresponding detailed instructions can be found on the page of SKOE, the developer of the EF3 module, among others.
In the best case the flashing of the CPLD with the tool easp ends with the message:
<<< All TDO outputs matched to the expected values! >>>
This is actually the most exciting moment, as most problems happen here. Often it also comes to the message
<<< 119872 TDO outputs didn’t match to the expected values… >>>
Whereby the number already gives a valuable hint. Flashing generally did not work with the number “119872”. This could of course indicate a defective CPLD, but since the Xilinx are actually extremely difficult to destroy, it is highly unlikely, though of course not impossible, that the chip is defective.
It is much more likely that either the jumpers are not set correctly, or the card is not inserted in the C64, or the C64 is not switched on. Because the power supply for flashing is done by the Commodore C64. Without the necessary power supply, the chip will not be programmed.
But if the result is any number, which in most cases is in the range of 65,00 to 80,000, there are basically only two possibilities. The first one is due to not optimally executed solder joints. Unfortunately, it doesn’t even have to be the CPLD itself, but also the flash and RAM memory, as well as the two resistor networks near the contact strip. First you should check if two contacts have a solder bridge. It is best to go through all the contacts of the suspected chips with a magnifying glass.
If nothing is found there, first solder the CPLD again with a lot of flux (a good flux is required here, such as from Chip Quick or Amtech). If this does not bring any improvement, it could also be due to the solder joints of the flash memory. But in rare cases it can also be a solder joint on the RAM chip that can cause problems.
If the CPLD came from AliExpress or eBay, however, there may be a completely different problem. It is important to know that the sometimes unbelievably low prices are not only due to the Asian market. Rather, overproduction is often bought in order to sell it on to individual customers later.
And this is the crux of the matter, because programmable chips, such as the CPLD here, are often programmed according to the customer’s wishes during production. And with CPLDs, among other things, various protection mechanisms can be set during programming. One of them is the write protection. This is used so that such a chip used in an end customer device is not accidentally overwritten by the end customer during a firmware update.
And this is the crux of the matter, because programmable chips are often used. Unfortunately, you can’t see this from the outside of such a chip. And if you don’t have a corresponding JTAG programming adapter for this chip series, you also have no possibility to determine this from the outside. However, an attempt to flash such a chip with normal board means will result in exactly the error described above. The message appears:
<<< 76233 TDO outputs didn’t match to the expected values… >>>
The number is not identical for each chip.
If you have, for example, the ISE Webpack in version 13 SP1, which can be downloaded for free from the Xilinx homepage, and a corresponding JTAG programmer, you can fix the problem quite easily by simply removing the write protection and deleting the chip.