亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于ARM和FPGA的超聲相控陣檢測成像系統(tǒng)接口設(shè)計

        2018-11-28 08:27:12楊艷
        無損檢測 2018年11期
        關(guān)鍵詞:驅(qū)動程序相控陣內(nèi)核

        ,, , , ,楊艷,,

        (1.江蘇省特種設(shè)備安全監(jiān)督檢驗研究院,南京 210036;2.南京航空航天大學(xué) 自動化學(xué)院,南京 211100)

        因超聲相控陣檢測技術(shù)陣列式探頭的掃查方式獨特,所以其具有諸多常規(guī)超聲檢測所不具備的優(yōu)點。陣列換能器一般由多個互相獨立且線性排列或矩陣式排布的壓電晶片組合而成,一個晶片即為一個陣元。所有陣元都可在電子控制的延時激勵規(guī)則下,獨立進行超聲波束的發(fā)射與接收,以此來實現(xiàn)多通道的靈活配置,形成預(yù)期的聲束效果。超聲相控陣換能器能夠模擬多種探頭的工作,檢測速度快,適用于不規(guī)則形狀物體的檢測,彌補了許多常規(guī)超聲檢測的不足。

        在一套完整的超聲相控陣檢測成像系統(tǒng)中,為了配合探頭的工作,還需要發(fā)射/接收前端、數(shù)據(jù)采集、數(shù)據(jù)處理、人機交互等模塊的相互協(xié)同。筆者重點研究了便攜式超聲相控陣檢測成像系統(tǒng),采用FPGA(現(xiàn)場可編程門陣列)和ARM(先進RISC處理機)對系統(tǒng)所需的通信接口進行設(shè)計。其中,ARM處理器在控制方面發(fā)揮了高功效、低功耗的獨特優(yōu)勢;而FPGA器件則在高速數(shù)據(jù)的采集與處理方面,發(fā)揮了強大的作用[1]。

        1 系統(tǒng)硬件組成

        超聲相控陣檢測成像系統(tǒng)的總體結(jié)構(gòu)框圖如圖1所示。一次完整的檢測包括以下流程:主控模塊接收人工設(shè)置的檢測參數(shù),并根據(jù)偏轉(zhuǎn)聚焦法則計算發(fā)射時延,計算結(jié)果向發(fā)射控制電路傳遞,進而控制超聲陣列探頭激發(fā)相應(yīng)聲束到被檢對象;超聲波束遇到對象內(nèi)部缺陷被反射,經(jīng)由接收電路采集后,進入信號處理模塊進行進一步的處理,最后傳輸至主控模塊進行分配存儲、顯示成像等。

        圖1 超聲相控陣檢測成像系統(tǒng)總體結(jié)構(gòu)框圖

        其中,F(xiàn)PGA選用Altera公司的Cyclone IV系列EP4CE15F17C8N,加以外圍電路構(gòu)成數(shù)據(jù)處理模塊,完成發(fā)射前端脈沖延時激勵、采集信號串并轉(zhuǎn)換、接收聲束延時補償?shù)裙ぷ?。主控模塊硬件平臺選用三星公司的“蜂鳥”處理器S5PV210。該處理器集成了ARM Cotex-A8核心,采用64位內(nèi)部總線結(jié)構(gòu),實現(xiàn)了ARM架構(gòu)V7,內(nèi)部集成了許多外設(shè)。與同類芯片相比,S5PV210功耗低且性能較高,適合應(yīng)用于醫(yī)療設(shè)備、通信設(shè)備或手持電子設(shè)備等領(lǐng)域。

        2 通信接口設(shè)計

        FPGA與ARM通信,主要用于用戶檢測參數(shù)的配置下發(fā),以及檢測波束的數(shù)據(jù)回傳。FPGA與ARM存在多種接口方式,如SPI、IIC等串行接口。但串行接口自身的局限性限制了其在實時、大量數(shù)據(jù)傳輸中的應(yīng)用[2]。相比之下,并行接口的總線連接更加穩(wěn)定與合理,且在所使用的開發(fā)板中,CPU與各部分間的通信,由多層次AHB/AXI總線負責(zé),以保證高速數(shù)據(jù)的交互。因此,采用存儲總線的方式,把FPGA芯片EP4CE15F17C8N掛接在S5PV210的總線上,ARM處理器通過存儲器指令訪問FPGA。

        采用FPGA器件內(nèi)提供的M9K存儲器,進行處理后的檢測回波數(shù)據(jù)的中轉(zhuǎn)與傳輸。系統(tǒng)需要由ARM處理器向FPGA傳送配置數(shù)據(jù),也需要從FPGA中讀取經(jīng)過其處理的檢測回波數(shù)據(jù),這不僅是一個方向的數(shù)據(jù)流通,還需要兩個端口才能完成各自數(shù)據(jù)的交互工作。為了方便兩次數(shù)據(jù)交互使用同一套硬件連接,而無需再開辟新的通路,采用M9K的真雙端口模式。

        配置M9K為雙端口RAM,A口作為FPGA連接的主體,其輸出端q_a[ ]與數(shù)據(jù)端data_a[ ]均需要與FPGA的數(shù)據(jù)端相連;B口作為ARM處理器連接的主體,其輸出端q_b[ ]與數(shù)據(jù)端data_b[ ]均需要與ARM數(shù)據(jù)端相連。真雙端口模式下,端口A上的寫操作與端口B上的讀操作時序波形如圖2所示,寄存RAM的輸出端會將q輸出延長一個時鐘周期。

        圖2 M9K真雙端口模式時序

        S5PV210的外接總線型設(shè)備尋址區(qū)有6個Bank,每個大小為128 MB,Xm0CSn0~Xm0CSn5分別為其相應(yīng)的片選信號。外接的總線型設(shè)備通過此信號的引出腳,掛接于總線之上,并尋址相應(yīng)的內(nèi)存空間。系統(tǒng)選用BANK5。

        若地址總線上發(fā)送的地址在S5PV210 BANK5的尋址范圍之內(nèi),則表示此次訪問BANK5,相應(yīng)片選信號Xm0CSn5被拉低,選中該BANK所接的FPGA。S5PV210處理器中的SROM BANK對一個地址讀操作,則相應(yīng)讀信號Xm0OEn被自動拉低,該信號與FPGA的讀使能信號相連,即可讀取FPGA中的數(shù)據(jù);對一個地址寫操作,則相應(yīng)寫信號Xm0WEn被自動拉低,該信號與FPGA的寫使能信號相連,即可向FPGA中寫入數(shù)據(jù)。

        設(shè)計16位寬數(shù)據(jù)線,12位寬地址線,并將ARM的數(shù)據(jù)、地址線連接至FPGA。除上述總線、時鐘與片選信號連接之外,加上讀寫控制信號以及中斷信號,則能夠使FPGA向ARM發(fā)起中斷申請并進行數(shù)據(jù)交互。FPGA與ARM硬件連接原理示意如圖3所示。

        圖3 FPGA與ARM硬件連接原理示意

        在檢測開始之前,人工設(shè)置一系列檢測參數(shù),由ARM處理器根據(jù)相應(yīng)的聚焦法則來計算發(fā)射電路激勵每一個探頭陣元所需要的延遲時間,并通過通信總線傳輸給FPGA,再由FPGA負責(zé)后續(xù)的脈沖激勵等工作;在一輪檢測之后,反射回多路超聲波束,由前端電路對其進行采集接收,并交由FPGA完成一系列數(shù)據(jù)處理,得到各路檢測回波信號,通過通信總線將其傳輸至ARM處理器,進而完成更進一步的處理或成像。

        3 驅(qū)動程序設(shè)計

        系統(tǒng)中的軟硬件之間,需要一個連接兩者的橋梁,將硬件功能轉(zhuǎn)換為軟件設(shè)計人員能夠直接使用的接口函數(shù)。操作系統(tǒng)在嵌入式系統(tǒng)中,處于設(shè)備硬件與應(yīng)用程序之間,能夠提供統(tǒng)一編程接口給操作的用戶[3]。但對于操作系統(tǒng)來說,硬件設(shè)備各不相同,操作系統(tǒng)不可能針對每一個特定參數(shù)的設(shè)備提供相應(yīng)的支持。不過相似地,其可以根據(jù)某一類設(shè)備的共同點,提供該類設(shè)備的控制代碼,從而不用去考慮不同設(shè)備之間的細節(jié)與區(qū)別,此代碼即為驅(qū)動程序。

        驅(qū)動程序?qū)⒂布O(shè)備的具體結(jié)構(gòu)進行屏蔽,對其進行了一種抽象,使設(shè)備在系統(tǒng)中以文件的形式存在。虛擬文件系統(tǒng)(VFS)中,淡化了設(shè)備與文件的區(qū)別,將所有的硬件操作看成是對普通文件的操作。用戶在應(yīng)用程序的角度看硬件設(shè)備,就如同一個普通文件,通過系統(tǒng)調(diào)用即可操作設(shè)備。

        Linux系統(tǒng)中,設(shè)備驅(qū)動按層次能夠分為3個方面:與系統(tǒng)引導(dǎo)的接口、與內(nèi)核的接口和與設(shè)備之間的接口。與系統(tǒng)引導(dǎo)的接口主要針對設(shè)備,實現(xiàn)一些必要的初始化;與內(nèi)核的接口主要是file_operations結(jié)構(gòu)的完善;與設(shè)備的接口則通常以ioctl( )函數(shù)完成驅(qū)動與設(shè)備之間的互動。

        3.1 與系統(tǒng)引導(dǎo)接口

        內(nèi)核中由module_init( )和module_exit( )兩者進行注冊與卸載設(shè)備驅(qū)動程序,這些參數(shù)則指定了相應(yīng)初始化與退出函數(shù)的地址,設(shè)置為FPGA_init以及FPGA_exit。在初始化函數(shù)中,通過register_chrdev( )函數(shù)對字符設(shè)備驅(qū)動進行注冊;在退出函數(shù)時,通過unregister_chrdev( )函數(shù)對字符設(shè)備驅(qū)動進行卸載。

        初始化函數(shù)FPGA_init主要對設(shè)備進行初始化以及注冊,使用函數(shù)register_chrdev(MAJOR,DEV-ICE_NAME,&fpga_fops)。其中,字符設(shè)備注冊函數(shù)register_chrdev的MAJOR參數(shù)代表主設(shè)備號,DEVICE_NAME代表設(shè)備驅(qū)動名,而&fpga_fops代表驅(qū)動的file_operations。創(chuàng)建FPGA的設(shè)備入口點于設(shè)備目錄/dev/fpga下,名為fpga。

        3.2 與內(nèi)核接口

        file_operations結(jié)構(gòu)體中驅(qū)動程序cdev_init設(shè)計的主要任務(wù)是file_operations結(jié)構(gòu)體的實現(xiàn),該結(jié)構(gòu)體中的每個成員都與系統(tǒng)調(diào)用一一對應(yīng),由此實現(xiàn)FPGA和ARM之間的通信。

        驅(qū)動程序的具體內(nèi)容根據(jù)不同的設(shè)備及需求而有所區(qū)別,但整體來說,均要實現(xiàn)初始化、打開、寫入、讀取、關(guān)閉等幾個基本操作。打開和關(guān)閉是一對互相相反的操作,一個將設(shè)備打開并添加設(shè)備計數(shù),另一個釋放設(shè)備并減少設(shè)備計數(shù)。寫入與讀取也彼此相對,但二者都是在內(nèi)核及用戶空間中傳遞數(shù)據(jù),只是傳輸?shù)姆较蛳喾础?/p>

        file_operations中包含諸多操作函數(shù),但對于具體的應(yīng)用,上述幾個函數(shù)即可實現(xiàn)所需要的驅(qū)動與內(nèi)核之間的交互。

        fpga_open( )負責(zé)初始化FPGA,并對其進行設(shè)備有無錯誤的相關(guān)檢測,將其設(shè)備使用計數(shù)加1,并分辨次設(shè)備號。fpga_release( )負責(zé)釋放設(shè)備打開時用到的系統(tǒng)資源,并將FPGA設(shè)備的使用計數(shù)減1。

        fpga_read( )負責(zé)讀取FPGA中的數(shù)據(jù),該函數(shù)有返回值,讀取操作的成功與否表現(xiàn)在函數(shù)返回值為讀取字節(jié)數(shù)還是負值。fpga_write( )負責(zé)向FPGA中寫入數(shù)據(jù),該函數(shù)同樣有返回值,根據(jù)返回值為寫入字節(jié)數(shù)還是EINVAL返回值來判斷寫入操作的成功與否。

        fpga_mmap( )負責(zé)地址映射,因為用戶空間無法直接訪問設(shè)備,該函數(shù)為二者提供了一條相互聯(lián)系的途徑,將FPGA內(nèi)存線性映射至用戶進程中的地址空間,最終的物理地址映射由remap_page_range( )函數(shù)的調(diào)用實現(xiàn)。fpga_ioctl( )負責(zé)讀寫命令之外的設(shè)備操作,返回非負值時說明執(zhí)行成功。

        3.3 與設(shè)備接口

        ioctl( )函數(shù)是驅(qū)動與設(shè)備接口實現(xiàn)的一個方式,主要對設(shè)備I/O進行管理并設(shè)置相應(yīng)的中斷。事實上,內(nèi)核及用戶空間也無法直接聯(lián)系,需要通過copy_from_user( )和copy_to_user( )函數(shù)來完成。但這種方式效率不高,不如直接映射快,即內(nèi)核可訪問物理地址到用戶空間的映射。

        設(shè)備驅(qū)動中,該方式相比標(biāo)準(zhǔn)I/O,對于大文件的處理速度更快,讀寫操作均不用再經(jīng)過內(nèi)核到用戶空間的中間復(fù)制過程。根據(jù)Linux虛擬內(nèi)存管理,將物理地址映射至虛擬空間,可對該段地址執(zhí)行讀寫操作。通過內(nèi)存映射,實現(xiàn)用戶空間對設(shè)備FPGA的訪問[4]。

        使用函數(shù)request_mem_region( ),在訪問之前檢驗內(nèi)存資源申請的情況,若成功,則該資源被標(biāo)記并無法再被其他驅(qū)動申請。在驅(qū)動程序初始化階段,由函數(shù)ioremap( )負責(zé)映射FPGA物理地址到內(nèi)核中的虛擬空間,而后在驅(qū)動程序調(diào)用時,函數(shù)remap_page_range( )真正將映射執(zhí)行至用戶虛擬空間。操作完成后,通過函數(shù)iounmap( )及release_mem_region( )來實現(xiàn)與前述過程相對的操作,釋放申請的虛擬地址并歸還內(nèi)存資源。圖4為內(nèi)存映射流程。

        圖4 內(nèi)存映射流程

        4 檢測結(jié)果

        將探頭放置于試塊表面,令系統(tǒng)工作并接收回傳的16路超聲數(shù)據(jù)(見圖5)。該16路信號經(jīng)過系統(tǒng)前端的處理,已進行過延時補償,可以看出信號在幅值波動處對齊。由圖5可知,單一通道回波信號的幅值較小,不易觀察,這也是相控陣超聲檢測需要進行波束合成的原因之一。多路信號延時疊加后,同相增強,反相相消。

        圖5 16路回波數(shù)據(jù)波形

        5 結(jié)論

        采用基于FPGA+ARM的形式,結(jié)合二者優(yōu)勢,搭建了超聲相控陣檢測成像系統(tǒng),設(shè)計了FPGA與ARM之間的通信接口。在FPGA中配置雙口RAM進行數(shù)據(jù)的中轉(zhuǎn)與傳輸,在Linux操作系統(tǒng)下編寫驅(qū)動程序,以完成軟硬件之間的交互。經(jīng)測試,系統(tǒng)運行與接口工作正常,檢測結(jié)果能夠有效顯示。

        猜你喜歡
        驅(qū)動程序相控陣內(nèi)核
        萬物皆可IP的時代,我們當(dāng)夯實的IP內(nèi)核是什么?
        強化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
        相控陣超聲技術(shù)在PE管電熔焊接檢測的應(yīng)用
        煤氣與熱力(2021年3期)2021-06-09 06:16:16
        相控陣超聲波檢測技術(shù)認證
        化工管理(2021年7期)2021-05-13 00:45:20
        一種相控陣雷達的通訊處理器設(shè)計
        電子制作(2019年24期)2019-02-23 13:22:16
        基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計
        Linux內(nèi)核mmap保護機制研究
        相控陣雷達研究現(xiàn)狀與發(fā)展趨勢
        電子測試(2018年15期)2018-09-26 06:01:46
        驅(qū)動程序更新與推薦
        驅(qū)動程序更新與推薦
        中文字幕人妻在线中字| 999久久久免费精品国产牛牛| 一区二区三区国产97| 国产一区二区丰满熟女人妻| 日韩国产有码在线观看视频| 91国产精品自拍视频| 成年av动漫网站18禁| 韩国三级大全久久网站| 亚洲av无码一区二区乱孑伦as| 精品国产人妻一区二区三区| 成人毛片18女人毛片免费| 青青草伊人视频在线观看| 亚洲国产91高清在线| 午夜爽爽爽男女免费观看影院| 日本高清色倩视频在线观看| 亚洲福利天堂网福利在线观看| 亚洲日本在线中文字幕| 亚洲色图在线免费视频| 国精产品一区一区三区有限公司杨| 激情综合欧美| 91精品国产91久久综合桃花| 国产一区二区中文字幕在线观看| 久久天堂av综合合色| 亚洲性啪啪无码av天堂| 午夜a福利| 亚洲av免费高清不卡| 亚洲字幕中文综合久久| 国产无人区码一码二码三mba| 国产午夜精品久久久久99| 蜜桃在线视频一区二区| 国内自拍情侣露脸高清在线| 国产成人a在线观看视频免费| 性高朝久久久久久久| 69国产成人综合久久精| 成人一区二区三区国产| 欧洲乱码伦视频免费| 丰满人妻无奈张开双腿av| 成人国产在线播放自拍| 亚洲国产一区二区三区| 美女视频黄的全免费视频网站| 亚洲成人福利在线观看|