李 營,夏景云,呂兆承,陳 帥
淮南師范學(xué)院電子工程學(xué)院,安徽淮南,232038
在日常車輛啟動和停車及駕駛過程中,由于存在視線盲區(qū),駕駛員對有些事物或小孩總會看不見,容易引起事故,而超聲波測距儀作為一種常見的非接觸式距離測量工具[1-2],因其具有定向性好、價格低廉、抗干擾能力強,便攜性等優(yōu)點,常用于工業(yè)測量、車輛避障、安全預(yù)警、車輛自動導(dǎo)航[3-4]以及機器人等領(lǐng)域。然而,目前市場上大多數(shù)超聲波測距儀的控制器采用51 單片機,其測量精度受到定時器時鐘頻率的限制[5],效果較差。
FPGA 作為高密度可編程處理器,具有IO口多、并行運算、集成度高等特點,能夠彌補單片機為控制核心的不足。鑒于此,本文根據(jù)回波檢測原理,采用軟硬件結(jié)合方法和自定義用戶 IP 核技術(shù),利用層次化建模思想將系統(tǒng)劃分為高精度分頻器、均值濾波處理和回波信號檢測,數(shù)值轉(zhuǎn)換,數(shù)碼管顯示及蜂鳴器發(fā)聲驅(qū)動等模塊,并使用硬件描述語言Verilog設(shè)計實現(xiàn)各功能模塊。最終以Altera公司的Cyclone IV系列的EP4CE6E22C8 為核心控制芯片,實現(xiàn)了高精度倒車?yán)走_防撞系統(tǒng),達到了設(shè)計要求,且本系統(tǒng)具有可靠性高、集成度高、響應(yīng)速度快和成本低廉等特點。
本系統(tǒng)采用回波檢測法,如圖1所示,F(xiàn)PGA產(chǎn)生一個大于10 μs的觸發(fā)信號(trig)給超聲波模塊,超聲波模塊內(nèi)部會產(chǎn)生一些脈沖信號,經(jīng)內(nèi)部的濾波處理,最終得到與FPGA連接的高脈沖回響信號(echo),根據(jù)脈沖信號的寬度換算后得到當(dāng)前障礙物和模塊間的距離(圖2)。
圖1 超聲波模塊驅(qū)動波形
圖2 倒車?yán)走_接口示意圖
根據(jù)上面的原理且已知溫度為25度時,聲音在空氣中的傳播速度為346 m/s,若時鐘周期數(shù)為T(單位:s)時,則取超聲波傳感器與障礙物間的距離S(單位:m)時,有
S=346*T/2
(1)
系統(tǒng)設(shè)計的接口示意圖如圖2所示,F(xiàn)PGA產(chǎn)生周期性的trig脈沖信號,使超聲波傳感器發(fā)射探頭周期性地向外發(fā)射超聲波測距脈沖,同時計時器開始計數(shù),脈沖發(fā)出后遇到障礙物返回,超聲波模塊將返回的脈沖echo返回給FPGA。由echo信號的高脈沖保持時間可確定超聲波傳感器與障礙物間的距離,并且針對不同的距離,產(chǎn)生不同的蜂鳴器發(fā)聲頻率和保持時間。
本系統(tǒng)以 ALTERA 公司Cyclone IV 系 列 的EP4CE6E22C8 芯片為核心控制器,主要由FPGA芯片、時鐘電路、系統(tǒng)電源、接口電路和收發(fā)一體的HC-SR04超聲波測距模塊構(gòu)成。算法流程圖如圖3所示。為了程序的擴展性,采用層次化建模思想將系統(tǒng)分為各底層模塊和頂層模塊,其中底層模塊包括:分頻器模塊(clkdiv),超聲波回響信號計數(shù)模塊(ultrasound),濾波模塊(filter),距離換算模塊,蜂鳴器發(fā)聲驅(qū)動模塊和數(shù)碼管驅(qū)動模塊,底層模塊間的關(guān)系框圖如圖4所示。頂層模塊(top.v)分為輸入輸出端口,并調(diào)用各底層模塊構(gòu)建倒車?yán)走_防撞系統(tǒng),最終完成系統(tǒng)功能。
圖3 算法流程圖
圖4 系統(tǒng)底層模塊關(guān)系框圖
系統(tǒng)采用 Altera 公司的Quartus軟件對系統(tǒng)程序進行開發(fā),各個子模塊采用Verilog HDL編寫,并分別對其進行仿真與調(diào)試以保證其功能,最后將各子模塊集成為一個整體的系統(tǒng),以下介紹各個模塊的設(shè)計與實現(xiàn)。
該模塊的功能是每10 μs產(chǎn)生一個時鐘脈沖即輸出clk_100 KHz時鐘,其核心代碼如下:
always @(posedge clk or negedge rst_n)//1s定時計數(shù)
if(!rst_n) cnt <= 8′d0;
else if(cnt < 8′d249) cnt <= cnt+1′b1;
else cnt <= 8′d0;
assign clk_100 KHz = (cnt == 8′d249)1′b1:1′b0;//每25 μs產(chǎn)生一個40 ns的高脈沖
該模塊的功能是每秒定時產(chǎn)生超聲波測距模塊的激勵信號ultrasound_trig,即10 μs的高脈沖,并對測距模塊的高脈沖ultrasound_echo計數(shù)。其設(shè)計示意圖如圖5所示。其中,echo_pulse_en是回響信號計數(shù)值有效信號,echo_num是以10 μs為單位對超聲波測距模塊回響信號高脈沖進行計數(shù)的最終值。
圖5 超聲波回響信號計數(shù)模塊
均值濾波處理模塊的主要功能是緩存最近采集到的8組超聲波測距回響脈沖計數(shù)(echo_num),對其累加求平均(echo_filter_num),然后將該值傳送到距離換算模塊,距離換算模塊將該數(shù)值轉(zhuǎn)換為實際距離的十進制計數(shù)值(echo_pulse_f_mul_num),這兩部分的示意圖分別如圖6和圖7所示。
蜂鳴器發(fā)聲驅(qū)動模塊(beep.v)功能是根據(jù)距離換算模塊的距離數(shù)值控制相應(yīng)的蜂鳴器發(fā)出不同頻率的響聲提醒駕駛?cè)?,而?shù)碼管模塊(seg.v)的功能是接收距離換算模塊的距離數(shù)值進而驅(qū)動數(shù)碼管顯示。這兩塊功能較為簡單,由于篇幅所限,此處不再詳述。
圖6 均值濾波模塊示意圖 圖7 距離換算模塊示意
頂層模塊的作用是進行各底層模塊間數(shù)據(jù)信號和控制信號之間的連接,最終實現(xiàn)系統(tǒng)要求,該模塊完成后系統(tǒng)的最終生成的原理圖如圖8所示,從圖中可知,各底層模塊間的連接關(guān)系與圖4框圖一致。
圖8 系統(tǒng)頂層原理圖
(1) 仿真軟件:QuartusⅡ13.1;
(2) 硬件描述語言:Verilog HDL;
(3) FPGA核心板:EP4CE6E22C8。
系統(tǒng)設(shè)計完成后采用Quartus內(nèi)部的SignalTapII在線邏輯分析儀進行測試,經(jīng)由SignalTapII的采集,可看到采樣信號ultrasound_trig和ultrasound_echo不停地有采樣波形產(chǎn)生,如果在超聲波模塊前放置障礙物(如書本),該障礙物距離超聲波模塊的遠近,會讓ultrasound_echo信號的波形高脈沖保持時間發(fā)生變化,圖9為其中一段放置障礙物后的ultrasound_trig和ultrasound_echo的變換波形。
圖9 系統(tǒng)采用signalTap II調(diào)試信號采集波形圖
本文利用自頂向下層次化建模思想,設(shè)計出基于FPGA的超聲波測距倒車?yán)走_防撞系統(tǒng),它是一種利用計算機軟件和硬件組合的控制裝置??稍谲囕v行駛中實時監(jiān)測并分析判定,對構(gòu)成危險的障礙物進行報警,降低了駕駛員的工作強度[6]。本系統(tǒng)的有效測試距離是2~400 cm,測距精度可達到2 mm,適當(dāng)改進后也可用于智能車輛避障及其他短距離測距要求的相關(guān)系統(tǒng)中。