热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基于Linux的ISA总线DMA的实现

众所周知,视觉是人类感知世界的最重要的方式,而现实生活中的所有物质形态都是以三维空间而客观存在。三维显示能真正地再
众所周知, 视觉是人类感知世界的最重要的方式, 而现实生活中的所有物质形态都是以三维空间而客观存在。三维显示能真正地再现客观世界的立体空间, 提供更符合人们观察习惯的交流方式, 有助于人们在综合运用各种深度暗示之后, 通过大脑的计算感知而获得真实、丰富、可靠的视觉体验, 对社会的发展以及在科技、经济等方面的发展具有重要的作用。

基于Linux的ISA总线DMA的实现


  目前, 三维显示大致可以分为四类: 体视三维显示、全息三维显示、透视三维显示和体三维显示 ,其显示的原理和特点如表1 所示。

表1 各类三维显示原理及特点

基于Linux的ISA总线DMA的实现


  本文通过旋转24×16 二维LED 阵列实现了具有69120个体像素, 空间尺寸为Φ9414 mm ×6618mm 柱体内的三维显示, 文中论述了系统的整体结构、显示原理及其各组成部分的实现方法。最后并以显示“茶壶”为例, 对此体三维显示系统进行了分析和讨论。

  1 LED 体三维显示系统设计

  1.1 整体方案

  由于人眼具有视觉暂留的特性, 即人类视觉对亮度改变的跟踪会由于意识处理延迟而滞后。基于此特性, 利用电机驱动置于对称转轴两侧的发光二极管阵列, 使之高速旋转, 周期性地扫出一个柱体空间。同时, 寻址驱动控制电路根据需要调制不同时刻LED阵列的发光状态, 这样通过快速显示一幅幅二维图像截面序列来实现三维显示。由于人眼视觉暂留时间约为50~100ms, 当电机转速超过10r/s时, 人便不会有闪烁的感觉, 而是看到三维的立体图像。根据此原理可设计如图1 所示的LED体三维显示系统。

基于Linux的ISA总线DMA的实现


  利用计算机生成三维数据再通过数据传输电路把数据传输到旋转驱动板上面的存储器中, 并且由角度编码器来测试电机的旋转角度并把信号送给FPGA , 然后由FPGA 根据采集的角度编码器输出信号驱动LED 屏显示并按时刷新LED 显示屏。同时, 整个旋转驱动板在电机的驱动下快速的旋转, 快速显示一幅幅二维截面图像来实现三维显示。

  1.2 三维数据生成

  利用Matlab 软件的强大功能, 首先可以通过im read ()、im f info ()、m eshgrid ()、m eshc () 和su rf ()等语句来实现具有灰度值的三维图像, 假设获得的三维图像角坐标为P (X0, Y0, Z0)。

  令LED阵列旋转所得的圆柱空间中LED 灯的柱坐标为F ( r, H, z ) , 根据柱坐标与直角坐标的转换关系, 求得空间LED灯的三维直角坐标E (X 1, Y 1,Z 1) 可表示如下:

基于Linux的ISA总线DMA的实现


  其中r, H, z 均为整数, 且有: - 12

  最后, 令D(X2, Y2, Z2) = P(X0, Y0, Z0) ∩E (X1, Y1, Z1 ) 求出该显示的L ED 灯的三维直角坐标, 以此作为三维数据的信息源。

  从Matlab 610 版本开始,Mathworks 公司在软件中增加了设备控制箱( Instrument control toolbox ) , 提供对RS2232/RS2485 通信标准的串口通信的正式支持。因此本系统使用该工具箱的serial 类及fopen、fw rite 等函数, 通过RS2232 串口并利用数据传输电路把获得的三维图像数据传输到LED 驱动电路板上。

  1.3 数据传输电路

  三维图像数据利用设备控制箱通过RS2232 串口后, 再利用红外编解码技术把数据传到旋转的LED驱动板上, 其整个数据传输的通讯结构图如图2 所示。

基于Linux的ISA总线DMA的实现


  在单片机串口模块中选用电平转换芯片MAX232 芯片实现TTL 电平与RS2232 电平的双向转换, 从而把三维图像数据传送到单片机的串行接收端口RXD 上, 然后单片机再通过其发送端口TXD把数据送出。图中的调制与红外发射模块通过由N E555 芯片构成的多谐振荡电路调制成38 kHz 的载波信号, 最后利用红外发射管TSAL6238 以光脉冲的形式向外发送。为了保证红外接收数据的准确性,N E555 产生的振荡频率要尽可能接近38 kHz,所以在选择电阻电容时要选用精密的元件并保证电源电压的稳定性。

  数据传输电路中的红外接收解调模块选择Vishay 公司的TSOP1738, 其内部电路功能已包括把接收到的载波频率为38 kHz 的脉冲调制红外光信号转化为电信号, 并由前放大器和自动增益控制电路进行放大处理。然后, 通过带通滤波器进行滤波, 滤波后的信号由解调电路进行解调。最后, 由输出级电路进行反向放大输出。

  所以, 选用此红外接收模块只要把其数据输出直接送到FPGA 处理即可。经实验测定, 利用此红外传输电路传输数据, 速率最高可达1 kB/ s。

  1.4 角度编码器与电机模块电路

  本系统立体显示是通过快速显示旋转空间中的一系列二维截面来实现的, 把LED 屏旋转一周分成180 个截面, 即每转2°要刷新一次显示屏。为了准确刷新显示屏, 本系统选用角度编码器来识别显示屏转过的角度, 角度编码器通过测试电机旋转发出脉冲可识别电机的旋转角度。本系统选用的角度编码器型号为ZSP38062022G2360B25224E。此编码器旋转一周可输出360 个脉冲信号。这样电机每转2°, 角度编码器便可发出2 个脉冲信号,LED 显示屏控制系统通过计数采集的角度编码器输出脉冲数来控制刷新LED 屏。


推荐阅读
  • 本文详细介绍了在C#编程环境中绘制正方形图像的技术和实现方法,通过具体示例代码帮助读者理解和掌握相关技巧。内容涵盖从基础概念到实际应用的各个方面,适合初学者和有一定经验的开发者参考。希望对您的C#学习之旅有所帮助,并激发您进一步探索的兴趣。 ... [详细]
  • PHP网站日志深度解析与数据洞察分析
    通过对PHP网站日志进行深入解析与数据洞察分析,可以有效提升网站性能和用户体验。由于网站日志数据量庞大,通常需要借助专业的日志分析工具来处理。常用的工具包括光年日志分析工具和WebLog Expert等,这些工具能够帮助技术人员快速识别并解决网站运行中的各种问题,从而优化SEO效果和提升整体运营效率。 ... [详细]
  • 春节期间如何利用团队协作平台高效应对突发任务?
    随着2023年农历兔年的到来,许多企业纷纷将线下工作转移到云端,积极部署假期期间的工作计划。员工们也将迎来长达十天至半个月的远程办公。无论是在家团聚还是外出旅行,如何高效应对突如其来的紧急任务成为关键。通过充分利用团队协作平台,企业可以确保信息的及时传递与任务的快速响应,从而保障工作的连续性和效率。 ... [详细]
  • 在 PHP 中使用 Restler 3 框架为不同方法添加身份验证时,可以根据方法参数的特定值来限制访问。例如,在 `Simple.php` 文件中定义的 `Simple` 类中,可以通过检查 `$name` 参数的值来决定是否允许调用 `item` 方法。这种细粒度的认证机制可以提高系统的安全性和灵活性。具体实现方式包括在方法内部进行条件判断,并结合框架提供的认证工具来实现访问控制。 ... [详细]
  • 2018年9月21日,Destoon官方发布了安全更新,修复了一个由用户“索马里的海贼”报告的前端GETShell漏洞。该漏洞存在于20180827版本的某CMS中,攻击者可以通过构造特定的HTTP请求,利用该漏洞在服务器上执行任意代码,从而获得对系统的控制权。此次更新建议所有用户尽快升级至最新版本,以确保系统的安全性。 ... [详细]
  • PHP服务接口的专业测试方法与实践 ... [详细]
  • 如何在WAMP环境中更改默认的www根目录路径
    在WAMP环境中更改默认的www根目录路径,可以通过编辑Apache配置文件实现。具体步骤如下:打开D:\WampServer\bin\apache\apache2.2.22\conf\httpd.conf文件,找到并修改DocumentRoot和指令,将路径更改为新的根目录位置。保存文件后重启WAMP服务,即可生效。此方法适用于需要自定义项目部署路径的开发者。 ... [详细]
  • 本文详细介绍了 Python 中字符串处理的各种技巧,包括查找、复制、替换、删除、截取、连接、比较、包含检测及大小写转换等操作。特别强调了如何使用 `strip()`、`lstrip()` 和 `rstrip()` 方法去除字符串中的空格和特殊符号,以及如何通过简单的赋值语句实现字符串的复制。此外,还提供了丰富的示例代码,帮助读者更好地理解和应用这些技巧。 ... [详细]
  • 七款高效编辑器与笔记工具推荐:KindEditor自动换行功能解析
    本文推荐了七款高效的编辑器与笔记工具,并详细解析了KindEditor的自动换行功能。其中,轻笔记QingBiJi是一款完全免费的记事本软件,用户可以通过其简洁的界面和强大的功能轻松记录和管理日常事务。此外,该软件还支持多平台同步,确保用户在不同设备间无缝切换。 ... [详细]
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • 在Android 4.4系统中,通过使用 `Intent` 对象并设置动作 `ACTION_GET_CONTENT` 或 `ACTION_OPEN_DOCUMENT`,可以从相册中选择图片并获取其路径。具体实现时,需要为 `Intent` 添加相应的类别,并处理返回的 Uri 以提取图片的文件路径。此方法适用于需要从用户相册中选择图片的应用场景,能够确保兼容性和用户体验。 ... [详细]
  • 优化后的标题:利用 jQuery 实现高效树形结构元素选择与操作
    在Web前端开发中,DOM结构本质上是一种树形结构。通过优化后的jQuery选择器,可以高效地选择和操作DOM树中的节点。这些选择器不仅简化了代码编写,还提高了性能和可维护性。本文将详细介绍如何利用jQuery的树形选择器实现高效的元素选择与操作。 ... [详细]
  • 利用 PHP APICommonUrl 中转实现 jQuery JSONP 请求优化 ... [详细]
  • Jeecg开源社区正式启动第12届架构技术培训班,现已开放报名。本次培训采用师徒制模式,深入探讨Java架构技术。类似于大学导师指导研究生的方式,特别适合在职人员。导师将为学员布置课题,提供丰富的视频资料,并进行一对一指导,帮助学员高效学习和完成任务。我们的教学方法注重实践与理论结合,旨在培养学员的综合技术能力。 ... [详细]
  • Docker入门指南:初探容器化技术
    Docker入门指南:初探容器化技术摘要:Docker 是一个使用 Go 语言开发的开源容器平台,旨在实现应用程序的构建、分发和运行的标准化。通过将应用及其依赖打包成轻量级的容器,Docker 能够确保应用在任何环境中都能一致地运行,从而提高开发和部署的效率。本文将详细介绍 Docker 的基本概念、核心功能以及如何快速上手使用这一强大的容器化工具。 ... [详细]
author-avatar
章小胭
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有