Xilinx FPGA上電時序分析與設計

Xilinx FPGA上電時序分析與設計

摘要:提出了由於FPGA容量的攀升和配置時間的加長,採用常規設計會導致系統功能失效的觀點。通過詳細描述Xilinx FPGA各種配置方式及其在電路設計中的優缺點,深入分析了FPGA上電時的配置步驟和工作時序以及各階段I/O 管腳狀態,說明了FPGA上電配置對電路功能的嚴重影響,最後針對不同功能需求的FPGA外圍電路提出了有效的設計建議。

1 引言
隨着半導體和芯片技術的飛速發展,現在的FPGA集成了越來越多的可配置邏輯資源、各種各樣的外部總線接口以及豐富的內部RAM資源,使其在國防、醫療、消費電子等領域得到了越來越廣泛的應用。但是FPGA 大多數是基於SRAM工藝的,具有易失性,因此FPGA 通常使用外部存儲器件(如PROM)存儲必需的配置信息,防止設備掉電後FPGA丟失自我配置能力。但FPGA配置在一定的條件和時間下才能成功完成,隨着FPGA容量的不斷攀升,配置時間也被大大加長,上電時如不充分考慮FPGA的配置時序以及對其他器件的影響,根據常規經驗設計電路,往往會影響系統其他外圍器件的正常工作,嚴重時會導致整個系統的失效。因此,FPGA的配置方式和上電時序已成爲系統設計的重要一環。

2 Xilinx FPGA的配置方式和特點
Xilinx FPGA支持多種配置方式,其中包括串行主模式(Master Serial)、串行從模式(Slave Serial)、並行主模式(Master SelectMAP)、並行8 位從模式(Slave Select MAP8)、並行32 位從模式(Slave Select MAP32),以及邊界掃描模式(JTAG),Virtex5器件後還增加了對SPI和BPI接口Flash的支持。

現在設計中通常用到的是串行主模式和並行主模式兩種配置方式,它們共同的特點是電路硬件設計時不需再接入一個配置時鐘,配置時由FPGA 自身提供時鐘,這樣減小了PCB設計難度以及時鐘帶來的時序干擾。但是它們也有各自的優缺點。並行配置的電路設計相對複雜,需要使用到一些多功能的配置引腳,如果在複雜或高速的配置電路中還要考慮到數據線的阻抗匹配和等長,從而加大了PCB設計難度。因此,在選擇FPGA配置方式時需要根據外圍器件的上電初始化時間和受FPGA配置影響程度以及電路複雜特性等正確選擇,同時也需要對必要的配置管腳做相應處理,後面會進行詳細分析。表1爲FPGA 重要的配置管腳和定義,可以看到,有些配置管腳在並行模式下才需要用到。

表1 FPGA重要配置管腳

3 Xilinx FPGA上電配置時
FPGA和CPLD不同,上電不能直接工作,它需要一個配置過程。Xilinx FPGA需要經過8個步驟才能運行正常的運行用戶邏輯,整個流程如圖1所示

圖1 FPGA上電配置步

3.1 FPGA上電啓動
FPGA工作的第一步就是給器件加電。Xilinx要求VCCINT(核心電壓)先動,然後再是VCCO(I/O電壓),最壞情況是它們之間不能相差1s以上。在並行配置模式下,VCCO_2 要求參考電壓必須和PROM參考電壓相同,上電的過程如圖2所示。其中,TPOR(Power-on-Reset)爲5~30ms,T(PL)(Program Latency)爲Max 4ms,T(icck)(CCLK (output delay)爲Min500ns。

圖2 FPGA上電時序

在系統正常上電或者PROG-B是一個低脈衝時,FPGA開始配置寄存器空間。這段時間除定義好的配置管腳外,其他I/O 管腳均被設置爲高阻態(High-Z)。經多次測試,這個階段需要30ms左右的時間。

FPGA啓動階段最後一步就是配置啓動模式。在PROG-B變高時,FPGA 開始採集配置方式引腳(M3、M2、M1),並同時驅動CCLK輸出。在這個階段,有兩種方法可以延遲FPGA的配置時序,一種是拉低INIT-B管腳,這是由於FPGA檢測到自身還沒有初始化完畢,不會進行接下來的操作步驟,直到INIT-B管腳變高。另一種就是拉低PROG-B管腳,使FPGA還處於等待配置狀態。

3.2 FPGA數據加載
FPGA 正常數據加載前,需要做一個器件與PROM之間的同步檢查。方法是傳輸一個特殊的32位數值(0xAA995566)到FPGA中,提示FPGA下面開始傳輸的是配置數據。這個步驟對用戶來說是透明的,因爲在Xilinx ISE Bitstream Generator 中生成的.bit文件中已經自動加入了這個校驗碼。

在做完配置前的通信同步後,FPGA 與PROM之間還無法識別相互間是個什麼器件,於是Xilinx 就給每一個型號的FPGA 設計了一個唯一的器件ID號,這個ID號可以在Xilinx 配置手冊中查到。如上述例子中用到的XC4VS35,其ID 號爲0x02088093。FPGA需要從PROM中讀出這個器件號和自身比對,如果相同就繼續下面的步驟,不同的話,配置失敗,並打印出配置故障信息。

所有準備工作正常完成後,FPGA 開始載入配置文件。這一步對大多數用戶也是透明的,由器件自行完成。這也是配置過程中最耗時的步驟,時間從100ms到幾秒不等。這個過程中,FPGA 的所有可配置I/O根據HSWAPEN管腳的設置變爲弱上拉(HSWAPE=1)或者高阻態(HSWAPE=0)。這個階段的I/O管腳還沒有變爲用戶需要的狀態,也最有可能影響到其他外圍電路的上電時序和運行。設計硬件電路時要特別注意並採取必要措施,如加入上下拉電阻,改變器件加電順序等來儘量避免或減少FPGA配置時對電路其他器件的影響。

配置文件載入完成後,爲了驗證數據的正確性,FPGA還自動設置了CRC校驗(這個在ISE配置選項中也可以去掉,但是爲了確保載入數據的正確性,這個是必須選擇的)。如果CRC 校驗不正確,FPGA會自動把INIT-B拉低,放棄這次配置。用戶必須把PROG-B引腳拉低,才能進行重新配置。

3.3 啓動序列
CRC校驗正確後,FPGA不會馬上執行用戶的邏輯,它還要進行一些自身內部電路的配置,如DCM鎖定(DCMs to Lock)、全局寫信號使能(Global Write Enable)等,這些信號的啓動順序也是在ISE配置選項中設置的。必須的啓動序列爲:釋放DONE引腳;釋放GTS信號,激活IO管腳;設置全局讀寫使能,使能內部RAM和FIFOAssert;結束上電配置。

從上面論述可知,整個FPGA 的上電配置正常時序如圖3所示。

圖3 FPGA配置時序

4 FPGA配置外圍電路設計衝突與解決方法
FPGA上電配置整個過程大約需要200ms~2s,這段時間其他外圍電路器件絕大部分都已經上電並正常工作了,而FPGA 的通用I/O 管腳還處於弱上拉(HSWAPEN=0)或者不定態(HSWAPEN=1),設計時就需要考慮到這些器件上電初始化和FPGA通用I/O管腳有無時序衝突。例如:上電時,外圍器件要求I/O管腳都爲低電平,而FPGA默認是弱上拉,初始化電平產生了衝突;外圍器件要求在上電覆位後馬上採集配置管腳進行初始化,而FPGA還處在配置狀態,沒法正確上拉或下拉I/O管腳,器件初始化錯誤;外圍器件要求上電初始化前需要時鐘鎖相,FPGA配置時產生不了時鐘,導致器件初始化失敗等。解決這些衝突大致有3 種方法,但前提都是要正確配置HSWAPEN管腳。因爲在FPGA執行“器件上電”步驟後(5~30ms時間),它輸出的I/O管腳狀態是可以通過HSWAPEN設定的。

方法1:在FPGA 的I/O 管腳外加上下拉電阻,阻值在1~10kΩ之間,根據實際需要確定。FPGA在上電後10ms內能通過上下拉電阻把I/O 管腳拉到用戶需要的電平上,這樣能解決上電較慢但是又要求固定電平的外圍電路,如功放發射開關和保護開關等。

方法2:FPGA可以在配置完成後產生一個全局復位信號,使外圍電路硬件復位,再進行一次初始化操作。這樣能解決PowrerPC、ARM這種上電初始化很快(在100ms內就能完成),而FPGA沒有配置完成,導致PowrerPC 初始化錯誤的問題。而且這種方式不用外接多餘的上下拉電阻,減少了電路設計複雜性。

方法3:FPGA可以在配置完成後產生一個Power Good信號,系統根據此標誌再給外圍其他有時序要求的器件上電,這樣能解決DSP或者高速AD 這種需要時鐘鎖定後再進行初始化的器件。

這三種方法也可根據具體情況混合使用,能達到更好的效果。

5 結論
通過上述分析可知,FPGA上電是一個短暫而複雜的過程,設計時需要充分考慮FPGA上電配置時序和在這過程中I/O管腳的各種狀態對外圍電路的影響。根據系統設計的具體情況,通過選用最合理的配置方式以及外圍電路連接,達到了既不影響其他器件性能和整個系統功能,同時又簡化和完善了整個電路設計的效果。

作者:紀斌 來源:電訊技術第52卷第4期

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