Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-9-2 20:23:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
想請問有設計過IEEE 754 浮點數 規則的程式的大大.....
1 v" O- }. r* c
, u1 u3 t0 G' j+ l5 k$ I2 `6 g8 I規則小弟是看的懂,不過疑問處在於
4 v. g3 S1 Y# I( Y8 u0 ?假設我設計一個簡單的浮點數加法器,輸入數值a跟b相加.  Q+ @1 m& B  m" X# U$ V% T, P
那麼,我的"a如果是十進制10.5"  "b是2.125"" D6 Q# Z7 M4 R# _) L
a跟b是要先正規化之後再行運算嗎?' u; P# Y$ F( Q8 T# L
這樣正規化之前,10.5要怎麼顯示成二進位?是固定位元顯示整數部份,
. t7 H& @- u- b  d4 E另一部份固定位元顯示小數部份..ex: 10.5=>1010.1. j$ p0 E% ~! N( x, X( c/ C
這樣輸入a之後變成10101,程式內部再將a[4:1]斷定成整數a[0]斷定成浮點數,. [6 |6 [9 |. l3 T' _
這樣設計對嗎?
; B, x% t. V% o8 D$ s5 j我是剛接觸的菜鳥..還請大大們指教提拔....如果有相關code可以參考感激不盡m(_ _)m
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
推薦
 樓主| 發表於 2009-10-18 14:03:42 | 只看該作者
謝謝大大們的幫助,目前我已經完成了部分的程式,現在又遇到一點問題,想提出來跟大大們討論一下...
6 B8 w$ x9 l1 M1 d+ x9 G. _. D想請問大大們~
9 m6 B8 F1 ~+ p# w: q& p; \a= 41B20000  (16進制- ieee754格式)  十進制22.25# }. w0 o- P+ a; G6 M, T8 R
b=C2010000  (16進制- ieee754格式)   十進制-32.25( z3 |/ [9 l' ~; M' F) I
請問可以直接對ieee754格式的a跟b做四則運算嗎?
9 O( f2 Y7 \# n(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?5 d  v# M6 e7 o1 ]/ _3 k- P

* M. Z) g. X# x- c4 k
- s  ]- y1 c% v5 o9 e1 ~/ D9 Y5 _還是說一定要先做十進制的22.25+(-32.25)= -10 最後答案才用IEEE754表示?; x4 Q/ D# i- r" j
-10的IEEE754表示=C1200000- j' p) R9 Q3 r/ b3 z

8 c/ Y4 t; a- C) I: f+ K% oC2580000與C1200000好像不太一樣.
- d9 `* O0 R. x$ Z# q/ p還是說要怎麼逆運算才可以求出-10?' y7 E' A- M7 k
大大曉得嗎@@?
回復 支持 1 反對 0

使用道具 舉報

2#
發表於 2009-9-4 17:18:51 | 只看該作者
我之前也是這樣子用~
% C1 A3 ?7 p* l% n/ H
' g: R! I) ]# n4 L# A! p* U我覺得應該是ok的情況!
3#
 樓主| 發表於 2009-9-4 20:56:26 | 只看該作者
不過如果照這樣寫,感覺上小數點是固定的,不像浮點數的感覺耶....
4#
發表於 2009-9-8 20:48:56 | 只看該作者
您好  G0 ]+ b$ L/ \; v7 N. D
1.如果a,b兩值還沒正規化,則先將a,b正規化,
3 m& K; Y/ B' g& ^9 i2.將a,b尾數對齊5 n9 w  }# W, K( f1 F
3.尾數相加1 c9 e4 @; m% m
4.將結果正規化/ M8 h) c6 L8 r5 ^7 V# A

5 K+ A% \" u- W, t3 x6 ]' v) r您參考看看
5#
 樓主| 發表於 2009-9-16 21:38:06 | 只看該作者
大大~我陷在卡在將輸入數值做正規化的動作,9 P, T3 O1 U, O; c1 |
假如輸入的a是10.5, 在程式裡面會變成10101串列輸入,假設我程式固定只有運算到小數第一位,
- \4 e* O3 g( t8 A; o這樣可以抓到1010.1並且將其正規化,但是如果我輸入數值是整數的00100,這樣他要怎麼判別小數點的位置@@?
9 w1 d# f6 q+ j- z1 w5 h他要怎麼判斷輸入的數值是不是浮點數?
6#
發表於 2009-9-17 08:51:20 | 只看該作者
您好9 ]$ [! _$ y% \3 C

, L1 w) h' m8 n- q+ V6 A  a,b兩數要做浮點相加,那麼a,b兩值就要為浮點格式,
. s$ K6 ^2 A4 b6 b# z+ j' o你的問題不是卡在正規化,10.5=1010.1是定點小數,
& c' u: K1 N8 s9 m1 p; q10101,00100都不是浮點格式,如何將之正規化,
: r& q; D' p2 f不能拿兩個定點格式的值來做浮點運算,
7#
 樓主| 發表於 2009-9-17 21:27:31 | 只看該作者
大大~, i1 b( n& A& \
請問您說的浮點格式,是像IEEE 754格式這種嗎?....還是??
2 L) @& A2 F1 \! a
! E0 f' P' B& @9 \* Z) f0 u. e& I是怎樣的浮點數格式輸入到a才可以被正規化呢^^"~不好意思喔~新手問了一些蠢問題@@
8#
發表於 2009-9-18 09:04:41 | 只看該作者
您好; ~; w; K+ \( G+ A5 I- G/ j
  IEEE 754是浮點格式的一種,當然還有其他的," y! Q' O. `, p; M1 o0 n7 \8 c2 W
看你要用哪一種嚕,
5 L) x: Q. D! r5 R& ^! Y% x1 Z
" h( I. _7 Y5 }' N如果你用IEEE 754,那麼輸入a,b值就要符合 IEEE 754格式
9#
 樓主| 發表於 2009-9-18 22:06:54 | 只看該作者
IEEE 754的浮點數格式 不是已經正規化了嗎?.../ O) s- ^% @4 V; F7 Y: Z
0 ~# ]9 r4 M7 t* M6 P( P
沒辦法寫CODE讓輸入的串列資料,將十進致10.5二進致為1010.1輸入後再由程式正規化嗎?
10#
發表於 2009-9-20 11:40:30 | 只看該作者
您好
7 ]0 ~% E* _# q% `7 N4 ^. ^$ V# c/ F- Z' `+ c6 d4 m
a,b不是已知的值嗎?為甚麼不直接用浮點格式來表示,
! }1 D8 E1 ~3 Q( @" o& J  A而要用定點再轉一次呢?
11#
 樓主| 發表於 2009-9-20 21:17:28 | 只看該作者
大大~5 m) f7 H5 O' T
5 m' F' d8 z! r1 l
你的意思是說 假設我程式可以算到小數第3位,輸入的a 10.5 就是變1010.100
' L+ @& J1 p5 k- j1 H1 ?2 a$ H如果是整數1,則變成0001.000  這樣來做正規化?
$ T9 M$ p4 o. n+ m$ J$ w& t! T0 I0 p還是說Quartus II 有可以判定輸入式浮點數的語法嗎?
! R) J) Y. q4 L
( A: o7 u8 A# W' ~如果沒有的話也得要把輸入的數值做正規化將其輸出,否則也不會有大大說的浮點數格式的輸入吧@@?" O% D; r! E* y& S
不知道我這樣說有沒有錯...^^"
12#
發表於 2009-9-21 20:22:38 | 只看該作者
您好8 Y4 k" v. B& n, }4 j. [8 n# U! P: u
3 X" `+ o; {. W6 \) B
我的意思是你要自己算,將10.5或1先自己轉好成IEEE 754格式,8 R8 |5 V# {0 A7 d( N, F9 Q( v$ C
然後在輸入到a,b

評分

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

查看全部評分

13#
 樓主| 發表於 2009-9-21 22:45:15 | 只看該作者
大大~
( c6 [% N' j& ?2 F5 y1 Z% y% [我知道你的意思了,不過我目前是需要把非IEEE 754格式的浮點數轉成IEEE 754格式.....  r6 X; o2 E+ N( [% P8 ~- @
這樣是不可能實現的嗎?^^"
14#
發表於 2009-9-22 22:21:46 | 只看該作者
可以實現4 t9 [5 J6 P3 }7 r1 M) A
請把了解規則 用電路可把非IEEE 754格式的浮點數(Fixed Point)轉成IEEE 754格式(Float Point)  q. W! }6 n: ?9 g0 J
然後就可以當成浮點數加法器的輸入$ {% W( @0 }  c; J! ~

& O. t1 o. T4 U$ _2 m[ 本帖最後由 masonchung 於 2009-9-22 10:24 PM 編輯 ]
15#
 樓主| 發表於 2009-9-23 20:05:40 | 只看該作者
masonchung 大大~
3 f" l4 r* c% B3 D+ X   w, m+ A9 i( ?  p- C- K/ E
如果要這樣做的話,我的A如果是十進制"2.5",並且可運算到小數點後第5位,二進制的輸入訊號是不是一定要是10.10000
+ @, w( U% m. Z1 G: T0 f! W- r這樣有錯嗎?- r2 @, @6 ~; J: S- [: S
另外有一點有點疑問,這種作法是不是只能做無號數的浮點數運算?
2 z/ P, Z7 i5 L# U3 K$ a7 _: L-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
. F3 E5 y6 O* T8 p- W4 N7 p3 D+ A# ?' P& _
ieee754 的 二進位浮點數格式在此 http://zh.wikipedia.org/wiki/IEEE_754
1 Q, e! S7 [& ?- L3 g( L: J
' x3 n3 h. s7 S/ r這兩種格式轉換可用電路實現 ) w+ K" B! F2 Z* o! O3 [  }+ q
: A) a/ N+ X8 T+ D
然後再輸入到浮點數加法器運算
18#
發表於 2009-10-19 10:55:44 | 只看該作者
最近剛好有碰到類似的問題 , 感謝說明
19#
發表於 2009-10-19 12:13:41 | 只看該作者
請問可以直接對ieee754格式的a跟b做四則運算嗎? : v- k: q2 Q+ _# L5 z$ S
(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?
, P% t) R( G! O" C不對/ q; Y! m% y; {% [3 [7 |, L
只有浮點數加法器和乘法器
0 p$ Y' w+ w9 Q) p. ^4 K, ?所以負數要用二補數
$ y6 o' Z0 W% x' v. MC2010000=1_10000100_0000001_0000_0000_0000_0000
% }5 L/ v/ {" ]9 R& ]. O二補數=1101_1111.1100
4 R& N# L( k2 U7 x22.25=0001_0110.0100
0 ?8 m% w" C+ b兩者相加即為答案-10, 透過浮點數加法器輸出為C1200000, J* b* H6 N9 e4 T

/ K0 ~! v6 I. k& {[ 本帖最後由 masonchung 於 2009-11-2 11:12 AM 編輯 ]
20#
發表於 2009-10-19 14:05:59 | 只看該作者
此二補數 1101_1111.1100 表示成IEEE754格式為42010000% g+ i4 C" u2 Y3 W% @
所以真正的浮點加法器輸入的MSB只要反相 就變成二補數
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-6-6 05:30 PM , Processed in 0.165521 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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