謝長(zhǎng)生,陳振嬌,張 俊,王勝輝
(1.中國(guó)電子科技集團(tuán)公司第五十八研究所,江蘇 無(wú)錫214035;2.上海海驕機(jī)電工程有限公司,上海201801;3.上海市特種設(shè)備監(jiān)督檢驗(yàn)技術(shù)研究院,上海200333)
PE 管的原材料是聚乙烯,它是一種高分子有機(jī)合成材料。PE 管的焊接質(zhì)量直接影響到管道系統(tǒng)的安全和壽命,為了安全考慮,必須對(duì)PE 管環(huán)焊縫進(jìn)行內(nèi)部缺陷的全面探傷,但是目前對(duì)PE 管焊接缺陷檢測(cè)尚無(wú)成熟可靠的方法,國(guó)內(nèi)和國(guó)際上在此領(lǐng)域尚處于探索和研究階段。相比于采用傳統(tǒng)的超聲無(wú)損探傷,超聲相控陣檢測(cè)技術(shù)具有較寬的有效探傷范圍、良好的缺陷定位和定量分析能力、更高的缺陷分辨率及檢出率[1]。目前市面上的相控陣探傷儀主要用于金屬領(lǐng)域,在PE 材料及環(huán)焊縫探傷方面尚有待改進(jìn)和增強(qiáng)。
PE 超聲相控陣探傷儀由于要用于作業(yè)現(xiàn)場(chǎng)檢測(cè),所以對(duì)其便攜性、待機(jī)時(shí)間長(zhǎng)等有一定要求。相控陣探傷儀的算法復(fù)雜、計(jì)算量大、實(shí)時(shí)性強(qiáng),所以其軟硬件實(shí)現(xiàn)架構(gòu)必須具有很強(qiáng)的信號(hào)和數(shù)據(jù)處理能力。TI 公司推出了C66AK2Hxx 系列數(shù)字信號(hào)處理SoC 器件,內(nèi)含多達(dá)4 個(gè)ARM 核、8 個(gè)C66x DSP核。此處設(shè)計(jì)采用該系列中的一款C66AK2H06 芯片,其含2 個(gè)ARM 核、4 個(gè)C66x DSP 核。將其運(yùn)用到PE 超聲相控陣探傷儀設(shè)計(jì)中,可達(dá)到高性能、低功耗、低成本的目標(biāo)。
PE 超聲相控陣探傷儀主要有信號(hào)發(fā)射/接收、信號(hào)處理、圖像處理、用戶人機(jī)界面、測(cè)量計(jì)算、數(shù)據(jù)庫(kù)管理等功能組成。其中信號(hào)發(fā)射/接收、信號(hào)處理、圖像處理是相控陣探傷儀的核心部分,其處理流程如圖1 所示。
圖1 PE 超聲相控陣探傷儀算法處理流程
發(fā)射脈沖放大、VCA、ADC 為模擬前端,功能為生成高壓發(fā)射脈沖以驅(qū)動(dòng)探頭、接受探頭回波信號(hào)及預(yù)放、壓控增益放大以及模數(shù)轉(zhuǎn)換等。發(fā)射波束形成、接收波束形成為數(shù)字前端,發(fā)射波束形成產(chǎn)生發(fā)射脈沖序列,接收波束形成接收來(lái)自于多路ADC的數(shù)據(jù),實(shí)現(xiàn)對(duì)某一給定深度和方向的聚焦,其后經(jīng)過解調(diào)和FIR 濾波、動(dòng)態(tài)范圍壓縮、邊緣增強(qiáng)、噪聲抑制、灰階變換、幀插值等各階段信號(hào)處理、數(shù)據(jù)處理和圖像處理,最后在LCD 上顯示出被檢測(cè)物的超聲圖像[2-3]。此外還有測(cè)量、計(jì)算分析、數(shù)據(jù)庫(kù)管理、掃查控制以及用戶人機(jī)界面等功能,一般由上位機(jī)(HOST 端)實(shí)現(xiàn)。
超聲相控陣探傷儀的具體架構(gòu)實(shí)現(xiàn)有不同的方法。前端設(shè)計(jì)一般采用高壓開關(guān)、VCA、ADC 等器件,電路結(jié)構(gòu)相對(duì)比較固定。發(fā)射、接收波束形成目前主要采用FPGA 或ASIC 來(lái)實(shí)現(xiàn),以上是前端處理,中后端實(shí)現(xiàn)方案比較多,有FPGA+PC 架構(gòu)的,有FPGA+DSP+PC 架構(gòu)等。在此采用TI 公司推出的C66AK2H06 異構(gòu)多核SoC 器件,除了波束形成這種計(jì)算數(shù)據(jù)通量大的運(yùn)算采用FPGA 實(shí)現(xiàn)外,其它信號(hào)處理、數(shù)據(jù)處理和圖像處理及HOST 端的用戶人機(jī)界面、測(cè)量計(jì)算、數(shù)據(jù)庫(kù)管理等功能均可采用一片C66AK2H06 芯片實(shí)現(xiàn),也省去了HOST 端處理的CPU 芯片或PC 板,提高了產(chǎn)品的便攜性,降低了功耗,具有一定的先進(jìn)性和優(yōu)越性。
設(shè)計(jì)實(shí)現(xiàn)的PE 超聲相控陣探傷儀的系統(tǒng)框圖如圖2 所示。
圖2 PE 超聲相控陣探傷儀系統(tǒng)框圖
基于C66AK2H06 異構(gòu)多核SoC 芯片對(duì)超聲成像的中、后端算法處理以及HOST 應(yīng)用程序進(jìn)行了并行設(shè)計(jì)與實(shí)現(xiàn),充分利用了其中多核DSP 的數(shù)據(jù)處理性能與C 語(yǔ)言編程的靈活性,采用軟件實(shí)現(xiàn)數(shù)據(jù)和圖像處理,提高設(shè)計(jì)的靈活性,使系統(tǒng)具有可擴(kuò)展性和可升級(jí)性優(yōu)點(diǎn)。本系統(tǒng)軟件架構(gòu)和算法處理流程圖3 所示。圖中標(biāo)灰色的模塊為ARM(HOST)上運(yùn)行的軟件模塊,無(wú)標(biāo)色的模塊為DSP(Local)上運(yùn)行的軟件模塊。ARM 端主要實(shí)現(xiàn)用戶應(yīng)用程序,包括用戶界面、測(cè)量計(jì)算、注冊(cè)、檔案、報(bào)告、工作表管理以及輸出和聯(lián)網(wǎng)功能。DSP 端主要實(shí)現(xiàn)掃查控制、解調(diào)、基于Vector(掃描線)和Frame(掃描幀)的數(shù)據(jù)計(jì)算、掃描變換、圖像處理等。本系統(tǒng)中的信號(hào)處理、數(shù)據(jù)處理和圖像處理算法運(yùn)算量大,采用DSP實(shí)現(xiàn),正好發(fā)揮C66AK2H06 SoC 中多核DSP 的高性能數(shù)字信號(hào)處理能力和靈活的算法實(shí)現(xiàn)能力。
圖3 軟件架構(gòu)和其算法處理流程
多核DSP 器件通過將多個(gè)DSP 內(nèi)核集成在一個(gè)芯片內(nèi),極大提高了數(shù)字信號(hào)處理芯片的運(yùn)算性能。C66AK2Hxx 系列高性能數(shù)字信號(hào)處理SoC 采用異構(gòu)多核架構(gòu),DSP 部分的每個(gè)DSP 內(nèi)核可以運(yùn)行單獨(dú)的程序,且擁有相互獨(dú)立的內(nèi)存空間,可看作是一種典型的MIMD 計(jì)算機(jī)。不同于多個(gè)DSP 芯片組成的系統(tǒng)架構(gòu),多核DSP 單芯片具有片上共享的存儲(chǔ)空間以及快速的核間通信能力。
此處采用的66AK2H06 芯片,擁有2 個(gè)ARM核和4 個(gè)DSP 核,其功能框圖如圖4 所示。
圖4 C66AK2H06 功能框圖
其中,DSP 核為1.2 GHz 定/浮點(diǎn)DSP 核,性能高達(dá)定點(diǎn)40 GMacs/Core、浮點(diǎn)20 GFlops/Core 運(yùn)算能力。采用4 級(jí)存儲(chǔ)結(jié)構(gòu),每個(gè)C66x 核心上都集成了32 kB 的L1 程序緩存和L1 數(shù)據(jù)緩存以及512 kB 的本地L2 存儲(chǔ)。ARM 核為A15 ARM,工作在1.4GHz下,具有32 kB 的L1 程序緩存和L1 數(shù)據(jù)緩存以及共用的4 MB 的L2 存儲(chǔ)。除此之外,芯片還集成了多核共享存儲(chǔ)器控制器(MSMC),所有核共享MSMC控制的存儲(chǔ)空間,包括6 MB 的片上SRAM 以及通過72-Bit EMIF 接口擴(kuò)展的DDR3 外部DRAM[4]。
程序并行設(shè)計(jì)首先對(duì)應(yīng)用進(jìn)行任務(wù)規(guī)劃,將一個(gè)應(yīng)用分解為多個(gè)任務(wù),然后根據(jù)一定的任務(wù)分配模式將其分配到相應(yīng)的DSP 核上執(zhí)行。實(shí)現(xiàn)方案歸納分析如下:
1)主從模式
主核作為控制核進(jìn)行任務(wù)分配、調(diào)度和觸發(fā)。該模式適用于含有多個(gè)獨(dú)立任務(wù)的應(yīng)用。主核與從核間需要進(jìn)行頻繁地消息通信,從核之間不需要進(jìn)行同步和數(shù)據(jù)傳遞。
2)基于任務(wù)的分配模式
各核處理不同的任務(wù),核之間的工作以流水線的方式進(jìn)行。該模式適用于分布式控制和數(shù)據(jù)處理的應(yīng)用,這類應(yīng)用中通常包含多個(gè)復(fù)雜的算法模塊,單個(gè)DSP 核不能滿足計(jì)算能力需求,且各算法模塊間有很強(qiáng)的數(shù)據(jù)依賴關(guān)系[5]。該實(shí)現(xiàn)方式很容易實(shí)現(xiàn)核間任務(wù)的分配,但要在每個(gè)核中分配相近的計(jì)算負(fù)荷是很困難的。
3)基于數(shù)據(jù)的分配模式
各核處理相同的任務(wù),每個(gè)核分配、處理輸入新掃描線或新掃描幀數(shù)據(jù)的一部分,且通常每個(gè)核所分配的輸入運(yùn)算數(shù)據(jù)量大小是相等的,所以每個(gè)核上的任務(wù)計(jì)算量是均衡的。該實(shí)現(xiàn)方式需要在數(shù)據(jù)的劃分和計(jì)算結(jié)果的整合上作相應(yīng)的考慮和優(yōu)化。
4)基于幀的分配模式
該實(shí)現(xiàn)方式是一個(gè)核或核集合處理給定掃描幀的所有處理功能,包括該幀所包含的所有掃描線處理。多個(gè)核或核集合可同時(shí)處理多個(gè)連續(xù)獨(dú)立幀,根據(jù)系統(tǒng)的幀速率要求確定需要的獨(dú)立的核或核集合個(gè)數(shù)。此法的不足之處是從數(shù)據(jù)輸入到幀計(jì)算結(jié)果的延遲要比前兩種方法略大,但DSP 核處理任務(wù)均衡,數(shù)據(jù)處理吞吐率高,在高強(qiáng)度的計(jì)算時(shí)會(huì)用到。
系統(tǒng)對(duì)實(shí)時(shí)性有一定的要求,最終設(shè)計(jì)方案綜合了上述所列的前三種方法的多核程序開發(fā)任務(wù)分配模式,采用了Core0 核為主核,Core1耀Core3 為從核。Core1-Core2、Core3 以及Core0 之間以基于任務(wù)的分配模式采用流水方式執(zhí)行算法處理。Core1、Core2 之間則采用基于數(shù)據(jù)的分配模式對(duì)接收波束形成數(shù)據(jù)分塊并行處理。
多核并行計(jì)算的關(guān)鍵是如何分配每個(gè)核完成任務(wù)的時(shí)間使之相近。如果每個(gè)核之間的計(jì)算任務(wù)分配不均衡,則系統(tǒng)最終性能會(huì)受計(jì)算量最繁重、耗時(shí)最長(zhǎng)的那個(gè)核所限制。一般來(lái)說數(shù)據(jù)吞吐量大、算法復(fù)雜的處理要花很長(zhǎng)時(shí)間。
為高效地實(shí)現(xiàn)超聲成像算法,首先對(duì)算法在單個(gè)DSP 核上運(yùn)行的性能進(jìn)行評(píng)估,然后根據(jù)算法各模塊的時(shí)間消耗和數(shù)據(jù)依賴關(guān)系進(jìn)行任務(wù)規(guī)劃,將算法分配到4 個(gè)DSP 核上執(zhí)行。核間通信采用MessageQ 消息隊(duì)列和Notify 方案來(lái)實(shí)現(xiàn)各DSP 核間的掃查指令傳遞、狀態(tài)通知和任務(wù)同步,使用EDMA3 來(lái)實(shí)現(xiàn)片外(FPGA 和DDR3 內(nèi)存)、共享內(nèi)存、DSP 核本地內(nèi)存之間的數(shù)據(jù)交換。利用Core 0實(shí)現(xiàn)統(tǒng)一的同步控制、消息分發(fā)和數(shù)據(jù)傳輸接口。
最終DSP Core 0耀Core 3 核任務(wù)以及在系統(tǒng)中所承擔(dān)的算法運(yùn)算分配如表1 所示。
表1 DSP 核任務(wù)分配
Core 0 為主控核,主要進(jìn)行消息的分發(fā)、參數(shù)數(shù)據(jù)的搬移、EDMA 控制,以實(shí)現(xiàn)DSP 各運(yùn)算模塊、FPGA 和前端的設(shè)置、以及Core 1耀Core 3 算法任務(wù)的統(tǒng)一調(diào)度。復(fù)數(shù)正交解調(diào)和FIR 濾波放在Core 1、Core 2 上執(zhí)行。由于復(fù)數(shù)正交解調(diào)和FIR 濾波運(yùn)算是很耗時(shí)的算法運(yùn)算,此處采用兩個(gè)DSP 核,分別對(duì)經(jīng)過接收波束形成的多波束BM0、BM1 分開并行計(jì)算。行間平均、空間復(fù)合、頻率復(fù)合、數(shù)字掃描變換(Scan Converter)等放在Core 3 上執(zhí)行,數(shù)字掃描變換后的圖像處理如圖像增強(qiáng)等放在Core 0 核上運(yùn)行。設(shè)計(jì)使用C66AK2H06 的4 個(gè)DSP 核以流水方式從Core 1/Core 2→Core 3→Core 0 進(jìn)行數(shù)據(jù)處理。DSP 核間的數(shù)據(jù)傳輸、參數(shù)傳遞、狀態(tài)通知和控制如圖5 所示。
圖5 DSP 端運(yùn)行流程
圖中實(shí)線代表超聲數(shù)據(jù)的傳輸,虛線代表MessageQ、Notify、中斷的傳輸,長(zhǎng)劃線代表EDMA和SRIO 數(shù)據(jù)傳輸控制。由圖可見,Core 0 作為主控核接收HOST(ARM)傳來(lái)的掃查指令,然后通過消息隊(duì)列將其派發(fā)給各個(gè)所需要的DSP 核、FPGA 及其它前端器件,完成掃查序列切換的掃查參數(shù)設(shè)置。DSP 接收來(lái)自FPGA 的中斷,將波束形成后的數(shù)據(jù)通過SRIO 總線,傳輸?shù)紺ore1 和Core 2 的MSMC SRAM 空間。其后依次通過Core 1/Core 2、Core 3、Core0 的算法處理,并將處理好的數(shù)據(jù)最終輸出到HOST 作進(jìn)一步處理及顯示。同時(shí)各個(gè)核的運(yùn)行狀態(tài)和輸出數(shù)據(jù)的內(nèi)存首地址通過Notify/中斷也統(tǒng)一發(fā)送給Core0,然后Core0 在適當(dāng)時(shí)刻通過Notify/中斷通知相關(guān)DSP 核啟動(dòng)數(shù)據(jù)傳輸和任務(wù)啟動(dòng),使多核中的各算法任務(wù)和數(shù)據(jù)傳輸有條不紊進(jìn)行。
核間通信包括數(shù)據(jù)傳輸和同步。數(shù)據(jù)傳輸包括核間算法參數(shù)以及掃查指令的傳輸;同步主要是在核間交互任務(wù)完成狀態(tài)和共享資源的狀態(tài)。由于算法參數(shù)、掃查指令、狀態(tài)變量的數(shù)據(jù)量大小是不一樣的,所以要采取不同的通信方式。
在Host(ARM)和Local(DSP)以及不同DSP 核任務(wù)之間傳輸?shù)乃惴▍?shù),其大小在幾十kB 到幾百kB,此處采用EDMA 傳輸在不同核間內(nèi)存地址空間進(jìn)行傳輸,掃查指令大小32 B耀64 B,采用消息隊(duì)列(MessageQ)機(jī)制傳輸,同步采用Notify/中斷來(lái)實(shí)現(xiàn)。MessageQ 雖然比Notify/中斷延遲大,比EDMA帶寬低,但靈活性好,尤其是,調(diào)用者無(wú)需考慮接收者和接收處理的事,這使得核間頻繁的可變長(zhǎng)度掃查指令傳輸變得很方便。對(duì)MessageQ 機(jī)制,接受者需要事先訂閱它們感興趣的信息。消息分發(fā)模塊維持訂閱列表,每當(dāng)消息發(fā)布,便將消息發(fā)給訂閱者。
在HOST(ARM)和Local(DSP)之間的通信,在此選用TI 提供的SYSLINK。SYSLINK 是一個(gè)runtime 軟件和移植工具包,簡(jiǎn)化了ARM 和DSP 之間的通信,提供ARM 和DSP 之間信息交換的通信協(xié)議,實(shí)現(xiàn)多核之間的軟件互連。同時(shí)通過SYSLINK使用,一個(gè)核可以指定為Master,控制其它Slave 核的執(zhí)行,包括Slave 核的bootload 啟動(dòng),ARM 也可以通過SYSLINK 存取公用模塊[6]。
HOST-DSP 間通信包括:接受ARM 過來(lái)的消息;將消息傳遞到訂閱消息的DSP 線程中;將消息發(fā)送給ARM 不同的線程。整體通信情況如圖6。消息隊(duì)列方案通過在共享內(nèi)存中開辟消息隊(duì)列的方法實(shí)現(xiàn)DSP 核間的通信,接收DSP 核通過中斷或輪詢專屬消息隊(duì)列的方式來(lái)完成消息的獲取,發(fā)送DSP 核可擁有多個(gè)寫消息端,即可同時(shí)向多個(gè)DSP 核發(fā)送消息。該方案支持可變長(zhǎng)度數(shù)據(jù)的發(fā)送和接收,可滿足DSP 核同步、核間數(shù)據(jù)傳輸?shù)榷喾N需求[7-8]。
圖6 HOST-DSP 間通信
DSP 上的消息分發(fā)使用了消息隊(duì)列和信號(hào)量。硬件信號(hào)量是多核處理器中一種新模塊,實(shí)現(xiàn)快速實(shí)時(shí)的操作,并和硬件中斷聯(lián)系在一起,實(shí)現(xiàn)多核之間的握手協(xié)議,其工作流程如圖7 所示。
Core 0 中的Diapatcher 進(jìn)程是負(fù)責(zé)消息分發(fā)的,其消息分發(fā)的流程如下:
Step1:初始化線程、MsgNotify、消息隊(duì)列方案所用資源;
Step2:使用MessageQ_get()函數(shù)等待HOST 傳來(lái)消息;
圖7 DSP 上的消息分發(fā)工作流程
Step3:對(duì)消息進(jìn)行同步處理;
Step4:將消息發(fā)送到目標(biāo)隊(duì)列中;
Step5:通知目標(biāo)線程處理消息。
消息分發(fā)過程中,Core 0耀Core 3 中的目標(biāo)線程處理如下:
Step1:等待Core0 中的Diapatcher 發(fā)送過來(lái)的信號(hào)量;
Step2:從消息隊(duì)列中獲取消息;
Step2:根據(jù)MessageID 處理消息;
Step4:釋放消息。
C66AK2H06 芯片和片外的通信除了和DDR3存儲(chǔ)器、LCD 顯示屏、SD 卡及網(wǎng)絡(luò)之外,主要是和FPGA 通信,用于前端控制參數(shù)傳送的和波束形成數(shù)據(jù)的接收。此處采用SRIO 接口。SRIO 通信接口優(yōu)點(diǎn)是占用管腳少,數(shù)據(jù)帶寬高。系統(tǒng)超聲掃查時(shí)序如圖8,一次掃查波束形成數(shù)據(jù)最大32 kB,接收時(shí)間0.2ms,故BFM 數(shù)據(jù)速率為160MB/s。設(shè)計(jì)中的SRIO 接口速率選擇為3.125Gb/s,其數(shù)據(jù)傳輸速率峰值可達(dá)312.5 MB/s,大于BFM 數(shù)據(jù)速率,滿足波束形成數(shù)據(jù)傳輸?shù)男枰?。同時(shí)使用GPIO 接口,產(chǎn)生中斷INT_BFMRD 進(jìn)行傳輸?shù)耐娇刂疲瑪?shù)據(jù)傳輸采用DirectIO 機(jī)制。
圖8 超聲掃查時(shí)序
C66AK2H06 內(nèi)存系統(tǒng)可劃分為L(zhǎng)1P/L1D、L2、MSMC SRAM、DDR3 存儲(chǔ)四級(jí),其中前三級(jí)為片上存儲(chǔ)。32 kB 的L1D、512 kB 的L2 既可以作Cache也可以作SRAM 使用,視實(shí)際需要而定。不同層級(jí)存儲(chǔ)器有不同存取帶寬,依L1P/L1D、L2、MSMC SRAM、DDR3 次序遞減。高帶寬會(huì)減小取指、數(shù)據(jù)存取的時(shí)間,從而提高整個(gè)算法的運(yùn)算速度[9]。因此關(guān)鍵的代碼和數(shù)據(jù)應(yīng)盡量放在片上存儲(chǔ),甚至L1 上。表2 給出了不同層級(jí)的存儲(chǔ)器的理論帶寬。
表2 不同層級(jí)存儲(chǔ)器的理論帶寬
在DSP 軟件方案的6 MB 的MSMC RAM 中規(guī)劃了BeamBuffer、IQBuffer、VectorBuffer、FrameBuffer、ImageBuffer、DisplayBuffer 等幾部分,用于各DSP核、ARM 核中的各進(jìn)程處理數(shù)據(jù)的存儲(chǔ)和交換。其中,BeamBuffer 是暫存從FPGA 來(lái)的波束形成后的數(shù)據(jù);IQBuffer 是復(fù)數(shù)正交解調(diào)后的數(shù)據(jù);VectorBuffer是檢波后、掃查線處理的數(shù)據(jù)暫存;FrameBuffer 是掃查幀處理的數(shù)據(jù)暫存;ImageBuffer 是圖像后處理的數(shù)據(jù)緩存;DisplayBuffer 是圖像顯示的數(shù)據(jù)緩存。DDR3 片外存儲(chǔ)大小配置為64MB,DSP/ARM 代碼、消息通信、發(fā)射/接收波束形成Cache 參數(shù)數(shù)據(jù)、各算法處理的參數(shù)/表數(shù)據(jù)、掃查指令、程序堆??臻g都分配在DDR3 上。另外CineBuffer 也分配在DDR3上,用于DSP 和ARM 之間的連續(xù)128 幀圖像數(shù)據(jù)保存和傳輸。整個(gè)DSP 算法處理完的數(shù)據(jù)存儲(chǔ)到DDR3 的CineBuffer 區(qū)域,然后傳輸?shù)紿OST(ARM)端,用于其后與圖形、字符等數(shù)據(jù)等混合并顯示。
L1、L2 除了一部分用于Cache 外,同時(shí)可規(guī)劃出一部分作為SRAM 使用,用來(lái)存放對(duì)算法速度影響大的代碼、參數(shù)和數(shù)據(jù),提升DSP 核存取指令和數(shù)據(jù)的速度。由于L1、L2 的空間有限,所以一般只對(duì)當(dāng)前運(yùn)算用到的關(guān)鍵參數(shù)和數(shù)據(jù)才傳輸?shù)絃1、L2上。為充分利用DSP 核的運(yùn)算性能,DDR3、MSMC SRAM 與L1/L2 之間采用EDMA 傳輸和PingPong機(jī)制。多級(jí)內(nèi)存的具體規(guī)劃方式如圖9。
圖9 多級(jí)內(nèi)存規(guī)劃
此PE 超聲波相控陣探傷儀的核心基本上基于異構(gòu)多核信號(hào)處理SoC 來(lái)實(shí)現(xiàn),因此不需要獨(dú)立的CPU,F(xiàn)PGA 也可選擇較小一些的容量,故其便攜性和低功耗性能得到提高。系統(tǒng)實(shí)現(xiàn)的關(guān)鍵是系統(tǒng)響應(yīng)速度和運(yùn)算能力是否能滿足系統(tǒng)技術(shù)指標(biāo)要求。系統(tǒng)主要技術(shù)指標(biāo)如下:
探測(cè)深度>20cm;
掃查幀頻>20Hz;
線密度>200 線/幀;
系統(tǒng)啟動(dòng)時(shí)間<12s;
模式切換時(shí)間<1s。
通過對(duì)系統(tǒng)的測(cè)試,發(fā)現(xiàn)模式切換時(shí)間、掃查幀頻這兩項(xiàng)是主要需要優(yōu)化的指標(biāo)。
為優(yōu)化模式切換時(shí)間,需要考慮到:模式切換需要做的工作是掃查模式的設(shè)置、探頭文件等相關(guān)資源文件的讀取、波束形成Cache、解調(diào)、TGC、數(shù)字掃描變換的算法系數(shù)、曲線、查找表等算法參數(shù)的計(jì)算,以及算法參數(shù)的傳輸?shù)?。為減小模式切換時(shí)間,在此比較了對(duì)模式切換時(shí)間影響較大的算法參數(shù)計(jì)算及傳輸?shù)? 種方式,分別為:
方式1:ARM 計(jì)算,ScanCtrl 模塊位于ARM 上;
方式2:DSP 計(jì)算,ScanCtrl 模塊位于DSP Core 0 上;
方法3:DSP 分布計(jì)算,ScanCtrl 模塊主體計(jì)算功能位于DSP Core0,部分計(jì)算在DSP Core1耀Core 3中進(jìn)行。
由于參數(shù)計(jì)算中有大量的浮點(diǎn)運(yùn)算,所以用DSP 分布計(jì)算效果最好,既發(fā)揮了定/浮點(diǎn)DSP 核的優(yōu)勢(shì),也發(fā)揮了多核的優(yōu)勢(shì),使算法參數(shù)計(jì)算時(shí)間大幅度減少。其余部分參數(shù)計(jì)算是在本地進(jìn)行的,節(jié)省了其后參數(shù)數(shù)據(jù)傳輸?shù)臅r(shí)間,進(jìn)一步縮減模式切換時(shí)間。此外,模式切換時(shí)間還包括一幀掃描圖像通常接收、處理和顯示的時(shí)間,一般不會(huì)超過50 ms。優(yōu)化后模式切換時(shí)間可控制在1s 以內(nèi)。不同算法參數(shù)計(jì)算方法和對(duì)模式切換時(shí)間的影響對(duì)比如表所3 示。
表3 不同算法參數(shù)計(jì)算方法及結(jié)果比較
關(guān)于掃查幀頻,一方面和各核算法的計(jì)算速度有關(guān),另一方面和掃查序列切換的時(shí)間有關(guān)。掃查序列切換主要的工作內(nèi)容是掃查指令的傳輸、下一個(gè)掃查線的算法參數(shù)準(zhǔn)備就緒。為降低掃查序列切換時(shí)間(如圖8 中的T1),采用硬件中斷SCSync 來(lái)觸發(fā)掃查序列控制工作,并采用高中斷優(yōu)先級(jí),以減少掃查指令傳輸、下一個(gè)掃查線算法參數(shù)傳遞的響應(yīng)時(shí)間。中斷優(yōu)先級(jí)具體設(shè)定如表4 所示。
表4 中斷優(yōu)先級(jí)
實(shí)驗(yàn)測(cè)試表明,得到的掃查指令傳輸(大小為32 B,采用MessageQ)時(shí)間為6.2 μs,當(dāng)前掃查線算法參數(shù)傳遞時(shí)間為15μs 左右,加上FE 前端消息傳輸時(shí)間,總共不超過24μs。因此在實(shí)際設(shè)計(jì)中,從SCSync 到TxTrig 的T1 值,設(shè)定為30 μs 即可。對(duì)于探測(cè)深度20 cm,掃查周期可控制在230 μs 之內(nèi)(T1=30μs,T2+T3 取200 μs 值),對(duì)于200 掃描線/幀,幀頻指標(biāo)即可達(dá)到21.7Hz 以上,滿足幀頻20Hz設(shè)計(jì)要求。
當(dāng)探測(cè)深度降低時(shí),掃查幀頻就會(huì)提高。為獲得較為理想的實(shí)時(shí)成像,要求算法處理幀頻在40Hz以上,這樣對(duì)每個(gè)DSP 核上算法運(yùn)算執(zhí)行時(shí)間會(huì)有相應(yīng)的限制。假設(shè)1 幀256 線,線頻是256×40Hz=10240Hz,亦即執(zhí)行Vector Processing 任務(wù)的DSP 核總處理時(shí)間不超過97.66μs,執(zhí)行Frame Processing任務(wù)的DSP 核總處理時(shí)間不超過25ms,即Core1、Core2 的計(jì)算負(fù)荷是最大的。
Core1、Core2 的運(yùn)算任務(wù)是復(fù)數(shù)正交解調(diào)、FIR濾波、抽取、檢波、焦點(diǎn)拼接、動(dòng)態(tài)范圍壓縮等。其中比較耗時(shí)的是復(fù)數(shù)正交解調(diào)、FIR 濾波。為加快速度,在此將計(jì)算使用頻率高的SIN/COS 表(<4 kB)、FIR 濾波器系數(shù)緩存在L1 存儲(chǔ)器中,將TGCTable、SQRT 表、LOG 表等算法參數(shù)緩存在L2 存儲(chǔ)器內(nèi),程序代碼存儲(chǔ)在MSMC SRAM 中,運(yùn)算的輸入輸出數(shù)據(jù)存儲(chǔ)在MSMC SRAM 中,通過盡量使用高的內(nèi)存讀取速度提高了DSP 核整體處理性能。經(jīng)過實(shí)驗(yàn)測(cè)試,復(fù)數(shù)正交解調(diào)所花費(fèi)運(yùn)算時(shí)間為18.3 μs,128階FIR 濾波所花費(fèi)運(yùn)算時(shí)間為26.7μs,兩者相加為45μs,占DSP 核可用時(shí)間的46%,為滿足線頻、幀頻的要求提供了保證。
通過對(duì)基于C66AK2H06 的相控陣探傷儀設(shè)計(jì)的優(yōu)化和結(jié)果分析,系統(tǒng)實(shí)現(xiàn)的性能滿足技術(shù)指標(biāo)需求,基于多核DSP 的算法能夠處理每秒鐘40 幀以上尺寸為512×256 的超聲圖像,滿足了實(shí)時(shí)成像的要求。PE 超聲相控陣探傷儀的實(shí)際界面如圖10。
圖10 PE 超聲相控陣探傷儀界面圖
為測(cè)試本PE 超聲相控陣探傷儀的實(shí)際效果,對(duì)PE 管焊接質(zhì)量進(jìn)行檢測(cè),實(shí)驗(yàn)結(jié)果如圖11。圖11(a)所示表明焊接正常,圖中的白色亮點(diǎn)是金屬絲;圖11(b)所示為焊接中存在缺陷,白色橫線是因?yàn)槲慈酆瞎收显斐傻摹?/p>
本設(shè)計(jì)不僅具有常規(guī)相控陣探傷儀的檢測(cè)能力,而且針對(duì)PE 檢測(cè)應(yīng)用進(jìn)行了有針對(duì)性的優(yōu)化,提供了作業(yè)現(xiàn)場(chǎng)照片和作業(yè)位置等數(shù)據(jù)上傳、與中心數(shù)據(jù)庫(kù)聯(lián)網(wǎng)管理、空間復(fù)合成像、材料特性設(shè)置和聲速校準(zhǔn)等功能。
圖11 PE 超聲相控陣探傷儀實(shí)測(cè)效果
本PE 超聲相控陣探傷儀的設(shè)計(jì)和PE 管道超聲相控陣檢測(cè)技術(shù)的研究,為上海市燃?xì)庥肞E 管道焊接接頭相控陣超聲檢測(cè)地方標(biāo)準(zhǔn)的制定提供了技術(shù)支撐[10]。
基于異構(gòu)多核數(shù)字信號(hào)處理SoC 的設(shè)計(jì)需要較多的開發(fā)考慮,在后續(xù)研究中,還可針對(duì)某些應(yīng)用場(chǎng)合作出進(jìn)一步優(yōu)化和完善,如優(yōu)化通信方式,利用異構(gòu)多核SoC 芯片內(nèi)部專用設(shè)計(jì)的多核導(dǎo)航器、隊(duì)列、仲裁器來(lái)進(jìn)一步提高核間數(shù)據(jù)通信的運(yùn)行效率和傳輸帶寬[11]。
設(shè)計(jì)實(shí)現(xiàn)了基于異構(gòu)多核數(shù)字信號(hào)處理SoC器件的PE 超聲相控陣探傷儀,對(duì)其系統(tǒng)架構(gòu)、算法組成和軟件部分的實(shí)現(xiàn)技術(shù)進(jìn)行了研究,將HOST應(yīng)用程序和本地算法運(yùn)算在一個(gè)異構(gòu)SoC 處理器芯片中完成,并對(duì)多核并行計(jì)算和核間通訊、內(nèi)存設(shè)計(jì)等關(guān)鍵技術(shù)進(jìn)行分析、設(shè)計(jì)及優(yōu)化。相比于以前的實(shí)現(xiàn)方法,采用異構(gòu)多核SoC 器件的相控陣探傷儀系統(tǒng)架構(gòu)更加靈活,整機(jī)系統(tǒng)具有很好的可擴(kuò)展性和可升級(jí)性,性能有所提高、功耗更低、更加便攜化。