電子發燒友網核心提示:本文是電子發燒友網小編從電子發燒友網論壇——FPGA論壇找到的一篇關于Quartus II 9.0版本常見問題集錦。在此跟大家一起分享。本文原文如下:之前已經接觸QUARTUS II比較長的時間了,也遇到過不少問題,有些比較簡單解決后就忘了,現在把能記得起來列在前面幾個。后面的是自己后續遇到的問題的集錦。
QUARTUS II版本:9.0
FPGA型號:EP2C8Q208
配置芯片:EPCS4
FLASH型號 :TE28F320J3
1.多模塊或多進程驅動同一信號
Error (10028): Can‘t resolve multiple constant drivers for net “FLASH_A[7]” at led.v(32)
用Verilog描述電路時,一個信號只能在一個進程中驅動,如果在多個進程中對其驅動的話將產生如上錯誤。解決方法為可以另加一個信號,通過在另一個進程中監視這個信號做出相應的動作。
2.多功能管腳的設置
在用FLASH分配完管腳后編譯出現如下錯誤:
Error: Can’t place multiple pins assigned to pin location Pin_108 (IOC_X34_Y2_N0)
Info: Fitter preparation operations ending: elapsed time is 00:00:00
Error: Can‘t fit design in device
Error: Quartus II Fitter was unsuccessful. 2 errors, 0 warnings
Error: Quartus II Full Compilation was unsuccessful. 4 errors, 56 warnings
原因是不能分配給多功能管腳PIN_108。
這是由于PIN_108是一個多功能管腳,還有一個功能是nCEO,也是默認的功能。如果要用它當普通IO,需要提前設置一下:assignments》device》device and pin options》dual-purpose pins里面把nCEO設置成use as regular i/o就可以了。
3.CLK 連接
SOPC綜合后資源占用LE只有幾百,警告數量數百。
原因一般是CLK的連接有問題。CPU在沒有時鐘的情況下形同虛設,在綜合時被綜合掉,產生大量警告。
Warning: Found 8 output pins without output pin load capacitance assignment
load capacitance和IO輸出結構有關的設置,用來控制波形的上升下降沿的控制,用于阻抗匹配防止產生過沖。低速電路一般不需要考慮。
消除此警告要在assignment》assignment editor》下指定負載電容。如下圖所示:
以下是對此設置的英文介紹:
Specifies the capacitive load, in picofarads (pF), on output pins for each I/O standard. Note: These settings affect FPGA pins only. To specify board trace, termination, and capacitive load parameters for use with Advanced I/O Timing, use the Board Trace Model tab. Capacitive loading is ignored if applied to anything other than an output or bidirectional pin, or if Advanced I/O Timing is enabled.
5.行波時鐘警告
分頻計數作為了另外一個電路的時鐘,這種用法叫做行波時鐘。在FPGA設計中是不推薦的,所以在綜合時會產生警告:
Warning: Found 2 node(s) in clock paths which may be acting as ripple and/or gated clocks -- node(s) analyzed as buffer(s) resulting in clock skew.
關于FPGA時鐘,多說幾句。FPGA設計中一般都會使用一個主時鐘,也就是晶振的時鐘。時序邏輯用到的各種時鐘都是通過這個主時鐘分頻得到的。如果一個時鐘驅動的邏輯門比較多的話,為了增加它的驅動能力就需要將它設置成全局時鐘。多個時鐘在FPGA內部是可以同時工作的,但是使用的時候要注意時序問題。
關于全局時鐘,再多說幾句。23,24,27,28是EP2C8Q208的四個全局時鐘管腳。他們比一般的IO管腳驅動能力更強,通常建議將時鐘信號綁定在這些管腳上,以保證時鐘信號的驅動質量.4個管腳是等效的,可以用不同時鐘同時驅動他們,這樣FPGA內部可以工作在多個時鐘域下,不同電路由不同時鐘來驅動。
6.仿真時存儲器初始化
在使用FPGA內部的RAM時,會有一個初始化文件.mif,給RAM加上初始值或當作ROM用,因此仿真時必須把相應數據導入,首先要把mif文件轉換為.hex文件或.rif文件。
在Quartus II環境下,打開mif文件,點Save As,選擇Hexadecimal(Intel-Format) File(*.hex),或者點擊Export,用Save as type選擇RAM Initialization File (*.rif),也可能在命令行下輸入:
mif2rif
打開ram模塊文件,找到lpm_file或init_file,指向剛剛生成的hex文件或rif文件。
lpm_ram_dp_component.lpm_file = “path”
使用hex文件時,不需要compiler directives,使用rif文件時,需要加入USE_RIF,如下
vlog -work alter_mf altera_mf.v +define+USE_RIF=1
這樣就完成了數據導入。
評論
查看更多