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