FPGA之特殊管腳

之前調試一塊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 的邊界掃描或編程的操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章