【2023集创赛】安谋科技杯全国一等奖分享:基于安路PH1A60的3D图形体感游戏机

news2024/9/17 8:21:52

本文为2023年第七届全国大学生集成电路创新创业大赛(“集创赛”)安谋科技杯全国一等奖作品分享,参加极术社区的【有奖征集】分享你的2023集创赛作品,秀出作品风采,分享2023集创赛作品扩大影响力,更有丰富电子礼品等你来领!

团队介绍

参赛单位:北京理工大学
队伍名称:枫原万叶单推人
指导老师:吴琼之
参赛队员:吕澔波
全国总决赛奖项:一等奖(企业大奖)

安谋科技杯企业命题

杯赛题目:基于Arm处理器的智能游戏机设计
赛题内容:本赛题要求参赛选手基于Arm® Cortex®-M0或Cortex-M3处理器在限定的FPGA平台上构建具备可演示性的游戏机片上系统,完成一个游戏内容。在此基础上增加适当的功能以展示显示技术、人工智能、物联网和智能传感器在游戏机中的应用,要求实现的智能游戏机具有实用性、可演示性和创新性。

1.项目介绍

本项目开发了一款一体化便携式游戏机。作品在安路科技 PH1A60 FPGA 上集成了 ARM M3 DesignStart Eval IP,实现了基于Cortex-M3内核的处理器系统。通过自研三维图形处理IP核与数字信号处理-神经网络语音识别处理器,实现三维图形绘制与语音识别功能。项目使用Solidworks绘制游戏机外壳,并通过3D打印制造壳体,与自研电路板完成装配,形成一体化结构。
在这里插入图片描述
图1 作品实物图

2.作品工程设计

板级互联设计

本次比赛限定使用两款器件:安路EG4S20与PH1A60,其中PH1A60芯片的资源更加丰富。PH1A60是安路科技生产的FPGA芯片,今年刚刚上市,市面上板卡较少。目前,市面上常见的安路PH1A60开发板为硬木课堂出品的“大拇指”系列开发板。该板卡带有HDMI、LCD视频输出接口与PWM音频输出接口,具备TF卡、SDRAM存储功能。此款板卡能够满足大部分项目的设计需求,然而本项目为了实现三维图形显示功能,对电路结构做了特殊设计,导致使用该板卡无法实现全部功能。

本项目设计的游戏机具备三维图形显示能力。根据三维图形的绘制方法,需先乱序将图形数据写入帧缓冲,屏幕刷新时再顺序从帧缓冲中读出图形数据。因此,不仅需要保存贴图图片,还需要同时保存一帧图像的全部数据。若使用FPGA片上存储器保存,则只能实现极低分辨率的图形绘制。为了保存更多图形数据,提升游戏体验,可以使用外置存储器扩展FPGA储存容量。由于PH1A60芯片不支持DDR,可选用SDR SDRAM扩展显存容量。然而,外置SDRAM的存储带宽有限。使用LCD屏幕时,每个PCLK必须发送颜色数据。此时若SDRAM带宽不足无法取得数据,屏幕将出现显示错误。这直接制约了游戏机所能达到的最大分辨率。

为了应对三维图形绘制带来的高显存带宽,本项目自主设计了游戏机主控电路板,搭载安路科技 PH1A60 FPGA芯片,板上集成双通道SDRAM。电路系统针对离电工况设计,游戏机内置双节锂电芯及15W(1.5卢)充电电路。除此以外,电路板上还含有数字麦克风、高保真数字音频功放等功能。

本设计将FPGA直接焊接在PCB上,无需通过核心板转接。电路板走线经过阻抗匹配和等长,以确保信号完整性。

在这里插入图片描述
图2 使用Altium Designer绘制主控电路板

在这里插入图片描述
图3 主控电路板设计图

在这里插入图片描述
图4 主控电路板实物图

SoC系统设计

项目基于FPGA实现了SoC系统,SoC包含Cortex-M3 内核、自研数字信号处理-神经网络语音识别处理器、自研图形处理单元“兰桨图形引擎+”。SoC系统总线上还挂载了UART、GPIO等硬件外设接口。
在这里插入图片描述
图5 SoC系统框图

语音识别处理器设计

语音识别处理器为游戏机赋予了识别玩家语音指令的功能,玩家在游戏的过程中可通过语音与游戏交互,体验智能游戏的乐趣。

语音识别模块包含三部分:I2S数字麦克风音频输入模块、快速傅里叶变换模块以及神经网络计算模块。数字麦克风的采样频率为46875Hz.数字麦克风在获得语音信号后,会首先将数据保存在缓冲区内。数字信号处理模块每次从缓冲区内取256点音频数据,进行快速傅里叶变换。直接取样相当于对信号加矩形窗,造成频谱泄露。因此,数字信号处理模块会首先对信号加汉宁窗,以抑制频谱泄露的发生。在对信号进行加窗后,数字信号处理模块对一帧信号进行快速傅里叶变换。为了避免丢失每一帧256点数据边沿的数据变化信息,数字信号处理模块每次从输入缓冲取出的256点数据应有所重叠。在本设计中,取样步幅为128点,即取样重叠率为50%。数字信号处理模块每秒约完成366次256点FFT运算。语音信号经FFT运算后,得到音频频谱图。频谱图展示了语音信号频率随时间的变化。频谱图可作为语音信号的一种特征,区分不同种类的特征词。将频谱图输入神经网络中,经神经网络前向传播求得特征词的预测概率。

图形处理单元设计

在FPGA上实现三维图形绘制,是本项目的难点,也是游戏机的特色所在。本项目自研了三维图形绘图引擎,命名为“兰桨图形引擎+”。“兰桨”二字取自苏轼《赤壁赋》:“桂棹兮兰桨,击空明兮溯流光”。兰桨图形引擎以数学为画笔,绘制出五彩斑斓的绚丽世界。兰桨图形引擎采用了硬件-SoC-算法协同设计,使基于FPGA的三维图形渲染成为可能。

三维图形计算由Cortex-M3内核与FPGA接力完成。项目使用C++开发了计算机图形学运算库,包含矩阵计算库、MVP变换库与几何着色器库。使用FPGA实现的像素着色器基于深度流水线,提高计算并行化程度,使三维绘图得以实时运行。

在分区赛结束后,本队对图形引擎的渲染管线进行了大幅度重写,重构了SDRAM控制器IP核,像素着色器流水线级数达到超过100级。使用深度流水化设计,访存效率大幅提高,提升了图形绘制速度。FPGA的图形单元由像素着色器控制器、光栅化器、贴图SDRAM控制器、显存控制器组成。图形单元结构如下图所示:

在这里插入图片描述
图6 图形加速处理器结构

各部分功能如下:

像素着色器控制器:

给定三角形的屏幕坐标与贴图坐标,依次让光栅化器遍历三角形包围盒中的每个像素以求得像素的颜色。

光栅化器:

给定当前像素坐标与三角形顶点坐标、贴图UV坐标等信息,求当前像素在SDRAM中的地址。

贴图SDRAM控制器:

处理光栅化器的写入请求,读写深度缓冲,从SDRAM中取贴图颜色数据。

显存控制器:

对图形处理加速器绘制的图像进行缓存,解决绘图速度与屏幕输出速度不一致的问题。
为了加快游戏中三维模型的设计过程,本项目使用Python开发了三维模型转换工具。使用三维建模软件Blender绘制模型后,可直接由工具转换生成兰桨图形引擎支持的数据格式。
在这里插入图片描述
图7 模型转换工具

软件设计

本项目在Cortex-M3内核上移植了FreeRTOS嵌入式实时操作系统。FreeRTOS操作系统支持抢占式内核,可实现实时性强的多任务处理。
为了提高开发效率,增强代码可移植性,本项目开发了调用外设接口与系统功能的软件API函数。API函数结构与STM32 HAL库类似,通过调用函数可实现对外设接口的控制与初始化。

结构设计

本项目使用Solidworks软件建模设计游戏机外壳,并通过3D打印方法制作壳体。游戏机电路板外形与结构契合,提高了系统的整体性,给玩家带来更好的握持体验。
在这里插入图片描述
图8 使用Solidworks软件设计结构

在这里插入图片描述
图9 通过3D打印制作游戏机结构

游戏设计

游戏机实现了一款跑酷类游戏。绮良良是稻妻城的快递员,在送货的过程中会化作“猫猫盒”形态,在路上奔跑着前行。送货的路途中有很多阻碍,路上不时会出现障碍物:有花坛、广告牌,有时还会有小松树挡住去路。然而,有时在路上也能发现金币。让我们出发,和绮良良一起探险吧!
玩家可以使用按键控制、体感控制、语音识别三种方式操作游戏中的角色,躲避道路上的障碍物,并拾取随机掉落的金币,以获得更高游戏得分。
在这里插入图片描述
图10 游戏机运行游戏

参赛幕后故事

本内容经吕同学同意补充,引用安谋科技学堂文章第七届集创赛落下帷幕,安谋科技赛道作品创意无限内容。

作为本届集创赛总决赛安谋科技杯唯一一支由个人组成的队伍,吕澔波同学刚出现在答辩现场就引起了评委专家们的疑问:“只有你一个人吗?”

这支一个人的队伍,获得了本届集创赛的安谋科技杯企业大奖。然而,这份荣誉的得来并非一帆风顺。

二月底的一天,吕澔波同学在集创赛网站上看到了今年的赛题,其中安谋科技杯赛题——“基于Arm处理器的智能游戏机设计”立马抓住了他的眼球。与要求固定的命题形式不同,安谋科技杯开放的赛题设计给想象力留下了更多空间。智能游戏机,是一种怎样的形态呢?是具备新颖的交互方式,还是能够实现与众不同的游戏内容?在激动地思考了几个昼夜后,吕澔波将创意锁定在曾经自学的计算机图形学上。计算机图形学是一种使用数学算法将二维或三维图形转化为图像的学科,它是3D游戏的基础技术。目前,3D游戏的绘图算法多由GPU实现。通过FPGA运行三维图形计算,是一种新的尝试。在兴奋劲过后,吕同学很快投入到了算法的验证工作中。那时集创赛报名已接近尾声。在紧锣密鼓地开发了一周后,吕澔波终于验证了FPGA实现三维图形算法的可行性。

随着报名截止日期不断逼近,吕同学却犯了难:该找什么同学作为队友呢?集创赛赛制中,每个团队最多可由三名同学组成。三位同学互相配合,共同完成比赛作品。然而,计算机图形学算法与FPGA开发涉及不同学科方向。学习过FPGA的学生里很少有人学过计算机图形学,从零开始学习计算机图形学也并非易事。这使得项目最大的工作量无法分担。直到报名截止日期,还是没有找到合适的队友,于是他决定单枪匹马参加集创赛。

一个人参赛的后果是工作量的成倍提升。计算机图形学算法涉及大量数学运算,而在FPGA上实现三维图形绘制却少有参考案例。随着开发进度的推进,项目存在的问题也不断暴露出来:由于FPGA开发板的储存带宽不足,无法流畅绘制画面;在电脑端运行的图形学算法不能直接运行在Cortex-M3内核上,需要大幅度重写…初赛作品提交日期就在眼前,吕同学夜以继日地开发,当一种方法行不通时,就对系统进行更加底层的设计。终于,游戏机在提交日前如期完成。

就这样,经过初赛和分区赛,作品顺利晋级全国总决赛。吕澔波放弃了周末及暑假,没日没夜地泡在实验室里调试电路与程序。深夜,在一个人的实验室里,只有键盘的快速敲击声。是信念和勇气将作品带到了全国总决赛的比赛现场。

8月22日,在第七届全国大学生集成电路创新创业大赛全国总决赛颁奖典礼上,“枫原万叶单推人”这支一个人的队伍获得安谋科技杯企业大奖。主持人这样说道:“他以一个人单枪匹马,抵挡住千军万马。”回首比赛的经历,吕同学这样说:“或许这是年轻的勇气与闯劲吧。”

参加极术社区的【有奖征集】分享你的2023集创赛作品,秀出作品风采,分享2023集创赛作品扩大影响力,更有丰富电子礼品等你来领!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/987977.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

leetcode 215.数组中第k大的元素

⭐️ 题目描述 🌟 leetcode链接:数组中第k大的元素 思路: 使用堆数据结构,大堆的堆顶是堆内最大的元素,也就是把当前堆 pop k - 1 次,第 k 次 top 出来的元素就是第 k 大的数。 代码: class …

Python中的Pathlib

迷途小书童 读完需要 4分钟 速读仅需 2 分钟 大家好,我是迷途小书童! 今天给大家介绍 Python 中的内置库 Pathlib。 pathlib 模块是 Python 3.4 中新增的标准库,它提供了面向对象的文件系统路径处理方法。pathlib 致力于解决直接操作文件路径…

宝塔Linux面板的安装配置

一、 宝塔Linux面板的功能 宝塔面板是一款服务器管理软件,可以帮助用户建立网站,一键配置服务器环境,使得用户通过web界面就可以轻松的管理安装所用的服务器软件。 二、宝塔Linux面板的安装 宝塔官网地址:https://www.bt.cn/new…

【C++进阶(五)】STL大法--list模拟实现以及list和vector的对比

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:C从入门到精通⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习C   🔝🔝 list模拟实现 1. 前言2. list类的大致框架与结构…

开源协议对比:局限性、应注意事项与详细对比

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

浙江工业大学MBA和浙江工商大学MBA哪个容易上岸?

在浙江省内,一般嫌弃浙大MBA项目学费贵的考生基本会从其它八个MBA项目中做衡量选择,其中浙工大MBA和浙工商MBA项目就是不少考生经常会做对比的项目,究竟哪个项目更容易上岸也是大家所关注的话题之一,立足浙江的杭州达立易考教育结…

从融云数智办公平台,看企业需要什么样的大模型?

本文中,我们将聚焦 ToB 领域,打开 AIGC 在 C 端社交泛娱乐之外的另一个切面,探索 B 端叙事的新变化。关注【融云 RongCloud】,了解协同办公平台更多干货。 过去两年,关于互联网大厂最多的消息当属裁员和关停非短期商业…

2.9 PE结构:重建导入表结构

脱壳修复是指在进行加壳保护后的二进制程序脱壳操作后,由于加壳操作的不同,有些程序的导入表可能会受到影响,导致脱壳后程序无法正常运行。因此,需要进行修复操作,将脱壳前的导入表覆盖到脱壳后的程序中,以…

速看!外滩大会发布银行数字科技5大趋势

通用人工智能风起云涌,金融行业将如何应对? 9月8日,由中国银行业协会指导,网商银行承办的外滩大会银行业数字化论坛上,IDC中国副总裁兼首席分析师武连峰发布了《银行数字科技五大趋势》:随身银行、AI风控、…

群晖(Synology)NAS 后台安装 Docker 后配置 PostgreSQL

群晖(Synology)NAS 的后台在新版本对 Docker 不再称为 Docker,现在改称为 Container Manager 了。 单击进入后运行 Container Manager。 PostgreSQL 容器 针对 PostgreSQL 的容器,我们选择容器后,如果你已经安装了 P…

buffer pool原理总结

innodb buffer pool原理总结 文章目录 innodb buffer pool原理总结1. 缓存的重要性2. innodb buffer pool2.1 buffer pool的内部组成2.2 FREE链表2.3 FLUSH链表2.4 LRU链表2.4.1 LRU链表的功能预读 1. 缓存的重要性 我们都知道,对于innodb存储引擎的表来说&#xf…

快手用户活跃度分析(未完成)

目标 为期30天的用户数据,但是不是所有的用户都有30天的信息数据,比如用户A第7天注册的,则其前6天没有数据。 预测未来用户活跃度的可能性。 预测7天后的,基于第7天,预测第14天,基于第8天,预测…

2023数模A题——定日镜场的优化问题

A题——定日镜场的优化问题 思路:该题主要考察的几何知识和天文学知识,需要不同角度下的镜面和遮挡情况。 资料获取 问题1: 若将吸收塔建于该圆形定日镜场中心,定日镜尺寸均为 6 m6 m,安装高度均为 4 m,且…

解密Kubernetes(K8s)集群的创建过程和关键步骤

文章目录 1. 准备环境2. 安装Docker3. 安装Kubernetes在Master节点上执行以下步骤:安装kubeadm、kubelet和kubectl初始化Master节点 在工作节点上执行以下步骤:加入集群 4. 设置Kubeconfig5. 安装网络插件6. 验证集群7. 部署应用程序8. 扩展和管理集群9.…

Weblogic反序列化漏洞

文章目录 1、搭建环境2、漏洞特征3、漏洞利用1)获取用户名密码2)后台上传shell 4、检测工具 1、搭建环境 漏洞环境基于vulhub搭建–进入weak_password的docker环境 sudo docker-compose up -d拉取靶场 2、漏洞特征 404特征Weblogic常用端口:7001 3、漏洞利用…

centos7使用docker-compose一键搭建mysql高可用主从集群

docker部署 环境准备 卸载旧版本 yum remove -y docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \docker-engine 安装依赖 yum install -y yum-utils \…

PCB - 封装焊盘阻焊层的检查

文章目录 PCB - 封装焊盘阻焊层的检查概述检查做出的实际PCB正反面厂家提供的生产稿PCB对应的原始gerber文件查封装拿一个插件电阻为例插件封装焊盘的基本数据END PCB - 封装焊盘阻焊层的检查 概述 打样回来, 看到要焊接的几个插件管脚有阻焊, 无法焊接. 这几个封装是直接从第…

腾讯发布超千亿参数规模的混元大模型;深度学习与音乐分析与生成课程介绍

🦉 AI新闻 🚀 腾讯发布超千亿参数规模的混元大模型 摘要:腾讯在2023腾讯全球数字生态大会上发布混元大模型,该模型拥有超千亿的参数规模和超2万亿 tokens 的预训练语料。混元大模型将支持多轮对话、内容创作、逻辑推理、知识增强…

CleanShot X for mac安装下载,mac系统录屏、截图、标注软件

您是否经常需要截图、录屏或者标注图片?如果是,那么您一定会喜欢CleanShot X for mac,这是一款专为Mac用户设计的强大而简洁的工具。 CleanShot X for mac可以让您轻松地截取任何区域的屏幕,无论是整个屏幕、窗口还是选定的部分。…

Say Goodbye to OOM Crashes

内存管理 --- 在计算机编程中,内存管理是一项关键任务,用于在程序运行时正确分配和释放内存。一个有效的内存管理系统可以帮助程序提高性能,减少内存泄露和访问错误等问题。 内存管理涉及以下几个方面: 1. 内存分配&#xff1a…