馬 凱,曹雪偉
(1.南京科技職業(yè)學院,江蘇 南京 210048;2.高等教育出版社有限公司,北京 100039)
基于FPGA超聲波測距設(shè)計
馬 凱1,曹雪偉2
(1.南京科技職業(yè)學院,江蘇 南京 210048;2.高等教育出版社有限公司,北京 100039)
文章介紹了一種超聲波測距控制器設(shè)計方案,使用Microsemi公司的FPGA芯片搭建了測距系統(tǒng)硬件電路,然后利用Verilog HDL語言進行編程、仿真和調(diào)試,實現(xiàn)了預期任務(wù)要求。
FPGA;超聲波;測距
利用超聲波技術(shù)可以直接測量近距離目標,縱向分辨率高,適用范圍廣,方向性強,并具備不受光線、煙霧、電磁干擾等因素影響,且覆蓋面較大等優(yōu)點。目前,超聲波測距已普遍應用在移動機器人定位、汽車導航、無人機蔽障等領(lǐng)域[1]。
隨著IC設(shè)計技術(shù)的不斷發(fā)展和提高,現(xiàn)場可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)開始應用到超聲波測距系統(tǒng)中,F(xiàn)PGA強大的在線可編程特性能夠?qū)崿F(xiàn)一個復雜測距系統(tǒng)的硬件設(shè)計、邏輯運算、軟件編程、仿真和調(diào)試功能。
FPGA是一種可以現(xiàn)場編程的集成電路芯片,它的邏輯門電路數(shù)是萬量級別,常用的基本邏輯門電路或者更復雜的組合功能電路都可以用簡單地編程來實現(xiàn)。FPGA設(shè)計通常指定用硬件描述語言(Hardware Description Language,HDL),系統(tǒng)設(shè)計人員可以方便地連接、設(shè)置邏輯功能塊,可靠實現(xiàn)控制要求的邏輯函數(shù),而且很多的FPGA器件內(nèi)部配置基本存儲單元或者留存完整的數(shù)據(jù)存儲區(qū)域[2]。
本文介紹了超聲波測距系統(tǒng)中用FPGA來實現(xiàn)對超聲波傳感器的收發(fā)控制及數(shù)據(jù)處理。考慮系統(tǒng)中對輸入輸出接口的需求和FPGA產(chǎn)品的代表性,主控芯片選用了Microsemi公司PA系列的FPGA,型號為APA300PBGA456I。
APA300是Microsemi公司PA系列芯片,擁有可再編程Flash技術(shù)、非易失性存儲器技術(shù)特性,允許開發(fā)人員移植現(xiàn)有的FPGA設(shè)計流程和開發(fā)工具,設(shè)計新系統(tǒng)。PA系列PFGA器件的特點包含:(1)多電壓(3.3 V,2.5 V)工作環(huán)境;(2)雙時鐘系統(tǒng),每個時鐘系統(tǒng)都有鎖相環(huán)、延遲線、乘法器/除法器;(3)兩個差分輸入對(LVPECL),用于接收時鐘或數(shù)據(jù);(4)支持高達72 k的兩端口嵌入SRAM和290個可用的I/O口;(5)上電即工作[3]。
PA系列的FPGA內(nèi)部結(jié)構(gòu)主要由基本邏輯單元(Logic Unit)、隨機寄存器(Random-Access Memory,RAM)、嵌入式FIFO塊、輸入輸出接口(I/O口)、可編程連線等幾部分構(gòu)成。器件內(nèi)部結(jié)構(gòu)如圖1所示。
圖1 FPGA器件內(nèi)部結(jié)構(gòu)
芯片內(nèi)部包含8 kB邏輯單元,每個邏輯單元可以通過不同的Flash開關(guān)互連,配置為一個三輸入邏輯功能塊。而且Flash開關(guān)分布于整個設(shè)備,能夠提供非易失性,能夠重構(gòu)互連編程,可以實現(xiàn)更復雜的輸入輸出邏輯功能。
芯片內(nèi)部有嵌入式的兩端口SRAM塊,自建FIFO/RAM控制邏輯,配置內(nèi)容有同步或異步操作、雙口RAM的設(shè)定、定義的深度和寬度、奇偶校驗等。
APA300 FPGA另外一個顯著特點是內(nèi)部SRAM編程元件采用上電即通ISP閃存開關(guān)技術(shù)。APA300提供大量的I/O接口,而且電源電壓是可配置,所有I/O接口內(nèi)部都設(shè)計了靜電保護電路,能夠充分滿足系統(tǒng)要求。I/O接口的輸入、輸出、雙向緩沖或三態(tài)驅(qū)動等復用功能,可以通過編程設(shè)置實現(xiàn)[4]。
系統(tǒng)主要包括FPGA運算控制器模塊和超聲波收發(fā)模塊及接口電路。FPGA通過定時運算產(chǎn)生脈沖信號,微弱的脈沖信號經(jīng)接口電路放大后,驅(qū)動超聲波收發(fā)模塊的發(fā)射換能器發(fā)射出檢測聲波,經(jīng)被測物反射后的回波信號,由超聲波接收模塊濾波放大后,再由FPGA檢測回波信號,經(jīng)計算后得到距離[5],系統(tǒng)組成框如圖2所示。
圖2 系統(tǒng)組成框
回波檢測法中超聲波傳感器的發(fā)射換能器向外發(fā)射超聲波,超聲波在介質(zhì)中傳播,遇到障礙物后則會反射產(chǎn)生回波,超聲波傳感器的接收換能器接收回波,因此由超聲波的傳播速率和往返時問可確定超聲波傳感器與物體的距離。
Microsemi公司PA系列的FPGA芯片APA300PBGA456I,其原理圖使用EDA軟件設(shè)計,設(shè)計時按信號特性分為5個Bank,原理圖信號清晰,可以提高設(shè)計的準確度。原理圖塊特性如表1所示。表1中Bank1和Bank2為I/O輸入輸出接口;Bank3為JTAG口;Bank4電源,Bank5為GND。
表1 原理圖塊特性
為滿足FPGA的正常工作,需要提供不同等級的電壓,對I/O接口進行信號隔離和驅(qū)動放大。電源方面采用MSK的電壓轉(zhuǎn)換芯片MSK5230,它可提供2.5 V和3.3 V穩(wěn)定輸出電壓,滿足了FPGA 3.3 V和2.5 V的供電要求;I/O接口芯片為74LVC4245A,該芯片是3.3 V供電,能夠?qū)⑤斎胄盘栟D(zhuǎn)換為3.3 V信號,可實現(xiàn)I/O接口的信號隔離和驅(qū)動放大。
軟件設(shè)計方面,軟件總體架構(gòu)是采用主流的從上到下(Top-Down)的模塊化設(shè)計方式,編程上利用廣泛通用的Verilog HDL語言進行[6]。
FPGA軟件功能模塊框如圖3所示。其中各個功能模塊在FPGA內(nèi)部并行運行,模塊間的數(shù)據(jù)傳輸是通過寄存器完成。
FPGA主要軟件模塊的主要任務(wù)和具體功能如下。
(1)主模塊即主程序,主要任務(wù)是實現(xiàn)對整個系統(tǒng)I/O接口信號的定義,同時定義各個功能子程序模塊,明確主模塊和各子模塊之間關(guān)系。
(2)時序發(fā)生器模塊主用任務(wù)是為其他模塊提供時鐘信號,它是整個FPGA工作的基礎(chǔ),能夠確保系統(tǒng)各模塊同步工作。
圖3 FPGA軟件功能模塊框
(3)高速計數(shù)器模塊主要任務(wù)是高速定時或計數(shù),其功能是采樣超聲波驅(qū)動信號發(fā)出和回波信號返回時差間的脈沖數(shù)據(jù),是測距運算的先決條件,F(xiàn)PGA的運行速度越高,在回波信號到達時刻捕獲越準確,則測距精度就越高。
(4)波形發(fā)生器模塊的任務(wù)是產(chǎn)生驅(qū)動脈沖,它是在時序發(fā)生器的作用下,分頻處理得到符合超聲波換能器工作的驅(qū)動脈沖信號。
(5)回波識別模塊的任務(wù)是實時準確捕獲回波信號到達時刻,是系統(tǒng)穩(wěn)定可靠的關(guān)鍵,可以結(jié)合檢波電路通過極值算法實現(xiàn)。
具體的算法流程如4所示,首先上電復位系統(tǒng)初始化,各相關(guān)寄存器初始狀態(tài)清零,F(xiàn)PGA各個子模塊并行運行,然后時序發(fā)生器按照控制要求產(chǎn)生超聲波驅(qū)動信號,同時高速計數(shù)器開始工作,隨后等待回波信號中斷請求,“是”則停止高速計數(shù)器計時,然后進行距離計算,“否”則繼續(xù)等待回波信號到來。
圖4 控制器軟件程序算法流程
根據(jù)FPGA模塊化設(shè)計思想和算法,本系統(tǒng)采用Libero Soc集成開發(fā)環(huán)境(Integrated Development Environment,IDE)開發(fā),Libero Soc IDE軟件設(shè)計功能完備、強大,支持Verilog HDL和VHDL輸入,原理圖輸入,綜合工具生成網(wǎng)表,測試向量文件的生成,仿真工具布局布線和程序下載等。
本系統(tǒng)設(shè)計選用Verilog HDL硬件描述語言進行編寫,軟件程序共分6個模塊,即主模塊、時序發(fā)生器模塊、高速計數(shù)器模塊、波形發(fā)生器模塊、回波識別模塊、距離計算模塊。
主要過程如下:首先在Libero Soc IDE開發(fā)軟件下選擇合適的FPGA器件類型和規(guī)模,然后進行軟件程序代碼的編寫設(shè)計,程序代碼編寫界面如圖5所示。
程序編寫完成后,進行Synplify綜合生成網(wǎng)表,則程序會自動檢查代碼格式編寫情況,會有出錯或報警提示,如有Error進行及時改正,直到軟件綜合完成,程序綜合界面如圖6所示。
完成網(wǎng)表生成后,就可以編寫testbench(測試代碼)進行Modelsim前仿真,前仿真是復雜程序內(nèi)部邏輯實現(xiàn)的關(guān)鍵,能夠查看程序中各寄存器、狀態(tài)機的工作狀態(tài),也是程序功能正確實現(xiàn)前提,程序仿真界面如圖7所示。
測試仿真后,定義“PIN”管腳號(.gcf文件),然后布局布線及生成燒寫(.stp)文件,布局布線和生成燒寫文件如圖8所示。
最后通過Flash Pro軟件進行燒寫文件下載,板上調(diào)試程序下載到FPGA內(nèi),再進行板上調(diào)試以達到預設(shè)功能。
本文用FPGA實現(xiàn)對超聲波傳感器的收發(fā)控制及數(shù)據(jù)處理功能,系統(tǒng)硬件電路設(shè)計可靠,軟件采用自下而上的模塊化設(shè)計,通過Libero軟件開發(fā)實現(xiàn)功能,為超聲波ASIC芯片設(shè)計和開發(fā)提供了一定的參考價值。
圖5 程序代碼編寫界面
圖6 程序綜合界面
圖7 程序仿真界面
圖8 布局布線和生成燒寫文件
[1] 楊軍,張偉平,趙嘎.面向sopc的fpga設(shè)計與應用[M].北京:北京科學出版社,2012.
[2] 楊恒、盧飛成.FPGA/VHDL快速工程實踐入門與提高[M].北京:北京航空航天大學出版社,2003.
[3] 王誠.FPGA/CPLD設(shè)計工具-XilinxISE5.x使用詳解[M].北京:人民郵電出版社,2003.
[4] 李戈,孟祥杰.國內(nèi)超聲波測距研究應用現(xiàn)狀[J].測繪科學,2011(10):60-62.
[5] 楊兆飛,司洋.基于FPGA超聲波測距系統(tǒng)的改進[J].電子測試,2012(8):39-41.
[6] 王紅云,姚志敏,王竹林,等.超聲波測距系統(tǒng)設(shè)計[J].儀表技術(shù),2010(10):47-49.
Design of ultrasonic distance measuring based on FPGA
Ma Kai1, Cao Xuewei2
(1.Nanjing Polytechnic Institute, Nanjing 210048, China; 2.Higher Education Press Co., Ltd., Beijing 100039, China)
This paper introduces a kind of ultrasonic distance measuring controller design, using Microsemi’s FPGA chips build a distance measuring system hardware circuit, then utilizing Verilog HDL language to programme, simulation and debugging, which achieving the desired task requirements.
fi eld programmable gate array; ultrasonic; distance measuring
江蘇省“青藍工程”資助項目;項目編號:2017。南京科技職業(yè)學院科研項目;項目編號:NHKY-2017-11。
馬凱(1978— ),男,江蘇邳州人,講師,碩士;研究方向:機電一體化,檢測技術(shù)。