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