孟憲華 李健鐸
(東軟醫(yī)療系統(tǒng)股份有限公司,遼寧 沈陽 110034)
在先前低版本的臺車式醫(yī)療超聲系統(tǒng)中,配置了SP(Signal Processing)板和BF(Beamforming)板,每塊電路板中都有FPGA 芯片,F(xiàn)PGA 執(zhí)行的代碼是固化在配置芯片F(xiàn)lash中。當(dāng)系統(tǒng)上電時,芯片會從Flash 中下載執(zhí)行代碼。這樣的架構(gòu)在實際使用中發(fā)現(xiàn)的問題:
(1)一旦FPGA 代碼需要更新或升級,則需要服務(wù)工程師現(xiàn)場更換電路板,同時將舊電路板返廠,再由加工廠將Flash 芯片的內(nèi)容重新更新;或采用專用JTAG 下載器進(jìn)行代碼升級,需要在客戶現(xiàn)場拆機(jī)操作,比較耗時。這樣升級成本特別高,而且十分繁瑣,直接導(dǎo)致服務(wù)成本增加。
(2)對于硬件完全相同的兩個電路板,但由于Flash 中存儲的程序不同,導(dǎo)致同一個電路板有兩個PartNumber。也就是對于一個完全相同的電路板,僅僅由于存儲的程序不同,還需要同時維護(hù)兩套PartNumber,直接導(dǎo)致管理成本增加。
針對上述問題,將FPGA 固件升級方案進(jìn)行調(diào)整,基本設(shè)計思路如下:
FPGA 在線升級結(jié)構(gòu)框圖如圖1 所示。

圖1 FPGA 在線升級結(jié)構(gòu)框圖
本設(shè)計將FLASH 的16M 存儲空間等分成兩個部分,在QSPI-Flash 中,存儲了兩個FPGA 的配置程序,一個是“Golden Boot”(G) 另一個是“Update Boot”(U)。根據(jù)XC7K325T 芯片支持Multiboot(多鏡像啟動功能),基本原理如圖2 所示,Golden 文件是原始出廠程序,F(xiàn)LASH 中的起始位置為address 0,即Flash 啟動時加載的位置;Update 文件是更新文件,位于FLASH 的Address X,X 可以根據(jù)文件大小進(jìn)行調(diào)整,本設(shè)計中的位置為FLASH 中間部分。SP 板上電后,在啟動階段,XC7K325T 芯片中ICAP 模塊會從Flash的首地址開始,讀取Golden 文件。當(dāng)Golden 程序讀取完后,會執(zhí)行跳轉(zhuǎn)命令,會根據(jù)WBSTART 中的地址,直接跳轉(zhuǎn)到Update 文件的起始地址,繼續(xù)進(jìn)行讀取配置文件動作。當(dāng)Update 文件讀取完成后,F(xiàn)PGA 代碼配置成功,Config_done信號釋放。

圖2 FPGA 的MultiBoot 配置方式
如果由于某種原因讀取Update 配置文件出錯(如讀取過程出錯,或update 文件存儲錯誤),F(xiàn)PGA 會重新調(diào)取Golden 配置文件。這就是MultiBoot 的Fallback 功能。這樣的機(jī)制使得系統(tǒng)具有魯棒性。同時可擴(kuò)展性得到了大大的增強(qiáng)。具體的FallBack 執(zhí)行過程如圖3 所示。

圖3 FallBack 執(zhí)行過程
通常Golden 配置文件僅僅具有最簡單的必要功能(如PCIE,F(xiàn)lash_Programmer,Hardware_info 等),而Update 文件則存儲的是全部功能,也就是系統(tǒng)工作使用的全程序。通常Golden 文件是幾乎不會做改動的,Golden 文件在電路板加工廠出廠時,已經(jīng)被固化在指定空間內(nèi)。針對這樣的存儲和執(zhí)行機(jī)制,可以增加許多可擴(kuò)展的功能。
如圖4 所示,當(dāng)需要更新Update 文件時,HOST PC 端通過上層應(yīng)用,將需要更新的Update 下載文件U',(通常格式為.bit 或者.mcs)通過PCIE 總線將數(shù)據(jù)傳遞到FPGA,F(xiàn)PGA的Flash_Programmer 功能模塊會將這個U'文件替換原來的Updte 文件。上層程序被設(shè)計為只能對Upadete 的空間進(jìn)行刷寫,而Golden 文件的空間是禁止讀寫的。這樣也就保證了Golden 文件的安全。在升級過程中,即使upadte 出錯,Golden仍然好用。

圖4 SP 板的更新原理
BF 板的FPGA 并沒有配備存儲配置文件的Flash 芯片,通過FPGA 的Slave Serial Mode 配置方式,來進(jìn)行下載文件。通常,這種模式配置方式是如圖5 所實現(xiàn),MCU 通過一個CPLD,將配置文件寫入FPGA,配置文件在MCU 中存儲。

圖5 Slave Serial Mode 配置方式
本設(shè)計中采用了Host PC+FPGA 的方式實現(xiàn),具體更新方案設(shè)計如圖6 所示。

圖6 更新方案設(shè)計框圖
Host PC 通過PCIE,將配置文件傳送到SP 板的FPGA,SP 板的FPGA 再將這個文件重新解析打包,對BF 板的FPGA 進(jìn)行配置。
本設(shè)計中共包括三個部分開發(fā),應(yīng)用程序設(shè)計,windows 驅(qū)動設(shè)計以及FPGA 硬件功能實現(xiàn)。應(yīng)用程序主要分為兩個模塊功能:(1)將FPGA 的bit 文件通過PCIE 總線下載到SP 板的Flash中,只更新Update 部分的Flash 空間;(2)將FPGA 的bin 文件通過PCIE 總線,在SP 板的FPGA 中做協(xié)議解析,對BF 板進(jìn)行配置。
SP 板的配置過程如圖7 所示。

圖7 SP 板的配置過程
BF 板的配置過程,如圖8 箭頭部分所示。

圖8 BF 板的配置過程
硬件部分主要包括PCIE 模塊,F(xiàn)IFO 模塊,SPI 端口模塊,如圖9 所示。

圖9 硬件數(shù)據(jù)通路
(1)PCIE 模塊有以下幾個作用:硬件枚舉識別,提供標(biāo)準(zhǔn)PCIE 協(xié)議,數(shù)據(jù)分層,連接驅(qū)動;
(2)FIFO 模塊的作用:避免跨時鐘域,數(shù)據(jù)傳遞;
(3)SPI 模塊的作用:提供Flash 端口,提供標(biāo)準(zhǔn)的SPI 協(xié)議。
應(yīng)用程序設(shè)計基本界面,如圖10 所示,基本功能如下:

圖10 應(yīng)用程序設(shè)計
(1)獲取硬件SP&BF 設(shè)備ID;
(2)硬件讀寫擦除功能;
(3)進(jìn)度條顯示。
驅(qū)動工程生成文件如下:
(1).exe 文件為驅(qū)動執(zhí)行文件;
(2).inf 文件為硬件設(shè)備的信息;
(3).pdb 文件為程序的數(shù)據(jù)庫;
(4).sys 文件為驅(qū)動程序的可執(zhí)行代碼。
運(yùn)行exe 文件即可安裝驅(qū)動。
本設(shè)計共創(chuàng)建了3 個地址空間,加載驅(qū)動后,在系統(tǒng)任務(wù)管理器中觀察設(shè)備資源情況如圖11 所示。

圖11 PCIE 枚舉信息
本方案所有技術(shù)上的難點都已經(jīng)克服,經(jīng)過調(diào)試及驗證測試后,已經(jīng)配置在多型號臺車式醫(yī)療超聲系統(tǒng)中,并通過了整機(jī)測試。