之前調(diào)試一塊FPGA板卡,上電后總是無法正常工作。?
現(xiàn)象:nSTATUS指示燈不停的閃爍,測試用的LED(FPGA的GPIO)無法點(diǎn)亮,即FPGA沒有進(jìn)入正常工作狀態(tài)。
調(diào)試過程:
1、FPGA在上電后,會立刻將nSTATUS配置狀態(tài)管腳置成低電平,并在上電復(fù)位(POR)完成之后釋放它,將它置為高電平。作為配置狀態(tài)輸出管腳,在配置過程中如果有任何一個錯誤發(fā)生了,則nSTATUS腳會被置低。
nSTATUS不停的閃爍(低電平點(diǎn)亮),說明FPGA沒有配置成功。
2、為進(jìn)一步確定原因,測量FPGA的CONF_DONE引腳。上電后,發(fā)現(xiàn)CONF_DONE引腳始終為低。正常情況下,在配置過程中該引腳會被置為低電平,一旦配置數(shù)據(jù)正確的接收完成,F(xiàn)PGA則進(jìn)入初始化周期和用戶模式,并將CONF_DONE釋放,其變?yōu)楦唠娖?。因此,進(jìn)一步確定了FPGA沒有配置成功。
3、測量FPGA相關(guān)配置引腳阻抗,發(fā)現(xiàn)CONF_DONE引腳對地阻抗為600歐左右,對VCC_3.3V阻抗為1.26k歐左右;正常時對地和對VCC_3.3V阻抗約為9.88k歐和10.85k歐。去掉上拉電阻(10k)后再次測量,對地和對3.3V阻抗為634歐和1.74k歐,正常應(yīng)都為5.75M歐左右。
4、因此,確定FPGA內(nèi)部配置電路已損壞。哎,可惜了FPGA芯片啊。
附:FPGA之特殊管腳
1. I/O, ASDO
在AS 模式下是專用輸出腳,在PS 和JTAG 模式下可以當(dāng)I/O 腳來用。在AS 模式下,這個腳是CII 向串行配置芯片發(fā)送控制信號的腳。也是用來從配置芯片中讀配置數(shù)據(jù)的腳。在AS 模式下,ASDO 有一個內(nèi)部的上拉電阻,一直有效,配置完成后,該腳就變成三態(tài)輸入腳。ASDO 腳直接接到配置芯片的ASDI 腳(第5 腳)。
2. I/O, nCSO
在AS 模式下是專用輸出腳,在PS 和JTAG 模式下可以當(dāng)I/O 腳來用.在AS 模式下,這個腳是CII 用來給外面的串行配置芯片發(fā)送的使能腳。在AS 模式下,ASDO 有一個內(nèi)部的上拉電阻,一直有效。這個腳是低電平有效的。直接接到配置芯片的/CS 腳(第1 腳)。
3. I/O, CRC_ERROR
當(dāng)錯誤檢測CRC 電路被選用時,這個腳就被作為CRC_ERROR 腳,如果不用默認(rèn)就用來做I/O。但要注意,這個腳是不支持漏極開路和反向的。當(dāng)它作為CRC_ERROR 時,高電平輸出則表示出現(xiàn)了CRC 校驗(yàn)錯誤(在配置SRAM 各個比特時出現(xiàn)了錯誤)。CRC 電路的支持可以在setting 中加上。這個腳一般與nCONFIG 腳配合起來用。即如果配置過程出錯,重新配置.
4. I/O, CLKUSR
當(dāng)在軟件中打開Enable User-supplled start-up clock(CLKUSR)選項(xiàng)后,這個腳就只可以作為用戶提供的初始化時鐘輸入腳。在所有配置數(shù)據(jù)都已經(jīng)被接收后,CONF_DONE 腳會變成高電平,CII 器件還需要299 個時鐘周期來初始化寄存器,I/O 等等狀態(tài),F(xiàn)PGA 有兩種方式,一種是用內(nèi)部的晶振(10MHz),另一種就是從CLKUSR 接進(jìn)來的時鐘(最大不能超過100MHz)。有這個功能,可以延緩FPGA 開始工作的時間,可以在需要和其它器件進(jìn)行同步的特殊應(yīng)用中用到。
5. I/O, VREF
用來給某些差分標(biāo)準(zhǔn)提供一個參考電平。沒有用到的話,可以當(dāng)成I/O 來用。
6. DATA0
專用輸入腳。在AS 模式下,配置的過程是:Cyclone將nCSO 置低電平,配置芯片被使能。Cyclone然后通過DCLK 和ASDO 配合操作,發(fā)送操作的命令,以及讀的地址給配置芯片。配置芯片然后通過DATA 腳給Cyclone發(fā)送數(shù)據(jù)。DATA 腳就接到Cyclone的DATA0 腳上。Cyclone接收完所有的配置數(shù)據(jù)后,就會釋放CONF_DONE 腳(即不強(qiáng)制使CONF_DONE 腳為低電平),CONF_DONE 腳是漏極開路(Open-Drain)的。這時候,因?yàn)镃ONF_DONE 在外部會接一個10K 的電阻,所以它會變成高電平。同時,Cyclone就停止DCLK 信號。在CONF_DONE 變成高電平以后(這時它又相當(dāng)于變成一個輸入腳),初始化的過程就開始了。所以,CONF_DONE 這個腳外面一定要接一個10K 的電阻,以保證初始化過程可以正確開始。 DATA0,DCLK,NCSO,ASDO 腳上都有微弱的上拉電阻,且一直有效。在配置完成后,這些腳都會變成輸入三態(tài),并被內(nèi)部微弱的上拉電阻將電平置為高電平。在AS 模式下,DATA0就接到配置芯片的DATA(第2 腳)。
7. DCLK
PS 模式下是輸入,AS 模式下是輸出。在PS 模式下,DCLK 是一個時鐘輸入腳,是外部器件將配置數(shù)據(jù)傳送給FPGA 的時鐘。數(shù)據(jù)是在DCLK 的上升沿把數(shù)據(jù),在AS 模式下,DCLK腳是一個時鐘輸出腳,就是提供一個配置時鐘。直接接到配置芯片的DCLK 腳上去(第6腳)。無論是哪種配置模式,配置完成后,這個腳都會變成三態(tài)。如果外接的是配置器件,配置器件會置DCLK 腳為低電平。如果使用的是主控芯片,可以將DCLK 置高也可以將DCLK 置低。配置完成后,觸發(fā)這個腳并不會影響已配置完的FPGA。這個腳帶了輸入Buffer,支持施密特觸發(fā)器的磁滯功能。
8. nCE
專用輸入腳。這個腳是一個低電平有效的片選使能信號。nCE 腳是配置使能腳。在配置,初始化以及用戶模式下,nCE 腳必須置低。在多個器件的配置過程中,第一個器件的nCE 腳要置低,它的nCEO 要連接到下一個器件的nCE 腳上,形成了一個鏈。nCE 腳在用JTAG編程模式下也需要將nCE 腳置低。 這個腳帶了輸入Buffer,支持施密特觸發(fā)器的磁滯功能。
9. nCONFIG
專用的輸入管腳。這個管腳是一個配置控制輸入腳。如果這個腳在用戶模式下被置低,F(xiàn)PGA就會丟失掉它的配置數(shù)據(jù),并進(jìn)入一個復(fù)位狀態(tài),并將所有的I/O 腳置成三態(tài)的。nCONFIG從低電平跳變到高電平的過程會初始化重配置的過程。如果配置方案采用增強(qiáng)型的配置器件或EPC2,用戶可以將nCONFIG 腳直接接到VCC 或到配置芯片的nINIT_CONF 腳上去。這個腳帶了輸入Buffer,支持施密特觸發(fā)器的磁滯功能。實(shí)際上,在用戶模式下,nCONFIG信號就是用來初始化重配置的。當(dāng)nCONFIG 腳被置低后,初始化進(jìn)程就開始了。當(dāng)nCONFIG腳被置低后,CII 就被復(fù)位了,并進(jìn)入了復(fù)位狀態(tài),nSTATUS 和CONF_DONE 腳被置低,所有的I/O 腳進(jìn)入三態(tài)。nCONFIG 信號必須至少保持2us。當(dāng)nCONFIG 又回到高電平狀態(tài)后,nSTATUS 又被釋放。重配置就開始了。在實(shí)際應(yīng)用過程中可以將nCONFIG 腳接一個10K 的上拉電阻到3.3V.
10. DEV_OE
I/O 腳或全局I/O 使能腳。在Quartus II 軟件中可以使能DEV_OE 選項(xiàng)(Enable Device-wideoutput Enable),如果使能了這一個功能,這個腳可以當(dāng)全局I/O 使能腳,這個腳的功能是,如果它被置低,所有的I/O 都進(jìn)入三態(tài)。
11. INIT_DONE
I/O 腳或漏極開路的輸出腳。當(dāng)這個腳被使能后,該腳上從低到高的跳變指示FPGA 已經(jīng)進(jìn)入了用戶模式。如果INIT_DONE 輸出腳被使能,在配置完成以后,這個腳就不能被用做用戶I/O 了。在QuartusII 里面可以通過使能Enable INIT_DONE 輸出選項(xiàng)使能這個腳。
12. nCEO
I/O 腳或輸出腳。當(dāng)配置完成后,這個腳會輸出低電平。在多個器件的配置過程中,這個腳會連接到下一個器件的nCE 腳,這個時候,它還需要在外面接一個10K 的上拉電阻到Vccio。多個器件的配置過程中,最后一個器件的nCEO 可以浮空。如果想把這個腳當(dāng)成可用的I/O,需要在軟件里面做一下設(shè)置。另外,就算是做I/O,也要等配置完成以后。
13. nSTATUS
這是一個專用的配置狀態(tài)腳。雙向腳,當(dāng)它是輸出腳時,是漏極開路的。在上電之后,F(xiàn)PGA立刻將nSTATUS 腳置成低電平,并在上電復(fù)位(POR)完成之后,釋放它,將它置為高電平。作為狀態(tài)輸出腳時,在配置過程中如果有任何一個錯誤發(fā)生了,nSTATUS 腳會被置低。作為狀態(tài)輸入腳時,在配置或初始化過程中,外部控制芯片可以將這個腳拉低,這時候FPGA就會進(jìn)入錯誤狀態(tài)。這個腳不能用作普通I/O 腳。nSTATUS 腳必須上拉一個10K 歐的電阻。
14. CONF_DONE
這是一個專用的配置狀態(tài)腳。雙向腳,當(dāng)它是輸出腳時,是漏極開路的。當(dāng)作為狀態(tài)輸出腳時,在配置之前和過程中,它都被置為低電平。一旦配置數(shù)據(jù)接收完成,并且沒有任何錯誤,初始化周期一開始,CONF_DONE 就會被釋放。當(dāng)作為狀態(tài)輸入腳時,在所有數(shù)據(jù)都被接收后,要將它置為高電平。之后器件就開始初始化再進(jìn)入用戶模式。它不可以用作普通I/O來用。這個腳外成也必須接一個10K 歐的電阻。
15. MSEL[1:0]
這些腳要接到零或電源,表示高電平或低電平。00 表示用AS 模式,10 表示PS 模式, 01是FAST AS 模式.如果用JTAG 模式,就把它們接00, JTAG 模式跟MSEL 無關(guān),即用JTAG模式,MSEL 會被忽略,但是因?yàn)樗鼈儾荒芨】?,所以都建議將它接到地。
16 DEV_CLRn
I/O 或全局的清零輸入端。在QuartusII 里面,如果選上Enable Device-Wide Reset(DEV_CLRn)這個功能。這個腳就是全局清零端。當(dāng)這個腳被置低,所有的寄存器都會被清零。這個腳不會影響到JTAG 的邊界掃描或編程的操作。
評論
查看更多