基于FPGA两点测距实现.docVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于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的

文档评论(0)

317960162 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档