-
可编程逻辑器件
及
EDA
技术
课程设计
基于
FPGA
的超声波测距
电路和其扩展应用
东北大学计算机科学与工程学院
<
/p>
可编程逻辑器件及
EDA
技术课程设计<
/p>
——基于
FPGA
的超声波测距电路和其扩展应用
摘要
本课
设使用
FPGA
和其他模块为硬件基础,以
VHDL
为硬件描述语言进行
超声波测距电路的搭建,
p>
完成数码管精度为
2
厘米的实时显示,
p>
并且在基本电路
的基础上使用蜂鸣器扩展出“倒车雷达”功能,在距
离不同的区间内蜂鸣器会响出
不同的频率的声音,总体是距离越小,频率越高。过程中,
进行了需求分析,可
行性分析,模块建构和调试下载等过程,从中学到很多工程实践过程
中的知识。
关键字:
FPGA
;
Quartus
II
;超声波测距;倒车雷达;
VHDL
目录
一、需求分析
.
................................................ .................................................. .......... 3
二、功能描述
.
................................................ .................................................. .......... 3
三、可行性分析
.........
..................................................
..............................................
4
1.
器件可行性分析
.
..................................
..................................................
.............. 4
2.
功能可行性实现
.
..................................
..................................................
.............. 4
3.
数据操作可行性
.
..................................
..................................................
.............. 4
四、模块化建构
.........
..................................................
..............................................
5
1.
分频模块
freq ......
..................................................
..............................................
5
2.
触发模块
launch
.
...............................
..................................................
................ 5
3.
接收模块
receive
.
..............................
..................................................
................ 6
4.
扫描模块
scan
.
.................................
..................................................
................. 7
5.
显示模块
display ...
..................................................
............................................
7
6.
计算模块
measure......................................... .................................................. .... 7
7.
功能开关
switch ....
..................................................
............................................
7
五、编程下载
< br>.
...................................
..................................................
....................... 7
编程
.........................
..................................................
............................................
7
下载
............
..................................................
..................................................
....... 8
六、课设感悟
.
...........................
..................................................
............................... 8
附录
.
..
..................................................
..................................................
.................... 9
一、需求分析
:
本次课程设计要求用
PFGA
和所学
VHDL
知识进行设计具有某种具体功能
的电路系统。
我本次课设选题为:
基于
FPGA
的超声波测距电路和其扩展应用。
用以实践在课堂上所学知识内容,加深理
解。
超声波测距是一般的电路系统
,在生活中有很多应用,比如倒车雷达和扫
地机器人自动避障等。此功能在单片机上实现
更为方便,成本也更低。
但此次课
设使用
FPGA
用硬件描述语言来构建此电路是对
FPGA
本身功能和各模块使用
的学习和提升。
二、功能描述
:
< br>使在数码管上实时显示障碍物与测试模块的距离,要求显示米、分米和厘米
位,<
/p>
数码管精度为
2
厘米,
< br>实时显示,
并且在基本电路的基础上使用蜂鸣器扩展
出“
倒车雷达”功能,在距离不同的区间内蜂鸣器会响出不同的频率的声音,总体
是距离越小
,频率越高。
此功能在单片机上实现更为方便,
成本也更低。
但此次课设使用
FPGA
用硬
件描述语言来构建电路是对
FPGA
本身功能和各模块使用学习的提升。
三、可行性分析
要实现以上所描述的功能,我们可以从三方面进行可行性分析:
1.
器件可行性分析
>FPGA
FPGA
型号为
EP4CE6E22C8N
,
其
Total logic elements
为
62
72
,
满
足大多数开发要求。
>PERIPHERAL
”特权同学“开发板(
SF-
CY4
)
,
晶振(
< br>25MHZ
)
,拨码开关
4
p>
个,
共阴极数码管(
LG3641AH
)
,
蜂鸣器,按键等。
>
超声波测距模块
网上所购得超声波测距标准模块
HC-
SR04
。
感应角度不大于
< br>15
度;
探测距离
2cm-450cm
,高精
度可达
0.2cm
;
2.
功能可行性实现
用
FPGA
产生一满足超声波模块的触发信号,使之开
始工作,等待接受回声信
号。回声引脚接受到回声信号后,
开始
记录整个高电平所持续时间,
再根据脉冲
周期计算的超声波往返
的总时间,用公式
S=340*T/2
来计算相对距离(
340
为
默认声速,可调)
< br>。
再开关选择打开时,蜂鸣器开始工作,根据超声波返
回高电平信号记录周期
数,
设定判断距离标准。
到达某特定标准区间就产生一个特定频率信号给蜂鸣器,
使之发出特定频率。<
/p>
3.
数据操作可行性
VHDL
语言可以调用的
IEEE
库,
其中常用的
_LOGIC_1164
_LOGIC_ARITH
_LOGIC_UNSIGNED
包含大多数数学运算需求和
数据的类型转换,在此提出类型转
换资料,方便今后的使用
四、模块化建构
根据功能要求可以分析需要建立的模块如下图:
SYSTEM
scan
25MHZ
1KHZ
SEL
DIG
4
display
4_H/M/L
measure
freq
100KHZ
Launch
receive
12_U
switch
BUZZER
TR
IG
ECHO
SW
接下来进行逐步分析
构建:
1.
分频模块
freq
板子提供的晶振为
25MHZ
,而其他有关时钟的模
块,考虑人眼视觉暂留,触
发时间和所需精度要求,可以选取时钟频率分别为
100KHZ
和
1KHZ
。
采用“计数取反”的方法进行分频。
“计数分频”是指计数
N
个取反一次逻辑信号
会产生周期为
2N
的频率信号,达到分频目的。
25MHZ
为
10
0KHZ
的
250
倍,因而从
0
到
124
计数。
p>
25MHZ
为
1
KHZ
的
25000
倍,因而从
0
到
12499
计数
。
2.
触发模块
launch
以分频模块提供的
100KHZ
为时钟,周期为
10
微秒,其中高电平为
5
微秒。
已知超声波模块完成触发需要大于
10
p>
微秒的高电平,
所以需要至少两个周期
(上
升沿触发)
。
另外,发射触发后需要等待接收到信号并进行处理再发射下一次触发,才能保
证系统实
时性。不然会出现返回信号混叠引起计算错误。
再者,每次发
射接收数据所需时间要保证两个方面:第一,发射周期要保证大
于返回高电平持续的两倍
;第二,数据刷新速度要适应人眼视觉感官。第一个方
面得不到保证会影响实时性。第二
个方面得不到保证会使人感觉数据变化突兀。
因而,占空比不
为
50%
,且可大致画时序图如下:
器件最
大距离为
4.5m
,计量时钟为
100
KHZ
,则触发周期可以计算为:
N
?
N
1
?
p>
2
*
N
2
其中,
N
1
为触发计数上升沿数;
(为满足发射和返回信
号的实
N
2
为测距往返最大值的上升沿
计数。
时性,应满足两倍的
N
2
)
。
其中为满足触
发条件,
N
1
所以取值为
5
。
根据器件测量极限为
4.5
米,所以
N
2
?
?
4.5
m
?
?
/
0.00001
s
=2647
?
340
m
/
s
?
?
综合起来,<
/p>
N
最小为
5299
。再考虑人眼适应性,经过调试取
N
为
12000
。
3.
接收模块
receive
以分频模块提供的
100KHZ
为时钟,周期
为
10
微秒。本模块可以完成对
ECH
O
的高电平持续时间计数。
模块要求
高电平时开始计数,
为低时把计数结果导出并持续到下一个下降沿的数据更新
时,并把计数信号置零,等待重新计数。
注意,
此时数据导出最好用
UNSIGNED
模式,方便后级进行从二
进制到整数
的转化。数据宽度根据最大测距距离可确定为
12<
/p>
位。
时序图如下:
由上计算,在频率为
100KHZ
的时钟下,最大距离往返可以计数
26
47
次,化成二进制
为:
1010_0
101_0111
,也即最大计数为
12
位宽的二进制表示。
4.
扫描模块
scan
本模块以
1KHZ
位时钟信号,产生“
1110
”
,
“
1101
”
,
“
1011
”
,
“
0111
”
,
四个数
码管
选择信号,完成数码管扫描的功能(数码管为低选通,当使用高选通时把上面对
p>
1
和
0
进行取反)
。也相当于
4
分频,对每个数码管来说
,其频率为
1KHZ
的四
分之一。接下
来传给显示模块。
5.
显示模块
display
显示模块有两个总线输入,一个是显示选通信号(四位)
,另一个是数
据输
入信号(三个四位信号,对应高位,中位,低位)
。
显示模块里有两个功能块,
第一个是进行从
BCD
码到数码管的软译功能
(区
p>
分数码管是共阴极还是共阳极)
,要注意高位为米位,其小数点位需
要点亮。第
二个是完成高中低位和数码管显示的匹配。高位在
2
号位,中位在
1
号位,低位
在
0
号位。
6.
计算模块
measure
计算模块是完成周期计数数据到米、分米和厘米的
BCD
码转换功能。
首先,对
1
2
位宽度的二进制进行转换,是指变成能进行运算的整数类型。再
者,我们知道超声波测距原理,
S=340*T/2
,所以可
以用周期进行运算,并通过
算法分离出三位十进制数分别代表米、分米和厘米位,在对他
们进行转换成二进
制便于电路传输。
7.
功能开关
switch
此扩展功能模块,有很大的设计自由度。
设计输入为
12
位宽度的原始计数,在此先进行整型转换。再根据所属不同
范围产生不同的分频功能,分频结果输出到蜂鸣器。也可以加入模块的功能控制
端口和
间隔音效。
五、编程下载
编程
:
编程采用模块化设计的方法。
根据功能和所需参数分别设计顶层
和底层文件,通过原件例化联系到一起。
具体模块代码见附录,最终结构化效果
如右
;
下载
:
使用
USB
Blaster
将生成的
.sof
文件下载到芯片中,并进行
端口配置
,
注意下载时保证
FPGA<
/p>
的正常供电。
六、课设感悟
本次课程设计的最后结
果能准确实现最初设计的诸多功能,
在实时性和稳定
性上也良好
表现。最终实验板能显示米、分米和厘米位,数码管精度为
2
厘
米,
实时显示,并且蜂鸣器扩展出的“倒车雷达”功能,能使蜂鸣器在不同距离区间响<
/p>
出不同的频率的声音,总体是距离越小,频率越高。
当然,
实验最有价值的东西不止是成功的喜悦,
更
有在实验过程中调试中不
断发现问题解决问题和处理问题的经历,
以及总结学习的工程实践的经验,
在此
作以总结:
1.
做
FPGA
的设计时,
一定
要先在脑海或设计本上规划好顶层各个模块的
功能实现和参数设置,
也要设计好底层某一模块具体功能的实现。
不能想到哪里
就
做到哪里,这样会在结合的时候非常浪费时间!
2.
底层模块功能设计完一定要仿真
,确保能正常使用和兼容其他模块。不
能不验证就连接到整体系统中,
< br>一旦出现问题就会不知道从哪里检查问题,
也很
浪费时间
!
3.
参数设置时要充分考虑
VHDL
所能调
用的库的函数,
这样能节省很多设
计时间,直接调用即可。
p>
4.
当硬件描述语言没有问题时,
板级调试出现错误或者与预想的结果不同
时,
可以从引脚到器件进行一步步的分析,
很可能是引脚映射错误或者板子自身
的问题。
5.
要充
分熟悉板子提供的外设的使用方法,比如高触发还是低触发等。
最后,
非常感谢学院能给我们这样的机会,具体的把课本知识进行实践,在
实践中深刻理解知识和具体操作问题。
附录
HC-SR04
工作原理:
(
1
)主要
技术参数:
p>
1
、使用电压:
DC5V
< br>;
2
、静态电流:小于
2mA
;
3
、电平输出:高
< br>5V
;
4
p>
、电平输出:底
0V
;
5
、感应
角度:不大于
15
度;