เนื่องจากข้อกําหนดสําหรับตารางค้นหา ROM/RAM ที่เติมไว้ล่วงหน้าในทุกเวอร์ชันของส่วนประกอบฮาร์ดแวร์จุดลอยตัว 2 คําสั่งที่กําหนดเอง Nios® II สําหรับรูทสี่เหลี่ยมลอยตัวจะล้มเหลวในการออกแบบ Intel® MAX® 10 FPGA โดยใช้โหมดการกําหนดค่าการเตรียมใช้งาน RAM ล่วงหน้าซึ่งรวมถึง "ภาพบีบอัดคู่" "ภาพที่บีบอัดเดี่ยว"และ "ภาพที่ไม่มีการบีบอัดเดี่ยว"
ในโหมดเหล่านี้ แฟลชไม่ใหญ่พอที่จะรองรับการเริ่มต้น RAM ล่วงหน้า ดังนั้นคําสั่ง sqrt จึงล้มเหลว ซอฟต์แวร์ Quartus® II เวอร์ชั่น 15.1 และก่อนหน้านี้อาจมีข้อผิดพลาดในการคอมไพล์หาก FPCI2 ถูกสร้างอินสแตนซ์และปิดใช้งานการเริ่มต้นหน่วยความจําเนื่องจากตั้งค่าโหมดการกําหนดค่าสําหรับ Intel MAX 10 FPGA หรือเหตุผลอื่น
ข้อผิดพลาด (16031): โหมดการกําหนดค่าภายในปัจจุบันไม่รองรับการเริ่มต้นหน่วยความจําหรือ ROM โหมด Select Internal Configuration กับ ERAM
หากต้องการแก้ไขปัญหานี้ในซอฟต์แวร์ Quartus II เวอร์ชั่น 15.0 และก่อนหน้า ให้ทําตามขั้นตอนเหล่านี้:
- ไปที่ fpoint2_multi_datapath.vhd และ แสดงความคิดเห็น เกี่ยวกับการสร้างอินสแตนซ์ FPSqrt ที่บรรทัดที่ 168 ถึง 174
sqrt: แผนที่พอร์ต FPSqrt (
x => dataa,
r => fsqrts
clk => clk
reset_req => reset_req
areset =>รีเซ็ต
);
- คอมไพล์ การออกแบบของคุณอีกครั้งในซอฟต์แวร์ Quartus II
- ไปที่ altera_nios_custom_instr_floating_point_2.c ที่อยู่ในโฟลเดอร์ HAL ของ bsp ของคุณ เพิ่ม "#undef sqrtf" หลังจากที่มี "altera_nios_custom_instr_floating_point_2.h" รวมอยู่ในรหัส C เพื่อปิดใช้งานการใช้คําสั่งที่กําหนดเอง sqrtf โดยซอฟต์แวร์
รหัส:
#include "altera_nios_custom_instr_floating_point_2.h"
#undef sqrtf
- สร้าง ซอฟต์แวร์และไลบรารีแอปพลิเคชันใหม่ทั้งหมดด้วยการเปลี่ยนแปลงเหล่านี้
หากต้องการแก้ไขปัญหานี้ในซอฟต์แวร์ Quartus II เวอร์ชัน 15.0 และใหม่กว่า ให้ทําตามขั้นตอนนี้:
- ใช้ช่องทําเครื่องหมายเพื่อลบคําสั่งที่กําหนดเอง sqrt จาก FPH2 ใน Platform Designer GUI
ปัญหานี้ได้รับการแก้ไขในซอฟต์แวร์ Quartus II v16.0