在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FPGA定點(diǎn)和浮點(diǎn)數(shù)學(xué)運(yùn)算實(shí)例對(duì)比

FPGA研究院 ? 來(lái)源:OpenFPGA ? 2025-06-23 09:53 ? 次閱讀

來(lái)源:OpenFPGA;作者:碎碎思

在創(chuàng)建 RTL 示例時(shí),經(jīng)常使用 VHDL 2008 附帶的 VHDL 包。它提供了出色的功能,可以高效地處理定點(diǎn)數(shù),當(dāng)然,它們也是可綜合的。該包的一些優(yōu)點(diǎn)包括:

有符號(hào)和無(wú)符號(hào)(后綴和后綴)定點(diǎn)向量。

輕松將定點(diǎn)數(shù)表示并量化為定點(diǎn)向量。

小數(shù)點(diǎn)位于向量元素 0 和 -1 之間。這樣就無(wú)需在運(yùn)算過(guò)程中跟蹤小數(shù)點(diǎn)以進(jìn)行對(duì)齊(大量運(yùn)算這點(diǎn)很難把握)。

運(yùn)算的溢出、舍入和范圍管理有明確的定義。

算術(shù)和比較運(yùn)算符。

因此,當(dāng)需要實(shí)現(xiàn)算法時(shí),我會(huì)使用這個(gè)包。但是實(shí)際應(yīng)用時(shí),還會(huì)有很多浮點(diǎn)運(yùn)算。

自然而然地,一個(gè)問(wèn)題出現(xiàn)了:用定點(diǎn)和浮點(diǎn)實(shí)現(xiàn)同一個(gè)方程時(shí),資源有什么區(qū)別?

我們將要看的例子是如何利用多項(xiàng)式近似地將ADC讀數(shù)轉(zhuǎn)換為溫度值。這在工業(yè)應(yīng)用中很常見(jiàn)(使用鉑電阻溫度計(jì)時(shí))。

cd0d6d2e-4bd3-11f0-b715-92fbcf53809c.png

要實(shí)現(xiàn)的具體方程是 y = 2E-09x4 - 4E-07x3 + 0.011x2 + 2.403x - 251.26,該方程是從繪制方程式中提取出來(lái)的。雖然我們可以直接實(shí)現(xiàn)該方程,但這會(huì)非常浪費(fèi)資源,還會(huì)增加開(kāi)發(fā)的復(fù)雜性和風(fēng)險(xiǎn)。

cd1adb58-4bd3-11f0-b715-92fbcf53809c.png

使用定點(diǎn)數(shù)系統(tǒng),我們需要做一些量化來(lái)保持精度和準(zhǔn)確度。

代碼和一個(gè)簡(jiǎn)單的仿真如下。

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.fixed_pkg.all;
entity complex_example is port(
clk  :instd_logic;
ip   :instd_logic_vector(7 downto 0);
op   : out std_logic_vector(8 downto 0));
end complex_example;
architecture Behavioral of complex_example is
signal power_a : sfixed(8 downto -32):=(others=>'0');
signal power_b : sfixed(8 downto -32):=(others=>'0');
signal power_c : sfixed(8 downto -32):=(others=>'0');
signal calc : sfixed(8 downto -32) :=(others=>'0');
signal store : sfixed(8 downto 0) := (others =>'0');
constant a : sfixed(8 downto -32):= to_sfixed( 2.00E-09, 8,-32 );
constant b : sfixed(8 downto -32):= to_sfixed( 4.00E-07, 8,-32 );
constant c : sfixed(8 downto -32):= to_sfixed( 0.0011, 8,-32 );
constant d : sfixed(8 downto -32):= to_sfixed( 2.403, 8,-32 );
constant e : sfixed(8 downto -32):= to_sfixed( 251.26, 8,-32 );
typereg_array is array (9 downto 0) of sfixed(8 downto -32);
signal pipeline_reg : reg_array;
begin
cvd : process(clk)
begin
ifrising_edge(clk)then
  store <= to_sfixed('0'&ip,store);
? ? power_a <= resize (arg => power_b * store * a,
           size_res => power_a);
  power_b <= resize (arg => power_c * store * b,
           size_res => power_b);  
  power_c <= resize (arg => store * store * c,
           size_res => power_c); 
  calc <= resize (arg => power_a - power_b + power_c + (store * d) - e,
          size_res => calc);
  pipeline_reg <= pipeline_reg(pipeline_reg'high -1 downto 0 ) & calc; ? ? ??
?op <= to_slv(pipeline_reg(pipeline_reg'high)(8 downto 0));
? end?if;
end process;
end Behavioral;

對(duì)于 109 Ω的電阻輸入,溫度應(yīng)報(bào)告為 23.7°C。我們可以在下面的定點(diǎn)仿真中看到,結(jié)果符合預(yù)期,精度在可接受的范圍內(nèi)。

cd2f71bc-4bd3-11f0-b715-92fbcf53809c.png

使用浮點(diǎn)包實(shí)現(xiàn)相同的功能,以類似的方式實(shí)現(xiàn)

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.FLOAT_pkg.ALL; -- Use the floating-point package
entity FloatingPointPolynomial is
  Port (
    clk :inSTD_LOGIC;
    x :infloat32; -- Input x as a 32-bit floating-point number
    y : out float32 -- Output y as a 32-bit floating-point number  );
end FloatingPointPolynomial;
architecture Behavioral of FloatingPointPolynomial is
  -- Define constantsforthe polynomial coefficients
  constant a4 : float32 := TO_float(2.00E-09);
  constant a3 : float32 := TO_float(-4.00E-07);
  constant a2 : float32 := TO_float(0.011);
  constant a1 : float32 := TO_float(2.403);
  constant a0 : float32 := TO_float(-251.26);
  signal x2, x3, x4 : float32; -- Intermediate powers of x
  signal term4, term3, term2, term1 : float32; -- Polynomial terms
  signal res : float32;
 typereg_array is array (9 downto 0) of float32;
  signal pipeline_reg : reg_array;  
begin
  process(clk)
  begin
   ifrising_edge(clk)then
      -- Calculate powers of x
      x2 <= x * x;
? ? ? ? ? ? x3 <= x2 * x;
? ? ? ? ? ? x4 <= x3 * x;
? ? ? ? ? ? -- Calculate each term?in?the polynomial
? ? ? ? ? ? term4 <= a4 * x4;
? ? ? ? ? ? term3 <= a3 * x3;
? ? ? ? ? ? term2 <= a2 * x2;
? ? ? ? ? ? term1 <= a1 * x;
? ? ? ? ? ? -- Calculate final result
? ? ? ? ? ? res <= term4 + term3 + term2 + term1 + a0;
? ? ? ? ? ? pipeline_reg <= pipeline_reg(pipeline_reg'high -1 downto 0 ) &?
? ? ? ?res;
? ? ? ? ? ? y <= (pipeline_reg(pipeline_reg'high));
? ? ? ? end?if;
? ? end process;
end Behavioral;

仿真再次顯示了預(yù)期的結(jié)果,作為浮點(diǎn)結(jié)果,我們得到的結(jié)果也包括分?jǐn)?shù)元素。

cd413b40-4bd3-11f0-b715-92fbcf53809c.png

因此,定點(diǎn)和浮點(diǎn)都能夠?qū)崿F(xiàn)定義的算法。

為了了解利用所需的資源,決定將這兩種算數(shù)實(shí)現(xiàn)都以 K26 SoM 為目標(biāo)進(jìn)行綜合。

運(yùn)行綜合將識(shí)別每個(gè)模塊所需的資源。

正如預(yù)期的那樣,定點(diǎn)實(shí)現(xiàn)所需的邏輯占用空間比浮點(diǎn)實(shí)現(xiàn)所需的小得多。

cd4cc0fa-4bd3-11f0-b715-92fbcf53809c.png

定點(diǎn)實(shí)現(xiàn)

cd588610-4bd3-11f0-b715-92fbcf53809c.png

浮點(diǎn)實(shí)現(xiàn)

我們不僅需要考慮邏輯占用空間,還需要考慮時(shí)序性能。考慮到這一點(diǎn),將兩個(gè)設(shè)計(jì)都設(shè)置為 200 MHz 運(yùn)行,并從一開(kāi)始就實(shí)現(xiàn)了基準(zhǔn)時(shí)序收斂。

實(shí)現(xiàn)時(shí)序收斂比定點(diǎn)收斂更重要,這在浮點(diǎn)實(shí)現(xiàn)中是可以預(yù)料到的。不得不重新審視設(shè)計(jì),并在幾個(gè)關(guān)鍵階段實(shí)現(xiàn)流水線,因?yàn)樽畛醯拇a只是為了確定占用空間的差異。

值得注意的是,Versal 系列中的 DSP58 支持浮點(diǎn)運(yùn)算,但它不能直接從 float32 映射到 DSP。為了利用此功能,我們需要實(shí)例化配置為 FP32 操作的 DSP58,或者利用 Vivado IP 集成器提供的浮點(diǎn) IP。

總結(jié)這篇博客,正如預(yù)期的那樣,在使用 VHDL 中的浮點(diǎn)庫(kù)時(shí),邏輯占用空間存在很大差異。

建議在必要時(shí)利用定點(diǎn),并在絕對(duì)必要時(shí)限制浮點(diǎn)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 仿真
    +關(guān)注

    關(guān)注

    51

    文章

    4251

    瀏覽量

    135463
  • RTL
    RTL
    +關(guān)注

    關(guān)注

    1

    文章

    389

    瀏覽量

    60818
  • 運(yùn)算符
    +關(guān)注

    關(guān)注

    0

    文章

    173

    瀏覽量

    11393

原文標(biāo)題:FPGA定點(diǎn)和浮點(diǎn)數(shù)學(xué)運(yùn)算-實(shí)例對(duì)比

文章出處:【微信號(hào):FPGA研究院,微信公眾號(hào):FPGA研究院】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    浮點(diǎn)數(shù)定點(diǎn)數(shù)

    本帖最后由 gk320830 于 2015-3-5 23:17 編輯 數(shù)制,浮點(diǎn)數(shù)定點(diǎn)數(shù)的文檔,上數(shù)電時(shí)老師給的。有興趣的同學(xué)可以來(lái)看看
    發(fā)表于 03-27 21:31

    【安富萊——DSP教程】第7章 DSP定點(diǎn)數(shù)浮點(diǎn)數(shù)(重要)

    第7章DSP定點(diǎn)數(shù)浮點(diǎn)數(shù)(重要) 本期教程主要跟大家講解一下定點(diǎn)數(shù)浮點(diǎn)數(shù)的基礎(chǔ)知識(shí),了解這些基礎(chǔ)知識(shí)對(duì)于后面學(xué)習(xí)ARM官方的DSP庫(kù)大有裨益。特別是初學(xué)的一定要理解這些基礎(chǔ)知識(shí)。
    發(fā)表于 06-03 11:47

    第7章 DSP定點(diǎn)數(shù)浮點(diǎn)數(shù)

    IEEE浮點(diǎn)數(shù) 7.3 定點(diǎn)數(shù)運(yùn)算 7.4 總結(jié)7.1 定點(diǎn)數(shù)浮點(diǎn)數(shù)概念 如果小數(shù)點(diǎn)的位置事先已有約定,不再改變,此類數(shù)稱為“
    發(fā)表于 09-22 13:02

    CPU執(zhí)行一個(gè)需要浮點(diǎn)數(shù)運(yùn)算的程序時(shí)有三種方式

    編者按:在計(jì)算領(lǐng)域,例如三角函數(shù)以及時(shí)域頻域變換通常會(huì)用到浮點(diǎn)運(yùn)算。當(dāng)CPU執(zhí)行一個(gè)需要浮點(diǎn)數(shù)運(yùn)算的程序時(shí),有三種方式可以執(zhí)行:軟件仿真器(浮點(diǎn)
    發(fā)表于 08-27 07:51

    定點(diǎn)數(shù)浮點(diǎn)數(shù)的區(qū)別是什么

    定點(diǎn)數(shù)浮點(diǎn)數(shù)的區(qū)別目的:理解定點(diǎn)數(shù)浮點(diǎn)數(shù)在傅里葉變換(FFT)的實(shí)際應(yīng)用中的選擇單片機(jī)中如果需要進(jìn)行一定的運(yùn)算(常見(jiàn)的傅里葉變換)時(shí),需
    發(fā)表于 02-21 07:22

    如何在GCC中為具有FPU的Cortex M4啟用硬件浮點(diǎn)數(shù)學(xué)運(yùn)算呢?

    如何在GCC中為具有FPU的Cortex M4啟用硬件浮點(diǎn)數(shù)學(xué)運(yùn)算呢?
    發(fā)表于 08-26 14:43

    擴(kuò)充浮點(diǎn)運(yùn)算集是否需要自己在FPGA板子上設(shè)置一個(gè)定點(diǎn)數(shù)轉(zhuǎn)為浮點(diǎn)數(shù)的部分?

    擴(kuò)充浮點(diǎn)運(yùn)算集的時(shí)候,是否需要自己在FPGA板子上設(shè)置一個(gè)定點(diǎn)數(shù)轉(zhuǎn)為浮點(diǎn)數(shù)的部分?
    發(fā)表于 08-11 09:13

    FPGA浮點(diǎn)數(shù)定點(diǎn)數(shù)表示法原理展示

    浮點(diǎn)數(shù)定點(diǎn)數(shù)表示法是我們?cè)谟?jì)算機(jī)中常用的表示方法 所以必須要弄懂原理,特別是在FPGA里面,由于FPGA不能像在MCU一樣直接用乘除法。 首先說(shuō)一下簡(jiǎn)單的
    發(fā)表于 11-18 02:15 ?9065次閱讀
    在<b class='flag-5'>FPGA</b>里<b class='flag-5'>浮點(diǎn)數(shù)</b>與<b class='flag-5'>定點(diǎn)數(shù)</b>表示法原理展示

    單片機(jī)浮點(diǎn)數(shù)運(yùn)算的源碼設(shè)計(jì)

    單片機(jī)執(zhí)行程序的過(guò)程,實(shí)際上就是執(zhí)行我們所編制程序的過(guò)程。即逐條指令的過(guò)程。本文詳細(xì)介紹了浮點(diǎn)數(shù)在單片機(jī)中的表示方式和匯編子程序,浮點(diǎn)數(shù)定點(diǎn)數(shù)加減法要困難,但是克服了定點(diǎn)數(shù)表示范圍小
    的頭像 發(fā)表于 03-07 15:19 ?1.1w次閱讀
    單片機(jī)<b class='flag-5'>浮點(diǎn)數(shù)</b><b class='flag-5'>運(yùn)算</b>的源碼設(shè)計(jì)

    FPGA浮點(diǎn)運(yùn)算定標(biāo)實(shí)現(xiàn)方法

    有些FPGA中是不能直接對(duì)浮點(diǎn)數(shù)進(jìn)行操作的,只能采用定點(diǎn)數(shù)進(jìn)行數(shù)值運(yùn)算。對(duì)于FPGA而言,參與數(shù)學(xué)運(yùn)算
    的頭像 發(fā)表于 08-12 09:53 ?5063次閱讀

    定點(diǎn)數(shù)浮點(diǎn)數(shù)在STM32單片機(jī)中使用傅里葉(FFT)變換的理解

    定點(diǎn)數(shù)浮點(diǎn)數(shù)的區(qū)別目的:理解定點(diǎn)數(shù)浮點(diǎn)數(shù)在傅里葉變換(FFT)的實(shí)際應(yīng)用中的選擇單片機(jī)中如果需要進(jìn)行一定的運(yùn)算(常見(jiàn)的傅里葉變換)時(shí),需
    發(fā)表于 12-24 19:22 ?16次下載
    <b class='flag-5'>定點(diǎn)數(shù)</b>和<b class='flag-5'>浮點(diǎn)數(shù)</b>在STM32單片機(jī)中使用傅里葉(FFT)變換的理解

    如何在FPGA中正確處理浮點(diǎn)數(shù)運(yùn)算

    使用插值算法實(shí)現(xiàn)圖像縮放是數(shù)字圖像處理算法中經(jīng)常遇到的問(wèn)題。我們經(jīng)常會(huì)將某種尺寸的圖像轉(zhuǎn)換為其他尺寸的圖像,如放大或者縮小圖像。由于在縮放的過(guò)程中會(huì)遇到浮點(diǎn)數(shù),如何在FPGA中正確的處理浮點(diǎn)數(shù)
    的頭像 發(fā)表于 03-18 11:03 ?5475次閱讀

    FPGA浮點(diǎn)數(shù)轉(zhuǎn)化為定點(diǎn)數(shù)方法

    FPGA在常規(guī)運(yùn)算時(shí)不能進(jìn)行浮點(diǎn)運(yùn)算,只能進(jìn)行定點(diǎn)整型運(yùn)算,在處理數(shù)據(jù)的小數(shù)乘加
    的頭像 發(fā)表于 10-13 16:23 ?5440次閱讀

    FPGA浮點(diǎn)數(shù)表示及計(jì)算機(jī)數(shù)值表示規(guī)則

    定點(diǎn)數(shù)硬件實(shí)現(xiàn)簡(jiǎn)單,但表示的范圍有限,且部分的小數(shù)運(yùn)算IP核只支持浮點(diǎn)數(shù)運(yùn)算,因此這里還需要提到浮點(diǎn)數(shù)的相關(guān)內(nèi)容。
    發(fā)表于 06-16 15:41 ?1693次閱讀
    <b class='flag-5'>FPGA</b><b class='flag-5'>浮點(diǎn)數(shù)</b>表示及計(jì)算機(jī)數(shù)值表示規(guī)則

    定點(diǎn)數(shù)浮點(diǎn)數(shù)的概念 浮點(diǎn)數(shù)二進(jìn)制序列與指數(shù)表達(dá)式之間的轉(zhuǎn)化

    的缺點(diǎn):由于小數(shù)點(diǎn)位置固定不變,定點(diǎn)數(shù)所表示的數(shù)的范圍非常有限,不能同時(shí)表達(dá)特別大或特別小的數(shù),所以才出現(xiàn)了浮點(diǎn)數(shù),以此來(lái)擴(kuò)充數(shù)的范圍,同時(shí)浮點(diǎn)數(shù)也廣泛應(yīng)用于精度要求高的場(chǎng)合。簡(jiǎn)單的理解浮點(diǎn)數(shù)
    的頭像 發(fā)表于 08-22 16:06 ?9080次閱讀
    <b class='flag-5'>定點(diǎn)數(shù)</b>和<b class='flag-5'>浮點(diǎn)數(shù)</b>的概念 <b class='flag-5'>浮點(diǎn)數(shù)</b>二進(jìn)制序列與指數(shù)表達(dá)式之間的轉(zhuǎn)化
    主站蜘蛛池模板: 午夜免费在线观看 | 奇米7777第四色 | 欧美色吧视频在线观看 | 啪啪啦资源站永久 | 日本在线视频一区二区 | 福利在线看 | 99久热只有精品视频免费观看17 | 国产成人啪精品午夜在线观看 | 日本特黄色大片 | 精品色 | 亚洲男人的天堂久久香蕉网 | 国产伦精品一区二区免费 | 四虎4hu永久免费国产精品 | 爱爱小视频免费 | 91大神在线精品网址 | 大看蕉a在线观看 | 分分操免费视频在线观看 | 手机看片精品国产福利盒子 | 在线观看日本免费不卡 | 美女免费视频一区二区三区 | 免费 的黄色 | 国产成人精品日本亚洲专 | 欧美日韩一区在线观看 | 人人射人人爽 | 天天怕夜夜怕狠狠怕 | 亚洲第一黄色网址 | 欧美色图亚洲 | 国产一级特黄aa大片爽爽 | 天天干在线影院 | 日女人免费视频 | 亚洲欧洲一二三区 | 久久在精品线影院精品国产 | 亚洲精品视频专区 | 加勒比色综合 | 中文字幕一区二区三区 精品 | 美国色综合 | 78m-78模成视频在线 | 午夜高清免费观看视频 | 精品视频在线观看视频免费视频 | 亚洲久优优色优在线播放 | 色婷婷一区 |