เมื่อใช้งานการจําลองด้วยซอฟต์แวร์ ModelSim*-Intel FPGA Edition บน IP UniPHY DDR3 ที่มีตัวอย่าง testbench หรือชุดไฟล์ <IP _name>_sim การจําลองอาจสร้างข้อความถอดรหัสประเภท :
หมายเหตุ: ความถี่อินพุตบนอินสแตนซ์ DLL <IP_name>_example_sim.e0.if0.dll0.dll_wys_m.inst ตอนนี้ตรงกันกับความถี่สัญญาณนาฬิกาที่ระบุ
คําเตือน : การละเมิดความถี่ในการป้อนข้อมูลในอินสแตนซ์ DLL <IP_name>_example_sim.e0.if0.dll0.dll_wys_m.inst ระยะเวลาอินพุตที่ระบุคือ 2500 ps แต่ค่าจริงคือ 3750 ps
และการจําลองไม่เคยเสร็จสิ้นการสอบเทียบ
ซึ่งอาจเกิดขึ้นกับการรวมกันของตัวแก้ไขพารามิเตอร์ DDR3 UniPHY ->พารามิเตอร์การตั้งค่า PHY สําหรับ "ความถี่สัญญาณนาฬิกาหน่วยความจํา" และ "ความถี่สัญญาณนาฬิกาอ้างอิง PLL"
เกิดปัญหาการปัดเศษในรหัสแหล่งที่มาของสัญญาณนาฬิกา UniPHY DDR3 IP
การแก้ไขปัญหาสําหรับการทดสอบเบ็นช์ตัวอย่างการออกแบบมีดังนี้ :
Verilog:
ในไฟล์ <IP_name>_example_sim.v สําหรับอินสแตนซ์ pll_ref_clk ของ altera_avalon_clock_source บนโค้ดไลน์
CLOCK_RATE (x) โดยที่ x คือค่าความถี่ที่เปลี่ยนไป x เป็นความถี่ที่ระบุเป็นการตั้งค่า PHY ของ DDR3 megawizard -> "ความถี่สัญญาณนาฬิกาอ้างอิง PLL"
VHDL:
- ในโมเดลย่อยไฟล์/altera_avalon_clock_source.vhd ให้ เปลี่ยน บรรทัด:
ทั่วไป (CLOCK_RATE : จํานวนเต็ม :=10); -- อัตราตั้งต้น 10 MHz (100 ns)
ถึง:
ทั่วไป (CLOCK_RATE : real :=10.0); -- อัตราตั้งต้น 10 MHz (100 ns)
- ในไฟล์ <IP_name>_example.vhd ให้เปลี่ยน:
คอมโพเนนต์ altera_avalon_clock_source คือ
ทั่วไป (
CLOCK_RATE : เป็นบวก := 10
);
พอร์ต (
clk : out std_logic -- clk
);
end component altera_avalon_clock_source;
ถึง:
คอมโพเนนต์ altera_avalon_clock_source คือ
ทั่วไป (
CLOCK_RATE : จริง := 10.0
);
พอร์ต (
clk : out std_logic -- clk
);
end component altera_avalon_clock_source;
- ในไฟล์ <IP_name>_example.vhd ให้เปลี่ยน ความถี่อินพุต x เป็นค่าที่ระบุในการตั้งค่า PHY ของตัวแก้ไขพารามิเตอร์ DDR3 -> "ความถี่สัญญาณนาฬิกาอ้างอิง PLL" ตัวอย่างเช่น หากความถี่อินพุตคือ 100 MHz ให้ใส่ 100 สําหรับค่า x
เปลี่ยน
pll_ref_clk : component altera_avalon_clock_source
แผนที่ทั่วไป (
CLOCK_RATE => x
)
แผนผังพอร์ต (
clk => pll_ref_clk_clk_clk -- clk.clk
);
ถึง:
pll_ref_clk : component altera_avalon_clock_source
แผนที่ทั่วไป (
CLOCK_RATE => "ความถี่นาฬิกาอ้างอิง PLL"
)
แผนผังพอร์ต (
clk => pll_ref_clk_clk_clk -- clk.clk
);
ปัญหานี้แก้ไขได้ด้วยซอฟต์แวร์ Quartus® II เวอร์ชั่น 12.0