Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-9-2 20:23:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
想請問有設計過IEEE 754 浮點數 規則的程式的大大.....* T+ y9 M7 y) s

- Z* p7 n* e. _; A) V規則小弟是看的懂,不過疑問處在於5 v! Q/ v7 Q. W+ _: |  g2 h
假設我設計一個簡單的浮點數加法器,輸入數值a跟b相加.
  A. {" |7 v5 o那麼,我的"a如果是十進制10.5"  "b是2.125"
! ]  Q$ _% \1 n. P/ w% Aa跟b是要先正規化之後再行運算嗎?
! H5 v! J' P( }" @# p2 Y, Q( n這樣正規化之前,10.5要怎麼顯示成二進位?是固定位元顯示整數部份,& u) _% K- I" Q" J& S; G2 g
另一部份固定位元顯示小數部份..ex: 10.5=>1010.1
9 R- X. {3 q0 d9 h+ T0 X這樣輸入a之後變成10101,程式內部再將a[4:1]斷定成整數a[0]斷定成浮點數,0 H% _( V3 i* I2 n
這樣設計對嗎?
, v2 V' J) d" {0 E5 f我是剛接觸的菜鳥..還請大大們指教提拔....如果有相關code可以參考感激不盡m(_ _)m
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
推薦
 樓主| 發表於 2009-10-18 14:03:42 | 只看該作者
謝謝大大們的幫助,目前我已經完成了部分的程式,現在又遇到一點問題,想提出來跟大大們討論一下...
: y+ r: s. N0 U, [/ S# E想請問大大們~5 r- _, S7 [5 L5 D
a= 41B20000  (16進制- ieee754格式)  十進制22.250 J2 s6 O6 D7 j9 O: E; y( _
b=C2010000  (16進制- ieee754格式)   十進制-32.25
7 }% j, [0 W- v- v) p# \請問可以直接對ieee754格式的a跟b做四則運算嗎? # K+ M# G1 _8 V( b* V
(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?8 j% ]  ^: Y1 ~9 u8 y; i* E/ J

$ J6 j% W% \$ f) d+ t. B0 F+ ] 0 f! y0 F; [1 k0 E: ~: q
還是說一定要先做十進制的22.25+(-32.25)= -10 最後答案才用IEEE754表示?: D/ K, l7 E% ?' t2 \( y3 ?& u0 v
-10的IEEE754表示=C1200000
4 q1 U' X: S2 C( }  H" k- _) F; H
/ e1 I9 F6 K' cC2580000與C1200000好像不太一樣.- P% }# _% ~4 B$ J3 ~% U  g% P
還是說要怎麼逆運算才可以求出-10?
# L) |/ S8 q% A# `大大曉得嗎@@?
回復 支持 1 反對 0

使用道具 舉報

2#
發表於 2009-9-4 17:18:51 | 只看該作者
我之前也是這樣子用~& Z1 l8 a( \' V/ U& F

( J0 J4 w( i# u1 S. y我覺得應該是ok的情況!
3#
 樓主| 發表於 2009-9-4 20:56:26 | 只看該作者
不過如果照這樣寫,感覺上小數點是固定的,不像浮點數的感覺耶....
4#
發表於 2009-9-8 20:48:56 | 只看該作者
您好
! ?7 E7 V4 i) `( F$ H7 R7 a# b) N1.如果a,b兩值還沒正規化,則先將a,b正規化,) d& h9 w3 Z3 z. c
2.將a,b尾數對齊
- `3 J: y) {( {3 i3.尾數相加
1 p  k) T9 Z7 A  i4.將結果正規化
6 t0 e6 W9 Y/ C7 f/ U! ~% I
% W( ]3 M1 Q( }  v您參考看看
5#
 樓主| 發表於 2009-9-16 21:38:06 | 只看該作者
大大~我陷在卡在將輸入數值做正規化的動作,+ F7 q! {% r' }8 I& M  H
假如輸入的a是10.5, 在程式裡面會變成10101串列輸入,假設我程式固定只有運算到小數第一位,  W  Q  L0 t1 |
這樣可以抓到1010.1並且將其正規化,但是如果我輸入數值是整數的00100,這樣他要怎麼判別小數點的位置@@?
* @+ F2 [! q# z# z他要怎麼判斷輸入的數值是不是浮點數?
6#
發表於 2009-9-17 08:51:20 | 只看該作者
您好) W  H! t$ L5 g0 q
+ B& o! N! y8 D/ _
  a,b兩數要做浮點相加,那麼a,b兩值就要為浮點格式,# C  f2 L' u5 u) u. @7 u6 f
你的問題不是卡在正規化,10.5=1010.1是定點小數,
, }) ]( j- h0 v7 a10101,00100都不是浮點格式,如何將之正規化,
1 [3 R' l+ O$ [5 J不能拿兩個定點格式的值來做浮點運算,
7#
 樓主| 發表於 2009-9-17 21:27:31 | 只看該作者
大大~6 E1 k: t2 X  ^3 {3 w& C+ t
請問您說的浮點格式,是像IEEE 754格式這種嗎?....還是??
" i/ ~2 u: ^; ]7 J( y
8 T& }( |) a$ D/ h# Z是怎樣的浮點數格式輸入到a才可以被正規化呢^^"~不好意思喔~新手問了一些蠢問題@@
8#
發表於 2009-9-18 09:04:41 | 只看該作者
您好& Z. O7 v, y# C$ W! Z! F
  IEEE 754是浮點格式的一種,當然還有其他的,; G" W9 h% D( T$ A
看你要用哪一種嚕," F, g: B* }6 z; N$ v

8 y; F7 O, \  r* V/ R如果你用IEEE 754,那麼輸入a,b值就要符合 IEEE 754格式
9#
 樓主| 發表於 2009-9-18 22:06:54 | 只看該作者
IEEE 754的浮點數格式 不是已經正規化了嗎?...! \. c: u. _, `* ^3 X5 R" Y$ X
; f: {4 r$ m' @$ `& ^+ o
沒辦法寫CODE讓輸入的串列資料,將十進致10.5二進致為1010.1輸入後再由程式正規化嗎?
10#
發表於 2009-9-20 11:40:30 | 只看該作者
您好+ R- o5 k4 M" ~3 u! `) O) M, b

/ w/ m& F% u& x0 T: [ a,b不是已知的值嗎?為甚麼不直接用浮點格式來表示,8 \5 Y& B" Z& g1 j" _& [4 `2 N2 h) F
而要用定點再轉一次呢?
11#
 樓主| 發表於 2009-9-20 21:17:28 | 只看該作者
大大~" I; d- X7 r! [3 `2 E, ?

. P9 t0 h8 i7 l# d你的意思是說 假設我程式可以算到小數第3位,輸入的a 10.5 就是變1010.100/ y7 |6 [, i- y
如果是整數1,則變成0001.000  這樣來做正規化?
6 l( ?( S* B1 g; a; i2 a還是說Quartus II 有可以判定輸入式浮點數的語法嗎?5 a2 P+ B0 ]8 x

  |! x2 p, _; U' y6 \如果沒有的話也得要把輸入的數值做正規化將其輸出,否則也不會有大大說的浮點數格式的輸入吧@@?
8 D/ A/ P: x: R1 B3 T* ], O" C" n* R  I不知道我這樣說有沒有錯...^^"
12#
發表於 2009-9-21 20:22:38 | 只看該作者
您好. Z3 \7 V  t1 M9 c6 D9 P9 e5 a& U$ i
2 A# G! V/ B$ [/ P1 Z
我的意思是你要自己算,將10.5或1先自己轉好成IEEE 754格式,
" X! U( P$ k8 T2 R9 }9 \, ?0 V) A然後在輸入到a,b

評分

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

查看全部評分

13#
 樓主| 發表於 2009-9-21 22:45:15 | 只看該作者
大大~
6 H* Z9 R, j) n我知道你的意思了,不過我目前是需要把非IEEE 754格式的浮點數轉成IEEE 754格式.....* K. u7 o5 A! [* d6 I
這樣是不可能實現的嗎?^^"
14#
發表於 2009-9-22 22:21:46 | 只看該作者
可以實現1 `' f* }8 n3 |& C  o/ E  m
請把了解規則 用電路可把非IEEE 754格式的浮點數(Fixed Point)轉成IEEE 754格式(Float Point), v/ e# o1 i/ L$ t( I( f# z8 G" ^" W
然後就可以當成浮點數加法器的輸入& B: k1 f0 a& U4 [/ a
. d& C0 b, s; B) r9 @# F- B& p4 G
[ 本帖最後由 masonchung 於 2009-9-22 10:24 PM 編輯 ]
15#
 樓主| 發表於 2009-9-23 20:05:40 | 只看該作者
masonchung 大大~
+ Q5 ]3 A+ ?4 h4 Y4 S6 }$ }  t $ Q% b& A4 U; u0 L; R( L2 F2 f6 e
如果要這樣做的話,我的A如果是十進制"2.5",並且可運算到小數點後第5位,二進制的輸入訊號是不是一定要是10.10000
* C) p# A- c9 \) ?+ v# b這樣有錯嗎?
5 R. v$ X4 b6 v2 ~/ C另外有一點有點疑問,這種作法是不是只能做無號數的浮點數運算?6 _9 q. [- e7 v0 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& `+ K8 F( P) L. A

( N" j9 t7 O7 q  l" I3 B8 H& }2 _# O5 Cieee754 的 二進位浮點數格式在此 http://zh.wikipedia.org/wiki/IEEE_754
1 h; Q- a' H3 v- l; D/ _, o- U8 Y2 {7 i
這兩種格式轉換可用電路實現 3 V- f8 t, m( c+ n6 u+ o5 u9 R

. `. q5 p6 }6 v9 c! p然後再輸入到浮點數加法器運算
18#
發表於 2009-10-19 10:55:44 | 只看該作者
最近剛好有碰到類似的問題 , 感謝說明
19#
發表於 2009-10-19 12:13:41 | 只看該作者
請問可以直接對ieee754格式的a跟b做四則運算嗎? ' {( p! r' H$ n; ?
(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?
; s& E( u  x" @, l6 L/ O0 H" B% e不對
9 |" S$ `. T) ?, M: [只有浮點數加法器和乘法器6 h5 ~3 H& `/ {. F
所以負數要用二補數
/ ~& d$ X( t: ?0 `C2010000=1_10000100_0000001_0000_0000_0000_0000
& f; e: X( f6 d, t( P2 g0 _7 }二補數=1101_1111.1100
1 G. u: J. n9 T5 g) C7 }22.25=0001_0110.0100! K' i, T! V, I0 Q( N' e8 y# X9 H
兩者相加即為答案-10, 透過浮點數加法器輸出為C1200000/ `. ?- A5 }% V5 s' n9 D5 u

3 @" k( x" u. N. {3 }- d9 i[ 本帖最後由 masonchung 於 2009-11-2 11:12 AM 編輯 ]
20#
發表於 2009-10-19 14:05:59 | 只看該作者
此二補數 1101_1111.1100 表示成IEEE754格式為42010000
/ L; p# q: W; K所以真正的浮點加法器輸入的MSB只要反相 就變成二補數
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-6-6 08:22 PM , Processed in 0.152019 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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