1. 項目概述
項目說明
該項目的目標是創(chuàng)建一個用DE1-SOC進行硬件加速的2D N-Body重力模擬器。
該模擬器擁有可定制的地圖和基于鼠標的 GUI 交互功能。
使用標準CPU模擬天體(恒星、行星、小行星等)之間的引力是有限的,因為它只能進行順序計算,隨著天體數(shù)量的增加,模擬時間會很長。而該項目是通過將每個天體的信息發(fā)送到FPGA來加速這些計算,讓它并行計算其他天體之間的每次交互,然后將結果發(fā)送回ARM繼而顯示在顯示器上。
2. 數(shù)學原理
加速器的數(shù)學基礎從標準牛頓重力方程開始:
為了簡化方程并減少 HPS 處理的計算量,先這樣求解加速度:
然后用同樣的方法計算其他加速度:
不過,對于這個計算,
這意味著如果物體靠得太近,會產(chǎn)生無限的加速度。這與現(xiàn)實不符,且由于該系統(tǒng)不處理對象的碰撞,因此需要添加不出故障的計算進去。
如果用一個偏移量epsilon來規(guī)范半徑數(shù)學計算,就可阻止加速度增加到無窮大。
當選擇epsilon取值是10的負8次方時,這意味著它不會明顯超出尾數(shù)的精度也就是小數(shù)點后9位。
但是這只計算了總加速度。為了將加速度存儲為矢量,則這里需要方向分量。為了計算這個,就用x和y的位移除以半徑。
當應用到之前的加速度公式時得到了下面的方程:
給物體2的加速度加上一個負號因為位移是我們在原始x^計算中計算的負的位移。
由于無法快速執(zhí)行浮點除法,因此在計算中只能進行3種不同的操作。加/減,乘和反平方根(使用快速反平方根算法)。下面的操作用于計算加速器中的最終結果。首先用2個加法器計算半徑的平方來計算x和y的位移,然后將輸出與其自身相乘并求出它們的和,也就是半徑的平方。
一旦有了半徑的平方,就可以試著用半徑平方的平方根的倒數(shù)來計算半徑的倒數(shù)。
用半徑平方和epsilon平方之和的平方根的倒數(shù),可以用下面的方法計算出前面所述的加速度方程:
更多原理介紹和方法實現(xiàn)請參考項目原文。
審核編輯:劉清
-
FPGA
+關注
關注
1645文章
22050瀏覽量
618517 -
ARM
+關注
關注
134文章
9353瀏覽量
377574 -
模擬器
+關注
關注
2文章
894瀏覽量
44407 -
GUI
+關注
關注
3文章
679瀏覽量
41240 -
硬件加速器
+關注
關注
0文章
43瀏覽量
13066
原文標題:FPGA開源項目分享——2D N-Body重力模擬器
文章出處:【微信號:友晶FPGA,微信公眾號:友晶FPGA】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
基于DE1-SOC開發(fā)板的oneAPI實驗教程(2)

求購de1-soc開發(fā)版。有的請聯(lián)系我。急求呢。QQ:528369266
DE1-SOC新貨轉(zhuǎn)讓
DE1-SoC官方自帶ControlPanel代碼解讀與AV圖像采集處理?
de1-soc FPGA(Quartus工程含Qsys系統(tǒng)) + HPS 操作步驟
基于VxWorks的硬件加速技術探討

如何在DE1-SOC開發(fā)板上搭建NIOS II處理器運行UCOS
基于VxWorks的硬件加速技術探討

Veloce仿真環(huán)境下的SoC端到端硬件加速器功能驗證

ALTERA公司的DE1 SoC FPGA開發(fā)板的培訓教程免費下載

在友晶DE1-SOC開發(fā)板實現(xiàn)Chirikov標準映射求解器

評論