一種基于VC++程序的FPGA重配置方案設(shè)計
2 可重配置軟件方案
用戶發(fā)送配置數(shù)據(jù)流到EPCS對FPGA進行配置的結(jié)構(gòu)圖如圖2所示,其中PC機部分為上位機配置控制的用戶軟件宿主。配置控制軟件主要包括用戶應(yīng)用程序(Win32應(yīng)用程序)、儀器驅(qū)動程序、總線驅(qū)動程序三部分,總線驅(qū)動位于整個軟件系統(tǒng)的最底層,可通過硬件抽象層(HAL)直接與硬件進行交流。儀器驅(qū)動位于總線驅(qū)動和用戶應(yīng)用程序之間。它對上可為屏蔽底層工作細節(jié)提供應(yīng)用程序調(diào)用的接口函數(shù),對下則可發(fā)送命令或接收數(shù)據(jù)。用戶應(yīng)用程序則位于軟件結(jié)構(gòu)的最上層,可通過調(diào)用儀器驅(qū)動程序,間接地與底層進行交互。其結(jié)構(gòu)圖如圖3所示。
Windows XP操作系統(tǒng)中的驅(qū)動程序開發(fā)主要是基于Win32模式驅(qū)動程序,即基于WDM(Win32 Driver Model)。在WDM驅(qū)動模型中,每個硬件設(shè)備至少有兩個驅(qū)動程序:總線驅(qū)動程序和功能驅(qū)動程序。其中總線驅(qū)動程序由Windows提供,需要考慮的是負責實現(xiàn)PCI設(shè)備邏輯功能的功能驅(qū)動程序。所以,驅(qū)動程序分為以動態(tài)鏈接庫形式的儀器驅(qū)動程序和以WDM格式的底層的接口驅(qū)動程序。前者用于實現(xiàn)對目標硬件的操作,即下載配置數(shù)據(jù)流對FPGA的配置;后者則可實現(xiàn)資源分配、接口管理及數(shù)據(jù)的控制傳輸。
3 配置數(shù)據(jù)分析
本設(shè)計中的應(yīng)用軟件所要下載的配置數(shù)據(jù)流是由硬件設(shè)計者根據(jù)需求提供的,是以二進制形式存儲的.rpd文件??梢愿鶕?jù)不同的FPGA來選擇不同的外圍存儲芯片(如EPCS1,EPCS16),從而生成不同大小的配置數(shù)據(jù)流。由于軟件設(shè)計中,每次下發(fā)的數(shù)據(jù)一定,所以,由數(shù)據(jù)流的大小就能決定循環(huán)發(fā)送數(shù)據(jù)的次數(shù)。
由于硬件設(shè)計者提供的.rod文件中的數(shù)據(jù)并不是原始的配置數(shù)據(jù),而是所要配置的數(shù)據(jù)經(jīng)過反轉(zhuǎn)生成的新的配置數(shù)據(jù)流,所以,要先將.rpd中的數(shù)據(jù)反轉(zhuǎn)處理后再發(fā)送給硬件。通過用戶界面可以二進制的形式打開.rod文件并讀數(shù),將配置數(shù)據(jù)流以單字節(jié)的形式暫存在一數(shù)組中,然后對數(shù)據(jù)進行反轉(zhuǎn)處理。數(shù)組中每個單字節(jié)數(shù)據(jù)的反轉(zhuǎn)過程為:unsigned char strl=DE,反轉(zhuǎn)后為strl=7B,定義無符號char型變量bi(i為小于8的整數(shù)),可由下面的轉(zhuǎn)換完成:
由此可以得到:strl=7B。對反轉(zhuǎn)處理生成的單字節(jié)數(shù)據(jù)經(jīng)過組合處理后,最終便可得到對FPGA進行配置所需要的數(shù)據(jù)流。
評論