《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 利用PowerPC對多片FPGA并行配置的設計與實現
利用PowerPC對多片FPGA并行配置的設計與實現
來源:電子技術應用2014年第8期
趙陸文1,繆志敏2,張北江1,劉 波1
1.解放軍理工大學 通信工程學院,江蘇 南京210007; 2.解放軍理工大學 指揮信息系統學院,江
摘要: 為了克服JTAG等常用FPGA配置方式存在的下載速度慢等缺點,設計了一種利用PowerPC對多片FPGA進行并行配置的方案。借助PowerPC通用輸入/輸出口產生控制邏輯,利用其本地總線并行下載配置數據。該方案可以選擇8 bit、16 bit以及32 bit位寬下載方式,依次實現對多片FPGA的并行配置。經實測,利用JTAG口對XC6VSX475T芯片進行配置需要48 s,而采用本方案可將配置時間縮短至1 s左右,大大縮短了配置時間。
中圖分類號: TN391
文獻標識碼: A
文章編號: 0258-7998(2014)08-0017-03
Design and realization of parallel configuration of multiple FPGAs based on PowerPC
Zhao Luwen1,Miao Zhimin2,Zhang Beijiang1,Liu Bo1
1.Communication Engineering College,PLA University of Science and Technology, Nanjing 210007,China;2.Command Information System College, PLA University of Science and Technology, Nanjing 210007,China
Abstract: In order to overcome the shortages of common configuration modes, such as slowly speed, a parallel configuration scheme is put forward. Multiple FPGAs can be parallelly configured by PowerPC. The control logic is produced by PowerPC′s GPIO, and the configuration data is downloaded through PowerPC′s Local Bus. There are three bus width modes can be chosen, 8 bit,16 bit and 32 bit. The test results show that it requires 48 seconds configuration XC6VSX475T using JTAG mode, however, the time can be shortened to about 1 second using the proposed scheme.
Key words : PowerPC;FPGA;parallel configuration

     PowerPC具有外設豐富、處理能力強以及便于移植Linux等操作系統的特點,而現場可編輯邏輯門陣列FPGA具有處理能力強、在線可編程等特點。因此,在復雜工業控制、路由器等諸多領域,采用PowerPC+FPGA的架構得到了廣泛的使用。眾所周知,FPGA多采用靜態隨機存取存儲器SRAM(Static Random-Access Memory)工藝,掉電后配置數據將丟失。因此,系統每次上電后都必須進行數據配置。此外,隨著FPGA規模越來越大,配置數據已達到幾十甚至上百兆比特,常用的串行配置邊界掃描(JTAG)等方式在很多場合下已無法滿足需求。若設計中需要對多片FPGA進行配置,則更為復雜,耗費時間更長。目前,主流PowerPC具有豐富的通用輸入/輸出口GPIO(General Purpose I/O),自帶位寬達32 bit的本地總線(Local Bus),且在其上移植Linux等操作系統方便快捷。因此,可以利用PowerPC本地總線對多片FPGA進行快速并行配置

1 FPGA配置方式

1.1 常用的配置方式及特點

    目前主流的FPGA廠家有Xilinx、Altera等公司。雖然不同廠家、不同系列的FPGA芯片配置方式或多或少存在一些差異,但是大體來說配置方式包括JTAG模式、主動模式以及被動模式[1-2]。不同模式之間通過模式選擇控制引腳進行選擇,具體設置方式由相應的芯片資料給出。

JTAG模式使用最方便,使用下載器就可以很方便地將計算機生成的配置數據下載到FPGA中。但是這種模式沒有存儲芯片,掉電后需重新通過計算機下載,所以這種配置方式多用于調試階段;主動模式下FPGA作為控制器,產生配置時鐘和控制時序,從配置器件等外部設備中讀取配置數據,進而將數據下載至FPGA。根據數據采用的是串行還是并行模式,又分為主動串行模式和主動并行模式。被動模式是由外部配置器件產生時鐘和控制時序控制整個配置過程,FPGA只是被動地接收配置數據。同樣根據數據采用的是串行還是并行模式(對應Xilinx FPGA的SelectMAP模式),又分為被動串行和被動并行模式[3-4]。當然,根據數據是同步還是異步的,還可以進一步細分。

    串行(主串或從串)模式具有配置信號少、配置電路簡單等優點。但是FPGA 在配置時鐘的1個上升沿只能接收1 位配置數據,顯然該配置方式速度較慢;并行模式配置信號線比較多,但是配置速度較快,在高密度的FPGA系統中,更適合采用并行模式。并行模式除了采用專用配置芯片外,還可以采用微處理器或者CPLD控制Flash等存儲器對FPGA進行配置。由于主流PowerPC具有豐富的GPIO口和32位總線,若運行Linux系統,則可以進一步擴展CF卡或者SD卡,將配置文件存放在CF卡或者SD卡中,而不用Flash芯片。在精簡系統設計的同時,使得程序升級維護更方便,在工程實踐中更具有實際意義。

1.2 FPGA配置文件

    以Xilinx FPGA芯片為例,其配置文件可由集成開發環境ISE生成。常用的配置文件格式(后綴名)包括:.bit、.rbt、.bin、.mcs以及.hex等格式。其中.bin和.bit文件都是直接向FPGA配置的文件。.bit文件除包含有真正的配置數據外,還在文件開頭添加了頭部冗余信息,包含當前ISE工程的名字、器件型號、編譯時間等信息,主要用于JTAG下載;.bin文件只包含了原始配置數據的二進制文件,實質上就是去除了頭部冗余信息的.bit文件。.bin文件也由文件頭和配置數據組成,其中文件頭主要包括位寬檢測和同步字等,第二部分才是真正寫入FPGA的配置文件,這種格式常用于利用微處理器對FPGA進行并行下載。.rbt格式為.bit文件的ASCII格式;.mcs文件包括地址和校驗信息,主要用于專用配置芯片進行程序燒寫;.hex文件只包含FPGA的配置數據,也是給用戶使用的。顯然,利用PowerPC對FPGA進行配置時要選擇.bin格式文件。本文采用被動SelectMAP模式對Xinlix Virtex-6 FPGA進行配置。

2 硬件設計與實現

2.1 并行配置的相關時序

    Xilinx SelectMAP模式實質上就是并行配置模式,它以字節為單位將配置數據寫入FPGA。在從SelectMAP模式下,外部數據源向FPGA提供時鐘(CCLK)、編程(PROGRAM_B)、片選(CSI_B)、讀/寫(RDWR_B)、初始化(INIT_B)以及數據信號D[0:n](在8 bit、16 bit、32 bit模式下,n分別對應7、

15、31)。表 1給出了SelectMAP模式下的配置引腳功能。其中信號方向是相對于FPGA而言的。

 

各控制信號的具體含義如下[5]:

    (1)PROGRAM_B:編程復位信號。在上電過程中為邊沿敏感,上電后為低電平有效。該信號拉低完成芯片的復位,低電平保持時間為0.5 ?滋s乘以配置文件的幀數。對Virtex-6芯片,大概幾十毫秒(經實測在1 ms以內)。復位完成后,內部INIT_B抬高。

    (2)INIT_B:初始化信號。為雙向信號,在重啟或者編程初始化(PROGRAM_B=0)過程中,用來指示FPGA是否已經完成配置初始化。作為輸入信號,將INIT_B拉低來推遲對FPGA的配置。一般情況下,只需在PROGRAM_B=0后等待一定時間即可完成初始化。為了簡化設計,在本設計中INIT_B只用于輸入。

    (3)CSI_B:片選信號。低電平有效,CSI_B=0表示總線允許。

    (4)RDWR_B:讀寫控制信號。RDWR_B=0表示總線寫入,RDWR_B=10表示總線讀出。需要注意的是,拉低RDWR_B信號之前,必須確認CSI_B=0,否則可能會導致數據丟失。

    (5)BUSY:握手信號。當配置時鐘頻率超過50 MHz時,利用本信號控制寫入或者讀出速度。

    (6)DONE:配置狀態指示信號。數據正確配置后,DONE=1。

         圖 1給出了連續并行配置的時序圖。

 

圖1  SelectMAP 模式連續配置時序圖

 

 

2.2 基本思想與硬件設計原理

    由表1和圖1可以看出,FPGA在CSI_B、PROGRAM_B、RDWR_B以及INIT_B的控制下,在時鐘CCLK的上升沿時刻將配置數據寫入FPGA。以上4個控制信號可以利用PowerPC的GPIO口生成,雖然CCLK也可以用GPIO生成,但是由于GPIO口輸出的數據和總線數據都要經過鎖存、電平轉換等,在高速設計中,可能會產生意想不到的結果,或者為了保證時序的正確性而犧牲效率。考慮到PowerPC總線進行寫操作時,其對應的片選信號LCS以及RDWR信號都為低電平,而進行其他操作時,RDWR為高電平。此外,通過對PowerPC的總線控制寄存器進行設置,可以使LCS信號滯后于RDWR拉高。因此可以將LCS與RDWR進行“或操作”產生配置時鐘CCLK。寫命令發出后,由于LCS滯后于RDWR信號,可以保證數據能夠被正確寫入FPGA。

    基于以上時序分析的結果,設計了圖2所示的原理框圖。通過SATA接口相連的CF卡用來存放配置數據,當然也可以用SD卡。CF卡或者SD卡可以很方便地從卡座上拔下,使得程序維護升級非常方便,甚至非專業人員都能完成程序的升級。在調試過程中,數據可以直接存放在調試計算機中,利用NFS協議調試,方便快捷。為了能夠區分多片FPGA,可以將不同的地址線與LCS、RDWR一起進行或運算,實現片選。地址線為高電平時,時鐘始終為高電平,對應FPGA芯片不被選中(芯片較多的情況下,也可采用譯碼器來實現片選)。向相應的地址寫入數據,就實現了片選。需要注意的是,在FPGA配置過程中,無需對地址進行操作,地址僅僅是作為片選信號使用。此外,圖中的數據總線不僅在配置期間使用,在訪問FPGA時也要使用。為了更好地利用同一條總線實現對FPGA的配置和訪問,LCS2同時連接至多片FPGA的片選,在配置期間與其他信號一起產生配置時鐘,在訪問期間起到片選的作用。圖中的虛線表示在PowerPC訪問FPGA時采用的信號線,在配置期間不使用。

 

圖2  PowerPC并行配置FPGA原理框圖

 

3 軟件設計與實現

3.1 軟件設計要點

    針對PowerPC、Linux操作系統以及FPGA的特點,在軟件設計過程中,應注意以下幾點:

    (1)利用內存映射函數替代驅動程序設計。通常情況下,Linux內核通過驅動程序來實現對外部設備的輸入/輸出操作。利用PowerPC對FPGA進行并行配置,當然也可以利用驅動程序來實現。不過由于驅動程序編寫比較繁瑣,使用起來也不夠靈活,所以可以利用Linux內存映射函數mmap[6],將包括系統配置寄存器等相關寄存器在內的一塊內核空間映射到用戶空間的一段內存區域。映射成功后,用戶對這段內存區域的操作可以直接反映到內核空間。具體來說,經過映射后,用戶可以通過對相應的內存地址進行操作,實現對系統配置寄存器、GPIO寄存器、本地總線控制器寄存器等的配置和訪問,而無需利用驅動程序,使得配置程序得以簡化。

    (2)妥善處理字節序和比特序問題。在FPGA配置過程中,因涉及到眾多軟硬件,要特別注意接口過程中的字節序和比特序問題。以MPC8377 PowerPC為例,其為大端、最低有效位LSB(Least Significant Bit)在前模式,而Virtex-6系列FPGA為小端、LSB在前模式。大端模式是在寫內存時在內存低地址處存放數據的高位字節,高地址處存放低位字節;而讀內存時,將內存的高位地址視為目標數據的低字節,將低位地址視為高字節。小端模式正好相反。ISE生成的.bin文件與FPGA一致,也為小端模式。因此通過PowerPC將數據下載至FPGA時必須要進行大小端轉換,即字節序轉換。因PowerPC和FPGA均為LSB在前模式,因此無需作比特序的轉換。也就是說,利用ISE生成.bin文件時不需做bit swap處理。

    (3)正確配置寄存器。使用本地總線首先必須要正確配置本地總線的本地訪問窗口基址寄存器、本地訪問窗口屬性寄存器、本地總線控制基寄存器和可選寄存器。若片選信號為LCS2,則這4個寄存器分別為:LBLAWBAR2、LBLAWAR2、BR2和OR2。其中,LBLAWBAR2就是本地訪問窗口的基址,可以直接設置為LCS2對應的地址;LBLAWAR2是本地訪問窗口屬性寄存器,這個寄存器主要定義了允許訪問窗口的大小,主要由需要配置的FPGA片選對應的地址空間決定;BR2主要是對總線的位寬進行設置,位寬有8 bit、16 bit以及32 bit 3種選擇;OR2也比較重要,決定了外部存儲器寫訪問期間LCS2 和LWE 何時無效。舉例來說,在bit21 22=00的情況下,對bit20置位,可使LWE提前總線1/4個周期。這樣可以確保在LCS2拉高前,數據能夠被正確寫入FPGA。當然,也可以對bit21 22通過設置其他的值,實現LCS2的不同延時。

3.2 軟件流程

    按照上述思想,給出了軟件流程如圖3所示。

4 調試要點

    (1)注意大小端問題。利用MPC8377對FPGA進行配置時,總線寬度可以是8 bit、16 bit、32 bit之一。8 bit模式下不用關心字節序,16 bit和32 bit必須進行大小端轉換。關注同步字即可確定字節序和比特序。在實際的調試過程中,應抓住一點,對于FPGA,其引腳上的同步字為D[31..0]=0x5599AA66。若FPGA和PowerPC的引腳是順序對應的(即D0對D0,D31對D31),那么對于PowerPC,需要在總線上傳輸的數據應該是0x665599AA。所以需要將.bin配置文件中的同步字0xAA995566進行大小端轉換后變為0x665599AA,然后通過PowerPC傳送到FPGA對應的引腳上即可。

    (2)善于利用JTAG口。FPGA的JTAG既可以用來下載數據,也可以借助它來查看FPGA配置狀態寄存器的值,其中包括總線寬度、配置模式等參數。在利用PowerPC對FPGA進行配置的過程中,關注配置寄存器的相關狀態,可以得到對應的信息。比如配置模式在INIT信號由低變高時被采樣,總線寬度是在檢測到位寬信號后被采樣。若位寬顯示正常,說明配置數據已能被正確寫入FPGA;若配置還是錯誤,就應該檢查字節序、配置文件等是否正確。

    (3)利用NFS協議調試。調試過程中,可以將程序放在本地計算機中進行編譯,通過NFS協議,PowerPC可以運行存放在主機中的文件。等調試完畢后,可將應用程序、配置文件一并存入外接的CF卡中,以提高調試效率。

    此外,在調試階段可以將PROGRAM、INIT等信號間隔適當拉大,調整OR寄存器的值,適當降低配置速率,等配置成功后,再對相關值進行調整和優化,以提高配置速度。

    本文給出了一種利用PowerPC對多片FPGA進行并行配置的簡單方法。經實測,配置1片Virtex-6 XC6VS-

X475T芯片,若采用JTAG模式,需要48 s,而采用文中給出的并行配置方案,可將配置時間縮短至1 s左右,極大地縮短了配置時間。該方法也同樣適用于Xilinx其他系列的芯片以及Altera系列芯片。

參考文獻

[1] Altera.Device configuration schemes[EB/OL].(2013-10-08) [2014-03-30].http://www.altera.com.cn/support/devices/configuration/schemes/cfg-matrix.html.

[2] Xilinx.Configuration for Virtex-6 FPGA[EB/OL].(2013-08-25)[2014-03-30].http://www.xilinx.com/products/design_resources/config_sol/v6/config_v6.htm.

[3] 葛飛,何輔云,夏玉寶.FPGA被動并行配置控制器的研究與實現[J].合肥工業大學學報(自然科學版),2008,30(4):39-41.

[4] 趙勇,孟李林,李小龍.Cyclone IV系列FPGA的配置方式及其工程應用[J].微型機與應用,2013,32(19):25-28.

[5] Xilinx.UG360 Virtex-6 FPGA configuration user guide[EB/OL].(2013-11-27)[2014-03-30].http://www.xilinx.com/support/documentation/user_guides/ug360.pdf.

[6] 韓超,魏治宇,廖文江.嵌入式Linux上的C語言編程實踐[M].北京:電子工業出版社,2009.

(收稿日期:2014-04-22)  


此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
午夜精品一区二区在线观看 | 亚洲影院色在线观看免费| 在线免费观看成人网| 国产香蕉久久精品综合网| 欧美三级在线视频| 欧美久久在线| 欧美激情亚洲自拍| 欧美激情精品久久久久久免费印度| 久久久久一区| 久久视频一区| 久久性色av| 9l视频自拍蝌蚪9l视频成人| 久久精品人人做人人爽| 香港久久久电影| 亚洲自拍三区| 亚洲欧美第一页| 亚洲欧美日韩另类| 性欧美videos另类喷潮| 性欧美大战久久久久久久久| 亚洲欧美综合一区| 性高湖久久久久久久久| 欧美一级在线视频| 久久精品99国产精品| 久久不射中文字幕| 久久人人超碰| 乱中年女人伦av一区二区| 久久成人综合网| 久久久久久综合| 免费久久99精品国产自在现线| 欧美+亚洲+精品+三区| 欧美激情免费观看| 欧美精品麻豆| 国产精品草莓在线免费观看| 国产精品美女在线观看| 国产欧美日韩91| 国产一区二区三区在线观看精品| 精品99一区二区| 亚洲激情视频网| 亚洲国产你懂的| 99综合电影在线视频| 一本一道久久综合狠狠老精东影业 | 性欧美暴力猛交69hd| 亚洲欧美怡红院| 久久精品成人| 99视频超级精品| 一区二区三区四区国产精品| 亚洲视频网站在线观看| 一本久久综合| 欧美一区观看| 欧美高清视频一区| 欧美日韩一卡二卡| 国产午夜精品理论片a级大结局 | 一区二区三区久久精品| 亚洲女与黑人做爰| 亚洲欧洲日本一区二区三区| 中国成人亚色综合网站| 性视频1819p久久| 久久综合五月| 欧美三级乱码| 国产在线不卡视频| 亚洲精品视频在线观看免费| 亚洲已满18点击进入久久 | 91久久精品久久国产性色也91| 亚洲视频每日更新| 久久美女艺术照精彩视频福利播放| 欧美黄色小视频| 国产乱人伦精品一区二区| 久久综合色88| 国产精品国产三级国产专播精品人 | 久久久久久久波多野高潮日日| 久久aⅴ乱码一区二区三区| 久久久水蜜桃| 欧美日韩一区在线播放| 国产综合色产在线精品| 日韩一区二区精品视频| 久久国产精品久久久| 夜夜爽99久久国产综合精品女不卡| 久久精品2019中文字幕| 欧美日韩一区高清| 亚洲第一页在线| 亚洲在线视频免费观看| 99视频+国产日韩欧美| 久久色中文字幕| 国产精品―色哟哟| 亚洲理伦在线| 欧美一级视频| 亚洲一区二区三区四区在线观看 | 亚洲欧美日韩另类| 一本久道综合久久精品| 老司机精品久久| 国产日韩精品一区| 一区二区三区日韩| 日韩写真视频在线观看| 久久在线免费| 国产精品大片| 亚洲三级视频| 91久久精品久久国产性色也91| 久久国产精品一区二区| 国产精品久久久一区麻豆最新章节 | 亚洲二区在线视频| 亚洲欧美成人网| 亚洲视频欧美视频| 欧美人成免费网站| 亚洲高清久久| 久久精品日韩一区二区三区| 亚洲欧美日韩直播| 欧美日韩国产综合视频在线观看中文| 伊人久久亚洲美女图片| 欧美诱惑福利视频| 亚洲欧美日韩国产另类专区| 欧美日韩国产精品成人| 亚洲精品一区二区三区在线观看| 亚洲国产成人av在线| 久久激情综合| 国产日韩一区在线| 亚洲欧美日韩在线综合| 亚洲欧美亚洲| 国产精品成人在线观看| 99国产精品久久久久久久久久| 日韩午夜在线观看视频| 欧美国产日本韩| 欧美午夜精品久久久久久浪潮 | 欧美一区二区三区成人| 欧美影视一区| 国产精品主播| 一本到高清视频免费精品| 国产一在线精品一区在线观看| 亚洲欧美一级二级三级| 欧美在线观看一二区| 国产欧美在线| 欧美一区二区三区另类| 久久青草久久| 在线播放中文一区| 亚洲精品你懂的| 欧美人在线视频| 一本色道久久88精品综合| 国产精品99久久久久久久久| 欧美日韩国产999| 一区二区日韩伦理片| 午夜精品电影| 国产午夜精品美女毛片视频| 欧美中文在线观看国产| 久久影院午夜论| 亚洲国产精品嫩草影院| 99在线视频精品| 欧美日韩成人一区| 亚洲一区二区网站| 久久久99国产精品免费| 在线观看精品视频| 亚洲精品一区二区在线观看| 欧美欧美天天天天操| 亚洲美女黄色| 午夜精品一区二区三区在线视| 国产日韩成人精品| 亚洲国产婷婷综合在线精品| 欧美成人午夜激情在线| 亚洲最快最全在线视频| 午夜日韩激情| 红桃av永久久久| 一本色道久久88精品综合| 国产精品免费电影| 久久精品视频99| 欧美日本在线| 亚洲欧美伊人| 欧美黑人在线观看| 在线亚洲+欧美+日本专区| 久久久高清一区二区三区| 亚洲第一区在线| 亚洲欧美日韩专区| 在线成人中文字幕| 亚洲免费视频一区二区| 海角社区69精品视频| 99国产一区| 国产亚洲综合精品| 亚洲最黄网站| 国产主播精品| 一区二区欧美国产| 国产精品美女999| 亚洲国产精品悠悠久久琪琪| 国产精品成人在线观看| 亚洲国产成人tv| 国产精品亚洲第一区在线暖暖韩国| 亚洲电影免费在线观看| 国产精品都在这里| 亚洲啪啪91| 国产欧美综合一区二区三区| 亚洲精品国产精品乱码不99按摩| 国产精品乱子久久久久| 亚洲黄色一区| 国产欧美不卡| avtt综合网| 韩国一区二区在线观看| 亚洲男女自偷自拍| 亚洲成人在线视频播放| 欧美亚洲系列| 免费在线亚洲| 亚洲欧洲一区二区三区| 欧美在线免费观看| 亚洲精品影院在线观看| 欧美一级一区|