【正文】
END IF。 THEN IF CLK_100K39。 else t:=1。 10k ELSE COUNT_SUM=500。 ARCHITECTURE ONE OF SWITCH1 ISSIGNAL B,temp_counter, clk_out:STD_LOGIC。library IEEE。 END IF 。BEGIN TIMC:PROCESS(ECHO,CLK_10U) BEGIN IF CLK_10U39。USE 。 H=N/100。USE 。 when others=led_dig=01111111。 when0010=led_dig=01011011。 when0110=led_dig=01111101。 when others=led_dig=11111111。 when0010=led_dig=11011011。ENTITY display ISport(led_sel_in:in std_logic_vector(3 downto 0)。 end if。process(clk_in_25MHz)variable t1:integer range 0 to 124。139。 clk_out_100KHz:out std_logic。 END IF。 ELSE COUNT=COUNT+1。 TRIG:OUT STD_LOGIC )。end if。)thencase(i) is when 0=led_sel=1110。use 。u4:display port map(led_sel_temp,m1,m2,m3,led_dig,led_sel)。END ponent。end ponent。ponent MEASURE is PORT(T_12:IN UNSIGNED(11 DOWNTO 0)。architecture Behavioral of system issignal clk_100kHz,clk_1KHz,BUZZ:std_logic。use 。 ,板級調(diào)試出現(xiàn)錯誤或者與預(yù)想的結(jié)果不同時,可以從引腳到器件進(jìn)行一步步的分析,很可能是引腳映射錯誤或者板子自身的問題。根據(jù)功能和所需參數(shù)分別設(shè)計頂層和底層文件,通過原件例化聯(lián)系到一起。計算模塊是完成周期計數(shù)數(shù)據(jù)到米、分米和厘米的BCD碼轉(zhuǎn)換功能。 時序圖如下: 由上計算,在頻率為100KHZ的時鐘下,最大距離往返可以計數(shù)2647次,化成二進(jìn)制為:1010_0101_0111,也即最大計數(shù)為12位寬的二進(jìn)制表示。其中為滿足觸發(fā)條件,所以取值為5。已知超聲波模塊完成觸發(fā)需要大于10微秒的高電平,所以需要至少兩個周期(上升沿觸發(fā))。再開關(guān)選擇打開時,蜂鳴器開始工作,根據(jù)超聲波返回高電平信號記錄周期數(shù),設(shè)定判斷距離標(biāo)準(zhǔn)。此功能在單片機上實現(xiàn)更為方便,成本也更低。過程中,進(jìn)行了需求分析,可行性分析,模塊建構(gòu)和調(diào)試下載等過程,從中學(xué)到很多工程實踐過程中的知識。此功能在單片機上實現(xiàn)更為方便,成本也更低。;25MHZ為100KHZ的250倍,因而從0到124計數(shù)。第二個方面得不到保證會使人感覺數(shù)據(jù)變化突兀。 模塊要求高電平時開始計數(shù),為低時把計數(shù)結(jié)果導(dǎo)出并持續(xù)到下一個下降沿的數(shù)據(jù)更新時,并把計數(shù)信號置零,等待重新計數(shù)。顯示模塊里有兩個功能塊,第一個是進(jìn)行從BCD碼到數(shù)碼管的軟譯功能(區(qū)分?jǐn)?shù)碼管是共陰極還是共陽極),要注意高位為米位,其小數(shù)點位需要點亮。再根據(jù)所屬不同范圍產(chǎn)生不同的分頻功能,分頻結(jié)果輸出到蜂鳴器。當(dāng)然,實驗最有價值的東西不止是成功的喜悅,更有在實驗過程中調(diào)試中不斷發(fā)現(xiàn)問題解決問題和處理問題的經(jīng)歷,以及總結(jié)學(xué)習(xí)的工程實踐的經(jīng)驗,在此作以總結(jié): ,一定要先在腦海或設(shè)計本上規(guī)劃好頂層各個模塊的功能實現(xiàn)和參數(shù)設(shè)置,也要設(shè)計好底層某一模塊具體功能的實現(xiàn)。(2)工作原理: 采用IO觸發(fā)測距,給至少10us的高電平信號; 模塊自動發(fā)送8個40khz的方波,自動檢測是否有信號返回; 有信號返回,通過IO輸出一高電平,高電平持續(xù)的時間就是超聲波從發(fā)射到返回的時library IEEE。 led_dig : out std_logic_vector(7 downto 0)。 clk_out_100KHz:out std_logic。end ponent。end ponent。beginu1:freq_div port map(clk_in,clk_100KHz,clk_1KHz)。library IEEE。beginif(clk_in39。i:=0 when others=led_sel=0000。USE 。EVENT AND CLK_10U=39。139。use 。beginprocess(clk_in_25MHz) variable t:integer range 0 to 12499。 end if。 else t1:=0。use 。architecture Behavioral of disp