คุณจะเห็นลักษณะการทํางานนี้ใน Cyclone® V และ Stratix® V เมื่อมีการกําหนดเงื่อนไขต่อไปนี้ทั้งหมด
- เปิดใช้งานคุณสมบัติการขัดถูภายในแล้ว
- มีการใช้เนื้อหาเดียวกันของการลงทะเบียนการใส่ข้อบกพร่อง JTAG สําหรับทุกEDERROR_INJECTคําสั่ง JTAG
เมื่อเปลี่ยนข้อมูลข้อผิดพลาดลงในการลงทะเบียนการใส่ข้อผิดพลาด JTAG โดยใช้คําสั่ง EDERROR_INJECT JTAG บิตการอ่านของเฟรมแรกจะถูกแก้ไข ตรวจพบข้อผิดพลาด CRC และพิน CRC_ERROR ส่งสัญญาณชีพจร
แต่ข้อผิดพลาดนี้เป็นข้อผิดพลาดปลอมและการดําเนินการแก้ไขเฉพาะบิตการอ่านจากเฟรมแรก ไม่ใช่เนื้อหาของเฟรมแรกที่เก็บไว้ใน RAM การกําหนดค่า (CRAM)
หลังจากการตรวจจับข้อผิดพลาด CRC ครั้งแรก หากมีการเปิดใช้งานคุณสมบัติการขัดถูภายใน เนื้อหาของเฟรมแรกใน CRAM จะถูกแก้ไขตามข้อผิดพลาดปลอม ส่งผลให้เนื้อหาของเฟรมแรกที่แก้ไขนั้นตรงกับเนื้อหาของการลงทะเบียนการใส่ความผิดพลาด ดังนั้น จะไม่มีการตรวจจับข้อผิดพลาด CRC และพิน CRC_ERRORไม่สลับไปที่ระดับสูงอีกต่อไป
แม้ว่าคําสั่ง EDERROR_INJECT JTAG จะดําเนินการอีกครั้ง ตราบเท่าที่ยังใช้คอนเทนต์เดียวกันของการลงทะเบียนการใส่ข้อผิดพลาด JTAG จะไม่มีการตรวจจับข้อผิดพลาด และพิน CRC_ERROR จะไม่เปิดปิดอีกครั้ง
หากต้องการสลับพินCRC_ERRORอีกครั้ง คุณสามารถส่งเนื้อหาที่แตกต่างของการลงทะเบียนการใส่ข้อบกพร่อง JTAG แต่ยิ่งไปกว่านั้นคือการปรับเปลี่ยนเนื้อหาของเฟรมแรกใน CRAM เพื่อหลีกเลี่ยงการแก้ไขเพิ่มเติม ขอแนะนําให้ส่งศูนย์ทั้งหมดไปยังการลงทะเบียนการใส่ความผิดพลาด JTAG เพื่อให้เนื้อหาของเฟรมแรกใน CRAM กลับมาทํางานอีกครั้ง
เมื่อคุณใช้ไฟล์ .jam ตัวอย่างใน AN 539: ทดสอบวิธีการตรวจหาและกู้คืนข้อผิดพลาดโดยใช้ CRC ในอุปกรณ์ Intel® FPGA คุณจะเห็น BOOLEAN in[46] = $040600004000; ในสคริปต์ ตัวอย่างไฟล์ .jam จะส่ง $040600004000 ไปยังการลงทะเบียนการใส่ข้อบกพร่อง JTAG
เมื่อคุณส่งศูนย์ทั้งหมดไปยังการลงทะเบียนการใส่ข้อบกพร่อง JTAG ให้ใช้ BOOLEAN ใน[46] = $000000000000;