《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 業界動態 > 基于動態局部重構的HCRP協議的研究

基于動態局部重構的HCRP協議的研究

2009-04-20
作者:祝翔宇

  摘 要: 基于FPGA的動態局部重構技術,提出了FPGA片上系統獲取遠程可下載硬核模塊并動態加載的實現方式,進一步提出了HCRP協議的基本框架。
  關鍵詞: 硬件處理資源協議;可下載硬件;動態局部重構;內部配置存取端口;嵌入式

?

  隨著互聯網的快速發展,軟件下載日益常態化。基于超文本傳輸協議,用戶可以根據特定的需要在互聯網上搜索應用軟件,下載并安裝到個人計算機上。Jamil Khatib提出了可下載硬件(downloadable hardware)的概念,即硬核模塊像軟件安裝包一樣由遠程服務器提供下載,基于FPGA的系統代替個人計算機作為處理終端接入互聯網,用戶在FPGA系統上檢索、下載和安裝所需要的硬核模塊,實現特定的功能,如CDMA、軟件無線電、媒體播放、數據采集與處理等。Jamil Khatib進一步提出,在互聯網服務中增加新的應用協議,即硬件處理資源協議HCRP(Hardware Computing Resource Protocol)[1],以支持可下載硬件。
  Xilinx Virtex系列FPGA及其動態局部重構DPR(Dynamic Partial Reconfiguration)[2]技術可以為以上應用提供支持。動態局部重構允許可重構系統的一部分在系統運行過程中重新配置,其他部分的工作狀態不受影響,實現硬件在系統編程。文獻[2]提出了動態局部重構系統的兩種實現方案:基于模塊的重構和基于差異的重構,但其方案十分繁瑣,且需依賴外部工具實現。文獻[3]提出了一種在嵌入式處理器控制下實現自重構的方法,而文獻[4]是其具體實現。文獻[5]在文獻[3]的基礎上提出采用嵌入式操作系統作為自重構平臺,用Shell腳本控制重構。但文獻[5]沒有對重構系統做模塊化劃分,不能適應硬核動態加載的需要。
  基于以上研究,本文提出了一種互聯網可下載硬件的實現方式。在動態局部重構技術的支持下,設計了一個基于FPGA的片上系統,該系統能夠通過互聯網遠程獲取可下載硬件,由系統自身控制配置過程,將硬核模塊動態加載到系統中,實現硬件模塊的“熱插拔”和“即插即用”。這種方式脫離了對配置工具的依賴,使復雜的動態局部重構能夠通過一條命令完成。以此系統為HCRP終端原型定義了HCRP的基本框架,包括其通信和傳輸機制,及客戶端基于HCRP檢索、下載和安裝硬核的機制,以簡化和規范用戶操作。
1 系統實現
  本系統將Xilinx的XUP V2P開發板作為硬件平臺,其核心是一塊Virtex-II Pro系列的XC2VP30 FPGA芯片[6],系統硬件模塊如圖1所示。本系統的嵌入式處理器采用MicroBlaze軟核,原因在于:MicroBlaze軟核在芯片內的位置和IO管腳可以靈活分配,便于下一階段系統的布局布線和IO管腳分配;MicroBlaze支持的芯片型號更多,便于系統向其他平臺的移植;采用MicroBlaze可以盡量降低系統的成本和功耗。

  為了簡化軟件層開發的復雜度,本系統在MicroBlaze上移植了μClinux嵌入式操作系統。μClinux是專門為沒有MMU的嵌入式處理器開發的操作系統,采用了占用空間更小的romfs文件系統和精簡的?滋Clibc應用程序庫。μClinux在本系統中主要有以下作用:提供TCP/IP協議棧和網絡工具(如Wget等)以支持以太網通信和遠程數據傳輸;對動態加載和卸載用戶IP硬核的驅動程序提供支持;管理應用程序的多進程調度;通過串口終端提供基本的用戶界面。針對μClinux的實時性問題,本系統對所有外設的訪問均采用中斷方式,并采用一個32位定時器產生定時中斷。
  本系統采用IBM CoreConnect架構[8]的片上外設總線OPB(On-chip Peripheral Bus)連接嵌入式處理器和外設模塊。ICAP模塊是實現動態局部重構的控制邏輯,而用戶接口是用戶自定義模塊在OPB總線上的掛載點。系統的初始化配置(包括初始硬件比特流、μClinux內核映像和boot loader)組合為一個ACE文件存放在Compact Flash中。系統上電后,System ACE控制器[9]自動讀取ACE文件,配置硬件并啟動μClinux,然后作為非易失性存儲器被掛載到μClinux文件系統下。系統軟硬件架構如圖2所示。

?

2 動態加載機制
  為實現硬核模塊的動態加載,在頂層設計中采用了模塊化設計流程,整個系統分為可重構模塊和靜態模塊兩部分。可重構模塊為功能模塊,在重構過程中被動態加載的硬核模塊替換;靜態模塊包括除功能模塊之外的其他部分,如處理器、存儲器等,用于網絡通信和控制重構過程,在重構過程中保持不變。FPGA資源劃分借助PlanAhead工具[10]完成,可重構區域為SLICE_X70Y112至SLICE_X81Y143的矩形區域,放置可重構模塊;其余部分為靜態區域,放置靜態模塊。編譯后得到static_full比特流,描述了FPGA的全局配置,用于系統的初始化;每個可重構模塊分別生成一個重構比特流,描述了可重構區域的配置,可以被動態加載。
  為保證靜態模塊和可重構模塊之間的通信,所有穿越可重構區域邊界的信號必須通過總線宏結構連接,如圖3所示。總線宏(Bus Macro)是通過硬件布線得到的靜態宏單元,編譯后放置在特定的位置,重構前后不發生變化,用于保證布線資源的不變性。由于各個模塊之間相對獨立,工具在為模塊內部布線時不會考慮與之相鄰的模塊。圖3解釋了可重構模塊和總線的通信模式。在重構期間,來自可重構區域的數據是不正常的,為避免系統進入異常狀態,處理器需要在重構之前“關閉”總線宏,重構結束后再“打開”總線宏。PRR接口是一個標準的OPB總線接口和一個標準的DCR(設備控制寄存器)總線接口的結合,處理器通過DCR總線發送0/1命令字,PRR接口收到命令字后對總線宏的使能信號置位或復位,以實現打開或關閉操作。C程序語句如下:

?


  XIo_Out32(XPAR_PRR_IF_0_DCR_BASEADDR,0x00000000);
  //Disable Bus Macro
  XIo_Out32(XPAR_PRR_IF_0_DCR_BASEADDR,0x00000001);
  //Enable Bus Macro
  用戶模塊的動態加載是在應用程序控制下通過內部配置存取端口(ICAP)實現的。ICAP是FPGA內嵌的固有電路,支持嵌入式處理器在系統運行時讀寫FPGA配置存儲器。本系統將ICAP作為一個字符設備集成到μClinux內核中,設備驅動程序按照標準的Linux設備驅動程序架構,內核接口在adapter.c中定義,實現了以下系統調用:
  · open():在內核中為此設備創建一個節點;
  · close():釋放此設備在內核中的節點;
  · read():從ICAP讀取若干個字節到用戶內存緩沖區;
  · write():把用戶緩沖區內的若干個字節寫回到ICAP;
  · ioctl():處理控制命令字;
  以write函數為例,其接口函數的部分C程序如下:
  while(write_count)
  {
  ?  int word_count=0;
  ?  size_t left;
?    left=min(write_count,(size_t)XHI_MAX_BUFFER_BYTES);
?    while(left)? //逐字寫入ICAP模塊的緩沖區
?    {
??     unsigned long tmp;
??     copy_from_user(&tmp,user_buf,4);
??     XHwIcap_StorageBufferWrite(&(inst->HwIcap),
  ???????????????????????? word_count++,tmp);
??     user_buf+=4;
??     left-=4;
?    }
?    status=XHwIcap_DeviceWrite(&(inst->HwIcap),0,
  ??????????????????? word_count);//整體寫入配置存儲器
?    write_count-=word_count*4;
  }
  重構過程由應用程序reconf控制。首先解析比特流首部以獲取首部字節數、配置數據字節數等信息,然后提取配置數據依次送至ICAP設備。配置數據的前44個字節是ICAP設備的控制命令字,使ICAP工作在寫時序下,并記錄可重構區域在配置寄存器中的起始幀地址及長度;此后是配置數據幀序列,每兩幀配置數據之間有一個間隔(Pad)幀;最后8個字節則是可重構區域重新工作的命令字,標志著重構過程完成[11]。應用程序的部分C代碼如下:/*Read the bitstream header*/
  bit_header=XHwIcap_ReadHeader(fbuffer);//解析比特流首部 
  ……
  /*Read the header (effectively skipping it)*/
  numCharsRead=fread(fbuffer,sizeof(char),bit_header.Header-Length,stream);
  /*Loop through all bitstream data and write to ICAP*/
  for(i=0;i  {
    numCharsRead=fread(fbuffer,sizeof(char),FILE_BUF_SIZE,
                           stream);
?    numCharsWrite=write(fd,fbuffer,numCharsRead);
  }
  本文用超級終端作為μClinux的標準輸入輸出環境,采用一個乘法器模塊(mult.bit)和一個加法器模塊(adder.bit)驗證系統功能,根據提示輸入兩個操作數(如9和6)。系統初始狀態為加法器,第一次重構加載乘法器,第二次重構加載加法器,每次加載完成后系統自動調用硬核模塊,并回顯計算結果至超級終端。經驗證,本系統能夠實現硬核的動態加載,步驟如下:
  (1)系統上電,自動加載μClinux;
  (2)使用ping命令確認客戶端和服務器的網絡連接正常;
  (3)使用wget命令下載硬核模塊至本地文件系統;
  (4)使用reconf程序動態加載重構比特流。
3 HCRP協議規范
  互聯網的基本協議是TCP/IP協議。HTTP是建立在TCP/IP協議之上的一個面向對象的應用層協議,支持在統一的網頁結構界面下,采用不同的協議訪問不同的服務,如廣泛采用的FTP、SMTP等應用層協議。為了利用HTTP網頁結構提供較好的用戶操作性,本文定義HCRP為一個基于TCP/IP協議的用戶層協議,并使其與HTTP兼容。
  HCRP采用客戶/服務器模式,通過請求/響應范式建立連接,每次連接只處理一個請求,協議對前一連接的處理沒有記憶能力。服務器將全部硬核模塊按照其適用的FPGA芯片型號建立索引,客戶端和服務器建立連接后,根據自己的芯片型號(如XC2VP30)向服務器發出查詢命令。服務器則將適用于此芯片的全部硬核模塊列表通過同一連接返回至客戶端。客戶端在本地文件系統瀏覽列表并選擇所需硬核模塊,重新與服務器建立連接,采用二進制傳輸模式下載至本地文件系統。
  為避免重構比特流在傳輸過程中丟失或被篡改,可以采用加密傳輸方式,并在客戶端增加校驗,相應的解密和MD5工具可以很方便地被集成到嵌入式系統中。本系統只是簡單地解析重構比特流首部,獲取首部和配置數據的字節長度,進行文件完整性校驗。為避免局部重構破壞系統靜態區域的功能,本系統在修改配置存儲器之前預先解析重構比特流首部后的44個字節,獲取將要被修改的幀地址,驗證是否與可重構區域范圍匹配,以確保重構過程的安全。
  隨著半導體工藝和結構的改進,FPGA的價格和功耗問題將在很大程度上得到解決。與ASIC相比,FPGA的開發周期很短,更加適應快速變化的市場需求。可以預見,在手持、移動和便攜式消費電子領域,基于FPGA單芯片的解決方案將逐漸普及。HCRP協議能夠充分利用FPGA的靈活性,為此類設備提供強有力的支持。此外,硬件設備廠商可以利用HCRP為客戶提供遠程功能定制、故障修復和設備升級服務。
  本文提出了一種互聯網可下載硬件的實現方式,設計了一個基于FPGA的片上系統,該系統能夠通過互聯網遠程獲取硬核模塊并動態加載。系統定義了HCRP協議的基本框架,解決了實現HCRP協議的關鍵技術問題。但作為一個互聯網服務,HCRP協議仍需進一步細化,例如其通信端口的設定、請求消息和相應消息的格式等。而FPGA的型號和封裝繁多,HCRP服務器需要一個高效的分類和索引算法,這些問題還有待進一步探討。


參考文獻
[1] SALEM M A,KHATIB J I.An introduction to open-source?hardware development.EEdesign,2004(7).
[2] Xilinx Inc.Partial Reconfiguration.http://toolbox.xilinx.com/??? docsan/xilinx8/books/data/docs/dev/dev0036_8.html.
[3] BLODGET B,MCMILLAN S,LYSAGHT P.A lightweight?approach for embedded reconfiguration of fpgas.Design Automation and Test in Europe(DATE03),IEEE,2003:399-400.
[4] 許駿,晏渭川,彭澄濂.基于模塊的動態可重構系統設計.計算機工程與設計,2008(6).
[5] WILLIAMS J,BERGMANN N.Embedded Linux as a platform for dynamically self-reconfiguring systems-on-chip.The international conference on engineering of reconfigurable systems and algorithms,Las Vegas,Nevada,USA,2004,6.

[6] Xilinx Inc.Virtex-II Pro Complete Data Sheet.http://www.xilinx.com/support/documentation/data_sheets/ds083.pdf.
[7] IBM Inc.CoreConnect Bus Architecture.http://www-01.ibm.com/chips/techlib/techlib.nsf/techdocs/852569B20050FF778-5256991004DB5D9/$file/crcon_pb.pdf.
[8] Xilinx Inc.Microblaze Processor Reference Guide.http://www.xilinx.com/support/documentation/sw_manuals/edk92i_mb_ref_guide.pdf.
[9] Xilinx Inc.System ACE Compact Flash Solution.http://www.xilinx.com/support/documentation/data_sheets/ds080.pdf.
[10] Xilinx Inc.PlanAhead User Guide.http://china.xilinx.com/support/documentation/sw_manuals/PlanAhead_UserGuide.pdf.
[11] Xilinx Inc.Xilinx Application Note XAPP662:In-Circuit?Partial Reconfiguration of RocketIO Attributes.http://www.xilinx.com/support/documentation/application_notes/xapp662.pdf.

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
久久久国产91| 国产精品久久久爽爽爽麻豆色哟哟| 亚洲色图自拍| 最新国产成人在线观看| 欧美亚洲网站| 亚洲欧美一区二区激情| 一区二区三区四区国产精品| 亚洲欧洲日本专区| 亚洲国产另类久久久精品极度| 国产综合久久久久久| 国产亚洲欧美一区| 国产亚洲精品bt天堂精选| 国产欧美日韩综合| 国产香蕉久久精品综合网| 国产精品亚洲综合| 国产精品视频一区二区高潮| 国产精品国色综合久久| 欧美亚日韩国产aⅴ精品中极品| 欧美精品性视频| 欧美日产国产成人免费图片| 欧美另类69精品久久久久9999| 欧美国产精品中文字幕| 欧美成人一区在线| 欧美精品自拍偷拍动漫精品| 欧美精品久久久久久久| 欧美日韩三级| 国产精品久久久久久久第一福利| 欧美三级日本三级少妇99| 欧美日韩一区二区三区免费| 国产精品video| 国产九九视频一区二区三区| 国产乱子伦一区二区三区国色天香| 国产日韩欧美日韩| 一区国产精品| 亚洲人永久免费| 一区二区精品在线| 亚洲午夜在线观看视频在线| 亚洲一区视频| 久久成人综合视频| 亚洲精品乱码| 亚洲永久在线| 久久久久久久综合| 欧美电影免费观看高清完整版| 欧美精品一区二区精品网| 欧美视频不卡中文| 国产欧美日韩麻豆91| 在线观看欧美成人| 99国内精品久久| 午夜久久影院| 日韩视频精品在线| 亚洲欧美日韩国产另类专区| 久久精品国产精品| 欧美jizz19性欧美| 欧美日韩一区自拍| 国产亚洲成年网址在线观看| 亚洲国产影院| 亚洲夜晚福利在线观看| 欧美一区二区三区成人| 日韩网站免费观看| 欧美一区二区在线看| 欧美1区3d| 国产精品久久久一区二区三区 | 欧美三区在线视频| 国产情侣一区| 亚洲精品一区二区三区四区高清| 亚洲欧美成人一区二区在线电影| 亚洲国产欧美一区二区三区同亚洲| 亚洲日韩欧美视频| 亚洲欧美在线磁力| 欧美成人国产va精品日本一级| 国产精品美女主播| 亚洲第一主播视频| 午夜精品福利一区二区蜜股av| 亚洲乱码国产乱码精品精| 欧美中文字幕在线观看| 欧美区一区二区三区| 国内自拍一区| 一本久久青青| 亚洲人成7777| 久久精品国产77777蜜臀| 欧美日韩一区二区三区免费看| 国语自产在线不卡| 在线视频欧美精品| 日韩视频一区二区| 久久综合五月天婷婷伊人| 国产精品第2页| 最新国产拍偷乱拍精品| 欧美在线免费播放| 亚洲欧美日韩综合一区| 欧美国产日韩a欧美在线观看| 国产亚洲综合在线| 亚洲一二三区精品| 日韩性生活视频| 免费中文字幕日韩欧美| 国产三级欧美三级| 亚洲永久在线观看| 亚洲系列中文字幕| 欧美男人的天堂| 亚洲电影天堂av| 久久精品国产91精品亚洲| 午夜综合激情| 国产精品成人aaaaa网站| 亚洲理论在线观看| 亚洲精品小视频在线观看| 美国成人直播| 黄色国产精品| 欧美亚洲专区| 欧美一区二区视频免费观看| 国产精品久久久久久模特| 一卡二卡3卡四卡高清精品视频| 亚洲激情综合| 噜噜噜91成人网| 激情六月婷婷久久| 久久不射中文字幕| 久久久www成人免费无遮挡大片| 国产精品麻豆成人av电影艾秋| 99re在线精品| 亚洲一级高清| 国产精品国产三级国产普通话蜜臀| 99亚洲视频| 亚洲天堂成人在线视频| 欧美三级网址| 中文日韩在线| 性欧美8khd高清极品| 国产精品尤物| 欧美一区二区在线看| 久久免费的精品国产v∧| 国产专区欧美精品| 亚洲国产精品久久久久婷婷老年| 久久经典综合| 一区二区在线看| 亚洲欧洲日韩综合二区| 欧美激情精品久久久久久免费印度| 亚洲黑丝在线| 中文一区二区| 国产精品一区在线观看你懂的| 亚洲欧美视频在线观看| 久久久久久久91| 一区二区亚洲欧洲国产日韩| 亚洲精品一二区| 欧美日韩亚洲综合在线| 亚洲一区欧美| 久久成人免费电影| 精品成人国产| 夜夜嗨av一区二区三区网站四季av| 欧美色图一区二区三区| 亚洲综合欧美日韩| 久久亚洲午夜电影| 亚洲黄色免费电影| 亚洲一区二区三区影院| 国产婷婷97碰碰久久人人蜜臀| 久久精品国产亚洲高清剧情介绍| 欧美va天堂| 一区二区三区欧美成人| 久久av一区| 亚洲黄色大片| 午夜精品电影| 一区精品在线| 亚洲视频电影图片偷拍一区| 国产精品影视天天线| 亚洲青涩在线| 国产精品美女黄网| 久久精品国产96久久久香蕉| 欧美激情精品久久久久久| 亚洲一区二区免费在线| 久久亚洲捆绑美女| 99国产精品视频免费观看一公开| 性色av一区二区三区| 在线观看成人小视频| 亚洲综合电影一区二区三区| 狠久久av成人天堂| 亚洲素人一区二区| 黄色影院成人| 一区二区三区精品国产| 国产性做久久久久久| 一本色道婷婷久久欧美| 国产日韩综合| 一区二区三区免费在线观看| 国产私拍一区| 亚洲视频导航| 有码中文亚洲精品| 亚洲综合色噜噜狠狠| 精品999在线播放| 亚洲欧美日韩综合| 亚洲黄色天堂| 久久久国产一区二区三区| 日韩一级视频免费观看在线| 久久久女女女女999久久| 在线视频精品一| 你懂的亚洲视频| 午夜久久电影网| 欧美午夜不卡在线观看免费| 亚洲国产精品va在线看黑人动漫| 欧美天堂亚洲电影院在线观看| 亚洲福利视频二区| 国产精品婷婷| 亚洲视屏在线播放| 亚洲国产精品va在线观看黑人| 欧美一区二区成人| 一本色道久久综合亚洲精品婷婷|