肖文君 劉萬松 劉伍豐 李境達
摘? 要: 為解決主動式腫瘤治療中治療計劃系統和加速器控制系統之間的數據通信問題,研發了智能終端系統。文中設計的基于PCI總線的劑量控制系統是智能終端系統的一部分,該系統利用Altera公司的ACEX1K50芯片實現PCI總線接口,利用WDF驅動模型實現上位機的PCI驅動,通過開發的應用程序調用驅動程序接口,實現了上位機同FPGA的數據通信,從而實現智能終端與劑量控制器的數據通信。實驗結果表明,該系統達到了預期目標。
關鍵詞: 腫瘤治療; 劑量控制系統; 數據通信; PCI驅動; 智能終端; 驅動程序安裝
中圖分類號: TN913?34; TP399? ? ? ? ? ? ? ? ? ? ? 文獻標識碼: A? ? ? ? ? ? ? ? ? ?文章編號: 1004?373X(2019)16?0036?04
為了解決主動式腫瘤治療中,治療計劃系統與加速器控制系統之間的通信問題,特研發了一種智能終端系統,該系統能夠在治療過程中智能地實現束流位置?劑量聯動。劑量控制系統是智能終端系統的一部分,用來實時監測腫瘤治療的劑量。如果照射劑量達到預先設定值,系統會發送劑量同步信號給位置控制器,智能切換束流的掃描方向。
1? 劑量控制系統總體設計
劑量控制系統用來實時監測腫瘤治療的劑量,通過與位置控制器的配合智能實現位置?劑量聯動,使束流的輻照區域形狀在三維方向上與腫瘤的實際形狀一致,從而降低束流對腫瘤周圍健康組織的照射,提高放射治療的治療增益比,以達到更好的治療效果。劑量控制系統的結構框圖如圖1所示,該系統主要由兩部分組成,即智能終端系統前端服務器和劑量控制器。智能終端系統前端服務器和劑量控制器采用PCI接口進行數據通信。智能終端系統前端服務器將劑量信息存放在劑量控制器中,治療過程中,劑量控制器從束流監測系統實時獲得當前輻照劑量,判斷是否達到預設輻照劑量,通過輸出控制信號指示位置控制器,從而實現位置與劑量的聯動。
2? 劑量控制器
劑量控制器是劑量控制系統的關鍵器件,其模塊結構見圖2。劑量控制器是通過采用ACEX1K50芯片來是實現的。劑量控制器通過PCI接口與智能終端進行通信,用大容量SDRAM來存儲智能終端傳輸過來的數據,并且在該FPGA中實現相應的邏輯控制,從而保證劑量控制系統的精度要求和穩定性要求[1?2]。
智能終端把醫生給出的腫瘤處方劑量通過PCI接口,存放在劑量控制器的SDRAM存儲器中,每次治療的數據被單獨連續存放,由首地址索引,首個治療數據是掃描點個數,以下依次為每個掃描點的處方劑量。劑量計數器的輸入是從束流監測系統得到的劑量脈沖,輸出是脈沖信號用來指示位置控制器,從而實現位置與劑量的聯動。劑量控制過程如下:
1) 劑量控制器從SDRAM中讀出處方劑量,加載到相應的計數器中。
2) 劑量控制器開始接收劑量脈沖,同時進行計數。如果當前的掃描點計數完成,說明已達到預設的處方劑量,劑量控制器立即向位置控制器發出信號。
3) 位置控制器就將束流定位到下一掃描點,同時劑量計數器也加載下一點的處方劑量,開始下一點的計數。
3? 劑量控制系統數據通信設計
智能終端與劑量控制系統是通過PCI(Peripheral Component Interconnect)總線實現數據交互的。PCI總線是由Intel公司首先推出的一種局部總線,適用于各種平臺。由于其功能強大, 使用方便靈活, 與其他總線相比具有較大的優勢和廣闊的應用前景。劑量控制系統中的數據通信設計包含了PCI總線接口的設計、PCI總線驅動程序的設計以及應用程序的設計三個部分。
3.1? PCI總線接口設計
系統的PCI總線接口是在Altera公司的ACEX1K50芯片中實現的。系統采用通信狀態機(FSM) 實現PCI通信時序。狀態機根據PCI總線上的控制信號、配置空間的狀態信號切換不同的狀態,同時在各種狀態下發出相應控制信號來控制總線上的數據流向。設計4種狀態:Idle,Compare,Transfer和Backoff。Idle狀態是空置狀態,表示總線上沒有任何事務發生;Compare狀態表示總線主設備發起總線事務,從設備通過比較總線上的地址判斷本次總線事務是否屬于該設備,如果是,狀態機轉換到Transfer狀態并且發出相應的讀寫信號,若主設備需要結束本次總線周期,它會切換到Backoff狀態[3?4]。PCI總線接口狀態機如圖3所示。
3.2? PCI總線驅動程序
系統采用WDF(Windows Driver Foundation)模型開發PCI總線驅動程序。WDF模型是微軟新一代驅動開發模型,該模型以WDM為基礎進行建模和封裝,并支持內核模式及用戶模式兩種驅動模型。在WDF驅動模型下,無論內核模式的驅動程序還是用戶模式的驅動程序,它們都采用同一套對象模型構建,以及同一個基礎承載[5?9]。
3.2.1? 驅動程序入口地址
當驅動程序被加載時,會調用驅動程序的DriverEntry例程,這是WDF驅動程序的主入口地址。驅動程序通過DriverEntry例程創建驅動對象并設置EvtDriverDeviceAdd例程地址。
3.2.2? 驅動程序初始化
當pnp管理器檢測到新的PCI硬件設備插入,根據安裝驅動程序時Inf文件中指定的設備識別號和廠商識別號找到相應的設備驅動,然后調用PCIDriver_EvtDevIceAdd回調函數,完成驅動程序的初始化。
3.2.3? DMA操作
在本驅動設計中,用到了KMDF為DMA操作提供的兩個對象:WDFDMAENABLER和WDFCOMMONBUFFER。WDFDMAENABLER對象用于建立一個DMA適配器,說明DMA通道的特性。WDFCOMMONBUFFER對象用于申請系統提供的公用緩沖區。首先,驅動程序創建一個WDFDMAENABLER對象,然后再創建一個WDFCOMMONBUFFER對象。在成功創建WDFCOMMONBUFFER對象后,操作系統會為驅動程序提供一個在物理上連續的內存,在此把它稱為公用緩沖區,作為硬件設備和驅動程序進行DMA傳輸的公共區域。
3.2.4? 硬件訪問
當驅動程序收到IRP時,根據IRP中的主功能碼在相應的隊列中排隊,然后依次取出隊列中的各個IRP,調用I/O請求隊列處理函數。在本驅動中,只運用IoControl隊列,應用程序同樣只能通過發送IoControl命令的方式來調用驅動程序。因此,所有的I/O請求操作都可以在一個隊列處理函數內完成。
對硬件的訪問具體就是對BAR0的訪問、對BAR1的訪問、對BAR2的訪問以及對COMMONBUFFER的訪問。其中對BAR0和BAR1的訪問通過存儲器操作,對BAR2的訪問通過I/O操作,對COMMONBUFFER的訪問則通過內存拷貝函數直接實現。
3.3? 應用程序與驅動程序的通信
應用程序通過同驅動程序通信,從而達到控制設備的目的。應用程序與驅動程序通信的過程是:應用程序先用CreateFIle函數打開設備,然后可以用DevIceloControl和KMDF通信,包括從KMDF讀數據和寫數據給KMDF兩種情況,也可以用ReadFIle從KMDF讀數據或用WriteFIle寫數據給KMDF,當應用程序退出時,用CloseHandle關閉設備[10?11]。WIN32 API函數與KMDF回調例程對應情況如表1所示。
4? 劑量控制系統數據通信測試
4.1? 驅動程序安裝
INF是Device Information的縮寫,INF文件又被稱為“安裝文件”。它包含了設備安裝指令,系統通過這些指令來理解設備,并將驅動程序與物理設備聯系在一起。當操作系統檢測到有新硬件插入時,會彈出“找到新硬件向導”的對話框,然后選擇INF文件所在的路徑,根據INF文件內容安裝驅動程序。PCI驅動程序安裝完成之后,在設備管理器中會添加一個硬件的類,驅動安裝界面如圖4所示,在驅動安裝成功后,在設備管理器中添加WDFDRIVER的硬件。
4.2? 存儲器寫事務測試
先打開控制臺程序,再打開應用程序,并輸入參數[W 4 10]。其中W表示對BAR0進行寫操作,4為BAR0的偏移地址,10為要寫的數據。程序運行流程:應用程序根據參數[W]調用相應的DevIceloControl函數,然后根據DevIceloControl的控制代碼調用驅動程序中相對應的函數。驅動程序首先獲取應用程序傳遞過來的輸入緩沖區,從中取出偏移地址和數據,然后把數據寫到硬件指定的地址中。存儲器寫事務測試結果如圖5所示。
4.3? 存儲器讀事務測試
存儲器讀事務的過程與寫事務的過程類似,輸入參數[R 4],表示讀取基地址為BAR0,偏移地址為4的數據。存儲器讀事務測試結果如圖6所示,數據為10,該數據為剛寫進去的數。
4.4? DMA操作測試
對于DMA操作,應用程序首先打開一個二進制文件,該二進制文件包含4個32位的數。第一個32位數表示控制該DMA操作是讀操作還是寫操作,第二個32位數表示DMA操作的數據長度,第三個32位數表示FPGA中FIFO的偏移地址,第四個32位數表示COMMONBUFFER的偏移地址。然后將這些參數傳遞給驅動程序,驅動程序把參數賦值給相應的寄存器,并啟動DMA操作。先啟動一個DMA操作,向COMMONBUFFER分別寫入從數字1開始的10個連續的數,然后從COMMONBUFFER讀數,DMA操作結果如圖7所示。
5? 結? 論
本文介紹了智能終端劑量控制系統的功能和結構,闡述了智能終端劑量控制系統軟件的實現。系統采用通信狀態機在FPGA中實現PCI總線接口,采用微軟WDF驅動框架,實現了PCI總線驅動程序,完成了智能終端前端服務器與劑量控制器的數據通信,使得腫瘤治療的劑量數據能夠快捷方便地下載至劑量控制器中,同時能夠從劑量控制器中實時地獲取輻射劑量信息以便監測,從而實現束流位置?劑量聯動。
參考文獻
[1] 李桂花,喬衛民,敬嵐.一種用于重離子治癌的劑量控制器設計[J].原子能科學技術,2011,45(12):1532?1536.
LI Guihua, QIAO Weimin, JING Lan. Dose controller design for heavy ion therapy [J]. Atomic energy science and technology, 2011, 45(12): 1532?1536.
[2] 鐘新華,袁衛華.基于NI CompactRIO的離子注入機劑量控制系統設計[J].工業控制計算機,2016,29(1):4?6.
ZHONG Xinhua, YUAN Weihua. Design of NI CompactRIO?based dose control system for implanter [J]. Industrial control computer, 2016, 29(1): 4?6.
[3] 王麗媛.基于FPGA的PCI總線接口控制器的設計[D].南京:南京航空航天大學,2008.
WANG Liyuan. Design of FPGA?based PCI bus interface controller [D]. Nanjing: Nanjing University of Aeronautics and Astronautics, 2008.
[4] 馬鳴錦,朱劍冰,何紅旗.PCI、PCI?X和PCI Express的原理及體系結構[M].北京:清華大學出版社,2007.
MA Mingjin, ZHU Jianbing, HE Hongqi. Principles and Architecture of PCI, PCI?X and PCI Express [M]. Beijing: Tsinghua University Press, 2007.
[5] 王齊.PCI Express體系結構導讀[M].北京:機械工業出版社,2010.
WANG Qi. Introduction to PCI Express architecture [M]. Beijing: China Machine Press, 2010.
[6] 楊可.FC測試系統中兩級PCIE交換開關的設計與實現[J].現代電子技術,2016,39(18):104?106.
YANG Ke. Design and implementation of a two?stage PCIE exchange switch for FC testing system [J]. Modern electronics technique, 2016, 39(18): 104?106.
[7] 武安河.Windows設備驅動程序WDF開發[M].北京:電子工業出版社,2009.
WU Anhe. The development of Windows device drive program WDF [M]. Beijing: Publishing House of Electronics Industry, 2009.
[8] 楊阿鋒.基于WDF的PCIe接口高速數據傳輸卡的驅動程序開發[D].長沙:國防科技大學,2008.
YANG Afeng. Development of WDF?based driver program for high?speed data transmission card of PCIe interface [D]. Changsha: National University of Defense Technology, 2008.
[9] 杭彥希,徐金甫,南龍梅.基于PCIE接口的IPSec加速SoC設計[J].計算機工程與設計,2017,38(5):1212?1215.
HANG Yanxi, XU Jinfu, NAN Longmei. Design of accelerator SOC for IPSec based on PCIE interface [J]. Computer engineering and design, 2017, 38(5): 1212?1215.
[10] 肖文君,劉萬松,劉伍豐,等.基于WDF的PCIe總線驅動程序設計與實現[J].測控技術,2015,34(7):101?104.
XIAO Wenjun, LIU Wansong, LIU Wufeng. Design and implementation of driver program for PCIe based on WDF [J]. Measurement & control technology, 2015, 34(7): 101?104.
[11] 張帆,史彩成.Windows驅動開發技術詳解[M].北京:電子工業出版社,2008.
ZHANG Fan, SHI Caicheng. Windows driver development internals [M]. Beijing: Publishing House of Electronics Industry, 2008.