首页 > 范文大全 > 正文

基于FPGA两点测距的实现

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于FPGA两点测距的实现范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要:提出了一种基于fpga的平面两点测距实现方案,在1280*1024分辨率下实现平面上两点的精确测距。方案中利用FPGA对视频信号进行处理,在FPGA内实现了目标定位,测量计算等主要功能,大大简化了硬件电路,并且较之传统方案具有明显优越的可扩展性。

关键词:两点测距;现场可编程门阵列;视频信号

中图分类号:TM文献标识码:A文章编号:1672-3198(2008)08-0366-01

1 系统结构

图1

本系统(图1)用FPGA为处理芯片,处理视频信号,做出两个十字线,再送出到显示器上,可以在屏幕中显示,用这两个十字线,我们可以定位距离的两个端点。

另外,我们接入四个按键(key_a_hor_move,key_a_ver_move,key_b_hor_move,key_b_ver_move),分别控制十字线A,B的左右,上下移动。还有两个按键(key_init,key_calc)用来初始化和执行计算。

2 数学模型

x1≠x2,y1≠y2

P1P2=(x1-x2)+(y1-y2)2

图2

本系统的数学模型(图2)简单,实现起来非常的稳定,并能达到相当的高的频率,满足在1280*1024的分辨率下的测量。

3 系统实现

图3

(1)在屏幕(图3)中显示两个小十字线A,B,用来对准要测量的目标的两个端点。

(2)首先要测出屏幕中两个像素点的距离代表在屏幕中的物体的实际长度,用来作为基本的单位来计算其他物体的长度,取1M的长度,通过调整A,B十字线的位置,定位1m长度,由于我们知道A,B十字线的水平坐标,通过计算:A的水平坐标:a_hor_local,B的水平坐标:b_hor_local,两个像素点之间的距离n=1000/|a_hor_local-b_hor_local|(单位为mm)。

(3)通过按键:key_a_hor_move可以调整A十字线在屏幕中的水平位置,key_a_ver_move可以调整十字线A在屏幕中的垂直位置。key_b_hor_move可以调整B十字线在屏幕中的水平位置,key_b_ver_move可以调整B十字线在屏幕中的垂直位置;通过这四个按键,我们就可以定位要测量的距离的两个端点。

(4)由于我们知道A与B的水平和垂直坐标,我们可以计算出A,B两点的水平距离和垂直距离。A与B的水平距离:|a_hor_local-b_hor_local|;A与B的垂直距离:|a_ver_local-b_ver_local|。

(5)由勾股定理c2=a2+b2,我们可以用这个公式知道, 两个点之间的距离的平方等于他们的水平距离的平方

加上垂直距离的平方,构成一个直角三角形底边:bottom=|a_hor_local-b_hor_local|,高边:high=|a_ver_local-b_ver_local|,我们由两个端点的联线上的像素点的个数来计算他们的距离,由于之前我们已经计算出了两个相邻的像素点之间的距离代表实际的长度n,所以我们想要的结果可以通过这样的公式得出result*result=bottom*bottom*n*n+high*high*n*n。

(6)在硬件上的实现为:用综合出的除法器计算n ,用综合出的乘法器和加法器计算出result*resule,再通过开平方的算法实现开方的运算,最终得到result。

(7)在获取基本单位n时,我们用一个带刻度的尺子,水平放置,使其与我们在屏幕中出现的一条水平线水平对齐,这条水平线,是我们做出来用来做水平对齐的。通过调整两个小十字线A,B的位置,使他们在一个水平线上,并定位1m距离的两个刻度的位置。

(8)当我们调整了A与B的位置,置于直尺的两个端点后,并且直尺也水平对齐了屏幕中的水平线,这时我们就可以按下按键:key_init,就得到n的值(单位为mm),并寄存在寄存器中,后面的计算可以随时调用。

(9)当我们初始化了n值后,我们就可以测量其他的物体的长度了。调整A与B的位置,到达欲测目标的两个端点,定位好后,我们就可以按下按键:key_calc得到结果result。

4 仿真结果

初始状态A,B水平放置,为1000个像素点的距离,假设AB间的距离为1m,这样相邻的两个像素的距离,代表实际距离为1mm原A的位置为(400,600),B的位置为(1400,600),按下key_init得到n,再按下key_calc得到result等于1000,这个结果是正确的。经过一系列的左右上下的移动后,A的位置变为(1400,76),B的位置为(270,900),按下key_calc,得到result等于1398,这个结果是正确的。

在仿真软件MODENSIM下,进行功能仿真,系统的每个模块的功能,系统的各个功能都实现了,设计达到目的。

5 结论

FPGA是Filed Programmable Gate Array 的缩写,即现场可编程逻辑阵列。FPGA是在CPLD的基础上发展起来的新型高性能可编程逻辑期间,它是一般采用SRAM工艺,也有一些专用器件采用FLASH工艺或反熔丝工艺等。FPGA的集成度很高,其器件密度从数万系统门到数千万系统门不等,可以完成极其复杂的时序与组合逻辑电路功能,适用于高速,高密度的高端数字逻辑电路设计领域。FPGA的基本组成部分有可编程输入/输出单元,基本可编程逻辑单元,嵌入式块RAM,丰富的布线资源,底层嵌入功能单元,内嵌专用硬核等。

参考文献

[1]姚琮,张兴敢,肖文书.中频采样中希尔伯特变换器的FPGA实现[J].电子技术应用, 2004,(09).

[2]何玉东,刘涛.基于FPGA的离散傅立叶变换[J].安徽电子信息职业技术学院学报, 2006,(02).

[3]郭廷廷,李敬,唐昆.多相结构采样率变换器的FPGA实现[J].电子技术应用, 2006,(09).

[4]赵岚,毕卫红,刘丰.基于FPGA的分布式算法FIR滤波器设计[J].电子测量技术, 2007,(07).

[5]于坤林. 基于FPGA控制的DSP数据采集和处理系统[J].长沙航空职业技术学院学报, 2004,(03).

[6]赖先志. 基于FPGA的简单CPU设计[J].重庆职业技术学院学报, 2005,(01).

[7]韦忠善, 朱海燕. 基于FPGA的精简指令CPU的实现[J].广西梧州师范高等专科学校学报, 2005,(01).