Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-9-2 20:23:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
想請問有設計過IEEE 754 浮點數 規則的程式的大大.....
, B( g9 S. ?" b0 [  g2 t
! G8 O& ~6 h6 N( N% Q規則小弟是看的懂,不過疑問處在於" D3 g( X: e1 d/ O; j3 M
假設我設計一個簡單的浮點數加法器,輸入數值a跟b相加.0 C7 z* d+ M1 b( \' J2 X2 g& [
那麼,我的"a如果是十進制10.5"  "b是2.125"
+ R5 l" T6 S  b2 f, O1 ia跟b是要先正規化之後再行運算嗎?
5 m  _6 q  Z! g  j4 i1 A這樣正規化之前,10.5要怎麼顯示成二進位?是固定位元顯示整數部份,
& w& z: B: n, N* E/ i  ?/ ?5 o9 ~另一部份固定位元顯示小數部份..ex: 10.5=>1010.1$ L  t  _+ }! }& S- f# `
這樣輸入a之後變成10101,程式內部再將a[4:1]斷定成整數a[0]斷定成浮點數,/ B( V9 V. P6 H: r5 Y
這樣設計對嗎?
3 T- j' y& j( y, \8 Z! ?* i' M0 y我是剛接觸的菜鳥..還請大大們指教提拔....如果有相關code可以參考感激不盡m(_ _)m
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
推薦
 樓主| 發表於 2009-10-18 14:03:42 | 只看該作者
謝謝大大們的幫助,目前我已經完成了部分的程式,現在又遇到一點問題,想提出來跟大大們討論一下...
& o+ m& v; U- P  g  [) }+ j( m/ J0 R想請問大大們~( G( K3 {, h# o$ S9 {' D
a= 41B20000  (16進制- ieee754格式)  十進制22.25& U1 @' h, A( v& H& M2 T/ @1 [
b=C2010000  (16進制- ieee754格式)   十進制-32.25
7 @1 L* U# [/ N/ ?. P5 p- F! m, }; a請問可以直接對ieee754格式的a跟b做四則運算嗎?
! _( X" ~3 H: {8 S, T& C* V(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?
9 ?1 l7 m  x1 ~1 M$ _
* m2 s2 ?* G# E! Q
; I9 l/ O1 S7 c, H5 D7 V8 I還是說一定要先做十進制的22.25+(-32.25)= -10 最後答案才用IEEE754表示?
3 ?/ A6 v" G9 q+ N1 n-10的IEEE754表示=C12000002 }/ H/ q. L$ m" K0 b7 }/ U0 o9 v
/ E- S% o; `" o
C2580000與C1200000好像不太一樣.5 b' d# l3 p$ V4 w9 F* X
還是說要怎麼逆運算才可以求出-10?& E& c* B/ A- C* m2 x8 w& r' k- W
大大曉得嗎@@?
回復 支持 1 反對 0

使用道具 舉報

2#
發表於 2009-9-4 17:18:51 | 只看該作者
我之前也是這樣子用~4 N7 Q* x$ J) v
, w( Z4 h, r3 |
我覺得應該是ok的情況!
3#
 樓主| 發表於 2009-9-4 20:56:26 | 只看該作者
不過如果照這樣寫,感覺上小數點是固定的,不像浮點數的感覺耶....
4#
發表於 2009-9-8 20:48:56 | 只看該作者
您好5 R. ?1 g3 x, m' ~: T4 E( u, z8 D
1.如果a,b兩值還沒正規化,則先將a,b正規化,  Q6 f( G$ I' u2 {6 C/ a
2.將a,b尾數對齊  l" I7 y  s% a# [* l9 [
3.尾數相加
6 y/ B) J3 L1 M' `6 I$ \4.將結果正規化
6 ?: L# {) S; k8 I) E
- m0 w' j$ h# c- g# O您參考看看
5#
 樓主| 發表於 2009-9-16 21:38:06 | 只看該作者
大大~我陷在卡在將輸入數值做正規化的動作,
3 Z2 X( C9 ~, ]( x1 K7 ^假如輸入的a是10.5, 在程式裡面會變成10101串列輸入,假設我程式固定只有運算到小數第一位,
, I1 D6 x! W- U# p. p+ {這樣可以抓到1010.1並且將其正規化,但是如果我輸入數值是整數的00100,這樣他要怎麼判別小數點的位置@@?
+ o+ y- J/ A7 p2 c) w1 ~% W他要怎麼判斷輸入的數值是不是浮點數?
6#
發表於 2009-9-17 08:51:20 | 只看該作者
您好8 b2 E: {! v! _2 c9 T7 P% E
& n  J) Z6 _& ]: r" K
  a,b兩數要做浮點相加,那麼a,b兩值就要為浮點格式,8 O! m' b! w7 B! w
你的問題不是卡在正規化,10.5=1010.1是定點小數,
# L5 }1 c$ @4 }4 i! s' q10101,00100都不是浮點格式,如何將之正規化,  K: ]6 `! L" u1 h( O" `
不能拿兩個定點格式的值來做浮點運算,
7#
 樓主| 發表於 2009-9-17 21:27:31 | 只看該作者
大大~
8 U; U$ [0 |: m+ t. p8 l' X請問您說的浮點格式,是像IEEE 754格式這種嗎?....還是??
6 C; E/ E7 B7 @, C
2 I$ Y, j7 g& |. s8 P$ p; v+ l是怎樣的浮點數格式輸入到a才可以被正規化呢^^"~不好意思喔~新手問了一些蠢問題@@
8#
發表於 2009-9-18 09:04:41 | 只看該作者
您好
7 Y3 R* W4 ~; _  IEEE 754是浮點格式的一種,當然還有其他的,
9 V1 f# _1 M! Q# a* }  L! X/ q 看你要用哪一種嚕,
4 M/ I0 n) M3 `' b5 b' R5 U: }. w+ s# }. V
如果你用IEEE 754,那麼輸入a,b值就要符合 IEEE 754格式
9#
 樓主| 發表於 2009-9-18 22:06:54 | 只看該作者
IEEE 754的浮點數格式 不是已經正規化了嗎?...9 u* Z1 j7 z3 a0 b5 r/ G) ?
+ _: R2 Q( a0 U
沒辦法寫CODE讓輸入的串列資料,將十進致10.5二進致為1010.1輸入後再由程式正規化嗎?
10#
發表於 2009-9-20 11:40:30 | 只看該作者
您好
% F. Z! l. x# e' j
3 f& Z0 Q& B  H a,b不是已知的值嗎?為甚麼不直接用浮點格式來表示,, W( o* L, W' z$ ?  N  g- O+ a
而要用定點再轉一次呢?
11#
 樓主| 發表於 2009-9-20 21:17:28 | 只看該作者
大大~
' i$ M8 k3 U& ?0 {- t) G
- k; j5 q2 W* R3 N+ N你的意思是說 假設我程式可以算到小數第3位,輸入的a 10.5 就是變1010.100( q% R8 \# l: J- N( E/ V! |' d
如果是整數1,則變成0001.000  這樣來做正規化?
9 W1 Q. a' y; i6 b$ `: v. d還是說Quartus II 有可以判定輸入式浮點數的語法嗎?
7 a- W  M: _- h% p* ~
+ j9 B* J2 ?6 J+ A, W6 Y. V/ }如果沒有的話也得要把輸入的數值做正規化將其輸出,否則也不會有大大說的浮點數格式的輸入吧@@?2 M9 `5 k5 Y8 j( A* j. K% ?
不知道我這樣說有沒有錯...^^"
12#
發表於 2009-9-21 20:22:38 | 只看該作者
您好1 {3 @, n) o, A% Q

3 E* R) \" R: E! e  @我的意思是你要自己算,將10.5或1先自己轉好成IEEE 754格式,$ E. Z! M- z! b% ?+ G/ E
然後在輸入到a,b

評分

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

查看全部評分

13#
 樓主| 發表於 2009-9-21 22:45:15 | 只看該作者
大大~
# o/ |4 A3 u. p% w! w, Z% o; q我知道你的意思了,不過我目前是需要把非IEEE 754格式的浮點數轉成IEEE 754格式.....6 u" F( ~% Z% T3 `' _8 q
這樣是不可能實現的嗎?^^"
14#
發表於 2009-9-22 22:21:46 | 只看該作者
可以實現
9 i3 b& T' @5 U+ G% \, }請把了解規則 用電路可把非IEEE 754格式的浮點數(Fixed Point)轉成IEEE 754格式(Float Point)
' t) T" `& d4 j! a% V/ e) r然後就可以當成浮點數加法器的輸入- L, m  U! t" ^/ q; `: U

, s1 ^5 B! n0 m. b2 f[ 本帖最後由 masonchung 於 2009-9-22 10:24 PM 編輯 ]
15#
 樓主| 發表於 2009-9-23 20:05:40 | 只看該作者
masonchung 大大~9 f( u2 r& K1 @1 Z
5 }- X1 N( v6 d+ p1 i- a7 k
如果要這樣做的話,我的A如果是十進制"2.5",並且可運算到小數點後第5位,二進制的輸入訊號是不是一定要是10.10000- p- {$ m& N- R" k, i' G
這樣有錯嗎?
( _; j3 I2 r6 J9 d( L9 Z- y; S另外有一點有點疑問,這種作法是不是只能做無號數的浮點數運算?( K/ V6 N6 z$ l1 V
-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$ @" K( `1 H2 [( P

& V6 X( a4 c1 \) o2 m4 f- u/ j. c; mieee754 的 二進位浮點數格式在此 http://zh.wikipedia.org/wiki/IEEE_754" M, h8 F7 b9 G# S! J/ O9 u. }& o

/ D  H* T& ?0 k這兩種格式轉換可用電路實現 ' p8 x. X, w9 ?( s' W1 k4 _
9 O/ L9 \& n, `# S
然後再輸入到浮點數加法器運算
18#
發表於 2009-10-19 10:55:44 | 只看該作者
最近剛好有碰到類似的問題 , 感謝說明
19#
發表於 2009-10-19 12:13:41 | 只看該作者
請問可以直接對ieee754格式的a跟b做四則運算嗎? / u$ U8 w1 E& ^& B5 `: ?% P- r
(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?
, [7 W) E. z' \$ V不對
! j" ?) P* A4 s3 L只有浮點數加法器和乘法器
, O9 o* \. F% E: ~所以負數要用二補數7 z+ C3 ~8 g# d$ A1 M4 `
C2010000=1_10000100_0000001_0000_0000_0000_0000
" w8 u# M: t- d: T二補數=1101_1111.1100& \6 Z6 V3 E" |0 v6 \
22.25=0001_0110.0100
8 N9 ]( E  ?! j兩者相加即為答案-10, 透過浮點數加法器輸出為C1200000. H" I, v; A; H

+ v" l. W% u6 M" x: n" g9 R0 ?[ 本帖最後由 masonchung 於 2009-11-2 11:12 AM 編輯 ]
20#
發表於 2009-10-19 14:05:59 | 只看該作者
此二補數 1101_1111.1100 表示成IEEE754格式為42010000
2 e& ^2 d2 S) I1 K3 {所以真正的浮點加法器輸入的MSB只要反相 就變成二補數
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-6-2 10:36 PM , Processed in 0.142018 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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