名稱:Quartus超聲波測距設(shè)計verilog代碼青創(chuàng)QC-FPGA開發(fā)板
軟件:Quartus
語言:Verilog
代碼功能:
超聲波測距設(shè)計:
控制超聲波測距模塊,數(shù)碼管顯示測量結(jié)果,單位mm
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
本代碼已在青創(chuàng)QC-FPGA開發(fā)板驗(yàn)證,青創(chuàng)QC-FPGA開發(fā)板如下,其他開發(fā)板可以修改管腳適配:
演示視頻:
設(shè)計文檔:
1. 超聲波測距原理
超聲波模塊采用HC-SR04
超聲波測距模塊工作原理
(1)采用IO口trig觸發(fā)測距,給至少10us的高電平信號(本代碼設(shè)計為15us);
(2)模塊自動發(fā)送8個40khz的方波,自動檢測是否有信號返回;
(3)有信號返回,通過IO口echo輸出一個高電平,高電平持續(xù)的時間就是超聲波從發(fā)射到返回的時間。測試距離=(高電平時間*聲速(340M/S))/2;
(4)本模塊使用方法簡單,一個控制口發(fā)一個10US以上的高電平,就可以在接收口等待高電平輸出。一有輸出就可以開始計時,當(dāng)此口變?yōu)榈碗娖綍r停止計時,根據(jù)計時值即可算出距離。
2. 工程文件
3. 程序文件
4. 程序編譯
5. RTL圖
6. Testbench
7. 仿真圖
整體仿真圖
上圖為整體仿真圖即整體仿真圖的局部放大圖,可以看到發(fā)出trig觸發(fā)信號,給至少10us的高電平信號,然后從echo端口接收到一段高電平。測出的距離值通過數(shù)碼管顯示。
超聲波測距模塊
可以看到發(fā)出trig觸發(fā)信號,給15us的高電平信號,然后從echo端口接收到一段高電平,對高電平的時間進(jìn)行計時,計數(shù)值為10000,一個計數(shù)為20ns,10000即對應(yīng)200000ns,換算出的距離值為34mm。
數(shù)碼管顯示模塊
將距離值進(jìn)行顯示,4個數(shù)碼管依次選通(低電平選通),顯示距離值的千、百、十、個位。圖中距離34mm顯示為0034。
部分代碼展示:
//超聲波測距模塊 module?Ultrasonic?( input?clk_50M, input?reset_n, input?echo,//接收距離高電平 output?reg?trig,//發(fā)送15us脈沖 output?[15:0]?distance//輸出距離 ); reg?[31:0]?clk_10Hz_count=32'd0; always@(posedge?clk_50M) if(reset_n==0) clk_10Hz_count<=32'd0; else if(clk_10Hz_count>=32'd5000000)//計數(shù)5000000次就是5000000分頻,50MHz分頻到10Hz clk_10Hz_count<=32'd0; else clk_10Hz_count<=clk_10Hz_count+32'd1; always@(posedge?clk_50M) if(reset_n==0) trig<=0; else if(clk_10Hz_count>32'd1?&&?clk_10Hz_count<32'd750)//750*20ns=15000ns=15us trig<=1;//發(fā)送15us高電平 else trig<=0; reg?[31:0]?echo_count=32'd0; reg?[31:0]?echo_count_buf=32'd0; reg?echo_buf1=0; reg?echo_buf2=0; always@(posedge?clk_50M) begin echo_buf1<=echo; echo_buf2<=echo_buf1; end wire?echo_posedge;//echo信號上升沿 assign?echo_posedge=echo_buf1?&?~echo_buf2; always@(posedge?clk_50M) if(echo_posedge)begin echo_count<=32'd0; echo_count_buf<=echo_count;//緩存echo高電平計數(shù) end else if(echo_buf2==1)begin echo_count<=echo_count+32'd1; echo_count_buf<=echo_count_buf; end assign?distance=echo_count_buf*34/10000; endmodule
點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=377