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