【正文】
發(fā)信號(hào),使之開(kāi)始工作,等待接受回聲信號(hào)。因而,占空比不為50%,且可大致畫(huà)時(shí)序圖如下:,計(jì)量時(shí)鐘為100KHZ,則觸發(fā)周期可以計(jì)算為:其中, 為觸發(fā)計(jì)數(shù)上升沿?cái)?shù); 為測(cè)距往返最大值的上升沿計(jì)數(shù)。第二個(gè)是完成高中低位和數(shù)碼管顯示的匹配。不能想到哪里就做到哪里,這樣會(huì)在結(jié)合的時(shí)候非常浪費(fèi)時(shí)間! ,確保能正常使用和兼容其他模塊。 led_sel : out std_logic_vector(3 downto 0) )。ponent LAUNCH isPORT(CLK_10U:IN STD_LOGIC。u2:scanner port map(clk_1KHz,led_sel_temp)。event and clk_in=39。USE 。 ELSIF COUNT=2 THEN TRIG=39。beginif(clk_in_25MHz39。 temp_counter_100KHz=not temp_counter_100KHz。beginprocess(led_sel_in,H_4,L_4)BEGIN IF led_sel_in=1011 THEN case(H_4) is when0000=led_dig=10111111。 when0100=led_dig=01100110。 when1000=led_dig=01111111。BEGIN X=conv_INTEGER(T_12)。ARCHITECTURE ONE OF receive IS SUBTYPE SUB_IN IS INTEGER RANGE 0 TO 6000。 END PROCESS。 2k ELSIF T=88 AND T176 THEN COUNT_SUM=10。EX:PROCESS(SWITCH,CLK_100K) BEGIN IF SWITCH=39。 END PROCESS。 end if。SIGNAL T,COUNT_SUM:INTEGER。EVENT AND ECHO=39。USE 。ENTITY MEASURE IS PORT(T_12:IN UNSIGNED(11 DOWNTO 0)。 when0100=led_dig=01100110。 ELSIF led_sel_in=1101 THEN case(M_4) is when0000=led_dig=00111111。 led_dig:out std_logic_vector(7 downto 0)。event and clk_in_25MHz=39。end freq_div。 END IF。end Behavioral。 led_sel:out std_logic_vector(3 downto 0))。 TIM:IN UNSIGNED(11 DOWNTO 0)。END ponent。use 。 下載:使用USB Blaster ,并進(jìn)行端口配置,注意下載時(shí)保證FPGA的正常供電。也相當(dāng)于4分頻,對(duì)每個(gè)數(shù)碼管來(lái)說(shuō),其頻率為1KHZ的四分之一。不然會(huì)出現(xiàn)返回信號(hào)混疊引起計(jì)算錯(cuò)誤。三、可行性分析 要實(shí)現(xiàn)以上所描述的功能,我們可以從三方面進(jìn)行可行性分析: FPGAFPGA型號(hào)為EP4CE6E22C8N,其Total logic elements 為6272,滿(mǎn)足大多數(shù)開(kāi)發(fā)要求。用以實(shí)踐在課堂上所學(xué)知識(shí)內(nèi)容,加深理解。采用“計(jì)數(shù)取反”的方法進(jìn)行分頻。以分頻模塊提供的100KHZ為時(shí)鐘,周期為10微秒。此擴(kuò)展功能模塊,有很大的設(shè)計(jì)自由度。附錄HCSR04工作原理:signal T,M:UNSIGNED(11 downto 0)。 led_dig:out std_logic_vector(7 downto 0)。U7:switch1 PORT MAP(CLK_100KHz,SWITCH_N,T,BUZZ_N)。i:=2。SIGNAL COUNT:SUB_IN。library IEEE。 temp_counter_1KHz=not temp_counter_1KHz。 end Behavioral。 when0101=led_dig=11101101。 when1001=led_dig=01101111。end process。 PLAY_H=CONV_STD_LOGIC_VECTOR(H,4)。 THEN if ECHO=39。use 。process(clk_100K) variable t:integer range 1 to 25000。 THEN IF COUNTCOUNT_SUM THEN COUNT=COUNT+1。 B= NOT B。event and clk_100K=39。 TIM:IN UNSIGNED(11 DOWNTO 0)。 THEN TIM_COU=TIM_COU+1。 PLAY_L=CONV_STD_LOGIC_VECTOR(L,4)。end B