久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3342|回復(fù): 15
打印 上一主題 下一主題
收起左側(cè)

PIC33單片機乘法器小數(shù)模式的如何計算的疑問?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:959891 發(fā)表于 2021-10-19 15:20 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 yermsir 于 2021-10-19 15:37 編輯

PIC33單片機乘法器小數(shù)模式,是小數(shù)轉(zhuǎn)換為Q15的形式,然后進行計算。轉(zhuǎn)換成Q15的形式是單片機自己轉(zhuǎn)換的,還是程序員轉(zhuǎn)換完成然后賦值給寄存器的。
比如,將W4平方并將結(jié)果加到ACCB中的指令語句:MAC W4*W4,B。 比如我要算0.5的平方,然后加到累加器B中,W4中直接賦值0.5這種小數(shù),還是要賦值32768。
芯片說明資料有兩個例子,請幫忙看看累加器中B的結(jié)果是如何計算出來的?希望能夠給出詳細點的計算過程。

捕獲.JPG (61.94 KB, 下載次數(shù): 83)

捕獲.JPG
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:401564 發(fā)表于 2021-10-20 15:54 | 只看該作者
這個是硬件乘法器,計算過程是硬件執(zhí)行的,不是軟件計算的
你只要知道,你要進行什么運算,通過控制寄存器來選擇運算選項就可以了
再看一下用不用讀取輸出,有的編譯器是直接就是浮點型結(jié)果,有的是則是保存在某個寄存器,需要讀取的
這個專業(yè)性很強的,沒有真正用過的人也只能是給個指導(dǎo)性知識而已,真正的,還是要你自己去看的
回復(fù)

使用道具 舉報

板凳
ID:883242 發(fā)表于 2021-10-20 17:07 | 只看該作者
Y_G_G 發(fā)表于 2021-10-20 15:54
這個是硬件乘法器,計算過程是硬件執(zhí)行的,不是軟件計算的
你只要知道,你要進行什么運算,通過控制寄存器來選 ...

Q15是定點(fixed point)數(shù),你只見過float point,鑒定完畢。
回復(fù)

使用道具 舉報

地板
ID:401564 發(fā)表于 2021-10-20 18:15 | 只看該作者
Hephaestus 發(fā)表于 2021-10-20 17:07
Q15是定點(fixed point)數(shù),你只見過float point,鑒定完畢。

我見過什么數(shù)跟樓主的"PIC33單片機乘法器小數(shù)模式"主題有什么關(guān)系嗎?
回復(fù)

使用道具 舉報

5#
ID:959891 發(fā)表于 2021-10-20 18:37 | 只看該作者
Y_G_G 發(fā)表于 2021-10-20 15:54
這個是硬件乘法器,計算過程是硬件執(zhí)行的,不是軟件計算的
你只要知道,你要進行什么運算,通過控制寄存器來選 ...

我還是想要知道附圖中,例子計算的結(jié)果是怎么來的,這樣我心里會對小數(shù)的計算才有把握。
回復(fù)

使用道具 舉報

6#
ID:401564 發(fā)表于 2021-10-20 20:08 | 只看該作者
yermsir 發(fā)表于 2021-10-20 18:37
我還是想要知道附圖中,例子計算的結(jié)果是怎么來的,這樣我心里會對小數(shù)的計算才有把握。

沒有用過16位單片機,不知道
我只用過8位的,一般都是編譯器處理的,不需要去了解匯編方面的運算,在C語言中有乘除運算,就會對應(yīng)的生成乘除法匯編指令,單片機內(nèi)部自動用乘法器運算
至于這個數(shù)怎么來的,不知道
我以前只用過PIC的8位機,而且是匯編,匯編沒有小數(shù)正負數(shù)的說法
回復(fù)

使用道具 舉報

7#
ID:883242 發(fā)表于 2021-10-20 20:50 | 只看該作者
好吧,我把數(shù)給你算出來了,不要聽那個啥都不懂的呱噪。
76AE * 76AE * 2 + FE98344500 = FF063E0188

這里面最關(guān)鍵的是莫名其妙出現(xiàn)的這個2,你的原數(shù)是16位Q15格式,如果直接按整數(shù)平方,得到一個32位的整數(shù)結(jié)果,如果把它看成是Q定點格式,那么將是Q30格式——平方之前小數(shù)點在第15位前,平方后小數(shù)點在第30位前,而是Q30格式定點數(shù)是沒啥用的,要轉(zhuǎn)成更通用的Q31格式才好用,畢竟把Q51的低16位扔掉就回到了Q15格式,太方便了。

從表達的數(shù)字上講可以這么分析
76AE(Q15)= 0.927185
76AE(Q15)^2 = 3704DE44(Q31) = 0.429836     ——這個結(jié)果顯然是錯的,差了2倍。
76AE(Q15)^2 *2 = 6E09BC88(Q31) = 0.859672

6E09BC88 + FE98344500 = FF063E0188

完美的解釋了你的例2!!!
回復(fù)

使用道具 舉報

8#
ID:401564 發(fā)表于 2021-10-20 22:23 | 只看該作者
Hephaestus 發(fā)表于 2021-10-20 20:50
好吧,我把數(shù)給你算出來了,不要聽那個啥都不懂的呱噪。
76AE * 76AE * 2 + FE98344500 = FF063E0188

我是不懂這個運算,因為我之前一直是用匯編的,沒有定點數(shù)這個概念,所以我不會這個
你既然知道,又是在這個論壇逛的,就沒有必要數(shù)落我,我一沒得罪你,二我也說了并不會這個
很顯然,我來這的目的和你是不一樣的
我一個是打發(fā)時間,二個是相互學(xué)習(xí)
而你,我不知道,當(dāng)然,也不想知道
回復(fù)

使用道具 舉報

9#
ID:883242 發(fā)表于 2021-10-20 22:40 | 只看該作者
Y_G_G 發(fā)表于 2021-10-20 22:23
我是不懂這個運算,因為我之前一直是用匯編的,沒有定點數(shù)這個概念,所以我不會這個
你既然知道,又是在這個 ...

我負責(zé)的第一個電子項目是一個壓力計,核心算法用最小二乘法擬合標定數(shù)據(jù),中間就是用Q31定點數(shù)運算,寫了3000行8051匯編。

定點數(shù)跟匯編沒有你死我活的關(guān)系,相反有很多位操作,用匯編實現(xiàn)更方便,關(guān)鍵是你要理解定點數(shù)。如果你什么都不懂,就閉嘴,隨便置喙只能被人笑掉大牙。
回復(fù)

使用道具 舉報

10#
ID:401564 發(fā)表于 2021-10-21 09:05 | 只看該作者
Hephaestus 發(fā)表于 2021-10-20 22:40
我負責(zé)的第一個電子項目是一個壓力計,核心算法用最小二乘法擬合標定數(shù)據(jù),中間就是用Q31定點數(shù)運算,寫 ...

好的,我知道了
回復(fù)

使用道具 舉報

11#
ID:959891 發(fā)表于 2021-10-21 10:54 | 只看該作者
Hephaestus 發(fā)表于 2021-10-20 22:40
我負責(zé)的第一個電子項目是一個壓力計,核心算法用最小二乘法擬合標定數(shù)據(jù),中間就是用Q31定點數(shù)運算,寫 ...

謝謝您的回復(fù),讓我了解了Q15小數(shù)的運算規(guī)則。我用您的方法來計算例1,卻發(fā)現(xiàn)結(jié)果和例子對不上。
計算過程如下:
A022(Q15)=-0.7489624
A022(Q15)^2  = 642A8484
A022(Q15)^2 *2 = C8550908(Q31) =1.56509507
而真正的結(jié)果為:(-0.7489624)*(-0.7489624)=-0.56094467
可見我的計算是錯誤的,例1和例2的區(qū)別就是負數(shù)和正數(shù),網(wǎng)上查了一些資料,但是都是間接的說明,自己還是悟不透,您能不能進一步解釋一下例1是怎么計算出來的?
回復(fù)

使用道具 舉報

12#
ID:883242 發(fā)表于 2021-10-21 12:25 | 只看該作者
yermsir 發(fā)表于 2021-10-21 10:54
謝謝您的回復(fù),讓我了解了Q15小數(shù)的運算規(guī)則。我用您的方法來計算例1,卻發(fā)現(xiàn)結(jié)果和例子對不上。
計算過 ...

A022是負數(shù)啊!對應(yīng)的絕對值相同的正數(shù)是5FDE,他的平方就是47CD0908,不就是你例1里面你用藍筆勾出來的20000000+47CD0908=67CD0908嗎?
回復(fù)

使用道具 舉報

13#
ID:959891 發(fā)表于 2021-10-21 14:37 | 只看該作者
Hephaestus 發(fā)表于 2021-10-21 12:25
A022是負數(shù)啊!對應(yīng)的絕對值相同的正數(shù)是5FDE,他的平方就是47CD0908,不就是你例1里面你用藍筆勾出來的2 ...

https://blog.csdn.net/yanxiaopan/article/details/76853040
我在這個網(wǎng)站上看到Q15格式的數(shù),直接把兩個負數(shù)相乘,右移15位就可以得到結(jié)果。比如網(wǎng)址中舉例:-0.5*-0.5。
‘’對于Q15,例如計算-0.5×-0.5,0.5表示為二進制為0100000000000000,取反加1后為1100000000000000,則-0.5×-0.5的二進制相乘結(jié)果為10010000000000000000000000000000,右移15位,得到10010000000000000‘’

難道Q15的負數(shù),并不是兩個負數(shù)直接相乘?而是先轉(zhuǎn)化為正數(shù),然后再相乘?
回復(fù)

使用道具 舉報

14#
ID:883242 發(fā)表于 2021-10-21 15:04 | 只看該作者
yermsir 發(fā)表于 2021-10-21 14:37
https://blog.csdn.net/yanxiaopan/article/details/76853040
我在這個網(wǎng)站上看到Q15格式的數(shù),直接把兩 ...

瞎扯淡,那個網(wǎng)頁舉得栗子就是特殊情況,-0.5和+0.5只差一個符號位所以可以得到正確答案,你算個-0.25試試?去掉符號位-0.25不就變成0.75了???

說了半天你還是沒弄懂Q15是什么,以16位Q15為例:
0~7fff表示0~0.99999
ffff~8000表示-0.00001~-1.0
回復(fù)

使用道具 舉報

15#
ID:959891 發(fā)表于 2021-10-21 15:19 | 只看該作者
Hephaestus 發(fā)表于 2021-10-21 15:04
瞎扯淡,那個網(wǎng)頁舉得栗子就是特殊情況,-0.5和+0.5只差一個符號位所以可以得到正確答案,你算個-0.25試 ...

您批評的是,網(wǎng)頁的確是舉例的特殊情況,我被誤導(dǎo)了,謝謝您的指教,我明白了。
回復(fù)

使用道具 舉報

16#
ID:959891 發(fā)表于 2021-10-21 15:31 | 只看該作者
本帖問題已經(jīng)解決,感謝論壇大神的幫助。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品伦理一区二区三区 | 久久久久亚洲 | 国产精品国产自产拍高清 | 成人亚洲性情网站www在线观看 | 亚洲一区久久 | 国产精品视频一区二区三区 | 免费视频一区 | 在线成人 | 日韩免费在线视频 | 亚洲国产成人精品女人久久久 | 午夜精品久久久久久久久久久久久 | 超碰天天| 欧美成人激情视频 | 久久人人爽人人爽人人片av免费 | 在线欧美视频 | 亚洲男人天堂2024 | 久久av一区 | 人人干人人草 | 日韩超碰在线 | 亚洲日韩中文字幕一区 | 一区二区三区高清在线观看 | 国产精品亚洲一区二区三区在线观看 | 精品久久久久久久久久久 | 一区二区三区av | 精品久久久久久久久久久久久久久久久 | 亚洲网视频 | 野狼在线社区2017入口 | 国产综合欧美 | 久久精品播放 | 国精日本亚洲欧州国产中文久久 | 日韩在线欧美 | 精品国产欧美一区二区 | 中文字幕亚洲视频 | 亚洲性在线| 久久小视频| 国产精品视频专区 | 亚洲国产一区二区三区 | 精品视频久久久 | 成人免费久久 | 日本久久久久久 | 国产精品成人一区二区三区 |