【正文】
發(fā)信號,使之開始工作,等待接受回聲信號。因而,占空比不為50%,且可大致畫時序圖如下:,計量時鐘為100KHZ,則觸發(fā)周期可以計算為:其中, 為觸發(fā)計數(shù)上升沿數(shù); 為測距往返最大值的上升沿計數(shù)。第二個是完成高中低位和數(shù)碼管顯示的匹配。不能想到哪里就做到哪里,這樣會在結(jié)合的時候非常浪費時間! ,確保能正常使用和兼容其他模塊。 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 ,并進行端口配置,注意下載時保證FPGA的正常供電。也相當于4分頻,對每個數(shù)碼管來說,其頻率為1KHZ的四分之一。不然會出現(xiàn)返回信號混疊引起計算錯誤。三、可行性分析 要實現(xiàn)以上所描述的功能,我們可以從三方面進行可行性分析: FPGAFPGA型號為EP4CE6E22C8N,其Total logic elements 為6272,滿足大多數(shù)開發(fā)要求。用以實踐在課堂上所學知識內(nèi)容,加深理解。采用“計數(shù)取反”的方法進行分頻。以分頻模塊提供的100KHZ為時鐘,周期為10微秒。此擴展功能模塊,有很大的設計自由度。附錄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