以下是網(wǎng)上找到的一些關(guān)于FPGA的EDA工具常見報(bào)錯(cuò)分析:
在用verilog編程時(shí)出現(xiàn)錯(cuò)誤:“Can‘’t resolve multiple constant drivers for net 。..。”說明同一信號(hào)不能在不同 的進(jìn)程中賦值,這是代碼可綜合方面的要求。
在用verilog編寫代碼的時(shí)候出現(xiàn)錯(cuò)誤提示:“mixed single- and double-edge expressions are not supported”:在敏感驅(qū)動(dòng)信號(hào)中,不能既有單邊沿的驅(qū)動(dòng)又有雙邊沿的驅(qū)動(dòng),如always@(posedge Clk50Mhz or negedge RstN or StartFlag),即只能同意用一種,不能混合。
當(dāng)編譯出現(xiàn)如下錯(cuò)誤時(shí): Error: Clock input port inclk[0] of PLL “PLL:inst1|altpll:altpll_component|pll” must be driven by a non-inverted input clock pin.是因?yàn)閜ll的輸入需要直接和時(shí)鐘相連接,在頂層文件中連接??纯词欠裣噙B了,或者說是名稱的大小寫是否寫對了。
在編譯niosii時(shí)出現(xiàn)如下兩個(gè)錯(cuò)誤,同時(shí)出現(xiàn)的:
/cygdrive/c/altera/90/nios2eds/components/altera_hal/build/system_rules.mk /components/altera_hal/build/gnu_rules.mk: No such file or directory hello_world line 120 1300086018362 2
已經(jīng)如下錯(cuò)誤:make[1]:/cygdrive/c/altera/90/nios2eds/components/altera_hal/build/common.mk fork: Resource temporarily unavailable
因?yàn)樵趙in7下的權(quán)限問題。具體解決方法參考的網(wǎng)上的:
Under your Quartus II folder, go to bin-》cygwin-》bin folder, select the following files in the list below and then right-click and choose ProperTIes. Under the CompaTIbility tab, check “Run this program in compaTIbility mode for:” and choose “Windows XP (Service Pack 2)”。 Check “Run this program as an administrator”, as well.
Here is the list of files that you can select to change their compaTIbility mode under the Quartus II-》bin-》cygwin-》bin folder:
1. Make.exe
2. Sh.exe
3. Echo.exe
4. Cygstart.exe
5. MakeInfo.exe
6. Perl.exe
7.Collect2.exe(undernios2eds\bin\nios2-gnutools\H-i686-pc-cygwin\libexec\gcc\nios2-elf\3.4.6)
8. Nios2-elf-g++.exe (under nios2eds\bin\nios2-gnutools\ H-i686-pc-cygwin\bin)
在英文網(wǎng)上查到的,這幾個(gè)不同的exe文件在不同的bin文件夾之間,依次右擊改掉屬性,把允許管理員使用權(quán)限前面打上勾即可。
5.如果run Niosii時(shí)經(jīng)常出現(xiàn)到2%后N久也不動(dòng),也不報(bào)錯(cuò),甚至進(jìn)度條也在滾,當(dāng)然沒有前進(jìn)了。這時(shí)隨便你等多久,他就呆在那里,很煩。后面發(fā)現(xiàn)是殺毒軟件的作用,我只有用360安全衛(wèi)士,而是關(guān)掉了它15分鐘,在此期間,run就ok了,估計(jì)其他的殺毒軟件更猛,所以大家在run的時(shí)候最好關(guān)上殺毒軟件。
6.如果出現(xiàn)錯(cuò)誤提示:There are no Nios II CPUs with debug modules available which match the values specified. Please check that your PLD is correctly configured, downloading a new SOF file if necessary.
則在nios IDE下,tools-》Flash Programmer 選項(xiàng)中的下圖打勾即可(條形框要下拉)。
7.在編譯niosii時(shí)如果出現(xiàn)了報(bào)錯(cuò)make: *** [system_description/。./obj/system.h-t] Error 1。網(wǎng)上的一些解法:1.如果系統(tǒng)跑了uc/os系統(tǒng),則必須加入timer,如果沒有跑系統(tǒng)可以不加,但是我沒有跑系統(tǒng),并且我加了個(gè)timer試了下也不行。2.還有一種說法是右擊工程名在屬性欄中把ram選項(xiàng)改為on-chip momery,但是我不知道他說的哪個(gè),反正沒有找到這個(gè)選項(xiàng)的地方。3.有人說是軟件或者操作系統(tǒng)問題,建議重裝軟件或系統(tǒng),可是今天還能用,估計(jì)不是,重啟了下軟件,未果。4.后面的google中搜了下,網(wǎng)上人說在構(gòu)建niosiicpu時(shí),把設(shè)置頁面的MPU(內(nèi)存保護(hù)單元)去掉即可。終于解決掉了這個(gè)可惡的問題。
8. 關(guān)于Nios II中Verify failed between address 0xxxx and 0xxxx錯(cuò)誤的解決,錯(cuò)誤一般的提示為:Verifying 000xxxxx ( 0%)% C; Q0 H2 R J7 W* Z9 O R* r
Verify failed between address 0xxxxxx and 0xxxxxx( O“ ^0 u; e9 E: E7 X
Leaving target processor paused
網(wǎng)上的人總結(jié)的解決方法如下:1. 首先要根據(jù)address后面的兩個(gè)地址判斷出錯(cuò)的到底是什么器件。一般情況出現(xiàn)錯(cuò)誤的大多是存儲(chǔ)器。
l1 _5 y: {+ r& Q2 e! }- G 判斷的方法是根據(jù)sopc中的地址,或者是system.h中的地址,查找相應(yīng)出錯(cuò)的器件。9 v$ ~- X5 h( r# T4 f” I$ D3 T
c0 `, z; n6 V2. 檢查硬件焊接是否正常。- O( Z“ V/ W4 h! L
很多時(shí)候有些問題是硬件焊接造成的,這個(gè)主要針對的是自己焊接的板子,一旦地址數(shù)據(jù)總線有任何焊接問題,都會(huì)出現(xiàn)verify failed錯(cuò)誤。 N. B/ E# m1 b& ?5 N4 B5 W* B
) q- d$ E0 t: r& M8 A! o& K3. 檢查sopc中的componet是否正常。
( }& i, H) L. E 如果是自己加入的接口邏輯,這個(gè)部分要確認(rèn)其正常與否?!?a# |, E9 U1 [& P3 z
$ F- x7 t‘’ u) L! Z( w4. 檢查Quartus中的設(shè)計(jì):
- H$ O& j; |5 e$ Q+ ? _* M 檢查引腳鎖定是否正確,必須一一對應(yīng),不能有一個(gè)錯(cuò)誤;
! k1 `% e6 [* b/ [‘’ @6 P$ s( q& {% R 地址對齊問題:針對8、16、32位的外部存儲(chǔ)器,對應(yīng)地址最低位的應(yīng)該是0、1、2。也就是說如果用16位的外部存儲(chǔ)器,那么它的最低位是ADD[1],而ADD[0]是不用的,其他同理。
2 i1 `& b2 w. k8 v8 i, E 數(shù)據(jù)總線必須是雙向IO口,這點(diǎn)很容易忽略。
* c$ G% \$ G% {* }) W- i 如果是SDRAM,需要計(jì)算并設(shè)定PLL的相移。
9 q+ O( F! H+ 5. Nios IDE中檢查項(xiàng)目設(shè)計(jì)是否正確。
6. 就是.bdf文件中的symbol在運(yùn)用“Generat Pins for Symbol Ports”自動(dòng)生成引腳的時(shí)候,生成的引腳表面上是與symbol連接在一起的,可實(shí)際上沒有,只要手動(dòng)把Ports 與Pins連一下,問題便可以解決了
而我碰到的就是Sdram的問題,因?yàn)槲业膕dram忘了接clk時(shí)鐘腳了,那時(shí)候用的niosii核,核外是沒有與sdram的clk連接的引腳的,因?yàn)樗臅r(shí)鐘不是cpu產(chǎn)生,是由外部或者pll產(chǎn)生。
9.在用quartusII編譯時(shí),包含了sopc系統(tǒng),出現(xiàn)如下錯(cuò)誤:
Error: Can‘’t name logic function TftTest of instance ”TftTest“ -- function has same name as current design file,未解決!
10.在 nios 里下載軟件程序時(shí),會(huì)出現(xiàn) assertion ”m_state == STATE_DEBUG“ failed: file
”nios2oci.cpp“, line 157 Using cable
”USB-Blaster [USB-0]“, device 1, instance 0x00 Pausing target processor: not
responding. Resetting and trying again: D:\altera\81\nios2eds\bin\nios2-download: line 594: 6300 Hangup
nios2-gdb-server --instance 0 --tcpport none --wri te-pid
。/Debug/nios2-download.pid 。/Debug/GigaCard.elf.srec
這個(gè)問題在我調(diào)試的過程中偶爾會(huì)出現(xiàn),而且是沒有規(guī)律的,也正是這個(gè)問 題,總是阻礙著我們前進(jìn)的腳步,后來我們發(fā)現(xiàn)一個(gè)程序本來是可以下到 onchi p-memory 中的,后來同樣的程序無論如何都下不進(jìn)去了,于是我們基本可以確 定問題出在了硬件。對于有控制器的系統(tǒng),晶振肯定是非常重要的,于是我們測 晶振的輸出是不是正常的,結(jié)果是有時(shí)正常有時(shí)不正常,這說明晶振虛焊了,經(jīng) 過我們小寶同學(xué)精心補(bǔ)焊,上面那個(gè)問題就再也沒有出現(xiàn)過了。 在 nios 里下載軟件程序時(shí),出現(xiàn) Using cable ”USB-Blaster [USB-0]“, device 1, instance 0x00 Pausing target processor: not responding. Resetting and trying again: FAILED Leaving target processor paused 這個(gè)錯(cuò)誤在可編程部分的原因大多是引腳分配錯(cuò)誤。網(wǎng)上有人說要在 quart us 將沒有用到的 FPGA 的引腳設(shè)為“input tri-state”,但是我并沒有發(fā)現(xiàn)這是必 須的,可能只是一些特定地器件需要這樣設(shè)置。
評論
查看更多