【2023研电赛】全国技术竞赛一等奖:基于FPGA的超低时延激光多媒体终端
该作品参与极术社区组织的研电赛作品征集活动,欢迎同学们投稿,获取作品传播推广,并有丰富礼品哦~
基于FPGA的超低时延激光多媒体终端

参赛单位:华东师范大学
指导老师:刁盛锡
参赛队员:王泽宇 谢祖炜 秦子淇
作品简介
随着数字光处理技术(DLP)和液晶显示器技术(LCD)的不断发展,市场上能实现4K@60Hz超高清投影的投影机型号日渐增加,对投影仪器性能的要求也与日俱增,对投影延迟、投影亮度、投影色彩、系统可扩展性等方面提出了更高的要求。
在军用领域中,时间就是生命,美国空军的模拟器通用体系结构与标准(Simulator Common Architecture Requirements and Standards,SCARS)中规定战斗机模拟训练全任务仿真器(Full Mission Simulators, FMS)的模拟投影延时不得高于20ms;在商用领域中,时间就是金钱,金融期货与证券交易的深度行情信息最快每250ms刷新一次,对投影系统画面传输的时延要求高;在民用领域中,时间就是快乐,专业电子竞技显示仪器的视频传输时延需低于16ms。
针对军用、商用、民用三大领域对超低时延投影显示的需求,本团队完全独立自主地从硬件系统、逻辑算法以及软件代码三方面实现了基于FPGA的超低时延超高清激光多媒体终端,同时兼顾投影亮度、投影色彩和系统可扩展性。相比于市场上4K投影时延高达40ms到200ms的投影系统,本系统4K投影时延为15.8ms;能够支持的最高投影画面质量为4K@60Hz;投影画面亮度可达3500流明;画面对比度能够达到1000:1;系统支持USB3.0接口、千兆网口、万兆光口等高速接口以实现硬件扩展。


硬件设计
本系统的硬件设计有本团队成员使用Cadence系列软件进行EDA设计,包括原理图库设计、原理图设计、PCB封装库设计以及PCB设计。本作品的硬件系统原理图设计采用自顶向下的top design设计方法。最终完成了复杂的低延时激光多媒体终端硬件原理图设计,原理图共计58页,部分顶层设计如下图所示。

本作品的硬件平台为一块复杂的16层高密度激光多媒体显示终端系统板,用于实现超低时延激光投影,采用Xilinx Ultrascale+系列的XCZU7EV-FFVC1156E作为核心芯片,板上挂载了6片DDR4扩展存储资源,支持HDMI2.0与V-by-One两种视频输入接口,搭载一路数字微镜驱动接口以及一路DP1.2a视频输出接口;系统同时支持SATA大容量存储设备、USB3.0接口、MIPI D-PHY摄像头接口、千兆以太网、万兆以太网以及光学控制接口等丰富的外设资源。


低时延逻辑算法设计
分布式离散交织显示逻辑算法
显示信令控制模块是数字微镜驱动单元中的核心模块,而显示信令控制模块中最为核心的就是分布式离散交织显示算法,该算法的示意图如下图所示。该算法采用不同的LFSR随机种子优化投影显示策略,实现了视频数据更高效的显示,相较于传统的帧刷新方式,将带宽利用率提升了74.5%。

SARR逻辑算法
SARR(Self-Adjust-Rolling-Row)指自适应的滚动行缓存算法,该算法可极大降低了瞬时峰值数据带宽。相较于市面投影仪40~200ms量级的响应处理时延,本系统的4K投影响应延时仅为15.8ms,极大缓解了传统投影显示延时高,投影体验差的问题。基于SARR的低延时缓存策略贯穿在整个软件逻辑设计之中,并且着重在数字微镜驱动单元中的DDR4缓存单元体现,该算法的整体运行监控示意图如下图所示。

基于超低延时的设计需求,SARR分为了读写两个部分,写检测部分需要监控输入的视频数据流、数据预处理,颜色生成等模块的工作状态,检测写部分的整体输入速率;读检测部分需要基于写入的数据速率,控制显示信令控制的读取速度,监控DDR4存储模块的读写状态和DMD的数据吞吐速率,协调读部分的读取速率,确保读写指针维持偏差维持在4.167ms之内。并且,基于SARR可以使得软件处理部分同时兼容4K@60Hz、4K@50Hz、4K@30Hz、4K@25Hz等多种显示规格。

作品创新点
(1) 全方面自主设计的低时延激光显示多媒体平台系统
本作品中的硬件、逻辑以及软件均为本团队成员独立自主设计的低时延激光显示多媒体平台。该多媒体平台拥有丰富的外设资源,支持HDMI2.0与V-by-One视频输入,能够通过万兆光口与千兆网口实现板级互联实现硬件资源扩展,能够通过更换数字微镜子板以实现对不同型号数字微镜芯片的驱动,多媒体终端的可扩展性和兼容性强。
本作品使用三色激光光源实现投影,使用了基于三色激光光源的RGBYCW六色显示技术,相比较于传统DLP投影技术中使用高压汞灯投影以及单/双色激光配合色轮投影的技术而言,投影亮度更高,对比度更高,色彩饱和度更高,投影画面更加真实,对应用场合的要求更低。
(2) 独创的新型投影逻辑设计架构和分布式离散交织显示算法
本团队从MEMS底层构建驱动应用算法,通过SARR(Self-Adjust-Rolling-Row)技术,相较于市面投影仪40~200ms量级的响应处理时延,本系统的4K投影响应延时仅为15.8ms,解决了传统投影显示延时高,投影体验差的问题。
本团队在驱动算法层面,提出了一种通过分布式离散交织显示算法,采用不同的LFSR随机种子优化投影显示策略,实现了视频数据更高效的显示,极大降低了瞬时峰值数据带宽,将带宽利用率提升74.5%,抑制了伪轮廓噪声,提高了驱动算法的效果,配合多色投影组合策略,大幅提高了投影画面的灰度精度及亮度。
(3) 突破技术壁垒,推动技术创新
本作品仅使用一块FPGA就完成了对TI数字微镜芯片的驱动,相比较于TI传统的“专用驱动芯片+固件程序”驱动方案,灵活性更高,成本更低,在数字微镜驱动领域填补了我国的技术空白,对独立生产制造数字微镜器件具有指导意义。
本作品已申请4项发明专利,其中3项已通过授权。
- 国家发明专利《一种基于FPGA的数字微镜芯片驱动方法》,专利号:202110659960.9,已授权;
- 国家发明专利《一种针对数字微镜芯片的4K分辨率视频图像预处理方法》,专利号:202110617933.5,已授权;
- 国家发明专利《一种基于振镜的数字微镜高分辨率视频图像投影方法》,专利号:202210737653.2,已授权;
- 国家发明专利《一种基于数字微镜的 8K 超高清单色显示器》,申请号:2023104558872,已通过初步审查。
总结
总体而言,本团队自主设计了基于FPGA开发了超低延时激光多媒体终端系统,同步控制三色激光光源和制动器实现超低延时的超高清激光投影,可广泛应用于军用、商用、民用等领域,具有延时低、图像质量高、通用性强、应用扩展性高等优势。本作品仅使用一块FPGA就完成了对数字微镜驱动,相较于TI传统的“专用驱动芯片+固件程序”驱动方案,灵活性更高,成本更低,在数字微镜驱动领域填补了我国的技术空白,打破了TI的技术垄断,且不受其应用限制。在国产化大形势下,为各大投影厂商选择国产方案提供了可定制化的超低时延多媒体终端,应用前景良好。

该作品参与极术社区组织的研电赛作品征集活动,欢迎同学们投稿,获取作品传播推广,并有丰富礼品哦~
相关文章:
【2023研电赛】全国技术竞赛一等奖:基于FPGA的超低时延激光多媒体终端
该作品参与极术社区组织的研电赛作品征集活动,欢迎同学们投稿,获取作品传播推广,并有丰富礼品哦~ 基于FPGA的超低时延激光多媒体终端 参赛单位:华东师范大学 指导老师:刁盛锡 参赛队员:王泽宇 谢祖炜 秦子淇…...
Annoy vs Milvus:哪个向量数据库更适合您的AI应用?知其然知其所以然
1. Annoy vs Milvus简介 Annoy 和 Milvus 都是用于向量索引和相似度搜索的开源库,它们可以高效地处理大规模的向量数据。 Annoy(Approximate Nearest Neighbors Oh Yeah): Annoy 是一种近似最近邻搜索算法,它通过构…...
android 13.0 SystemUI导航栏添加虚拟按键功能(一)
1.概述 在13.0的系统产品开发中,在系统SystemUI的原生系统中默认只有三键导航,想添加其他虚拟按键就需要先在构建导航栏的相关布局中分析结构,然后添加相关的图标xml就可以了,然后添加对应的点击事件,就可以了,接下来先分析第一步关于导航栏的相关布局情况 然后实现功能 …...
内存管理-分页、虚拟地址、虚拟内容、页面置换算法
文章目录 一、5W2H角度分析内存管理What是内存管理Why需要内存管理Who使用内存管理Where内存管理应用When需要内存管理How内存管理工作How much内存管理的成本 二、分页什么是分页分页的原理分页的优缺点分页的应用 三、虚拟地址什么是虚拟地址虚拟地址的作用虚拟地址的转换虚拟…...
【C++入门】命名空间详解(从零开始,冲击蓝桥杯)
C入门 命名空间 南喵小鸡汤程序员可以让步,却不可以退缩,可以羞涩,却不可以软弱,总之,程序员必须是勇敢的。一 . 命名空间的介绍二.命名空间的实际应用1.为什么要有命名空间我们在使用变量时,通常会为他定义一个名字,在…...
通过代码MyBatis-plus实现对表中createTime和updateTime进行自动更新
通过代码MyBatis-plus实现对表中createTime和updateTime进行自动更新 实现这样的效果可以在数据库中设置,但是我们一般建议在代码里实现, 但是总不能每次insert和update的时候都手写new当前时间 因此推荐使用mybatis-plus 1导入依赖 <dependency&g…...
HTML 实时显示本地电脑时间(精确到毫秒)
<!DOCTYPE html> <html> <head><title>实时显示本地电脑时间(精确到毫秒)</title> </head> <body><h1>本地电脑时间(精确到毫秒):</h1><h1 id"clock&q…...
opencv跨平台arm交叉编译之ubuntu
目录 1. 安装交叉编译工具链2. 安装依赖3. 配置工具链3.1 新建build目录3.2 安装cmake-gui3.3 工具链配置界面进行配置3.3.1 终端输入以下命令3.3.2 点击Configure,弹出编译方式选择对话框:3.3.3 点击Next3.3.4 点击Finish3.3.5 点击Configure。3.3.6 Ge…...
Git命令全集
1、克隆代码 查看项目地址 git remote -v直接克隆 git clone url克隆指定分支 git clone -b 分支 git地址RPC failed错误:修改Git的传输字节限制 git config --global http.postBuffer 10485760002、查看分支 查看 git branch -a切换分支 git branch 分支名从指定分支…...
[BigData:Hadoop]:安装部署篇
文章目录 一:机器103设置密钥对免密登录二:机器102设置密钥对免密登录三:机器103安装Hadoop安装包3.1:wget拉取安装Hadoop包3.2:解压移到指定目录3.2.1:解压移动路径异常信息3.2.2:切换指定目录…...
ubuntu 上vscode使用cmake编译运行c++程序
参考:ubuntu 上vscode使用cmake编译运行c程序_vscode ubuntu运行c程序_SCH0的博客-CSDN博客 文章是对官方过程的翻译: Get started with CMake Tools on Linux...
Node.js 新特性 SEA/单文件可执行应用尝鲜
#1 关于 SEA 单文件可执行应用(SEA,Singe Executable Applications),是 Node.js 新版本的特性,最初在 v19.7.0、v18.16.0 加入,并在 v20.x 得到扩展。而上个月发布的全家桶 Bun.js,就自带了 SEA…...
137.只出现一次的数字II
137. 只出现一次的数字 II - 力扣(LeetCode) 给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法且使用常数级空间来…...
k8s-15 strogeclass
官网: https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner StorageClass提供了一种描述存储类 (class)的方法,不同的cass可能会映射到不同的服务质量等级和备份策略或其他策略等 每个 StorageClass 都包含 provisioner、parameters 和…...
微信小程序开发实战:利用差异对比显示对象属性变化
前言 在小程序开发中,经常会遇到需要比较两个对象之间的差异并将这些差异可视化展示在界面上的情况。这一过程对于数据管理和用户反馈至关重要。本文将介绍一种实用的方法,可以帮助开发者高效地比较两个对象的属性差异,并将这些差异以直观的方…...
Redis的GEO结构
GEO就是Geolocation的简写形式,代表地理坐标。Redis在3.2版本中加入了对GEO的支持,允许存储地理坐标信息,帮助我们根据经纬度来检索数据。常见的命令有: GEOADD:添加一个地理空间信息,包含:经度…...
做UI设计师是否需要美术功底?
UI确实需要一定的手绘能力,但是跟画画是有很大不同的。 很多人问:学UI需不需要手绘能力。或者学UI需要什么绘画基础。 所以今天集体回答一下。 我们先来看一下跟绘画有关系的行业: 漫画: 主要的不是绘画能力,更重…...
python txt or 日志等超大文本文件读取
判断文件路径是否存在 要判断一个路径文件是否存在,可以使用Python的os.path模块中的exists()函数。下面是一个示例: import os# 要检查的文件路径 file_path = "path/to/file.txt"# 使用os.path.exists()函数判断文件是否存在 if os.path.exists(file_path):pri…...
Windows:Arduino IDE 开发环境配置【保姆级】
物联网开发学习笔记——目录索引 参考官网:Arduino - Home Arduino是一款简单易学且功能丰富的开源平台,包含硬件部分(各种型号的Arduino开发板)和软件部分(Arduino IDE)以及广大爱好者和专业人员共同搭建和维护的互联…...
【LeetCode 算法专题突破】双指针(⭐)
文章目录 前言1. 移动零题目描述代码 2. 复写零题目描述代码 3. 快乐数题目描述代码 4. 盛最多水的容器题目描述代码 5. 有效三角形的个数题目描述代码 6. 三数之和题目描述代码 7. 四数之和题目描述代码 总结 前言 学算法入门必学的一个章节,双指针算法࿰…...
Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...
STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...
