基于FPGA的虚拟现实定位系统设计


  摘 要: 虚拟现实技术是目前计算机信息科学中的前沿学科,文中设计了一种以FPGA 为核心的数据采集处理系统.利用HMC5883L和ADXL345对虚拟场景中物体的方位和朝向进行确定并通过以太网给虚拟场景主机发送数据.整个系统以FPGA作为主控制器,配以传感器数据采集,内部FIFO存储,以太网高速传输,从而把定位系统参数实时传送到上位机中,具有传输速度快.实时性等优点,实现了 虚拟现实高精度定位的功能.

  1 引言

  虚拟现实(Virtual Reality,VR)是目前计算机应用方面活跃的技术研究领域,是整个信息科学领域中的新兴技术.它是依据计算机视频技术为基础,将计算机图像处理.计算机心理学.人工智能.人机交互技术.传感器技术.网络以及显示处理一系列信息技术分支的最新成果集中在一起.在虚拟现实环境中,人可以与虚拟世界中的场景和事物进行交互,它已经渗入到了航空航天.民用军事.娱乐游戏.医疗医用以及教育等行业.目前它已经是21世纪发展过程中影响人类生活的重要技术之一.

  整个虚拟现实中,在场景中对物体的定位是关键核心部分.在定位中主要是要获得物体所处的直角平面坐标系中的朝向和位置以及物体与水平面的倾斜角.为此我们使用三维磁阻传感器和三轴重力加速度来获取所必须的数据.

  磁阻效应传感器是根据磁性材料的磁阻效应构成的.图1为简单的磁阻效应传感器的结构示意图.由于磁性材料(如坡莫合金)具有各向异性,对它进行磁化时,其磁化方向将取决于材料的易磁化轴.材料的形状和磁化磁场的方向.所以在其线性范围内,电桥的输出电压与被测磁场成正比.同时利用XYZ 三个方向上的磁通量进行三角函数的转换可知道方位角为X方向上与Y方向上面的反正切值.

基于FPGA的虚拟现实定位系统设计

  三轴重力加速度传感器为多晶硅表面微加工结构,置于晶圆顶部.由于应用加速度,多晶硅弹簧悬挂于晶圆表面的结构之上,提供力量阻力.差分电容由独立固定板和活动质量连接板组成,能对结构偏转进行测量.加速度使惯性质量偏转.差分电容失衡,从而传感器输出的幅度与加速度成正比.相敏解调用于确定加速度的幅度和极性.

  虚拟现实定位技术在国内外发展很迅速,主要在医疗与娱乐方面取得了成就.国内传统的技术主要是以单片机为核心处理器,在数据的处理和传输速度上有明显的不足.本文的虚拟定位系统利用高精度的定位传感器,FPGA处理和传输数据能够高速.实时的对数据进行采集与处理,降低了传输压力,提高了数据吞吐量与设备利用率.现场可编程逻辑门阵列FPGA,是现代IC设计验证的主流ASIC器件.FPGA设计灵活,易于修改,可靠性高,开发周期短,处理速度快,易于实现高速电路的设计,可以方便的对定位传感器进行驱动,并对其数据进行快速的处理和传输.

    2 数据采集系统总体设计结构

  本文采用了Xilinx公司spartan3系列的FPGA,ADI公司的ADXL345三轴重力加速度传感器以及Honeywell公司的HMC5883L三维磁阻传感器,利用了模块化的结构分别对每个单元进行流水线操作.整个系统主要包括:FPGA核心处理模块.硬件电源模块.场景数据处理模块.以太网通讯模块.当物体的方位角和倾斜角发生变化的时候,ADXL345模块和HMC5883L模块会将新的数据存储到FPGA中的FIFO里,最后通过以太网以UDP包的方式上传到上位机分析处理.系统中的接口电路主要有ADXL345与FPGA的接口.HMC5883L与FPGA的接口.以太网芯片与FPGA 的接口电路.系统上电以后,FPGA发出的信号包括两个传感器时钟驱动信号,以太网芯片控制信号.FPGA内部的信号包括FIFO控制信号.传感器信号传入的控制信号.系统的工作过程为:FPGA 对各传感器和以太网进行正确的驱动后,传感器开始以一定的频率向FPGA发送数据,当FPGA接收到一次数据后马上将数据存储在FIFO中;同时FIFO在相应的条件下按照写时钟把数据一次存储好,按照时钟把原来存储的数据发送给以太网芯片;以太网芯片把这些数据封装成UDP包,通过以太网总线上传给上位机;最后,上位机在收到有效的数据时,对数据进行分析处理,然后传给三维软件部分使得三维场景中的物体也发生同样的方位角和倾斜角的变化,实现了虚拟现实的功能.

基于FPGA的虚拟现实定位系统设计

    3 数据采集系统模块化设计

  3.1 HMC5883L数据采集模块设计

  场景数据模块是整个测量系统的基础部分,也是整个电路工作的必不可少的一个模块.其中包括了测量方位角用的HMC5883L磁阻传感器芯片以及测量倾斜角 的三轴重力加速度传感器ADXL345?HMC5883L是一种表面贴装的高集成模块,并带有数字接口的弱磁传感器芯片,应用于低成本罗盘和磁场检测领域.

  HMC5883L的时钟是一系列的I2 C驱动时钟周期.本模块的设计目标在于将三维磁阻传感器芯片HMC5883L良好的驱动并确定时序中数据的传输顺序.目前采用FPGA引脚对相对应的时序进行控制.

  HMC5883L传感器固定的时序中完成对数据的采集,采集到的数据是具有特定格式的数字量,需要经过一定算法分析和数据整理才能送往上位机进行操作. FPGA 与HMC5883L的通信采用了I2 C的通信手段,在代码编写的过程中采用了标准速率模式100kHz,在总线规定中,总线的位格式是一个8位数据/地址传送和1位应答位.如图3所示的格式 的时序情况.

基于FPGA的虚拟现实定位系统设计

  HMC5883L的工作流程:首先要芯片的初始化进行数据等待,之后使用I2C的传输方式对数据进行控制.一个测试前的过程需要对应有的测量寄存器进行对 应的配置.首先发送配置寄存器A的配置量,为写操作,寄存器指令为默认值;第二步发送配置寄存器B的配置量,同样也为默认值;第三步发送模式寄存器的配置 量,即发送数据0X00(即连续测量模式).此时配置的寄存器的流程已经走完.之后进入读操作模式,此时根据时钟的采样速度,循环对传感器内部寄存器 03-08进行操作,得到X?Y?Z 三个方向上的数据,读入到代码设定的寄存器中.具体操作流程如图4所示.

基于FPGA的虚拟现实定位系统设计

  3.2 ADXL345数据采集模块设计

  ADXL345在虚拟场景系统中用于测量倾斜角,它的时钟驱动也是一系列的I2 C驱动时钟周期.本模块的设计也是针对于ADXL345的时钟驱动和对应的数据读取所进行的.倾斜角的寄存器内容的获取是整个模块的主要内容.

  在实际的场景系统中主要用到了X?Y?Z 三个方向上的偏移寄存器,用于测量中修正原始位置的测量误差.对于数据采集速率则是由寄存器OX2C即寄存器BW_RATE的CH0-CH3所控制.对于 三维重力加速度传感器而言,主要的初始化也是通过常见的I2 C总线与FPGA 进行通信,在数据获取方面集中在X?Y?Z 三个重力方向上的寄存器数据.其时序图如图5 所示,代码编写过程中与HMC5883L共用总线同时都受FPGA的控制,属于系统控制的从端.同样的,三维重力加速度传感器也需要根据测量需求去输入初 始化寄存器的配置.然后对需要读取的寄存器数据位进行总线读取,并存入到配置好的8bit寄存器保存好打包传往上位机进行数据分析.

基于FPGA的虚拟现实定位系统设计

  3.3 场景数据分析

  在地磁的测量过程中需要对数据进行必要分析才能得到对应的方位角度.

基于FPGA的虚拟现实定位系统设计

  由HMC5883L 和ADX345传感器我们可以得到地磁场在空间三个轴上的分量磁场大小分别为Hx?Hy?Hz以及加速度传感器测量俯仰角φ 和横滚角θ.

基于FPGA的虚拟现实定位系统设计

  式中Ax?Ay?Az是重力加速度传感器三个方向上测量得到的加速度值.在特定的公式计算下可以大致得到目前物体所处的顺时针方位角a为

基于FPGA的虚拟现实定位系统设计

  以上是初步估计出来得到方位角参数,计算中不可忽略的还有HMC5800L还受到外部磁性干扰,其中较为突出的是硬磁效应和软磁效应[8~9]?一般而言 对于硬磁效应,我们采取的方法是将物体至于场景中旋转360°,然后经过多次的采样得到X?Y?Z 坐标的最大值Xmax?Ymax?Zmax和最小值Xmin?Ymin?Zmin?然后对于硬磁效应来说就是偏移量为

基于FPGA的虚拟现实定位系统设计

  硬磁效应只需要使用测试的数据值加上off 的偏移值便可,而对于软磁效应,补偿的方法比较复杂,一般可以使用公式进行适当的估算,项目中初步使用式(12)进行补偿.其中Xr为真实的无干扰的坐标 值,a为其干扰系数,一般软磁干扰就需要大量的数据去得到a 的值.一般情况下可以采取特定的角度进行数据采样,然后根据数据的

基于FPGA的虚拟现实定位系统设计

  实际值Xr和对应无干扰的值Xc进行运算,求出a的这个系数的值便可.

  3.4 以太网通讯模块设计

  LAN8700是SMSC公司的一款以太网物理层芯片.

  LAN8700由编码器/解码器.扰码器/解扰器.波形整形器.输出驱动器.自适应均衡双绞线接收器.时钟数据恢复功能模块组成.

  FPGA模块编程中定义了UDP_User_int模块来实现数据打包的详细过程,另外MAC的物理层通信由MAC_top模块来实现,包括PHY的初始 化.时钟的控制.发生数据的控制.MII接口的控制.接收数据控制,寄存器的控制等,都定义了UDP_TOP顶层模块来实现FPGA与它们的接口顺利传输 数据.以太网驱动模块实现的RTL门级结构图如图7所示.

基于FPGA的虚拟现实定位系统设计

  其中ip_local和mac_local是本地IP和MAC地址;每组E_RXD和E_TXD都是4个32位数据,E_RXD是接收MAC层的数 据,E_TXD是发送给MAC层的数据;每组send_zb_value都是64个32位数据,打包成了UDP包,send_zb_value是发送至以 太网的UDP包,同时定义了send_en来作为发送数据的使能信号;E_COL和E_CRS分别是冲突检测和载波侦听信号,他们的作用是用来控制着 UDP包的正确发送.

  4 结语

  设计中使用了HMC5883L芯片对物体的方位角进行测定,使用辅助芯片ADXL345来判定倾斜角和物体翻滚姿态,使得物体在虚拟场景中的实际情况更为 精准.利用FPGA对数据的高速处理能力将采集到的场景定位内容迅速分析处理并且通过以太网控制芯片发往局域网中的上位机中,最终在上位机实现虚拟场景的 变动.整套硬件系统能够稳定的工作在研发的项目之中,工作性能良好.能耗低,精度可达1°以内的范围.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
odule GPS ( //////////////////// Clock Input //////////////////// CLOCK_24, // 24 MHz CLOCK_27, // 27 MHz CLOCK_50, // 50 MHz EXT_CLOCK, // External Clock //////////////////// Push Button //////////////////// KEY, // Pushbutton[3:0] //////////////////// DPDT Switch //////////////////// SW, // Toggle Switch[9:0] //////////////////// 7-SEG Dispaly //////////////////// HEX0, // Seven Segment Digit 0 HEX1, // Seven Segment Digit 1 HEX2, // Seven Segment Digit 2 HEX3, // Seven Segment Digit 3 //////////////////////// LED //////////////////////// LEDG, // LED Green[7:0] LEDR, // LED Red[9:0] //////////////////////// UART //////////////////////// UART_TXD, // UART Transmitter UART_RXD, // UART Receiver ///////////////////// SDRAM Interface //////////////// DRAM_DQ, // SDRAM Data bus 16 Bits DRAM_ADDR, // SDRAM Address bus 12 Bits DRAM_LDQM, // SDRAM Low-byte Data Mask DRAM_UDQM, // SDRAM High-byte Data Mask DRAM_WE_N, // SDRAM Write Enable DRAM_CAS_N, // SDRAM Column Address Strobe DRAM_RAS_N, // SDRAM Row Address Strobe DRAM_CS_N, // SDRAM Chip Select DRAM_BA_0, // SDRAM Bank Address 0 DRAM_BA_1, // SDRAM Bank Address 0 DRAM_CLK, // SDRAM Clock DRAM_CKE, // SDRAM Clock Enable //////////////////// Flash Interface //////////////// FL_DQ, // FLASH Data bus 8 Bits FL_ADDR, // FLASH Address bus 22 Bits FL_WE_N, // FLASH Write Enable FL_RST_N, // FLASH Reset FL_OE_N, // FLASH Output Enable FL_CE_N, // FLASH Chip Enable //////////////////// SRAM Interface //////////////// SRAM_DQ, // SRAM Data bus 16 Bits SRAM_ADDR, // SRAM Address bus 18 Bits SRAM_UB_N, // SRAM High-byte Data Mask SRAM_LB_N, // SRAM Low-byte Data Mask SRAM_WE_N, // SRAM Write Enable SRAM_CE_N, // SRAM Chip Enable SRAM_OE_N, // SRAM Output Enable //////////////////// SD_Card Interface //////////////// SD_DAT, // SD Card Data SD_DAT3, // SD Card Data 3 SD_CMD, // SD Card Command Signal SD_CLK, // SD Card Clock //////////////////// USB JTAG link //////////////////// TDI, // CPLD -> FPGA (data in) TCK, // CPLD -> FPGA (clk) TCS, // CPLD -> FPGA (CS) TDO, // FPGA -> CPLD (data out) //////////////////// I2C //////////////////////////// I2C_SDAT, // I2C Data I2C_SCLK, // I2C Clock //////////////////// PS2 //////////////////////////// PS2_DAT, // PS2 Data PS2_CLK, // PS2 Clock //////////////////// VGA //////////////////////////// VGA_HS, // VGA H_SYNC
基于FPGA的视频监控系统是一种利用可编程逻辑器件FPGA实现视频监控功能的系统。FPGA是一种可定制的硬件平台,其灵活性和高性能使其成为视频监控系统设计的理想选择。 首先,FPGA可以实现高效的视频图像处理和分析。FPGA具有并行处理的能力,可以实时处理图像数据,实现视频源的采集、压缩、解码和显示等功能。同时,FPGA还可以实现针对视频图像的各种算法和滤波器,如运动检测、目标识别、图像增强等,提高视频监控系统的效果和灵敏度。 其次,FPGA具有低功耗和实时性的优势。相比于传统的软件实现方式,FPGA可以直接在硬件层面进行图像处理和分析,减少了功耗和延迟,实现了更加高效和实时的视频监控系统。这使得FPGA成为在资源有限的嵌入式设备上实现视频监控的理想选择。 最后,FPGA还可以实现视频监控系统的可扩展性和灵活性。FPGA可以根据具体需求进行定制化设计,满足不同应用场景下的视频监控需求。通过修改FPGA的硬件描述语言,可以轻松实现新的功能和算法的集成,同时还可以根据需要扩展视频输入和输出接口,实现多路视频的监控和显示。 综上所述,基于FPGA的视频监控系统设计具有高性能、低功耗、实时性、可扩展性和灵活性等优势。在日益增长的视频监控需求中,FPGA将发挥重要的作用,为视频监控系统的设计和应用带来更多可能性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值