Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-9-2 20:23:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
想請問有設計過IEEE 754 浮點數 規則的程式的大大.....
/ n' G6 e: }. R" p0 y3 ]  z) B6 M& W# {( P( ?" k
規則小弟是看的懂,不過疑問處在於+ r$ x7 W- B! c9 k* Y
假設我設計一個簡單的浮點數加法器,輸入數值a跟b相加.
  g, p$ W' y% N0 U那麼,我的"a如果是十進制10.5"  "b是2.125"' Q' }* c9 d/ r9 A8 T
a跟b是要先正規化之後再行運算嗎?
0 S+ |% o  D3 r' l這樣正規化之前,10.5要怎麼顯示成二進位?是固定位元顯示整數部份,  d8 w& M9 E5 T; Z8 L' C* X9 s: @( v
另一部份固定位元顯示小數部份..ex: 10.5=>1010.18 O$ a/ P* S- q1 z& Q% a
這樣輸入a之後變成10101,程式內部再將a[4:1]斷定成整數a[0]斷定成浮點數,
6 S5 U% c+ Z) o# B; k3 J6 \+ ~. c這樣設計對嗎?2 t4 v% }8 _+ _! T; n$ o5 u# p- Q3 [
我是剛接觸的菜鳥..還請大大們指教提拔....如果有相關code可以參考感激不盡m(_ _)m
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
推薦
 樓主| 發表於 2009-10-18 14:03:42 | 只看該作者
謝謝大大們的幫助,目前我已經完成了部分的程式,現在又遇到一點問題,想提出來跟大大們討論一下...
1 N% z! E# B- d, }# k想請問大大們~' `8 D3 t$ |/ z
a= 41B20000  (16進制- ieee754格式)  十進制22.25
1 k/ t% M. f- q! n! G: w5 L2 q# Lb=C2010000  (16進制- ieee754格式)   十進制-32.25% _- P0 s# o3 ~" O/ B
請問可以直接對ieee754格式的a跟b做四則運算嗎?
3 j3 x/ R3 F& C6 ]4 L1 e  L! \(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?
7 g7 k3 U) Q) ~) P1 ~. v; \; J; |
6 T. A/ w6 Q+ h7 t: q+ R& }; d 7 n" C; n# n/ [/ |, l$ F6 ~
還是說一定要先做十進制的22.25+(-32.25)= -10 最後答案才用IEEE754表示?
/ Z% U  Q6 O9 S$ _-10的IEEE754表示=C1200000: s: K/ s9 b% {2 s4 i6 M  U# }; w
0 W9 h2 H! I: ^* u9 o0 {
C2580000與C1200000好像不太一樣.
1 ~* {+ H1 [& n% s4 X% y( M; L/ [還是說要怎麼逆運算才可以求出-10?
, P+ {5 d4 }( j+ u/ n大大曉得嗎@@?
回復 支持 1 反對 0

使用道具 舉報

2#
發表於 2009-9-4 17:18:51 | 只看該作者
我之前也是這樣子用~
( H/ `' W% p/ Q9 F
  [1 e# X& U8 Y/ N2 D我覺得應該是ok的情況!
3#
 樓主| 發表於 2009-9-4 20:56:26 | 只看該作者
不過如果照這樣寫,感覺上小數點是固定的,不像浮點數的感覺耶....
4#
發表於 2009-9-8 20:48:56 | 只看該作者
您好
9 m! \* b+ o/ P, P& a% K1.如果a,b兩值還沒正規化,則先將a,b正規化,
! r* l" B. ~) W* g2 f, Q2.將a,b尾數對齊' v6 k$ z5 e+ ]/ W/ f/ M5 G  |% p
3.尾數相加
% r+ _2 ]+ D; \+ X8 t! W9 D! c+ R4.將結果正規化( I* X$ H' W# v" ?
5 O# u; W) ?& G  K& \4 @( @
您參考看看
5#
 樓主| 發表於 2009-9-16 21:38:06 | 只看該作者
大大~我陷在卡在將輸入數值做正規化的動作,
+ L# L$ g, f3 ?* M假如輸入的a是10.5, 在程式裡面會變成10101串列輸入,假設我程式固定只有運算到小數第一位,
& `/ _% h9 G. l" `: V這樣可以抓到1010.1並且將其正規化,但是如果我輸入數值是整數的00100,這樣他要怎麼判別小數點的位置@@?$ F/ e% O6 T' `& }, E1 ^( `
他要怎麼判斷輸入的數值是不是浮點數?
6#
發表於 2009-9-17 08:51:20 | 只看該作者
您好
. I5 ?$ {5 w( b& x' E/ r# _. x- _9 V1 R! e: w
  a,b兩數要做浮點相加,那麼a,b兩值就要為浮點格式,
) u4 k: ?  }& _: K0 t% h$ i你的問題不是卡在正規化,10.5=1010.1是定點小數,) v( p7 Q0 f  m1 z! b
10101,00100都不是浮點格式,如何將之正規化,
9 y/ [  h4 c. ?8 r不能拿兩個定點格式的值來做浮點運算,
7#
 樓主| 發表於 2009-9-17 21:27:31 | 只看該作者
大大~
9 D, h, H6 V, S+ U& I3 `. q2 v; g請問您說的浮點格式,是像IEEE 754格式這種嗎?....還是??: V9 g5 _+ i, ~9 p/ T2 C1 U

: I) t& A& Q2 S5 X是怎樣的浮點數格式輸入到a才可以被正規化呢^^"~不好意思喔~新手問了一些蠢問題@@
8#
發表於 2009-9-18 09:04:41 | 只看該作者
您好
3 |4 ~: e! n# r2 Z" h- L2 x3 b  IEEE 754是浮點格式的一種,當然還有其他的,$ w- Q1 ^6 d! B3 c6 w7 ?
看你要用哪一種嚕,
% \5 F' C( W9 _( f( x$ b, `5 L3 Z3 v9 |. C0 _- d
如果你用IEEE 754,那麼輸入a,b值就要符合 IEEE 754格式
9#
 樓主| 發表於 2009-9-18 22:06:54 | 只看該作者
IEEE 754的浮點數格式 不是已經正規化了嗎?...
4 N! ~/ n8 A7 l$ G+ c6 }
* q( r$ H6 X: ?. T9 I* e沒辦法寫CODE讓輸入的串列資料,將十進致10.5二進致為1010.1輸入後再由程式正規化嗎?
10#
發表於 2009-9-20 11:40:30 | 只看該作者
您好
5 T+ r+ O( `! ?- D
- T5 f' ]( p8 `5 z8 m6 [ a,b不是已知的值嗎?為甚麼不直接用浮點格式來表示,
6 y8 d8 m# u1 I而要用定點再轉一次呢?
11#
 樓主| 發表於 2009-9-20 21:17:28 | 只看該作者
大大~
' S1 u  q3 M$ {" R+ F  X+ s: ~& `8 R% X  j4 p. P
你的意思是說 假設我程式可以算到小數第3位,輸入的a 10.5 就是變1010.100% s1 W4 s( B7 ^+ A9 ~
如果是整數1,則變成0001.000  這樣來做正規化?! }$ |( \* s% U! R. n* A% H
還是說Quartus II 有可以判定輸入式浮點數的語法嗎?
6 m+ m' g0 Z1 J; ?6 J% m
) m/ _$ @8 V7 O. D' t- p' W8 {$ h如果沒有的話也得要把輸入的數值做正規化將其輸出,否則也不會有大大說的浮點數格式的輸入吧@@?3 Y8 x0 E7 b, b! r1 {3 E
不知道我這樣說有沒有錯...^^"
12#
發表於 2009-9-21 20:22:38 | 只看該作者
您好% z1 A! p2 m/ l* s; a: O

! T: ?! Q5 {  l我的意思是你要自己算,將10.5或1先自己轉好成IEEE 754格式,
; Y" P0 ]7 u$ ?5 p+ l然後在輸入到a,b

評分

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

查看全部評分

13#
 樓主| 發表於 2009-9-21 22:45:15 | 只看該作者
大大~
; ^1 v' `" r% W" ~  F" v/ d4 S4 p- {我知道你的意思了,不過我目前是需要把非IEEE 754格式的浮點數轉成IEEE 754格式.....' c6 I1 W- K# ^4 q
這樣是不可能實現的嗎?^^"
14#
發表於 2009-9-22 22:21:46 | 只看該作者
可以實現3 x6 _2 _0 s0 g! e! X1 B& o+ Z
請把了解規則 用電路可把非IEEE 754格式的浮點數(Fixed Point)轉成IEEE 754格式(Float Point)# }3 L3 |9 K- l) X, G1 a
然後就可以當成浮點數加法器的輸入
. f( p6 }% w) X6 k$ k$ ]3 ~
! T2 E9 v* T3 _1 u[ 本帖最後由 masonchung 於 2009-9-22 10:24 PM 編輯 ]
15#
 樓主| 發表於 2009-9-23 20:05:40 | 只看該作者
masonchung 大大~- e' v; L! o* e' k! k! V( X

9 d! v4 y0 E+ E; O( Z+ [如果要這樣做的話,我的A如果是十進制"2.5",並且可運算到小數點後第5位,二進制的輸入訊號是不是一定要是10.100009 W* x4 x+ U0 B4 R- a: z( c5 w
這樣有錯嗎?* R4 d: L' k& p4 {) D3 g' i
另外有一點有點疑問,這種作法是不是只能做無號數的浮點數運算?
+ A; t4 P+ \, |. @+ E0 c-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" I7 ^+ w+ ?# A3 I
2 o9 D2 k5 X2 |. i4 j+ D
ieee754 的 二進位浮點數格式在此 http://zh.wikipedia.org/wiki/IEEE_754
9 i( a0 [' g* G, }
% ^% h. {0 I' A( P8 j' i' \這兩種格式轉換可用電路實現 $ d% j  F* T) j" m/ X  b5 Q

0 N2 \3 W, g6 Y/ [& O0 R  u然後再輸入到浮點數加法器運算
18#
發表於 2009-10-19 10:55:44 | 只看該作者
最近剛好有碰到類似的問題 , 感謝說明
19#
發表於 2009-10-19 12:13:41 | 只看該作者
請問可以直接對ieee754格式的a跟b做四則運算嗎?
5 q! g1 D4 N7 t* f) y(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?+ x6 _* Y" r4 |5 J& b( x
不對
3 p  M( }* E2 J* ~  b只有浮點數加法器和乘法器! N6 n7 Q; ?6 P
所以負數要用二補數
; U% U) E) ]9 }6 e( WC2010000=1_10000100_0000001_0000_0000_0000_0000  o" k, A9 P4 q, v
二補數=1101_1111.1100
: b  ?3 e0 n' ]22.25=0001_0110.01007 M  l3 T; ?; S+ ^
兩者相加即為答案-10, 透過浮點數加法器輸出為C1200000
1 a! |  s3 w) ]0 n( l; n  z; N( x* r/ l/ @1 t& t: K4 t4 C# x- k
[ 本帖最後由 masonchung 於 2009-11-2 11:12 AM 編輯 ]
20#
發表於 2009-10-19 14:05:59 | 只看該作者
此二補數 1101_1111.1100 表示成IEEE754格式為42010000
4 v( i( k4 X; F" _" Y) s& l所以真正的浮點加法器輸入的MSB只要反相 就變成二補數
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-6-14 07:09 AM , Processed in 0.140018 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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