modelsim與Quartus版本介紹:
筆者所用modelsim與Quartus是從Altera官網下載的ModelSim-Altera 10.1d (Quartus II 13.1)版本,Quartus調用modelsim仿真時,版本匹配。
但筆者更喜歡選擇分開使用這兩個軟件。即在modelsim裏面重新建工程,寫測試文件,添加Quartus源文件來仿真Quartua工程。基於這個原因,本人的問題解決辦法不同於網絡上通用解決方案,故寫出來提醒自己,也方便大家收錄。
案例一:
新建一個modelsim工程後,將所需要的源文件(包括IP核文件)添加至工程,
單擊Compile——Compile_All,
發現編譯無誤
單擊Simulate——Start_simulation,進行工程載入
出現找不到IP核單元的錯誤提示,注意此時的IP核是pll鎖相環
錯誤解決辦法:
選擇Libraries——Add,添加庫文件
庫文件所在位置:modelsim-ase——aletra——Verilog(根據自己使用的語言去選擇)——altera_mf || cycloneive(根據自己使用的板子去選擇)
案例二:
基本步驟同案例一:
出現找不到IP核單元的錯誤提示,注意此時的IP核是PLL鎖相環,片內RAM,以及大Boss:DDR
添加庫文件後,PLL鎖相環,片內RAM錯誤提示均已消失,但DDR出現新的錯誤提示
錯誤原因解釋:
接口模塊外部的時序環境較爲複雜,牽扯到同步時鐘域與異步時鐘域,對於初學者,建議先不要在modelsim中對其進行仿真,直接用板子驗證其正確與否。需要具備熟悉多個時鐘域,各種輸入的輸出信號延時參數等一些知識的能力時,再選擇在modelsim進行仿真。
同步、異步時鐘域:
同步時鐘域,電路中由同一個時鐘信號控制的區域。、如果兩個時鐘域時鐘的頻率和頻率、相位和相位之間是相關的,我們就稱這兩個時鐘域是同步時鐘域。
異步時鐘域容易出現的問題:
例如:從A時鐘域出來的信號A直接進入B時鐘域,從圖可以看出,如果A信號在B時鐘的上升沿發生變化,便會出現不定態。