码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • FPGA开源项目分享——2D N-Body重力模拟器


    ​导语

    今天继续康奈尔大学FPGA 课程ECE 5760的典型案例分享——2D N-Body重力模拟器。

    (更多其他案例请参考网站:

    Final Projects ECE 5760)

    1. 项目概述

    项目网址

    Grav Sim

    项目说明

    该项目的目标是创建一个用DE1-SOC进行硬件加速的2D N-Body重力模拟器。

    该模拟器拥有可定制的地图和基于鼠标的 GUI 交互功能。

    视频参考:FPGA开源项目分享——2D N-Body重力模拟器

    使用标准CPU模拟天体(恒星、行星、小行星等)之间的引力是有限的,因为它只能进行顺序计算,随着天体数量的增加,模拟时间会很长。而该项目是通过将每个天体的信息发送到FPGA来加速这些计算,让它并行计算其他天体之间的每次交互,然后将结果发送回ARM继而显示在显示器上。

    2. 数学原理

    加速器的数学基础从标准牛顿重力方程开始:

    为了简化方程并减少 HPS 处理的计算量,先这样求解加速度:

    然后用同样的方法计算其他加速度:

    不过,对于这个计算,

    这意味着如果物体靠得太近,会产生无限的加速度。这与现实不符,且由于该系统不处理对象的碰撞,因此需要添加不出故障的计算进去。

    如果用一个偏移量epsilon来规范半径数学计算,就可阻止加速度增加到无穷大。

    当选择epsilon取值是10的负8次方时,这意味着它不会明显超出尾数的精度也就是小数点后9位。

    但是这只计算了总加速度。为了将加速度存储为矢量,则这里需要方向分量。为了计算这个,就用x和y的位移除以半径。

    当应用到之前的加速度公式时得到了下面的方程:

    给物体2的加速度加上一个负号因为位移是我们在原始x^计算中计算的负的位移。

    由于无法快速执行浮点除法,因此在计算中只能进行3种不同的操作。加/减,乘和反平方根(使用快速反平方根算法)。下面的操作用于计算加速器中的最终结果。 首先用2个加法器计算半径的平方来计算x和y的位移,然后将输出与其自身相乘并求出它们的和,也就是半径的平方。

    一旦有了半径的平方,就可以试着用半径平方的平方根的倒数来计算半径的倒数。

    用半径平方和epsilon 平方之和的平方根的倒数,可以用下面的方法计算出前面所述的加速度方程:

    更多原理介绍和方法实现请参考项目原文。

    3. 视频演示

    视频参考:

    FPGA开源项目分享——2D N-Body重力模拟器

    4. 源码下载

    1. GitHub - rafCodes/GravSim: 2D N-body, hardware accelerated gravity simulator with custom and interactive maps

  • 相关阅读:
    记录一次ubuntu下txt乱码问题
    华为云云耀云服务器L实例评测 | 实例场景体验之搭建个人博客:通过华为云云耀云服务器构建个人博客
    这次,听人大教授讲讲分布式数据库的多级一致性|TDSQL 关键技术突破
    搜索引擎项目开发过程以及重难点整理
    最新总结MySQL核心知识点
    python基于django的健身资讯网站 vue
    5G网络建设 - 华为OD统一考试(C卷)
    60行自己动手写LockSupport是什么体验?
    常用的无线充发射IC芯片
    4_使用预训练模型 微调训练CIFAR10
  • 原文地址:https://blog.csdn.net/weixin_47841246/article/details/136391108
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号