【正文】
鐘為100KHZ,則觸發(fā)周期可以計算為:其中, 為觸發(fā)計數(shù)上升沿數(shù); 為測距往返最大值的上升沿計數(shù)。25MHZ為1KHZ的25000倍,因而從0到12499計數(shù)。 用FPGA產(chǎn)生一滿足超聲波模塊的觸發(fā)信號,使之開始工作,等待接受回聲信號。 感應(yīng)角度不大于15度;但此次課設(shè)使用FPGA用硬件描述語言來構(gòu)建此電路是對FPGA本身功能和各模塊使用的學(xué)習(xí)和提升。可編程邏輯器件及EDA技術(shù)課程設(shè)計 ——基于FPGA的超聲波測距電路和其擴展應(yīng)用摘要本課設(shè)使用FPGA和其他模塊為硬件基礎(chǔ),以VHDL為硬件描述語言進行超聲波測距電路的搭建,完成數(shù)碼管精度為2厘米的實時顯示,并且在基本電路的基礎(chǔ)上使用蜂鳴器擴展出“倒車?yán)走_”功能,在距離不同的區(qū)間內(nèi)蜂鳴器會響出不同的頻率的聲音,總體是距離越小,頻率越高。二、功能描述:使在數(shù)碼管上實時顯示障礙物與測試模塊的距離,要求顯示米、分米和厘米位,數(shù)碼管精度為2厘米,實時顯示,并且在基本電路的基礎(chǔ)上使用蜂鳴器擴展出“倒車?yán)走_”功能,在距離不同的區(qū)間內(nèi)蜂鳴器會響出不同的頻率的聲音,總體是距離越小,頻率越高?;芈曇_接受到回聲信號后,開始記錄整個高電平所持續(xù)時間,再根據(jù)脈沖周期計算的超聲波往返的總時間,用公式S=340*T/2來計算相對距離(340為默認(rèn)聲速,可調(diào))。 以分頻模塊提供的100KHZ為時鐘,周期為10微秒,其中高電平為5微秒。(為滿足發(fā)射和返回信號的實時性,應(yīng)滿足兩倍的)。數(shù)據(jù)寬度根據(jù)最大測距距離可確定為12位。高位在2號位,中位在1號位,低位在0號位。五、編程下載編程: 編程采用模塊化設(shè)計的方法。不能不驗證就連接到整體系統(tǒng)中,一旦出現(xiàn)問題就會不知道從哪里檢查問題,也很浪費時間! ,這樣能節(jié)省很多設(shè)計時間,直接調(diào)用即可。use 。end system。end ponent。 TRIG:OUT STD_LOGIC )。 TIM:OUT UNSIGNED(11 DOWNTO 0))。u3:LAUNCH port map(CLK_100KHz,TRIG_N)。use 。139。end case。ENTITY LAUNCH ISPORT(CLK_10U:IN STD_LOGIC。 THEN IF COUNT=12000 THEN COUNT=0。039。entity freq_div is port(clk_in_25MHz:in std_logic。event and clk_in_25MHz=39。end process。 end if。use 。 when0001=led_dig=10000110。 when1001=led_dig=11101111。 when0101=led_dig=01101101。 when0001=led_dig=00000110。 when1001=led_dig=01101111。USE 。 N=X*17/100。 LIBRARY IEEE。SIGNAL TIM_COU:SUB_IN:=0。 END IF 。END ARCHITECTURE。 END ENTITY。 5k ELSIF T=1 AND T88 THEN COUNT_SUM=4。)then if(t25000)then t:=t+1。039。 END IF。 BUZZ=B AND (NOT SWITCH) and clk_out。EVENT AND CLK_100K=39。 temp_counter=not temp_counter。 END IF。SIGNAL COUNT:integer range 0 to 49。use 。 IF ECHO39。EVENT AND CLK_10U=39。USE 。 M=(NH*100)/10。USE 。 end case。 when0011=led_dig=01001111。 when0111=led_dig=00000111。 end case。 when0011=led_dig=11001111。 H_4,M_4,L_4:in std_logic_vector(3 downto 0)。 clk_out_100KHz=temp_counter_100KHz。beginif(clk_in_25MHz39。)then if(t12499)then t:=t+1。 clk_out_1KHz:out std_logic)。 END PROCESS。 END IF。END LAUNCH。end process。i:=1。entity scanner is port(clk_in:in std_logic。U5:MEASURE port map(T,m1,m2,m3)。COMPONENT switch1 ISPORT(CLK_100K,SWITCH:IN STD_LOGIC。ponent display isport(led_sel_in:in std_logic_vector(3 downto 0