Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 37234|回復: 29
打印 上一主題 下一主題

[問題求助] verilog 浮點數運算疑問@@

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-9-2 20:23:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
想請問有設計過IEEE 754 浮點數 規則的程式的大大.....+ r  F% x, _6 h( O

. F5 ~7 W4 ?( K; V' s" m- {規則小弟是看的懂,不過疑問處在於
+ V1 H- B: s8 b3 x0 Z/ w# ^7 ^. R假設我設計一個簡單的浮點數加法器,輸入數值a跟b相加.& V2 Z. E# J" T; A
那麼,我的"a如果是十進制10.5"  "b是2.125"* t% h1 ~. g4 b% a, K: n! |# W
a跟b是要先正規化之後再行運算嗎?
7 J5 M, M9 v! B這樣正規化之前,10.5要怎麼顯示成二進位?是固定位元顯示整數部份,5 b+ A1 M3 U' Y8 g3 l) O8 A+ a
另一部份固定位元顯示小數部份..ex: 10.5=>1010.1
2 c6 s/ _, w. U1 @3 \這樣輸入a之後變成10101,程式內部再將a[4:1]斷定成整數a[0]斷定成浮點數,
" W1 }4 H4 N8 S這樣設計對嗎?- r5 u- b: ^& k% \* c- C: e1 G
我是剛接觸的菜鳥..還請大大們指教提拔....如果有相關code可以參考感激不盡m(_ _)m
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
推薦
 樓主| 發表於 2009-10-18 14:03:42 | 只看該作者
謝謝大大們的幫助,目前我已經完成了部分的程式,現在又遇到一點問題,想提出來跟大大們討論一下...
# w& K% v' }/ Y! g想請問大大們~; m* O  D& H/ s4 }, I
a= 41B20000  (16進制- ieee754格式)  十進制22.25
! R1 A! A5 T0 a7 R& jb=C2010000  (16進制- ieee754格式)   十進制-32.25/ c" `- s; }# P* ~
請問可以直接對ieee754格式的a跟b做四則運算嗎?
5 Q9 z& c* m' Z5 p9 [(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?
, i/ _$ \6 ?4 N  z1 ` 9 T+ H/ q% R8 n. V, \+ W- P. ^
( s0 `) t" e. Q- O+ s( O( e' z( H# n
還是說一定要先做十進制的22.25+(-32.25)= -10 最後答案才用IEEE754表示?
% p' s3 ]5 N3 j. [8 b-10的IEEE754表示=C1200000
  J" v4 R4 z( x
# l3 l3 z1 \6 s  o& qC2580000與C1200000好像不太一樣.
7 h+ z3 B6 k- q& }( W還是說要怎麼逆運算才可以求出-10?
- z; x1 S5 _3 v, v: G  E, J) a1 B大大曉得嗎@@?
回復 支持 1 反對 0

使用道具 舉報

2#
發表於 2009-9-4 17:18:51 | 只看該作者
我之前也是這樣子用~: M) L  z, g9 Y" p% U$ x
. x4 e$ j2 |) m5 L+ ]3 X
我覺得應該是ok的情況!
3#
 樓主| 發表於 2009-9-4 20:56:26 | 只看該作者
不過如果照這樣寫,感覺上小數點是固定的,不像浮點數的感覺耶....
4#
發表於 2009-9-8 20:48:56 | 只看該作者
您好3 H6 T; \+ n. Z* C
1.如果a,b兩值還沒正規化,則先將a,b正規化,
* \2 a' f, x8 c- ~1 d3 F9 R2.將a,b尾數對齊! {1 P6 x) k& R/ {/ o
3.尾數相加; C0 o- W$ d( j# I! n3 x8 }- a5 C3 [
4.將結果正規化% v7 v2 u/ t% K+ g% G+ a
) i+ Y% r7 g3 H. F4 b
您參考看看
5#
 樓主| 發表於 2009-9-16 21:38:06 | 只看該作者
大大~我陷在卡在將輸入數值做正規化的動作,
! D( ~! ^, x0 D) b1 B. f2 d  ]9 f/ T假如輸入的a是10.5, 在程式裡面會變成10101串列輸入,假設我程式固定只有運算到小數第一位,
, q! U& ?& k+ A7 f這樣可以抓到1010.1並且將其正規化,但是如果我輸入數值是整數的00100,這樣他要怎麼判別小數點的位置@@?
+ ^8 A/ |2 e1 t* G4 k1 d他要怎麼判斷輸入的數值是不是浮點數?
6#
發表於 2009-9-17 08:51:20 | 只看該作者
您好
! d; M- C1 {+ z3 N( X" h2 s' ^7 M9 t7 M7 M9 |+ M. N* M+ D6 M3 b
  a,b兩數要做浮點相加,那麼a,b兩值就要為浮點格式,
* H; k6 q5 ]" T" A& g1 R你的問題不是卡在正規化,10.5=1010.1是定點小數,
; a7 b0 i) J' Z: F( K' s5 n- D10101,00100都不是浮點格式,如何將之正規化,
3 S7 U% i2 u" ~# H2 g不能拿兩個定點格式的值來做浮點運算,
7#
 樓主| 發表於 2009-9-17 21:27:31 | 只看該作者
大大~
4 x, [9 g% a" v2 \5 \8 E3 K請問您說的浮點格式,是像IEEE 754格式這種嗎?....還是??
, t4 H8 Q: T# F; N3 q' Z8 s
, S& K$ z& L# s7 u; i; S2 i是怎樣的浮點數格式輸入到a才可以被正規化呢^^"~不好意思喔~新手問了一些蠢問題@@
8#
發表於 2009-9-18 09:04:41 | 只看該作者
您好. p: a2 t( a4 D: R  @0 [/ ?& |
  IEEE 754是浮點格式的一種,當然還有其他的,5 g+ v7 _  p' X( r
看你要用哪一種嚕,. l4 @. |: e  v4 E

! C  y, ^$ {- Q- A, ^9 l- o3 l0 C# B如果你用IEEE 754,那麼輸入a,b值就要符合 IEEE 754格式
9#
 樓主| 發表於 2009-9-18 22:06:54 | 只看該作者
IEEE 754的浮點數格式 不是已經正規化了嗎?...
& v7 Y$ i8 Z/ r) {
( S' B4 G# M. u2 T) r* p, F8 O沒辦法寫CODE讓輸入的串列資料,將十進致10.5二進致為1010.1輸入後再由程式正規化嗎?
10#
發表於 2009-9-20 11:40:30 | 只看該作者
您好
& a. P/ O/ |2 o: s- f# }8 t3 E* x0 |4 c6 F
a,b不是已知的值嗎?為甚麼不直接用浮點格式來表示,
6 {" w) P2 B+ A2 @" [而要用定點再轉一次呢?
11#
 樓主| 發表於 2009-9-20 21:17:28 | 只看該作者
大大~
+ \8 U8 y( |( n- L
' x, P- A4 ~0 b4 J你的意思是說 假設我程式可以算到小數第3位,輸入的a 10.5 就是變1010.100. m. {0 o$ {) u6 D6 B- _
如果是整數1,則變成0001.000  這樣來做正規化?
. l) |! M, R/ c. F1 e還是說Quartus II 有可以判定輸入式浮點數的語法嗎?
) o8 t- f/ A1 Q% x, T
" j0 {" s( `  T" K0 ?如果沒有的話也得要把輸入的數值做正規化將其輸出,否則也不會有大大說的浮點數格式的輸入吧@@?+ @  }( Y" T$ G. _( }6 v$ @
不知道我這樣說有沒有錯...^^"
12#
發表於 2009-9-21 20:22:38 | 只看該作者
您好' ^- b6 k- j* S* [6 y* D! W4 I5 i" s
# X8 `0 o: B% V: h. h2 O2 b
我的意思是你要自己算,將10.5或1先自己轉好成IEEE 754格式,, s3 K3 N% [6 g9 z  H! v; D
然後在輸入到a,b

評分

參與人數 1 +5 收起 理由
呆頭鴨 + 5 謝謝大大一直幫我解答...

查看全部評分

13#
 樓主| 發表於 2009-9-21 22:45:15 | 只看該作者
大大~  D* R/ D3 a' f. y
我知道你的意思了,不過我目前是需要把非IEEE 754格式的浮點數轉成IEEE 754格式....., Z, M+ E8 d( K& Q
這樣是不可能實現的嗎?^^"
14#
發表於 2009-9-22 22:21:46 | 只看該作者
可以實現' a& N5 Z" Q, s/ \. }' {  e0 v
請把了解規則 用電路可把非IEEE 754格式的浮點數(Fixed Point)轉成IEEE 754格式(Float Point)
8 l8 y. D1 Q: @然後就可以當成浮點數加法器的輸入- W4 r$ z: S3 V, ?* m" k1 _
( w  e, ?' g3 d* x
[ 本帖最後由 masonchung 於 2009-9-22 10:24 PM 編輯 ]
15#
 樓主| 發表於 2009-9-23 20:05:40 | 只看該作者
masonchung 大大~
0 k0 x4 _& t- }1 a. A( e
, l! |/ v  M4 i! C9 j* F6 L如果要這樣做的話,我的A如果是十進制"2.5",並且可運算到小數點後第5位,二進制的輸入訊號是不是一定要是10.10000
  M/ h9 w& I: W1 f7 \8 m. F9 S7 k這樣有錯嗎?
5 E! v3 A( Q' L# G0 |  @; ]另外有一點有點疑問,這種作法是不是只能做無號數的浮點數運算?; g+ X4 N2 P) D4 _8 f
-2.5的話,轉成二進制輸入到A會變什麼? 110.10000這樣?
16#
發表於 2009-9-30 09:04:45 | 只看該作者
你說的二進制是 二補數的表示法 http://zh.wikipedia.org/zh-tw/%E4%BA%8C%E8%A3%9C%E6%95%B8$ }9 e- S, ~5 H% F, L: R' _

6 U, R' S* t2 F9 b7 [ieee754 的 二進位浮點數格式在此 http://zh.wikipedia.org/wiki/IEEE_754
. z$ W" h2 M! B" z$ x3 B( M& \' l1 `: O
這兩種格式轉換可用電路實現 4 ?$ P9 K2 |# ~/ }
+ r2 i! x0 `7 {
然後再輸入到浮點數加法器運算
18#
發表於 2009-10-19 10:55:44 | 只看該作者
最近剛好有碰到類似的問題 , 感謝說明
19#
發表於 2009-10-19 12:13:41 | 只看該作者
請問可以直接對ieee754格式的a跟b做四則運算嗎? ) D' e+ S4 F: c/ O9 m
(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?
; b) O2 b! ^! c% v# x: g, h) _4 ~不對) [2 v& {3 ]* W" f& q6 @: g, ~; q
只有浮點數加法器和乘法器4 K/ t5 d! S7 Z3 b% \5 J+ {2 x
所以負數要用二補數, \2 W& |) F  W( V# J$ n) L$ x/ L
C2010000=1_10000100_0000001_0000_0000_0000_00008 ?" h$ S. t3 g. Z1 A& ]8 O$ h
二補數=1101_1111.11002 v0 v8 V( @' F) i5 r9 L
22.25=0001_0110.0100
2 V% t* W1 S) W/ Q兩者相加即為答案-10, 透過浮點數加法器輸出為C1200000
. g# O3 h. h$ Y/ b
! C5 d$ W" Z5 N0 J& p7 q& D% o[ 本帖最後由 masonchung 於 2009-11-2 11:12 AM 編輯 ]
20#
發表於 2009-10-19 14:05:59 | 只看該作者
此二補數 1101_1111.1100 表示成IEEE754格式為42010000
$ i! m+ o* D. R, Q( V  [9 u( K6 F/ M  c所以真正的浮點加法器輸入的MSB只要反相 就變成二補數
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

首頁|手機版|Chip123 科技應用創新平台 |新契機國際商機整合股份有限公司

GMT+8, 2024-5-17 12:01 PM , Processed in 0.135517 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表