IP UniPHY ไม่ทําการสอบเทียบเสร็จสมบูรณ์หลังจากตรวจสอบและถอดรหัสglobal_reset_nหรือสัญญาณsoft_reset_nต่ําสําหรับ IP UniPHY ไม่สามารถเชื่อมต่อชุดเครื่องมือดีบัก EMIF กับอินเทอร์เฟซนั้นได้ (เชื่อมโยงโครงการไปยังอุปกรณ์) เงื่อนไขนี้จะไม่เปลี่ยนแม้ว่าจะมีการรีเซ็ตหลายรายการในภายหลัง สามารถกู้คืนเงื่อนไขนี้ได้โดยการกําหนดค่าอุปกรณ์ใหม่เท่านั้น
อาการเหล่านี้อาจเกิดจากโครงสร้างรีเซ็ตภายในของ IP EMIF UniPHY การตรวจสอบการรีเซ็ตแบบอะซิงโครนัสกับตรรกะที่ขับเคลื่อนบัสแอดเดรสของ M20K RAM อาจทําให้เกิดการเผยแพร่ลอจิกแบบอสมวาร ซึ่งอาจส่งผลกระทบต่อฟังก์ชันการทํางานของตัวถอดรหัสแถว/คอลัมน์ที่อยู่ M20K โดยการเปิดบรรทัดคํามากกว่าหนึ่งบรรทัดซึ่งอาจส่งผลให้มีการแชร์ประจุระหว่างเซลล์บิตทําให้เกิดความเสียหายต่อเนื้อหาของ M20K โปรดทราบว่าความน่าจะเป็นของความเสียหาย M20K เนื่องจากการรับประกันการรีเซ็ตแบบอสมวารต่ํามาก
การรีเซ็ต PLL ในระหว่างการดําเนินการอ่านหรือเขียน M20k อาจก่อให้เกิดความเสียหายของ RAM/ROM แบบฝังได้ เนื่องจากการสูญเสียการล็อก PLL อาจส่งผลให้เกิดปัญหานาฬิการะหว่างการรีเซ็ต และอาจส่งผลกระทบต่อการทํางานของตัวถอดรหัสแถว/คอลัมน์ที่อยู่ M20K
ความเสียหายนี้มีผลต่อ IP UniPHY เนื่องจากมีโปรเซสเซอร์ Nios ® II ที่ใช้ในการปรับเทียบ และรหัสโปรแกรมของโปรเซสเซอร์จะถูกจัดเก็บไว้ใน M20K RAM หากความเสียหายเกิดขึ้นภายในหน่วยความจําโปรแกรม Nios ® II สิ่งนี้อาจทําให้ตัวจัดลําดับ Nios ® II ถูกล็อกส่งผลให้มีการสอบเทียบไม่สมบูรณ์ การกู้คืนจากสถานการณ์นี้ทําได้โดยการตั้งโปรแกรมใหม่อุปกรณ์เท่านั้น เนื่องจากเนื้อหา M20K จะถูกโหลดในระหว่างการตั้งโปรแกรมอุปกรณ์เท่านั้น
สิ่งสําคัญคือต้องทราบว่าข้อผิดพลาด EMIF ทั่วไปที่ระบุไว้ด้านล่าง ไม่จําเป็นต้องหมายความว่า M20K RAM เสียหายหรือตัวจัดลําดับ Nios ® II ถูกล็อคไว้
- หากการสอบเทียบไม่ผ่าน (เช่น การสอบเทียบล้มเหลวเสมอ)
- หากส่วนต่างของการสอบเทียบมีความบางมาก และล้มเหลวในการสอบเทียบเป็นครั้งคราว
- หากการออกแบบผ่านการสอบเทียบ และพบข้อผิดพลาดของข้อมูลเป็นครั้งคราวขณะใช้งานการออกแบบ
- หากการออกแบบบอกว่าผ่านการสอบเทียบแล้ว แต่การออกแบบไม่ทํางานตามที่คาดไว้
UniPHY IP Core มีอินพุตการรีเซ็ตสองอินพุต
Global_reset_n: เชื่อมต่อกับทุกอย่างใน UniPHY IP รวมถึง PLL
Soft_reset_n: เชื่อมต่อกับทุกอย่างใน UniPHY IP ยกเว้น PLL
1. Alteraขอแนะนําอย่างยิ่งให้ใช้เฉพาะsoft_reset_nตลอดเวลา ใช้global_reset_nสําหรับการรีเซ็ตเปิดเครื่องเท่านั้น
หากต้องการรีเซ็ต PLL ขณะเปิดเครื่อง ให้ใช้ลําดับต่อไปนี้
a. assert Global_reset_n (รีเซ็ต PLL )
B เพิ่มพลังและกําหนดค่าชิปใหม่
ค. de-assert Global_reset_n
2. การแก้ไขจะเปลี่ยนคอนโทรลเลอร์รีเซ็ตภายในและโครงสร้างการรีเซ็ตของคอร์ UNIPHY IP เพื่อใช้การรีเซ็ตซิงโครนัส รวมถึงการลบพอร์ต M20K clock_enableล่วงหน้าในระหว่างเงื่อนไขการรีเซ็ต ซึ่งจะช่วยป้องกันไม่ให้การเปลี่ยนแปลงใด ๆ ที่ตอบสนองต่อการเผยแพร่ไปยังตัวถอดรหัสแอดเดรส M20K
การแก้ไขนี้จะให้ไว้เป็นส่วนหนึ่งของ 13.0dp1, 13.0sp1 และ Quartus เวอร์ชันที่ตามมาทั้งหมด ผู้ใช้จะต้องสร้าง UNipHY IP ใหม่และทําการคอมไพล์การออกแบบใหม่ Alteraแนะนําให้เปลี่ยนไปใช้ Quartus เวอร์ชันใดเวอร์ชันหนึ่งเหล่านี้
หากจําเป็นต้องมีการแก้ไขเพิ่มเติมอย่างเร่งด่วน หรือจําเป็นต้องมีการแก้ไขสําหรับ Quartus เวอร์ชัน 12.1sp1 คุณสามารถอัปเดตคอร์ UniPHY IP ได้ด้วยตนเอง ต้องปฏิบัติตามขั้นตอนต่อไปนี้:
ค้นหาไฟล์ต้นฉบับสําหรับ ip Altera UniPHY ภายในการออกแบบของคุณ
มี 5 ไฟล์ที่จําเป็นต้องแก้ไข
altera_reset_synchronizer.v
altera_reset_controller.v
altera_mem_if_sequencer_mem_no_ifdef_params.sv
_if0_p0_reset.v
_if0_s0.v
ขั้น ตอน
1. ดาวน์โหลด altera-reset-synchronizer.v จากลิงก์ต่อไปนี้และวางไว้ในไดเรกทอรีเดียวกันกับไฟล์ต้นฉบับ UniPHY IP: Altera_reset_synchronizer.v
2. ดาวน์โหลด altera-reset-controller.v จากลิงก์ต่อไปนี้และวางไว้ในไดเรกทอรีเดียวกันกับไฟล์ต้นฉบับ UniPHY IP: Altera_reset_controller.v
3. In altera_mem_if_sequencer_mem_no_ifdef_params.sv' – ตรวจสอบให้แน่ใจว่าอินพุต 's1_clken' เชื่อมต่อกับอินพุต 'clocken0' ของ 'the_altsyncram'
4. อินสแตนซ์_if0_p0_reset.v – ปรับเปลี่ยนคําสั่ง defparam สําหรับอินสแตนซ์ "dut_if0_p0_reset_sync" เพื่อให้ตั้งค่าพารามิเตอร์ "RESET_SYNC_STAGES" และ "NUM_RESET_OUTPUT" ตามไฟล์ตัวอย่างที่แนบมา (dut_if0_p0_reset.v) (ห้ามดาวน์โหลดไฟล์ตัวอย่างในไดเรกทอรีไฟล์ต้นฉบับ IP UniPHY)
dut-if0-p0-reset.v (ไฟล์ตัวอย่างสําหรับ
5. ใน _if0_s0.v
(ห้ามดาวน์โหลดไฟล์ตัวอย่าง dut_if0_s0.v ในไดเรกทอรีไฟล์ต้นฉบับ UNiPHY IP)
dut-if0-s0.v (ไฟล์ตัวอย่างสําหรับ _if0_s0.v )
– เพิ่มพอร์ตต่อไปนี้ไปยังระดับบนสุด:
early_rst_controller_reset_out_resetสายไฟ
- ต่อพอร์ตเอาต์พุต "m20k_gate" บนโมดูล "rst_controller" ไปยังโมดูลอินพุต 's1_clken' ของโมดูล 'sequencer_mem' เนื่องจากเอาต์พุต M20k_gate อยู่ในระดับต่ํา คุณจําเป็นต้องสลับเอาต์พุตดังนี้:
.s1_clken (~early_rst_controller_reset_out_reset), // บนsequencer_mem บรรทัดที่ 785 ของไฟล์ตัวอย่างที่แนบมา (dut_if0_s0.v)
.m20k_gate (early_rst_controller_reset_out_reset), // บนrst_controller บรรทัดที่ 2572 ของไฟล์ตัวอย่างที่แนบมา
6. เมื่อมีการเปลี่ยนแปลงเหล่านี้แล้ว การออกแบบของคุณจะต้องถูกคอมไพล์ใหม่