《FPGA零基础之Vivado—超声波驱动设计.docx》由会员分享,可在线阅读,更多相关《FPGA零基础之Vivado—超声波驱动设计.docx(14页珍藏版)》请在第一文库网上搜索。
1、FPGA零基础之ViVadO超声波驱动设计目录1.简介12 .工作原理13 .实物图24 .电气参数25 .超声波时序图36 .实验要求37 .设计框架38,设计实现41 .简介声音是我们日常生活中不可缺少的一种信号,在传递信息的同时,也在生活中的各个领域有较多的应用。根据声音的频率,我们将声音大致划分为三个阶段,人耳的听力范围,一般在20HZ2000OHZ之间。低于这个范围,我们称之为次声波;高于这个范围,称之为超声波。超声波的应用比较广泛,比如:超声波检查、超声波碎石、超声波清洗、超声波测速、超声波测距等等。此次我们就来研究一下它的其中一项应用:超声波测距。我们用到的试验模块为HC-SR0
2、4超声波模块,它的测量距离在2cm400cm之间。测量精度在3mm左右。模块包含了超声波的发射器、接收器和控制电路。超声波发射器在启动后会发出固定频率的方波,用声波去测量距离,不需要我们接触被测物体,在空间上使得我们测距变得方便很多。2 .工作原理1、采用IO口TR1G触发测距,给至少IOUS的高电平信号,测量周期建议在60ms以上,以防止发射的信号对回响信号造成影响。2、模块会自动发送8个40KhZ的方波信号,接收器自动检测是否有回响信号返回。3、有信号返回时,通过IO口ECHo输出一个高电平信号,高电平持续的时间就是方波从发射到返回的时间。测量距离=(高电平时间*声速(340ms)/2;在
3、此需要我们注意的事,发射器是自动发送方波信号的,而且会自动检测是否有信号返回,这让我们省去了一大部分工作,使得测量变得简单。其次,在计算测量距离时,我们要将计算出来的结果除以2,因为我们测得的时间是往返的时间,也就是双倍的路程。3 .实物图5V触发信号输入回响信号输出GND4 .电气参数电气参数HCSR04超声波模块匚作电压DC5V1作电流15mA工作频率40Hz最远射程4n最近射程2cm测量角度15度输入触发伯号IOuS的TT1脉冲输出回响信号H1IT1电平借明与射程成比例规格尺寸45*20*15mm5 .超声波时序图IoUS的TT1触发信号循环发出8个40KHz脉冲模块内部发出信号输出回响
4、回响电平输出信号与检测距离成比例在时序图中,我们可以看出,我们需要生成一个周期至少为60ms,且高电平维持时间至少为10s的一个触发信号。6 .实验要求此次设计,要求能够正常驱动模块,计算出的距离,计算其平均值以保证准确性。数码管上显示出距离,单位为m,精确到mm。并且,蜂鸣器能够根据距离响出不同频率的报警声音,距离越近,响声频率越频繁。7 .设计框架89 .设计实现在计算回响信号的时间时,我们可以检测回响信号的上升沿和下降沿来作为计时器的开始和结束。在我们计算出距离之后,可以每三个数据计算一次平均值。然后将数据输出给其他模块。首先,我们新建工程。选择新建文件,然后先新建顶层文件按照我们所画框
5、架,写入顶层端口。重复上述新建文件的过程,新建UItraSoniJdriVer文件,代码如下:1modu1eu1trasonic_driver(3inputwiree1k,4inputwirerst_n,5inputwireecho,6outputregtrig,7outputreg11:0distance,8outputregdata,va1id9);1011parametert=3_000_000;1213reg21:0ent;14regstate;15regechoecho.rr;16reg20:0echo,cnt;17reg20:0Cnt_temp;18wire11:0d_r;19re
6、g35:0temp;20regdata_va1id_r;21a1ways(posedgee1k)echo_r=echo;a1ways(posedgee1k)echo_rr=echo_r;a1ways(posedgee1k,negedgerst_n)beginif(rst,n=1,b)ent=22,d0;e1seif(cnt=t-1ent=22d0;e1seent=ent+1,b1;enda1ways(posedgee1k,negedgerst_n)beginif(rst.n=1b)trig=1b;e1seif(cnt1000)trig=1b1;e1setrig=1,b;enda1ways(po
7、sedgee1k,negedgerst_n)beginif(rst_n=1b)beginecho_cnt=21,d0;state=1,d;data_va1id_r=1,b;echo_cnt=21d0;end222324252627282930313233343536373839404142434445464748495051525354e1se555657585960616263646566676869707172737475767778798081828384858687case(state)1,d:beginif(echo_r&(echoj)state=1,d1;e1sebeginstat
8、e=1,d;data_va1id_r=1,b;endend1,d1:beginif(echoj)&echo,rr)beginstate=1,d;echo_cnt=21,d0;cnt.temp=echo_cnt;data_va1id_r=1,b1;ende1sebeginstate=1,d1;echo_cnt=echo_cnt+1,b1;cnt,temp=cnt_temp;endendendcaseendassignd_r=cnt_temp*34/10_000;a1ways(posedgee1k,negedgerst_n)beginif(rst-n=1,b)88temp=36,d0;89 e1s
9、eif(data_va1id_r)90 temp=temp23,d.r;91 e1se92 temp=temp;93 end94 a1ways(posedgee1k)data.va1id=data_va1id_r;95 a1ways(posedgee1k,negedgerst_n)96 begin97 if(rst,n=1,b)100distance=12,d0;101e1seif(data.va1id)102distance=(temp35:24+temp23:12+temp11:0)/3;103e1se104distance=distance;105end106107endmodu1e在完
10、成测距时,输出一个VaIid信号,这个信号要作为后续我们保存数据以及计算平均值的标志信号。数码管代码如下:1 modu1eseven_tube_driver(23inputwiree1k,4inputwirerst_n,5inputwire11:0data,67outputreg5:0Se18outputwire7:0seg9);101112131415161718192021222324252627282930313233343536373839404142parametert=50000;reg15:0ent;a1ways(posedgee1k,negedgerst_n)beginif(r
11、st_n=1b)ent=16d0;e1seif(cnt=t-1)ent=16,d0;e1seent=ent+1,b1;enda1ways(posedgee1k,negedgerst_n)beginif(rst_n=1b)sei=6,b111-110;e1seif(ent=t-1)sei=se14,se15;e1sesei=sei;enda1ways(*)begincase(se1)6b111IIO:show_data=4,hf;6,b111-101:show_data=4,hf;6,b111.011:show_data=data/1000;436,b110-111:show_data=data
12、/100%10;446,b101.111:show_data=data/10%10;456,b011,111:show_data=data%10;46defau1t:show_data=4,d0;47endcase4849end50a1ways(*)51begin52case(show_data)534,d0:seg_r=8b1100.0000;544d1:seg_r=8,b1111.1001;554d2:seg_r=8,b1010.0100;564,d3:seg_r=8,b1011-0000;574,d4:Segjr=8b10011001;584,d5:seg_r=8b1001_0010;5
13、94,d6seg-r=8,b1000-0010;604d7:seg_r=8,b1111.1000;614,d8:seg,r=8,b1000.0000;624d9:seg_r=8b1001.0000;63defau1t:seg_r=8d0;64endcase6566end67assignseg=(sei=6,b111.011)?(seg_r&8b0111,1111):seg_r;6869endmodu1e第67行的作用是为了在显示时,显示一个小数点,这样数码管显示的数值单位就为米,精确度为毫米。在蜂鸣器模块中,蜂鸣器的响声为“嘀嘀”的响声,我们可以根据距离的大小,让蜂鸣器响声的快慢作出改变。a1ways(posedgee1k)beginif(rst_n=1,b)beep=1,b;e1seif(cnt_2s200*t-1)beep