孟憲華 李健鐸
(東軟醫(yī)療系統(tǒng)股份有限公司,遼寧 沈陽 110034)
在先前低版本的臺(tái)車式醫(yī)療超聲系統(tǒng)中,配置了SP(Signal Processing)板和BF(Beamforming)板,每塊電路板中都有FPGA 芯片,F(xiàn)PGA 執(zhí)行的代碼是固化在配置芯片F(xiàn)lash中。當(dāng)系統(tǒng)上電時(shí),芯片會(huì)從Flash 中下載執(zhí)行代碼。這樣的架構(gòu)在實(shí)際使用中發(fā)現(xiàn)的問題:
(1)一旦FPGA 代碼需要更新或升級(jí),則需要服務(wù)工程師現(xiàn)場(chǎng)更換電路板,同時(shí)將舊電路板返廠,再由加工廠將Flash 芯片的內(nèi)容重新更新;或采用專用JTAG 下載器進(jìn)行代碼升級(jí),需要在客戶現(xiàn)場(chǎng)拆機(jī)操作,比較耗時(shí)。這樣升級(jí)成本特別高,而且十分繁瑣,直接導(dǎo)致服務(wù)成本增加。
(2)對(duì)于硬件完全相同的兩個(gè)電路板,但由于Flash 中存儲(chǔ)的程序不同,導(dǎo)致同一個(gè)電路板有兩個(gè)PartNumber。也就是對(duì)于一個(gè)完全相同的電路板,僅僅由于存儲(chǔ)的程序不同,還需要同時(shí)維護(hù)兩套PartNumber,直接導(dǎo)致管理成本增加。
針對(duì)上述問題,將FPGA 固件升級(jí)方案進(jìn)行調(diào)整,基本設(shè)計(jì)思路如下:
FPGA 在線升級(jí)結(jié)構(gòu)框圖如圖1 所示。
圖1 FPGA 在線升級(jí)結(jié)構(gòu)框圖
本設(shè)計(jì)將FLASH 的16M 存儲(chǔ)空間等分成兩個(gè)部分,在QSPI-Flash 中,存儲(chǔ)了兩個(gè)FPGA 的配置程序,一個(gè)是“Golden Boot”(G) 另一個(gè)是“Update Boot”(U)。根據(jù)XC7K325T 芯片支持Multiboot(多鏡像啟動(dòng)功能),基本原理如圖2 所示,Golden 文件是原始出廠程序,F(xiàn)LASH 中的起始位置為address 0,即Flash 啟動(dòng)時(shí)加載的位置;Update 文件是更新文件,位于FLASH 的Address X,X 可以根據(jù)文件大小進(jìn)行調(diào)整,本設(shè)計(jì)中的位置為FLASH 中間部分。SP 板上電后,在啟動(dòng)階段,XC7K325T 芯片中ICAP 模塊會(huì)從Flash的首地址開始,讀取Golden 文件。當(dāng)Golden 程序讀取完后,會(huì)執(zhí)行跳轉(zhuǎn)命令,會(huì)根據(jù)WBSTART 中的地址,直接跳轉(zhuǎn)到Update 文件的起始地址,繼續(xù)進(jìn)行讀取配置文件動(dòng)作。當(dāng)Update 文件讀取完成后,F(xiàn)PGA 代碼配置成功,Config_done信號(hào)釋放。
圖2 FPGA 的MultiBoot 配置方式
如果由于某種原因讀取Update 配置文件出錯(cuò)(如讀取過程出錯(cuò),或update 文件存儲(chǔ)錯(cuò)誤),F(xiàn)PGA 會(huì)重新調(diào)取Golden 配置文件。這就是MultiBoot 的Fallback 功能。這樣的機(jī)制使得系統(tǒng)具有魯棒性。同時(shí)可擴(kuò)展性得到了大大的增強(qiáng)。具體的FallBack 執(zhí)行過程如圖3 所示。
圖3 FallBack 執(zhí)行過程
通常Golden 配置文件僅僅具有最簡(jiǎn)單的必要功能(如PCIE,F(xiàn)lash_Programmer,Hardware_info 等),而Update 文件則存儲(chǔ)的是全部功能,也就是系統(tǒng)工作使用的全程序。通常Golden 文件是幾乎不會(huì)做改動(dòng)的,Golden 文件在電路板加工廠出廠時(shí),已經(jīng)被固化在指定空間內(nèi)。針對(duì)這樣的存儲(chǔ)和執(zhí)行機(jī)制,可以增加許多可擴(kuò)展的功能。
如圖4 所示,當(dāng)需要更新Update 文件時(shí),HOST PC 端通過上層應(yīng)用,將需要更新的Update 下載文件U',(通常格式為.bit 或者.mcs)通過PCIE 總線將數(shù)據(jù)傳遞到FPGA,F(xiàn)PGA的Flash_Programmer 功能模塊會(huì)將這個(gè)U'文件替換原來的Updte 文件。上層程序被設(shè)計(jì)為只能對(duì)Upadete 的空間進(jìn)行刷寫,而Golden 文件的空間是禁止讀寫的。這樣也就保證了Golden 文件的安全。在升級(jí)過程中,即使upadte 出錯(cuò),Golden仍然好用。
圖4 SP 板的更新原理
BF 板的FPGA 并沒有配備存儲(chǔ)配置文件的Flash 芯片,通過FPGA 的Slave Serial Mode 配置方式,來進(jìn)行下載文件。通常,這種模式配置方式是如圖5 所實(shí)現(xiàn),MCU 通過一個(gè)CPLD,將配置文件寫入FPGA,配置文件在MCU 中存儲(chǔ)。
圖5 Slave Serial Mode 配置方式
本設(shè)計(jì)中采用了Host PC+FPGA 的方式實(shí)現(xiàn),具體更新方案設(shè)計(jì)如圖6 所示。
圖6 更新方案設(shè)計(jì)框圖
Host PC 通過PCIE,將配置文件傳送到SP 板的FPGA,SP 板的FPGA 再將這個(gè)文件重新解析打包,對(duì)BF 板的FPGA 進(jìn)行配置。
本設(shè)計(jì)中共包括三個(gè)部分開發(fā),應(yīng)用程序設(shè)計(jì),windows 驅(qū)動(dòng)設(shè)計(jì)以及FPGA 硬件功能實(shí)現(xiàn)。應(yīng)用程序主要分為兩個(gè)模塊功能:(1)將FPGA 的bit 文件通過PCIE 總線下載到SP 板的Flash中,只更新Update 部分的Flash 空間;(2)將FPGA 的bin 文件通過PCIE 總線,在SP 板的FPGA 中做協(xié)議解析,對(duì)BF 板進(jìn)行配置。
SP 板的配置過程如圖7 所示。
圖7 SP 板的配置過程
BF 板的配置過程,如圖8 箭頭部分所示。
圖8 BF 板的配置過程
硬件部分主要包括PCIE 模塊,F(xiàn)IFO 模塊,SPI 端口模塊,如圖9 所示。
圖9 硬件數(shù)據(jù)通路
(1)PCIE 模塊有以下幾個(gè)作用:硬件枚舉識(shí)別,提供標(biāo)準(zhǔn)PCIE 協(xié)議,數(shù)據(jù)分層,連接驅(qū)動(dòng);
(2)FIFO 模塊的作用:避免跨時(shí)鐘域,數(shù)據(jù)傳遞;
(3)SPI 模塊的作用:提供Flash 端口,提供標(biāo)準(zhǔn)的SPI 協(xié)議。
應(yīng)用程序設(shè)計(jì)基本界面,如圖10 所示,基本功能如下:
圖10 應(yīng)用程序設(shè)計(jì)
(1)獲取硬件SP&BF 設(shè)備ID;
(2)硬件讀寫擦除功能;
(3)進(jìn)度條顯示。
驅(qū)動(dòng)工程生成文件如下:
(1).exe 文件為驅(qū)動(dòng)執(zhí)行文件;
(2).inf 文件為硬件設(shè)備的信息;
(3).pdb 文件為程序的數(shù)據(jù)庫;
(4).sys 文件為驅(qū)動(dòng)程序的可執(zhí)行代碼。
運(yùn)行exe 文件即可安裝驅(qū)動(dòng)。
本設(shè)計(jì)共創(chuàng)建了3 個(gè)地址空間,加載驅(qū)動(dòng)后,在系統(tǒng)任務(wù)管理器中觀察設(shè)備資源情況如圖11 所示。
圖11 PCIE 枚舉信息
本方案所有技術(shù)上的難點(diǎn)都已經(jīng)克服,經(jīng)過調(diào)試及驗(yàn)證測(cè)試后,已經(jīng)配置在多型號(hào)臺(tái)車式醫(yī)療超聲系統(tǒng)中,并通過了整機(jī)測(cè)試。