1 引 言
醫(yī)學(xué)超聲診斷成像技術(shù)大多數(shù)采用超聲脈沖回波法,即利用探頭產(chǎn)生超聲波進(jìn)入人體,由人體組織反射產(chǎn)生的回波經(jīng)換能器接收后轉(zhuǎn)換為電信號(hào),經(jīng)過(guò)提取、放大、處理,再由數(shù)字掃描變換器轉(zhuǎn)換為標(biāo)準(zhǔn)視頻信號(hào),最后由顯示器進(jìn)行顯示。在基于FPGA+ARM 9硬件平臺(tái)的全數(shù)字化B超診斷儀中,前端探頭返回的回波電信號(hào)需由實(shí)時(shí)采集系統(tǒng)進(jìn)行波束合成、相關(guān)處理、采集并傳輸至ARM嵌入式處理系統(tǒng),視頻信號(hào)數(shù)據(jù)量大,實(shí)時(shí)性要求高,因此選用FPGA+SRAM構(gòu)成實(shí)時(shí)采集系統(tǒng),在速度和容量上都能滿足上述要求。主要介紹B超成像系統(tǒng)中應(yīng)用FPGA進(jìn)行邏輯控制進(jìn)行超聲視頻圖像采集的原理和實(shí)現(xiàn)。
2 系統(tǒng)構(gòu)成工作原理
如圖1所示,采集系統(tǒng)首先由數(shù)字波束合成器對(duì)多通道超聲回波信號(hào)進(jìn)行波束合成,數(shù)字波束合成器對(duì)不同通道信號(hào)進(jìn)行延時(shí),使同一點(diǎn)的信號(hào)同相相加,同時(shí)對(duì)多個(gè)通道的回波信號(hào)進(jìn)行空間域上的加窗,類似匹配濾波,可以提高信號(hào)的信噪比。然后對(duì)合成后的超聲視頻信號(hào)做一個(gè)幀相關(guān)的預(yù)處理,即圖像幀與幀之間對(duì)應(yīng)象素灰度上的平滑處理。因?yàn)榀B加在圖像上的噪聲是非相關(guān)且具有零均值的隨機(jī)噪聲,如果在相同條件下取若干幀的平均值來(lái)代替原圖,則可減弱噪聲強(qiáng)度。在幀相關(guān)過(guò)程中,F(xiàn)PGA要控制數(shù)據(jù)的讀取、處理以及存儲(chǔ)。在為了滿足視頻顯示的實(shí)時(shí)性,該采集系統(tǒng)采用雙幀存結(jié)構(gòu)的乒乓機(jī)制,由FPGA實(shí)現(xiàn)讀寫(xiě)互鎖控制。經(jīng)幀相關(guān)處理完后的視頻數(shù)據(jù)交替寫(xiě)入幀存A和幀存B,幀存讀控制器根據(jù)后端處理速度讀取幀存中的數(shù)據(jù),送往DMA控制器,DMA控制器開(kāi)啟DMA通道進(jìn)行數(shù)據(jù)傳輸。FPGA實(shí)現(xiàn)讀寫(xiě)控制時(shí),為了避免同時(shí)對(duì)一個(gè)幀存進(jìn)行讀寫(xiě)操作,需要設(shè)置讀寫(xiě)互斥鎖進(jìn)行存儲(chǔ)器狀態(tài)切換。
3 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
3.1 數(shù)字波束合成
對(duì)于具有128陣元和32收發(fā)通道的超聲探頭,在進(jìn)行32路AD轉(zhuǎn)換后,將其分為4組,每組8路接收通道,每組用一片F(xiàn)PGA實(shí)現(xiàn),在該FPGA內(nèi)首先進(jìn)行接收延時(shí)和動(dòng)態(tài)聚焦再進(jìn)行加權(quán)求和,其后再進(jìn)行組間的求和產(chǎn)生超聲數(shù)字視頻信號(hào)。每一組的系統(tǒng)框圖如圖2所示:
對(duì)不同通道的回波信號(hào)進(jìn)行不同的延時(shí)是達(dá)到波束聚焦的關(guān)鍵,延時(shí)按精度可分為粗延時(shí)和細(xì)延時(shí):粗延時(shí)用于控制A/D采樣的開(kāi)始時(shí)間,精度為32 ns,延時(shí)參數(shù)由FPGA的片內(nèi)RAM中讀出,更換探頭時(shí)系統(tǒng)控制器將相應(yīng)數(shù)據(jù)寫(xiě)入這些RAM;細(xì)延時(shí)由采樣時(shí)鐘發(fā)生器根據(jù)不同的通道產(chǎn)生不同的A/D采樣時(shí)鐘,這些時(shí)鐘的相位互相錯(cuò)開(kāi),其錯(cuò)開(kāi)的值剛好等于各陣元傳播延遲之差??紤]到系統(tǒng)的實(shí)時(shí)性以及探測(cè)過(guò)程中深度的變化,需要采用動(dòng)態(tài)聚焦。動(dòng)態(tài)聚焦是在A/D采樣開(kāi)始后,通過(guò)讀取動(dòng)態(tài)聚焦參數(shù),在采樣的過(guò)程中控制采樣時(shí)鐘發(fā)生器實(shí)現(xiàn)。
8個(gè)通道的回波信號(hào)經(jīng)過(guò)A/D采樣后,送入FPGA,緩沖之后同步讀出進(jìn)入加權(quán)模塊,加權(quán)模塊由8個(gè)無(wú)符號(hào)為數(shù)字乘法器組成?;夭ㄐ盘?hào)分別與加權(quán)參數(shù)相乘后得到具有動(dòng)態(tài)聚焦和加權(quán)特性的數(shù)據(jù)。8組數(shù)據(jù)再經(jīng)過(guò)3級(jí)加法器就得到波束合成之后的超聲數(shù)字視頻數(shù)據(jù)。
3.2 幀相關(guān)處理
幀相關(guān)模塊如圖3所示,由幀相關(guān)控制器和一片存儲(chǔ)器組成,進(jìn)行幀相關(guān)的存儲(chǔ)器采用大小為256 kB的靜態(tài)存儲(chǔ)器(SRAM)。幀相關(guān)控制器由FPGA實(shí)現(xiàn),完成地址產(chǎn)生、存儲(chǔ)器讀寫(xiě)控制、幀相關(guān)計(jì)算功能,因?yàn)閷?shí)時(shí)性的要求,即保證送往后端雙幀存的數(shù)據(jù)不能中斷,所以考慮到對(duì)逐個(gè)象素?cái)?shù)據(jù)讀寫(xiě)的同時(shí)就進(jìn)行相關(guān)處理,而且需要在同一個(gè)象素時(shí)鐘周期內(nèi)完成。讀寫(xiě)控制器在1個(gè)象素時(shí)鐘周期的前半段需要讀出存儲(chǔ)器中的數(shù)據(jù)和當(dāng)前幀數(shù)據(jù)進(jìn)行相關(guān)處理;時(shí)鐘周期的后半段再將相關(guān)處理完的數(shù)據(jù)寫(xiě)入存儲(chǔ)器以備后用,這樣送往后端雙幀存的數(shù)據(jù)依然是和象素時(shí)鐘對(duì)應(yīng)的連續(xù)象素?cái)?shù)據(jù)。
幀相關(guān)的工作流程如下:
(1)地址產(chǎn)生。地址的產(chǎn)生由一個(gè)象索計(jì)數(shù)器實(shí)現(xiàn),輸入信號(hào)為幀同步信號(hào)VS和象素時(shí)鐘CLK。前端提供的幀同步信號(hào)VS為該計(jì)數(shù)器的復(fù)位信號(hào),在每一幀的開(kāi)始,計(jì)數(shù)器清零,然后根據(jù)象素時(shí)鐘CLK計(jì)數(shù)生成地址,每個(gè)象素時(shí)鐘周期內(nèi)地址不變,依據(jù)此地址進(jìn)行存儲(chǔ)器的讀寫(xiě)。
(2)讀取已有數(shù)據(jù)及相關(guān)處理。在一個(gè)象素時(shí)鐘周期的前半段,也就是CLK跳變?yōu)楦唠娖綍r(shí),讀寫(xiě)控制器輸出的讀信號(hào)OEl為有效,讀出前幀中一個(gè)象素的數(shù)據(jù),送到FPGA內(nèi)部實(shí)現(xiàn)的加法器的A口,與同時(shí)到達(dá)B口的當(dāng)前幀的對(duì)應(yīng)象素?cái)?shù)據(jù)相加平均。
(3)數(shù)據(jù)保存及傳輸。在同一個(gè)象素時(shí)鐘周期的后半段,也就是CLK跳變?yōu)榈碗娖綍r(shí),讀寫(xiě)控制器輸出的寫(xiě)信號(hào)WEl為有效,相關(guān)處理完的數(shù)據(jù)寫(xiě)回原來(lái)的地址,同時(shí)該數(shù)據(jù)也送往幀存寫(xiě)控制模塊。
3.3 幀存乒乓讀寫(xiě)控制機(jī)制
超聲視頻圖像需要實(shí)時(shí)地采集并在處理后在顯示器上重建,圖像存儲(chǔ)器就必須不斷地寫(xiě)入數(shù)據(jù),同時(shí)又要不斷地從存儲(chǔ)器讀出數(shù)據(jù)送往后端處理和顯示。另外,為了滿足這種要求,可以在采集系統(tǒng)中設(shè)置2片容量一樣的幀存,通過(guò)乒乓讀寫(xiě)機(jī)制來(lái)管理,結(jié)構(gòu)如圖3所示。為了確保任何時(shí)刻,只能有1片幀存處于寫(xiě)狀態(tài),設(shè)置1個(gè)寫(xiě)互斥鎖;同時(shí),只能有1片幀存處于讀狀態(tài),設(shè)置一個(gè)讀互斥鎖。在系統(tǒng)初始時(shí),1片幀存為等待寫(xiě)狀態(tài),另1片為等待讀狀態(tài);開(kāi)始工作后,2片都處于讀寫(xiě)狀態(tài)輪流轉(zhuǎn)換的過(guò)程,轉(zhuǎn)換的過(guò)程相同,但是2片狀態(tài)相錯(cuò)開(kāi),這樣就能夠保證數(shù)據(jù)能連續(xù)地寫(xiě)入和讀出幀存。該機(jī)制如圖4所示,工作流程為:
(1)采集過(guò)程未開(kāi)始,幀存A為等待寫(xiě)狀態(tài),獲得寫(xiě)互斥鎖;幀存B為等待讀狀態(tài),獲得讀互斥鎖;
(2)幀存寫(xiě)控制器收到一幀開(kāi)始信號(hào),判斷為采集開(kāi)始,設(shè)置幀存A寫(xiě)信號(hào)WE2 A有效,幀存A開(kāi)始寫(xiě)入當(dāng)前幀數(shù)據(jù);同時(shí)幀存讀控制器設(shè)置幀存B讀信號(hào)OE2_B有效,幀存B則開(kāi)始讀出所存數(shù)據(jù);
(3)一幀結(jié)束,幀存A寫(xiě)結(jié)束,釋放寫(xiě)互斥鎖;幀存B讀結(jié)束,釋放讀讀斥鎖;
(4)等待另一幀開(kāi)始,幀存A獲得讀互斥鎖;幀存B獲得寫(xiě)讀斥鎖;
(5)另一幀開(kāi)始,寫(xiě)控制器設(shè)置幀存B寫(xiě)信號(hào)WE2B有效,幀存B開(kāi)始寫(xiě)入數(shù)據(jù);讀控制器設(shè)置幀存A讀信號(hào)OE2 A有效,幀存A則開(kāi)始讀出數(shù)據(jù)。
3.4 DMA傳輸
對(duì)整個(gè)B超診斷儀來(lái)說(shuō),系統(tǒng)要完成視頻圖像數(shù)據(jù)的實(shí)時(shí)采集和指定的處理,高性能ARM處理器的處理能力可達(dá)每秒數(shù)百萬(wàn)條指令,因此數(shù)據(jù)的傳輸設(shè)計(jì)是提高系統(tǒng)速度的關(guān)鍵環(huán)節(jié)。ARM處理系統(tǒng)與外部的數(shù)據(jù)傳輸可以通過(guò)CPU訪問(wèn)外部存儲(chǔ)器的方法實(shí)現(xiàn),但是效率低下,不能滿足系統(tǒng)實(shí)時(shí)性的要求,而DMA數(shù)據(jù)傳輸以不占用CPU時(shí)間和單周期吞吐率進(jìn)行數(shù)據(jù)傳輸?shù)膬?yōu)點(diǎn)在實(shí)時(shí)視頻圖像采集系統(tǒng)中得到廣泛的應(yīng)用。但是因?yàn)镈MA的傳輸速率和前端視頻圖像數(shù)據(jù)的輸入速率不匹配,很難發(fā)揮出DMA數(shù)據(jù)傳輸?shù)膬?yōu)勢(shì)。由可編程的FPGA控制SRAM組成的雙幀存可以很好地解決這個(gè)問(wèn)題;此外,F(xiàn)PGA內(nèi)部嵌入了一定數(shù)量的RAM,可以經(jīng)過(guò)配置成緩沖存儲(chǔ)器,通過(guò)靈活的邏輯結(jié)構(gòu)可以方便地實(shí)現(xiàn)對(duì)輸入輸出數(shù)據(jù)流的控制,成為連接ARM處理系統(tǒng)和SRAM的紐帶和橋梁。
4 結(jié) 語(yǔ)
在B超數(shù)字視頻圖像實(shí)時(shí)采集系統(tǒng)中采用FPGA作為采集控制部分,首先可以提高系統(tǒng)處理的速度及系統(tǒng)的靈活性和適應(yīng)性:由于在FPGA和ARM處理系統(tǒng)之間采用SRAM做數(shù)據(jù)緩沖,并用DMA方式進(jìn)行傳輸,大大提高系統(tǒng)的性能;由于采用FPGA可編程邏輯器件,對(duì)于不同的超聲視頻信號(hào),只要在FPGA內(nèi)對(duì)控制邏輯稍做修改,便可實(shí)現(xiàn)信號(hào)采集;FPGA的外圍硬件電路簡(jiǎn)單,因而在硬件設(shè)計(jì)中,可以大大減小硬件設(shè)計(jì)的復(fù)雜程度。而FPGA的時(shí)序邏輯調(diào)試可在軟件上仿真實(shí)現(xiàn),因而降低硬件調(diào)試難度。