FPGA SelectMap介面配置設計
http://xilinx.eetop.cn/viewnews-682-page-2
摘要:與通常採用外圍的CPLD器件和CPU來產生配置介面控制邏輯的方法不同,本文設計了採用嵌入到FPGA的Leon3開源CPU軟核來控制實現Virtex系列FPGA的SelectMap介面配置的方法,可將其應用於對FPGA晶片的線上配置。該方法設計成本低,不侷限於某一型別的FPGA晶片,減少了外圍分立元件的使用,增強了設計的靈活性。模擬結果表明該設計滿足SelectMap介面配置所需控制邏輯要求,可以完成FPGA的並行配置。
關鍵詞:FPGA;嵌入式CPU;Leon3軟核;SelectMap介面
引言
嵌入式系統的硬體通常包括CPU、儲存器和各種外設器件,其中CPU是系統的核心,其重要性不言而喻。隨著FPGA和SOPC技術的發展,基於FPGA的嵌入式系統與傳統的嵌入式系統相比,具有設計週期短、設計風險和設計成本低、整合度高、靈活性大、維護和升級方便、硬體缺陷修復等優點。基於FPGA的嵌入式系統設計技術和市場逐漸成熟,使得嵌入式CPU軟核(如Xilinx公司推出的MicroBlaze、Altera公司的Nios、歐空局開發的Leon3軟核等)的大量應用成為可能。
Virtex系列FPGA是Xilinx公司推出的一種高密度、大容量的現場可程式設計門陣列。該系列FPGA可支援動態重構,當FPGA邏輯功能需要轉換,如演算法改進或是發現設計上的錯誤,或FPGA配置資料發生錯誤而導致功能失效(如在空間輻射環境下的單粒子翻轉效應導致配置資料錯誤等),則需要對FPGA進行重新配置。通常採用的配置系統由CPU、CPLD、FPGA和儲存器構成。本文結合具體應用需求,介紹了利用嵌入式CPU Leon3軟核處理器對Virtex系列FPGA的配置進行控制的方法。此係統能夠實現FPGA配置資料的重構,並且減少了外圍CPU和CPLD器件的使用,具有很好的應用價值。
1 Leon3軟核
Leon3是歐空局開發的32位CPU軟核,其標準版是一種開源的軟核,使用GNU LGPL授權協議,可以免費地應用於研究、教學和商業目的。Leon3軟核使用VHDL語言描述,與SPARC V8相容,使用7級流水線,整合了全流水的IEEE-754浮點處理器,提高了對多處理器的支援。由於Leon系列指令集符合SPARC V8標準,外部匯流排符合AMBA標準,相容軟體和IP核資源極其豐富,加上其開放原始碼的策略,對它的研究和應用受到了廣泛的關注。Leon3軟核具有良好的可配置性和可移植性,能夠根據需要靈活地選擇外圍控制器。並且該軟核不是FPGA廠商推出的,因此可以應用於不同型別的FPGA晶片。Leon3開源軟核的Grlib
IP庫中提供了多種功能模組,如串列埠控制器、儲存器控制器、通用可程式設計I/O等,把該軟核及其外圍的控制模組整合到FPGA中,構成一個嵌入式片上系統。
2 SelectMap介面配置系統設計
2.1 Virtex系列FPGA配置方式
Virtex系列FPGA基於SRAM工藝,共有4種配置方式:主串(master serial)、從串(slave setial)、SelectMap和邊界掃描(boundarysca-n)。序列(主串或從串)模式需要的配置訊號少(PROGRAM、CCLK、DIN、INIT、DONE),FPGA在配置時鐘的上升沿接收1位配置資料,該配置方式速度較慢。邊界掃描模式沒有儲存晶片,掉電後需重新配置,所以該種配置方式多用於除錯階段。SelectMap模式是一種8位並行配置模式,它是Virtex系列FPGA最快的一種配置模式,其配置時鐘最高可達66MHz,每個配置時鐘週期內有8位配置資料下載到FPGA內。在對配置速度要求較高的一些應用場合,一般採用SelectMap配置方式。
SelectMap配置方式所需引腳及相應功能如表1所列。表中BUSY訊號是握手訊號,只有當配置時鐘的頻率超過50MHz時才起作用,本設計的配置時脈頻率低於50MHz,因此不使用BUSY訊號。M(2:0)是模式選擇訊號,在SelectMap配置模式下,M(2:0)應置為110。
2.2 SelectMap介面配置硬體設計實現
本文設計的SelectMap介面配置系統由兩片FPGA和儲存器(Flash)構成,如圖1所示。設計中FPGA1選用了Xilinx公司Virtex系列晶片Vir-tex-5 XC5VSX95T,是需要進行配置的晶片。FPGA2內部嵌入了Leon3 CPU軟核,可利用該CPU軟核的儲存控制器模組對Flash進行讀寫控制;利用FPGA內部豐富的資源,在FPGA2內部整合一個自定義的SelectMap介面控制IP核,主要用來產生FPGA的配置訊號,這些SelectMap配置訊號的狀態由嵌入在FPGA2內部的CPU
Leon3軟核監控。該設計採用開源的Leon3軟核CPU,並且充分利用了FPGA豐富的資源,與通常的SelectMap配置系統相比,設計成本低,設計較靈活。
Flash儲存器採用Intel公司的JS28F256P30T95,具有32 MB的儲存空間,用來儲存FPGA1的配置資料。因為Flash的每個地址空間中儲存著16位資料,Leon3 CPU處理器讀取Flash地址中的資料,然後把資料以位元組形式傳送到FPGA2。這個過程中,CPU處理器所在的FPGA2為FPGA1提供配置時序控制訊號。這些控制訊號的產生由FPGA2內部整合的SelectMap介面控制IP核實現。該IP核的功能模組由3個暫存器組成:配置暫存器、程式設計暫存器和輸入暫存器。每次CPU對Flash進行讀或寫操作時,這些暫存器儲存FPGA1的配置訊號資料。其中配置暫存器和程式設計暫存器為只寫暫存器,輸入暫存器為只讀暫存器。詳細的邏輯框圖如圖2所示。CPU資料線在SelectMap介面控制IP核內部暫存器的構成如表2所列。
該配置邏輯模組完成以下幾方面的功能:啟動FPGA1配置時序;向FPGA1內部傳入配置資料;監測FPGA1是否正常配置。使用嵌入式CPU軟核配置FPGA1的流程如下:
①啟動FPGA1的配置時序。CPU地址線選中FPGA2內部程式設計暫存器,資料線輸出FPGA1配置控制訊號CS、WRITE和PROGRAM,將CS和WRITE置低,PROGRAM置高。
②監測FPGA的配置狀態。CPU地址線選中FPGA2內部輸入暫存器,接收FPGA1的輸出訊號INIT,若其值為高,那麼CPU開始發出FPGA1的配置資料,否則持續檢查INIT的值,直到其值為1。
③向FPGA1內傳送配置資料。CPU地址線選中FPGA2內部配置暫存器,資料線Data[15:8]輸出FPGA1的配置資料,Data[0]產生配置時鐘CCLK,在CCLK的上升沿FPGA1接收配置資料。配置資料傳送分兩步,首先Data[0]置0,然後Data[0]置1。CCLK產生一個上升沿,在此過程中Data[15:8]資料保持不變。重複此過程,CPU輸出FPGA1全部配置資料。
④檢查FPGA1是否配置成功。FPGA1的配置資料被傳送至結束時,CPU地址線選中FPGA2內部輸入暫存器,接收FPGA1的輸出訊號DONE。若其值為高時,說明FPGA1配置成功,否則需要重新配置FPGA1。
SelectMap介面配置方式下FPGA的時序如圖3所示。
3 模擬及分析
FPGA2採用Xilinx公司的Virtex-5 XC5VFX70T,SelectMap介面控制IP核採用VHDL語言實現,嵌入式CPU軟核採用的是歐空局開發的Lcon3軟核。在XilinxISE 10.1平臺下完成對Lcon3 CPU軟核處理器、外圍控制器及自定義SelectMap介面控制IP核整合的設計、綜合,利用Modelsim SE6.0完成模擬。
SelectMap配置模擬波形如圖4所示。由於FPGA1(Virtex-5 XC5VSX95T)的配置資料較大,模擬出完整的配置過程是不現實的,圖中用5個位元組的配置資料來代替FPGA的完整配置過程。為了把配置暫存器資料Data和並行配置的8位資料相對照,分離出了Data的高8位Data[15:8]。從圖中可以看出,在一次完整的配置過程中,CS和WRITE為低,PROGRAM為高,當監測到INIT為高時發出配置資料,在配置時鐘CCLK的上升沿接收8位配置資料,DONE訊號為高電平指示配置完成。該模擬結果和SelectMap配置方式的FPGA時序一致,證明了本設計的正確性及可行性。
結語
通過使用嵌入式Lcon3 CPU軟核和FPGA及開發板上的儲存器件,實現了對Xilinx公司的FPGA進行SelectMap配置的一種有效的方案。這種方法減少了外圍器件的數目,增加了硬體系統地靈活性。此外,該方法除了可以完成FPGA晶片的配置外,更重要的是可以靈活地線上升級系統、修改和除錯FPGA程式。如果儲存空間夠大,可以儲存不同功能的FPGA程式程式碼,這樣就可根據實際情況來載入不同程式碼,甚至通過通訊介面也可以方便地實現遠端下載程式碼和更新系統,使整個系統可線上配置,增強了系統的適用性和靈活性。
相關文章
- Vivado使用技巧(11):設定FPGA配置模式FPGA模式
- 【介面功能設計】TopThink介面功能設計建議
- FPGA基礎設計(6)使用DAC的Interleaved模式FPGA模式
- FPGA基礎設計(7)雙口RAM乒乓操作FPGA
- 介面設計分析
- API介面設計API
- APP介面設計APP
- LCM介面設計
- Xilinx FPGA部分重配置操作流程FPGA
- FPGA程式設計從零開始 使用VerilogFPGA程式設計
- 【ASIC設計】FPGA小知識拾遺(不斷更新...)FPGA
- FPGA設計--數字的表示形式(程式碼+波形圖)FPGA
- 後臺介面設計之表格設計
- 微信模板介面設計
- 轉賬介面設計
- 面向介面程式設計程式設計
- App介面Ui設計APPUI
- 命令列介面設計命令列
- 給超市設計介面
- 介面設計問題
- Java介面程式設計Java程式設計
- 介面設計標準
- 防止FPGA設計中綜合後的訊號被優化FPGA優化
- FPGA程式設計基礎(二)--常用行為模擬描述FPGA程式設計
- 【乾貨】遊戲介面設計 (一)核心設計遊戲
- 【乾貨】遊戲介面設計 (三)資訊設計遊戲
- RPC呼叫介面設計RPC
- API 介面設計規範API
- WTL 介面設計篇(CSkinListCtrl)
- Angular Public API 介面設計AngularAPI
- 介面設計的那些事
- WTL 介面設計篇(CSkinEdit)
- 自適應介面設計
- 事件與介面程式設計事件程式設計
- DHTML設計VC介面《一》HTML
- QT硬體介面設計QT
- 介面卡設計模式設計模式
- Java設計模式之介面卡設計模式Java設計模式