All content and materials on this
site are provided "as is". TI and its respective suppliers and providers of content make no representations about
the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these
materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a
particular purpose, title and non-infringement of any third party intellectual property right. No license, either
express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a
license from a third party, or a license from TI.
There is a race condition in startTDC().AUX_SYSIFTDCREFCLKCTL.REQ is set and we should be waiting for the ACK bit to go high. Instead, the logic waits for it to go low. Since it starts low already and the logic runs on SCLKMF, that bit does not update until 0.5us after the first register write on PG1.1 HW. On FPGA, the ACK bit seems to update before the next instruction executes. That means that the faulty logic then tries to wait for the bit to go low, which it never will. The issue can be reliably reproduced on PG1.1 HW by adding a CPUdelay() between setting the REQ bit and the while loop.
There is a race condition in startTDC().AUX_SYSIFTDCREFCLKCTL.REQ is set and we should be waiting for the ACK bit to go high. Instead, the logic waits for it to go low. Since it starts low already and the logic runs on SCLKMF, that bit does not update until 0.5us after the first register write on PG1.1 HW. On FPGA, the ACK bit seems to update before the next instruction executes. That means that the faulty logic then tries to wait for the bit to go low, which it never will. The issue can be reliably reproduced on PG1.1 HW by adding a CPUdelay() between setting the REQ bit and the while loop.