ID บทความ: 000083603 ประเภทข้อมูล: การแก้ไขปัญหา การตรวจสอบครั้งล่าสุด: 01/08/2013

ทําไมการตรวจสอบการรีเซ็ตอาจทําให้เกิดการล็อกตัวจัดลําดับ UniPHY NIOS ในระดับต่ําส่งผลให้มีการสอบเทียบที่ไม่สมบูรณ์

สิ่งแวดล้อม

BUILT IN - ARTICLE INTRO SECOND COMPONENT
คำอธิบาย

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. เมื่อมีการเปลี่ยนแปลงเหล่านี้แล้ว การออกแบบของคุณจะต้องถูกคอมไพล์ใหม่

 

ผลิตภัณฑ์ที่เกี่ยวข้อง

บทความนี้จะนำไปใช้กับ 6 ผลิตภัณฑ์

Arria® V GZ FPGA
Stratix® IV GX FPGA
Arria® II GX FPGA
Stratix® V GX FPGA
Cyclone® V GX FPGA
Arria® V GX FPGA

เนื้อหาในหน้านี้เป็นการผสมผสานระหว่างการแปลเนื้อหาต้นฉบับภาษาอังกฤษโดยมนุษย์และคอมพิวเตอร์ เนื้อหานี้จัดทำขึ้นเพื่อความสะดวกของคุณและเพื่อเป็นข้อมูลทั่วไปเท่านั้นและไม่ควรอ้างอิงว่าสมบูรณ์หรือถูกต้อง หากมีความขัดแย้งใด ๆ ระหว่างเวอร์ชันภาษาอังกฤษของหน้านี้กับคำแปล เวอร์ชันภาษาอังกฤษจะมีผลเหนือกว่าและควบคุม ดูเวอร์ชันภาษาอังกฤษของหน้านี้