Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-9-2 20:23:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
想請問有設計過IEEE 754 浮點數 規則的程式的大大.....
. N# k5 s1 Q, k5 d  [! }3 |0 b: F$ {" P9 B$ l$ z7 P. [. k
規則小弟是看的懂,不過疑問處在於
3 o; n2 P. x; Y假設我設計一個簡單的浮點數加法器,輸入數值a跟b相加.2 k0 p$ Y! `) R6 h$ S
那麼,我的"a如果是十進制10.5"  "b是2.125"
+ d' T; d6 z; s+ d' Y3 G3 A! }4 ca跟b是要先正規化之後再行運算嗎?% }4 Q- U- Y' B' h8 d. D
這樣正規化之前,10.5要怎麼顯示成二進位?是固定位元顯示整數部份,6 @% \  c) I5 D! }$ c
另一部份固定位元顯示小數部份..ex: 10.5=>1010.1: N5 @7 D$ T2 {7 m7 [
這樣輸入a之後變成10101,程式內部再將a[4:1]斷定成整數a[0]斷定成浮點數,
% [" b- F# L% g" `( ~, Y5 O4 V. B+ ~這樣設計對嗎?( O: q6 t( A/ Z+ j  K' C; y
我是剛接觸的菜鳥..還請大大們指教提拔....如果有相關code可以參考感激不盡m(_ _)m
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
推薦
 樓主| 發表於 2009-10-18 14:03:42 | 只看該作者
謝謝大大們的幫助,目前我已經完成了部分的程式,現在又遇到一點問題,想提出來跟大大們討論一下...5 D7 T& L3 G+ Z5 S( n
想請問大大們~
+ @# C0 a% R$ R5 ~" @% X1 ?a= 41B20000  (16進制- ieee754格式)  十進制22.255 T" k2 t8 r' O0 F8 I- }
b=C2010000  (16進制- ieee754格式)   十進制-32.25! c2 L- M5 g" {! R
請問可以直接對ieee754格式的a跟b做四則運算嗎?
( ?1 h; o! a3 S/ T(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?
. F% N/ ~  a. i. O' D 4 M- T# C, \: `; E" c& a

+ z8 s1 x* ~( Q# N還是說一定要先做十進制的22.25+(-32.25)= -10 最後答案才用IEEE754表示?
, d8 W. e' i: m$ S: t: D-10的IEEE754表示=C1200000! y! i4 m/ t* Z9 @
/ I$ z% L9 E/ ^
C2580000與C1200000好像不太一樣.
+ y7 _7 P& }* c' Q還是說要怎麼逆運算才可以求出-10?
+ v+ v# }3 a* G/ J$ N大大曉得嗎@@?
回復 支持 1 反對 0

使用道具 舉報

2#
發表於 2009-9-4 17:18:51 | 只看該作者
我之前也是這樣子用~" X! O  a2 C  `3 F

. i( L' e3 C# ^6 E) @; K我覺得應該是ok的情況!
3#
 樓主| 發表於 2009-9-4 20:56:26 | 只看該作者
不過如果照這樣寫,感覺上小數點是固定的,不像浮點數的感覺耶....
4#
發表於 2009-9-8 20:48:56 | 只看該作者
您好
; t! B  _6 q- q! U, e+ f1.如果a,b兩值還沒正規化,則先將a,b正規化,% F, h$ v# O1 G8 X1 |! n+ _
2.將a,b尾數對齊
) ^% x" D$ N1 b3.尾數相加
! Q/ N* J1 P. r8 e4 {4.將結果正規化
# B+ a( n% y7 ^# G' d
& {  x0 J, b. `4 a( C, E4 d您參考看看
5#
 樓主| 發表於 2009-9-16 21:38:06 | 只看該作者
大大~我陷在卡在將輸入數值做正規化的動作,  i$ c9 u1 G& Z
假如輸入的a是10.5, 在程式裡面會變成10101串列輸入,假設我程式固定只有運算到小數第一位,$ F* _  J# K) |* U3 g& D: Y* E
這樣可以抓到1010.1並且將其正規化,但是如果我輸入數值是整數的00100,這樣他要怎麼判別小數點的位置@@?
, [& N3 y' ?; a; O他要怎麼判斷輸入的數值是不是浮點數?
6#
發表於 2009-9-17 08:51:20 | 只看該作者
您好) z2 S6 A6 H3 m
- E* x4 @8 s$ e6 q
  a,b兩數要做浮點相加,那麼a,b兩值就要為浮點格式,
- M) J! f( w$ ?0 B7 r$ F/ n' O你的問題不是卡在正規化,10.5=1010.1是定點小數,( |  ~4 V& ^/ \* v6 _7 d) ?
10101,00100都不是浮點格式,如何將之正規化,, o" v4 m6 P3 G* m# E. B+ z
不能拿兩個定點格式的值來做浮點運算,
7#
 樓主| 發表於 2009-9-17 21:27:31 | 只看該作者
大大~
0 o2 u: q0 n% k請問您說的浮點格式,是像IEEE 754格式這種嗎?....還是??" U& {: S# Q- ~2 [. H
! r0 e/ m! |+ i& @
是怎樣的浮點數格式輸入到a才可以被正規化呢^^"~不好意思喔~新手問了一些蠢問題@@
8#
發表於 2009-9-18 09:04:41 | 只看該作者
您好
  Z; c! j, @4 Z$ N8 @' P  IEEE 754是浮點格式的一種,當然還有其他的,
1 @" ?4 q0 Z, }9 a0 X3 p! y 看你要用哪一種嚕,4 z7 t9 v9 O% w* r/ i0 @& I3 H
. Q: `/ D/ ^* h7 L6 D5 _& a" n
如果你用IEEE 754,那麼輸入a,b值就要符合 IEEE 754格式
9#
 樓主| 發表於 2009-9-18 22:06:54 | 只看該作者
IEEE 754的浮點數格式 不是已經正規化了嗎?...
% s9 P" m% `# y5 G) f2 @7 ^8 X( O. W1 \$ Q2 d3 ~; o
沒辦法寫CODE讓輸入的串列資料,將十進致10.5二進致為1010.1輸入後再由程式正規化嗎?
10#
發表於 2009-9-20 11:40:30 | 只看該作者
您好
4 C( j1 n5 O, g4 `( b& o4 p: h2 G1 _* x; Y" x3 q8 z7 |9 b' Y
a,b不是已知的值嗎?為甚麼不直接用浮點格式來表示,
7 e9 ~2 w0 p" V, ]+ J  g5 Z2 y而要用定點再轉一次呢?
11#
 樓主| 發表於 2009-9-20 21:17:28 | 只看該作者
大大~1 y2 F1 `% q% p* t& p' ?
/ g" A9 g% u% I8 X7 D
你的意思是說 假設我程式可以算到小數第3位,輸入的a 10.5 就是變1010.1007 ~) B" _$ N% I- y; R6 J8 {" m3 i
如果是整數1,則變成0001.000  這樣來做正規化?5 j8 z; ~$ Y* E  z- ~
還是說Quartus II 有可以判定輸入式浮點數的語法嗎?5 d0 x! b7 _% M% o7 u' v( H

6 Z" V( g+ k" m/ Q; a如果沒有的話也得要把輸入的數值做正規化將其輸出,否則也不會有大大說的浮點數格式的輸入吧@@?& P3 W* M$ d8 q4 u8 [1 v
不知道我這樣說有沒有錯...^^"
12#
發表於 2009-9-21 20:22:38 | 只看該作者
您好& C' j" Q7 t3 S' _, d

9 E$ d7 `1 ]  R" J( g5 o我的意思是你要自己算,將10.5或1先自己轉好成IEEE 754格式,+ F$ m; y5 y8 u! |9 _
然後在輸入到a,b

評分

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

查看全部評分

13#
 樓主| 發表於 2009-9-21 22:45:15 | 只看該作者
大大~+ _2 I% M( _, v$ H
我知道你的意思了,不過我目前是需要把非IEEE 754格式的浮點數轉成IEEE 754格式.....0 d; ?, {& Y. Q
這樣是不可能實現的嗎?^^"
14#
發表於 2009-9-22 22:21:46 | 只看該作者
可以實現' A5 k& C" B. M, X6 J2 R: {
請把了解規則 用電路可把非IEEE 754格式的浮點數(Fixed Point)轉成IEEE 754格式(Float Point)
5 I' \- j* R3 y0 d5 l然後就可以當成浮點數加法器的輸入6 K0 y. U; E5 O. r0 k* i* s

/ F8 B; Y4 G0 k0 ~3 ]6 }& O# c[ 本帖最後由 masonchung 於 2009-9-22 10:24 PM 編輯 ]
15#
 樓主| 發表於 2009-9-23 20:05:40 | 只看該作者
masonchung 大大~
1 u4 S$ C$ s/ @4 S* ?( D
4 p; {# d9 ~% ?) I, }; |如果要這樣做的話,我的A如果是十進制"2.5",並且可運算到小數點後第5位,二進制的輸入訊號是不是一定要是10.10000
9 X/ ^9 q1 z* B, p1 Y% d) b- d" M4 G這樣有錯嗎?; E1 [" @) m. U9 C( L% Z% E
另外有一點有點疑問,這種作法是不是只能做無號數的浮點數運算?
) b- l/ w7 q2 g3 L" i) l' E0 K-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
4 w! B! m; X& g- o! x
3 i& X* j/ r' kieee754 的 二進位浮點數格式在此 http://zh.wikipedia.org/wiki/IEEE_754; p1 S: k: [. f7 ~- ~% P! g

$ @' v3 D: K, X- U$ V這兩種格式轉換可用電路實現 # N; K- S! G, o& [

, x# t, C* j# M, l" ]/ v然後再輸入到浮點數加法器運算
18#
發表於 2009-10-19 10:55:44 | 只看該作者
最近剛好有碰到類似的問題 , 感謝說明
19#
發表於 2009-10-19 12:13:41 | 只看該作者
請問可以直接對ieee754格式的a跟b做四則運算嗎?
/ T! |! s5 _. v5 j7 s+ _9 s(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?, l; C8 t9 \1 j" m2 T
不對
4 a6 ~; V2 K; J" g. `( L只有浮點數加法器和乘法器9 P  r4 D- U# j' I3 y. ~9 F8 L
所以負數要用二補數6 n# F3 u5 g, \" d: A9 w( j
C2010000=1_10000100_0000001_0000_0000_0000_0000
8 C& Q& f) Z4 q" K1 e! r, [二補數=1101_1111.1100" ~, m& X! u0 a- {; Y, d) @) O0 ?
22.25=0001_0110.0100
7 }( R4 d5 s5 |5 O- ]9 h兩者相加即為答案-10, 透過浮點數加法器輸出為C1200000; L6 k0 H: ~7 q

: F9 p  R/ S4 H8 _0 @8 o* y& Y$ n' b1 T[ 本帖最後由 masonchung 於 2009-11-2 11:12 AM 編輯 ]
20#
發表於 2009-10-19 14:05:59 | 只看該作者
此二補數 1101_1111.1100 表示成IEEE754格式為42010000
( c& F) T% I2 p' X$ Q, k所以真正的浮點加法器輸入的MSB只要反相 就變成二補數
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-6-7 04:55 AM , Processed in 0.174022 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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