謝長生,陳振嬌,張 俊,王勝輝
(1.中國電子科技集團公司第五十八研究所,江蘇 無錫214035;2.上海海驕機電工程有限公司,上海201801;3.上海市特種設備監督檢驗技術研究院,上海200333)
PE 管的原材料是聚乙烯,它是一種高分子有機合成材料。PE 管的焊接質量直接影響到管道系統的安全和壽命,為了安全考慮,必須對PE 管環焊縫進行內部缺陷的全面探傷,但是目前對PE 管焊接缺陷檢測尚無成熟可靠的方法,國內和國際上在此領域尚處于探索和研究階段。相比于采用傳統的超聲無損探傷,超聲相控陣檢測技術具有較寬的有效探傷范圍、良好的缺陷定位和定量分析能力、更高的缺陷分辨率及檢出率[1]。目前市面上的相控陣探傷儀主要用于金屬領域,在PE 材料及環焊縫探傷方面尚有待改進和增強。
PE 超聲相控陣探傷儀由于要用于作業現場檢測,所以對其便攜性、待機時間長等有一定要求。相控陣探傷儀的算法復雜、計算量大、實時性強,所以其軟硬件實現架構必須具有很強的信號和數據處理能力。TI 公司推出了C66AK2Hxx 系列數字信號處理SoC 器件,內含多達4 個ARM 核、8 個C66x DSP核。此處設計采用該系列中的一款C66AK2H06 芯片,其含2 個ARM 核、4 個C66x DSP 核。將其運用到PE 超聲相控陣探傷儀設計中,可達到高性能、低功耗、低成本的目標。
PE 超聲相控陣探傷儀主要有信號發射/接收、信號處理、圖像處理、用戶人機界面、測量計算、數據庫管理等功能組成。其中信號發射/接收、信號處理、圖像處理是相控陣探傷儀的核心部分,其處理流程如圖1 所示。

圖1 PE 超聲相控陣探傷儀算法處理流程
發射脈沖放大、VCA、ADC 為模擬前端,功能為生成高壓發射脈沖以驅動探頭、接受探頭回波信號及預放、壓控增益放大以及模數轉換等。發射波束形成、接收波束形成為數字前端,發射波束形成產生發射脈沖序列,接收波束形成接收來自于多路ADC的數據,實現對某一給定深度和方向的聚焦,其后經過解調和FIR 濾波、動態范圍壓縮、邊緣增強、噪聲抑制、灰階變換、幀插值等各階段信號處理、數據處理和圖像處理,最后在LCD 上顯示出被檢測物的超聲圖像[2-3]。此外還有測量、計算分析、數據庫管理、掃查控制以及用戶人機界面等功能,一般由上位機(HOST 端)實現。
超聲相控陣探傷儀的具體架構實現有不同的方法。前端設計一般采用高壓開關、VCA、ADC 等器件,電路結構相對比較固定。發射、接收波束形成目前主要采用FPGA 或ASIC 來實現,以上是前端處理,中后端實現方案比較多,有FPGA+PC 架構的,有FPGA+DSP+PC 架構等。在此采用TI 公司推出的C66AK2H06 異構多核SoC 器件,除了波束形成這種計算數據通量大的運算采用FPGA 實現外,其它信號處理、數據處理和圖像處理及HOST 端的用戶人機界面、測量計算、數據庫管理等功能均可采用一片C66AK2H06 芯片實現,也省去了HOST 端處理的CPU 芯片或PC 板,提高了產品的便攜性,降低了功耗,具有一定的先進性和優越性。
設計實現的PE 超聲相控陣探傷儀的系統框圖如圖2 所示。

圖2 PE 超聲相控陣探傷儀系統框圖
基于C66AK2H06 異構多核SoC 芯片對超聲成像的中、后端算法處理以及HOST 應用程序進行了并行設計與實現,充分利用了其中多核DSP 的數據處理性能與C 語言編程的靈活性,采用軟件實現數據和圖像處理,提高設計的靈活性,使系統具有可擴展性和可升級性優點。本系統軟件架構和算法處理流程圖3 所示。圖中標灰色的模塊為ARM(HOST)上運行的軟件模塊,無標色的模塊為DSP(Local)上運行的軟件模塊。ARM 端主要實現用戶應用程序,包括用戶界面、測量計算、注冊、檔案、報告、工作表管理以及輸出和聯網功能。DSP 端主要實現掃查控制、解調、基于Vector(掃描線)和Frame(掃描幀)的數據計算、掃描變換、圖像處理等。本系統中的信號處理、數據處理和圖像處理算法運算量大,采用DSP實現,正好發揮C66AK2H06 SoC 中多核DSP 的高性能數字信號處理能力和靈活的算法實現能力。

圖3 軟件架構和其算法處理流程
多核DSP 器件通過將多個DSP 內核集成在一個芯片內,極大提高了數字信號處理芯片的運算性能。C66AK2Hxx 系列高性能數字信號處理SoC 采用異構多核架構,DSP 部分的每個DSP 內核可以運行單獨的程序,且擁有相互獨立的內存空間,可看作是一種典型的MIMD 計算機。不同于多個DSP 芯片組成的系統架構,多核DSP 單芯片具有片上共享的存儲空間以及快速的核間通信能力。
此處采用的66AK2H06 芯片,擁有2 個ARM核和4 個DSP 核,其功能框圖如圖4 所示。

圖4 C66AK2H06 功能框圖
其中,DSP 核為1.2 GHz 定/浮點DSP 核,性能高達定點40 GMacs/Core、浮點20 GFlops/Core 運算能力。采用4 級存儲結構,每個C66x 核心上都集成了32 kB 的L1 程序緩存和L1 數據緩存以及512 kB 的本地L2 存儲。ARM 核為A15 ARM,工作在1.4GHz下,具有32 kB 的L1 程序緩存和L1 數據緩存以及共用的4 MB 的L2 存儲。除此之外,芯片還集成了多核共享存儲器控制器(MSMC),所有核共享MSMC控制的存儲空間,包括6 MB 的片上SRAM 以及通過72-Bit EMIF 接口擴展的DDR3 外部DRAM[4]。
程序并行設計首先對應用進行任務規劃,將一個應用分解為多個任務,然后根據一定的任務分配模式將其分配到相應的DSP 核上執行。實現方案歸納分析如下:
1)主從模式
主核作為控制核進行任務分配、調度和觸發。該模式適用于含有多個獨立任務的應用。主核與從核間需要進行頻繁地消息通信,從核之間不需要進行同步和數據傳遞。
2)基于任務的分配模式
各核處理不同的任務,核之間的工作以流水線的方式進行。該模式適用于分布式控制和數據處理的應用,這類應用中通常包含多個復雜的算法模塊,單個DSP 核不能滿足計算能力需求,且各算法模塊間有很強的數據依賴關系[5]。該實現方式很容易實現核間任務的分配,但要在每個核中分配相近的計算負荷是很困難的。
3)基于數據的分配模式
各核處理相同的任務,每個核分配、處理輸入新掃描線或新掃描幀數據的一部分,且通常每個核所分配的輸入運算數據量大小是相等的,所以每個核上的任務計算量是均衡的。該實現方式需要在數據的劃分和計算結果的整合上作相應的考慮和優化。
4)基于幀的分配模式
該實現方式是一個核或核集合處理給定掃描幀的所有處理功能,包括該幀所包含的所有掃描線處理。多個核或核集合可同時處理多個連續獨立幀,根據系統的幀速率要求確定需要的獨立的核或核集合個數。此法的不足之處是從數據輸入到幀計算結果的延遲要比前兩種方法略大,但DSP 核處理任務均衡,數據處理吞吐率高,在高強度的計算時會用到。
系統對實時性有一定的要求,最終設計方案綜合了上述所列的前三種方法的多核程序開發任務分配模式,采用了Core0 核為主核,Core1耀Core3 為從核。Core1-Core2、Core3 以及Core0 之間以基于任務的分配模式采用流水方式執行算法處理。Core1、Core2 之間則采用基于數據的分配模式對接收波束形成數據分塊并行處理。
多核并行計算的關鍵是如何分配每個核完成任務的時間使之相近。如果每個核之間的計算任務分配不均衡,則系統最終性能會受計算量最繁重、耗時最長的那個核所限制。一般來說數據吞吐量大、算法復雜的處理要花很長時間。
為高效地實現超聲成像算法,首先對算法在單個DSP 核上運行的性能進行評估,然后根據算法各模塊的時間消耗和數據依賴關系進行任務規劃,將算法分配到4 個DSP 核上執行。核間通信采用MessageQ 消息隊列和Notify 方案來實現各DSP 核間的掃查指令傳遞、狀態通知和任務同步,使用EDMA3 來實現片外(FPGA 和DDR3 內存)、共享內存、DSP 核本地內存之間的數據交換。利用Core 0實現統一的同步控制、消息分發和數據傳輸接口。
最終DSP Core 0耀Core 3 核任務以及在系統中所承擔的算法運算分配如表1 所示。

表1 DSP 核任務分配
Core 0 為主控核,主要進行消息的分發、參數數據的搬移、EDMA 控制,以實現DSP 各運算模塊、FPGA 和前端的設置、以及Core 1耀Core 3 算法任務的統一調度。復數正交解調和FIR 濾波放在Core 1、Core 2 上執行。由于復數正交解調和FIR 濾波運算是很耗時的算法運算,此處采用兩個DSP 核,分別對經過接收波束形成的多波束BM0、BM1 分開并行計算。行間平均、空間復合、頻率復合、數字掃描變換(Scan Converter)等放在Core 3 上執行,數字掃描變換后的圖像處理如圖像增強等放在Core 0 核上運行。設計使用C66AK2H06 的4 個DSP 核以流水方式從Core 1/Core 2→Core 3→Core 0 進行數據處理。DSP 核間的數據傳輸、參數傳遞、狀態通知和控制如圖5 所示。

圖5 DSP 端運行流程
圖中實線代表超聲數據的傳輸,虛線代表MessageQ、Notify、中斷的傳輸,長劃線代表EDMA和SRIO 數據傳輸控制。由圖可見,Core 0 作為主控核接收HOST(ARM)傳來的掃查指令,然后通過消息隊列將其派發給各個所需要的DSP 核、FPGA 及其它前端器件,完成掃查序列切換的掃查參數設置。DSP 接收來自FPGA 的中斷,將波束形成后的數據通過SRIO 總線,傳輸到Core1 和Core 2 的MSMC SRAM 空間。其后依次通過Core 1/Core 2、Core 3、Core0 的算法處理,并將處理好的數據最終輸出到HOST 作進一步處理及顯示。同時各個核的運行狀態和輸出數據的內存首地址通過Notify/中斷也統一發送給Core0,然后Core0 在適當時刻通過Notify/中斷通知相關DSP 核啟動數據傳輸和任務啟動,使多核中的各算法任務和數據傳輸有條不紊進行。
核間通信包括數據傳輸和同步。數據傳輸包括核間算法參數以及掃查指令的傳輸;同步主要是在核間交互任務完成狀態和共享資源的狀態。由于算法參數、掃查指令、狀態變量的數據量大小是不一樣的,所以要采取不同的通信方式。
在Host(ARM)和Local(DSP)以及不同DSP 核任務之間傳輸的算法參數,其大小在幾十kB 到幾百kB,此處采用EDMA 傳輸在不同核間內存地址空間進行傳輸,掃查指令大小32 B耀64 B,采用消息隊列(MessageQ)機制傳輸,同步采用Notify/中斷來實現。MessageQ 雖然比Notify/中斷延遲大,比EDMA帶寬低,但靈活性好,尤其是,調用者無需考慮接收者和接收處理的事,這使得核間頻繁的可變長度掃查指令傳輸變得很方便。對MessageQ 機制,接受者需要事先訂閱它們感興趣的信息。消息分發模塊維持訂閱列表,每當消息發布,便將消息發給訂閱者。
在HOST(ARM)和Local(DSP)之間的通信,在此選用TI 提供的SYSLINK。SYSLINK 是一個runtime 軟件和移植工具包,簡化了ARM 和DSP 之間的通信,提供ARM 和DSP 之間信息交換的通信協議,實現多核之間的軟件互連。同時通過SYSLINK使用,一個核可以指定為Master,控制其它Slave 核的執行,包括Slave 核的bootload 啟動,ARM 也可以通過SYSLINK 存取公用模塊[6]。
HOST-DSP 間通信包括:接受ARM 過來的消息;將消息傳遞到訂閱消息的DSP 線程中;將消息發送給ARM 不同的線程。整體通信情況如圖6。消息隊列方案通過在共享內存中開辟消息隊列的方法實現DSP 核間的通信,接收DSP 核通過中斷或輪詢專屬消息隊列的方式來完成消息的獲取,發送DSP 核可擁有多個寫消息端,即可同時向多個DSP 核發送消息。該方案支持可變長度數據的發送和接收,可滿足DSP 核同步、核間數據傳輸等多種需求[7-8]。

圖6 HOST-DSP 間通信
DSP 上的消息分發使用了消息隊列和信號量。硬件信號量是多核處理器中一種新模塊,實現快速實時的操作,并和硬件中斷聯系在一起,實現多核之間的握手協議,其工作流程如圖7 所示。
Core 0 中的Diapatcher 進程是負責消息分發的,其消息分發的流程如下:
Step1:初始化線程、MsgNotify、消息隊列方案所用資源;
Step2:使用MessageQ_get()函數等待HOST 傳來消息;

圖7 DSP 上的消息分發工作流程
Step3:對消息進行同步處理;
Step4:將消息發送到目標隊列中;
Step5:通知目標線程處理消息。
消息分發過程中,Core 0耀Core 3 中的目標線程處理如下:
Step1:等待Core0 中的Diapatcher 發送過來的信號量;
Step2:從消息隊列中獲取消息;
Step2:根據MessageID 處理消息;
Step4:釋放消息。
C66AK2H06 芯片和片外的通信除了和DDR3存儲器、LCD 顯示屏、SD 卡及網絡之外,主要是和FPGA 通信,用于前端控制參數傳送的和波束形成數據的接收。此處采用SRIO 接口。SRIO 通信接口優點是占用管腳少,數據帶寬高。系統超聲掃查時序如圖8,一次掃查波束形成數據最大32 kB,接收時間0.2ms,故BFM 數據速率為160MB/s。設計中的SRIO 接口速率選擇為3.125Gb/s,其數據傳輸速率峰值可達312.5 MB/s,大于BFM 數據速率,滿足波束形成數據傳輸的需要。同時使用GPIO 接口,產生中斷INT_BFMRD 進行傳輸的同步控制,數據傳輸采用DirectIO 機制。

圖8 超聲掃查時序
C66AK2H06 內存系統可劃分為L1P/L1D、L2、MSMC SRAM、DDR3 存儲四級,其中前三級為片上存儲。32 kB 的L1D、512 kB 的L2 既可以作Cache也可以作SRAM 使用,視實際需要而定。不同層級存儲器有不同存取帶寬,依L1P/L1D、L2、MSMC SRAM、DDR3 次序遞減。高帶寬會減小取指、數據存取的時間,從而提高整個算法的運算速度[9]。因此關鍵的代碼和數據應盡量放在片上存儲,甚至L1 上。表2 給出了不同層級的存儲器的理論帶寬。

表2 不同層級存儲器的理論帶寬
在DSP 軟件方案的6 MB 的MSMC RAM 中規劃了BeamBuffer、IQBuffer、VectorBuffer、FrameBuffer、ImageBuffer、DisplayBuffer 等幾部分,用于各DSP核、ARM 核中的各進程處理數據的存儲和交換。其中,BeamBuffer 是暫存從FPGA 來的波束形成后的數據;IQBuffer 是復數正交解調后的數據;VectorBuffer是檢波后、掃查線處理的數據暫存;FrameBuffer 是掃查幀處理的數據暫存;ImageBuffer 是圖像后處理的數據緩存;DisplayBuffer 是圖像顯示的數據緩存。DDR3 片外存儲大小配置為64MB,DSP/ARM 代碼、消息通信、發射/接收波束形成Cache 參數數據、各算法處理的參數/表數據、掃查指令、程序堆棧空間都分配在DDR3 上。另外CineBuffer 也分配在DDR3上,用于DSP 和ARM 之間的連續128 幀圖像數據保存和傳輸。整個DSP 算法處理完的數據存儲到DDR3 的CineBuffer 區域,然后傳輸到HOST(ARM)端,用于其后與圖形、字符等數據等混合并顯示。
L1、L2 除了一部分用于Cache 外,同時可規劃出一部分作為SRAM 使用,用來存放對算法速度影響大的代碼、參數和數據,提升DSP 核存取指令和數據的速度。由于L1、L2 的空間有限,所以一般只對當前運算用到的關鍵參數和數據才傳輸到L1、L2上。為充分利用DSP 核的運算性能,DDR3、MSMC SRAM 與L1/L2 之間采用EDMA 傳輸和PingPong機制。多級內存的具體規劃方式如圖9。

圖9 多級內存規劃
此PE 超聲波相控陣探傷儀的核心基本上基于異構多核信號處理SoC 來實現,因此不需要獨立的CPU,FPGA 也可選擇較小一些的容量,故其便攜性和低功耗性能得到提高。系統實現的關鍵是系統響應速度和運算能力是否能滿足系統技術指標要求。系統主要技術指標如下:
探測深度>20cm;
掃查幀頻>20Hz;
線密度>200 線/幀;
系統啟動時間<12s;
模式切換時間<1s。
通過對系統的測試,發現模式切換時間、掃查幀頻這兩項是主要需要優化的指標。
為優化模式切換時間,需要考慮到:模式切換需要做的工作是掃查模式的設置、探頭文件等相關資源文件的讀取、波束形成Cache、解調、TGC、數字掃描變換的算法系數、曲線、查找表等算法參數的計算,以及算法參數的傳輸等。為減小模式切換時間,在此比較了對模式切換時間影響較大的算法參數計算及傳輸的3 種方式,分別為:
方式1:ARM 計算,ScanCtrl 模塊位于ARM 上;
方式2:DSP 計算,ScanCtrl 模塊位于DSP Core 0 上;
方法3:DSP 分布計算,ScanCtrl 模塊主體計算功能位于DSP Core0,部分計算在DSP Core1耀Core 3中進行。
由于參數計算中有大量的浮點運算,所以用DSP 分布計算效果最好,既發揮了定/浮點DSP 核的優勢,也發揮了多核的優勢,使算法參數計算時間大幅度減少。其余部分參數計算是在本地進行的,節省了其后參數數據傳輸的時間,進一步縮減模式切換時間。此外,模式切換時間還包括一幀掃描圖像通常接收、處理和顯示的時間,一般不會超過50 ms。優化后模式切換時間可控制在1s 以內。不同算法參數計算方法和對模式切換時間的影響對比如表所3 示。

表3 不同算法參數計算方法及結果比較
關于掃查幀頻,一方面和各核算法的計算速度有關,另一方面和掃查序列切換的時間有關。掃查序列切換主要的工作內容是掃查指令的傳輸、下一個掃查線的算法參數準備就緒。為降低掃查序列切換時間(如圖8 中的T1),采用硬件中斷SCSync 來觸發掃查序列控制工作,并采用高中斷優先級,以減少掃查指令傳輸、下一個掃查線算法參數傳遞的響應時間。中斷優先級具體設定如表4 所示。

表4 中斷優先級
實驗測試表明,得到的掃查指令傳輸(大小為32 B,采用MessageQ)時間為6.2 μs,當前掃查線算法參數傳遞時間為15μs 左右,加上FE 前端消息傳輸時間,總共不超過24μs。因此在實際設計中,從SCSync 到TxTrig 的T1 值,設定為30 μs 即可。對于探測深度20 cm,掃查周期可控制在230 μs 之內(T1=30μs,T2+T3 取200 μs 值),對于200 掃描線/幀,幀頻指標即可達到21.7Hz 以上,滿足幀頻20Hz設計要求。
當探測深度降低時,掃查幀頻就會提高。為獲得較為理想的實時成像,要求算法處理幀頻在40Hz以上,這樣對每個DSP 核上算法運算執行時間會有相應的限制。假設1 幀256 線,線頻是256×40Hz=10240Hz,亦即執行Vector Processing 任務的DSP 核總處理時間不超過97.66μs,執行Frame Processing任務的DSP 核總處理時間不超過25ms,即Core1、Core2 的計算負荷是最大的。
Core1、Core2 的運算任務是復數正交解調、FIR濾波、抽取、檢波、焦點拼接、動態范圍壓縮等。其中比較耗時的是復數正交解調、FIR 濾波。為加快速度,在此將計算使用頻率高的SIN/COS 表(<4 kB)、FIR 濾波器系數緩存在L1 存儲器中,將TGCTable、SQRT 表、LOG 表等算法參數緩存在L2 存儲器內,程序代碼存儲在MSMC SRAM 中,運算的輸入輸出數據存儲在MSMC SRAM 中,通過盡量使用高的內存讀取速度提高了DSP 核整體處理性能。經過實驗測試,復數正交解調所花費運算時間為18.3 μs,128階FIR 濾波所花費運算時間為26.7μs,兩者相加為45μs,占DSP 核可用時間的46%,為滿足線頻、幀頻的要求提供了保證。
通過對基于C66AK2H06 的相控陣探傷儀設計的優化和結果分析,系統實現的性能滿足技術指標需求,基于多核DSP 的算法能夠處理每秒鐘40 幀以上尺寸為512×256 的超聲圖像,滿足了實時成像的要求。PE 超聲相控陣探傷儀的實際界面如圖10。

圖10 PE 超聲相控陣探傷儀界面圖
為測試本PE 超聲相控陣探傷儀的實際效果,對PE 管焊接質量進行檢測,實驗結果如圖11。圖11(a)所示表明焊接正常,圖中的白色亮點是金屬絲;圖11(b)所示為焊接中存在缺陷,白色橫線是因為未熔合故障造成的。
本設計不僅具有常規相控陣探傷儀的檢測能力,而且針對PE 檢測應用進行了有針對性的優化,提供了作業現場照片和作業位置等數據上傳、與中心數據庫聯網管理、空間復合成像、材料特性設置和聲速校準等功能。

圖11 PE 超聲相控陣探傷儀實測效果
本PE 超聲相控陣探傷儀的設計和PE 管道超聲相控陣檢測技術的研究,為上海市燃氣用PE 管道焊接接頭相控陣超聲檢測地方標準的制定提供了技術支撐[10]。
基于異構多核數字信號處理SoC 的設計需要較多的開發考慮,在后續研究中,還可針對某些應用場合作出進一步優化和完善,如優化通信方式,利用異構多核SoC 芯片內部專用設計的多核導航器、隊列、仲裁器來進一步提高核間數據通信的運行效率和傳輸帶寬[11]。
設計實現了基于異構多核數字信號處理SoC器件的PE 超聲相控陣探傷儀,對其系統架構、算法組成和軟件部分的實現技術進行了研究,將HOST應用程序和本地算法運算在一個異構SoC 處理器芯片中完成,并對多核并行計算和核間通訊、內存設計等關鍵技術進行分析、設計及優化。相比于以前的實現方法,采用異構多核SoC 器件的相控陣探傷儀系統架構更加靈活,整機系統具有很好的可擴展性和可升級性,性能有所提高、功耗更低、更加便攜化。