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),,在速度和容量上都能滿(mǎn)足上述要求,。主要介紹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)行空間域上的加窗,,類(lèi)似匹配濾波,可以提高信號(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ǔ)。在為了滿(mǎn)足視頻顯示的實(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(yíng)/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ù)送往后端處理和顯示,。另外,,為了滿(mǎn)足這種要求,可以在采集系統(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訪(fǎng)問(wèn)外部存儲(chǔ)器的方法實(shí)現(xiàn),,但是效率低下,不能滿(mǎ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)試難度,。