成人免费无码不卡毛片,亚洲AⅤ无码精品一区二区三区,国产尤物精品视频,久久精品日本亚洲,欧美成人一区三区无码乱码A片,中文字日产幕码一区二区色哟哟,亞洲日韓中文字幕網AV

  • 方案介紹
  • 附件下載
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

Quartus超聲波測(cè)距設(shè)計(jì)verilog代碼青創(chuàng)QC-FPGA開發(fā)板

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

2-23122010543Y46.doc

共1個(gè)文件

名稱:Quartus超聲波測(cè)距設(shè)計(jì)verilog代碼青創(chuàng)QC-FPGA開發(fā)板

軟件:Quartus

語言:Verilog

代碼功能:

超聲波測(cè)距設(shè)計(jì):

控制超聲波測(cè)距模塊,數(shù)碼管顯示測(cè)量結(jié)果,單位mm

FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com

本代碼已在青創(chuàng)QC-FPGA開發(fā)板驗(yàn)證,青創(chuàng)QC-FPGA開發(fā)板如下,其他開發(fā)板可以修改管腳適配:青創(chuàng)QC-FPGA開發(fā)板.png

演示視頻:

設(shè)計(jì)文檔:

1. 超聲波測(cè)距原理

超聲波模塊采用HC-SR04

超聲波測(cè)距模塊工作原理

(1)采用IO口trig觸發(fā)測(cè)距,給至少10us的高電平信號(hào)(本代碼設(shè)計(jì)為15us);

(2)模塊自動(dòng)發(fā)送8個(gè)40khz的方波,自動(dòng)檢測(cè)是否有信號(hào)返回;

(3)有信號(hào)返回,通過IO口echo輸出一個(gè)高電平,高電平持續(xù)的時(shí)間就是超聲波從發(fā)射到返回的時(shí)間。測(cè)試距離=(高電平時(shí)間*聲速(340M/S))/2;

(4)本模塊使用方法簡(jiǎn)單,一個(gè)控制口發(fā)一個(gè)10US以上的高電平,就可以在接收口等待高電平輸出。一有輸出就可以開始計(jì)時(shí),當(dāng)此口變?yōu)榈碗娖綍r(shí)停止計(jì)時(shí),根據(jù)計(jì)時(shí)值即可算出距離。

2. 工程文件

3. 程序文件

4. 程序編譯

5. RTL圖

6. Testbench

7. 仿真圖

整體仿真圖

上圖為整體仿真圖即整體仿真圖的局部放大圖,可以看到發(fā)出trig觸發(fā)信號(hào),給至少10us的高電平信號(hào),然后從echo端口接收到一段高電平。測(cè)出的距離值通過數(shù)碼管顯示。

超聲波測(cè)距模塊

可以看到發(fā)出trig觸發(fā)信號(hào),給15us的高電平信號(hào),然后從echo端口接收到一段高電平,對(duì)高電平的時(shí)間進(jìn)行計(jì)時(shí),計(jì)數(shù)值為10000,一個(gè)計(jì)數(shù)為20ns,10000即對(duì)應(yīng)200000ns,換算出的距離值為34mm。

數(shù)碼管顯示模塊

將距離值進(jìn)行顯示,4個(gè)數(shù)碼管依次選通(低電平選通),顯示距離值的千、百、十、個(gè)位。圖中距離34mm顯示為0034。

部分代碼展示:

//超聲波測(cè)距模塊
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)//計(jì)數(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信號(hào)上升沿
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高電平計(jì)數(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

  • 2-23122010543Y46.doc
    下載

相關(guān)推薦