Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-9-2 20:23:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
想請問有設計過IEEE 754 浮點數 規則的程式的大大.....4 w; ]3 B8 t1 S( l7 t, h( X- [9 x8 k6 v1 }

( G  O, c( J! t! W* ?4 v' }" J規則小弟是看的懂,不過疑問處在於
5 `0 j5 S" \; Y$ x. X5 h9 i! E假設我設計一個簡單的浮點數加法器,輸入數值a跟b相加.
. {  E6 {- r) k, D+ Z) h那麼,我的"a如果是十進制10.5"  "b是2.125"& k9 u  ?+ ^$ O+ O7 `
a跟b是要先正規化之後再行運算嗎?& `) Y% `. R" A5 x9 v: R, F' ?/ Q
這樣正規化之前,10.5要怎麼顯示成二進位?是固定位元顯示整數部份,! q# Z& j) m. i
另一部份固定位元顯示小數部份..ex: 10.5=>1010.1' i3 S' \8 C: r+ |5 P) U5 y
這樣輸入a之後變成10101,程式內部再將a[4:1]斷定成整數a[0]斷定成浮點數,( ]) d0 e4 r: ?4 X
這樣設計對嗎?
9 A+ z) o: x5 `8 X% |' U' T. e我是剛接觸的菜鳥..還請大大們指教提拔....如果有相關code可以參考感激不盡m(_ _)m
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
推薦
 樓主| 發表於 2009-10-18 14:03:42 | 只看該作者
謝謝大大們的幫助,目前我已經完成了部分的程式,現在又遇到一點問題,想提出來跟大大們討論一下...* G! I( ~3 W- a2 S/ g$ n
想請問大大們~
% u  l  y9 Z- X4 n+ Q1 _; j0 d0 Na= 41B20000  (16進制- ieee754格式)  十進制22.25
) }. `/ x( a( ]. ]1 r6 Nb=C2010000  (16進制- ieee754格式)   十進制-32.25& ~& s6 G; T$ Z, s! w  q" [
請問可以直接對ieee754格式的a跟b做四則運算嗎?
7 j: Z; G- Z+ M7 a  @(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?. k& L7 P' ~" b8 m2 [

: z. ^4 t* g/ n* z6 d. |# p - ]3 B/ T( E; ^
還是說一定要先做十進制的22.25+(-32.25)= -10 最後答案才用IEEE754表示?+ A- e* x2 @% T, U% [% _
-10的IEEE754表示=C12000003 y. m" I) e5 y: _8 I9 ~3 P$ @

- J+ q% g* f4 OC2580000與C1200000好像不太一樣.
2 _# I% p* E0 v還是說要怎麼逆運算才可以求出-10?
: y  M  E, Y2 x- u大大曉得嗎@@?
回復 支持 1 反對 0

使用道具 舉報

2#
發表於 2009-9-4 17:18:51 | 只看該作者
我之前也是這樣子用~, U9 u# N0 }# s

! |3 j$ I& [/ ?4 h9 N我覺得應該是ok的情況!
3#
 樓主| 發表於 2009-9-4 20:56:26 | 只看該作者
不過如果照這樣寫,感覺上小數點是固定的,不像浮點數的感覺耶....
4#
發表於 2009-9-8 20:48:56 | 只看該作者
您好
0 e( O0 M% l, f. \1.如果a,b兩值還沒正規化,則先將a,b正規化,
5 q5 X& m3 ~9 f) S" E$ @# B2.將a,b尾數對齊. X; u8 a; }; }
3.尾數相加3 n' s) i* q: @5 X; E
4.將結果正規化7 J3 Z) Z$ G+ C) m
+ E- G0 P% B: `4 ?% Q. z6 V# c
您參考看看
5#
 樓主| 發表於 2009-9-16 21:38:06 | 只看該作者
大大~我陷在卡在將輸入數值做正規化的動作,  ~. [! q5 {: G$ P6 j- L2 S# O% i
假如輸入的a是10.5, 在程式裡面會變成10101串列輸入,假設我程式固定只有運算到小數第一位,
  r/ W. q9 M9 k# \  h2 L' q這樣可以抓到1010.1並且將其正規化,但是如果我輸入數值是整數的00100,這樣他要怎麼判別小數點的位置@@?
  e! f; o: _# q他要怎麼判斷輸入的數值是不是浮點數?
6#
發表於 2009-9-17 08:51:20 | 只看該作者
您好
3 m) P9 \! u. Q1 b, E% F$ \" E# H* k* b9 w4 d% ]& I- \/ c* R+ h5 O6 S
  a,b兩數要做浮點相加,那麼a,b兩值就要為浮點格式,1 r  N. c7 e. t- E# X" S' o9 U
你的問題不是卡在正規化,10.5=1010.1是定點小數,5 N( l) N: x2 k! d3 S! ^
10101,00100都不是浮點格式,如何將之正規化,( x# N: N5 n* q' K& _! w' r
不能拿兩個定點格式的值來做浮點運算,
7#
 樓主| 發表於 2009-9-17 21:27:31 | 只看該作者
大大~) q. z& x3 R3 Y8 y' d! o- T
請問您說的浮點格式,是像IEEE 754格式這種嗎?....還是??
% o( [5 D) [* G% i: \* V- `5 l5 b9 Z7 D' `" @; S5 t  H
是怎樣的浮點數格式輸入到a才可以被正規化呢^^"~不好意思喔~新手問了一些蠢問題@@
8#
發表於 2009-9-18 09:04:41 | 只看該作者
您好
) S8 g0 d- H  I& N" o  IEEE 754是浮點格式的一種,當然還有其他的,6 c: F$ b" z) n, A+ _1 y/ G
看你要用哪一種嚕,! [7 h' J: C3 A) m+ s2 a! m
" c7 D, ?- p: Y1 j% q# j
如果你用IEEE 754,那麼輸入a,b值就要符合 IEEE 754格式
9#
 樓主| 發表於 2009-9-18 22:06:54 | 只看該作者
IEEE 754的浮點數格式 不是已經正規化了嗎?...
+ A: n' C5 v  ?. w, k4 ]
  F' D% `5 H* e) s8 c6 j% ?' L沒辦法寫CODE讓輸入的串列資料,將十進致10.5二進致為1010.1輸入後再由程式正規化嗎?
10#
發表於 2009-9-20 11:40:30 | 只看該作者
您好
# F3 W# u% s! n, p% ]
% i4 @' O7 V, P4 Q7 | a,b不是已知的值嗎?為甚麼不直接用浮點格式來表示,. q  N- ?: ?- {
而要用定點再轉一次呢?
11#
 樓主| 發表於 2009-9-20 21:17:28 | 只看該作者
大大~
0 @% g  C7 |; M+ b1 z, _' H. f9 X4 [4 M/ r8 Y. D6 t' R  L  @6 C
你的意思是說 假設我程式可以算到小數第3位,輸入的a 10.5 就是變1010.100
; w2 a5 ?* _/ Q  v如果是整數1,則變成0001.000  這樣來做正規化?
# w/ I4 z4 b# S& u2 I" h還是說Quartus II 有可以判定輸入式浮點數的語法嗎?
: ?9 R. ?7 i1 q% r1 s4 V. u6 i9 D9 @& H( n% N% I0 I' N& @" `7 ~3 y8 l
如果沒有的話也得要把輸入的數值做正規化將其輸出,否則也不會有大大說的浮點數格式的輸入吧@@?
" Z6 g9 U) a( g: N不知道我這樣說有沒有錯...^^"
12#
發表於 2009-9-21 20:22:38 | 只看該作者
您好( z% F- G' w0 D# R2 ]
) E1 G3 {0 Y* a$ ^8 `, [5 w$ ]) ^
我的意思是你要自己算,將10.5或1先自己轉好成IEEE 754格式,
/ }6 u" e9 f. J然後在輸入到a,b

評分

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

查看全部評分

13#
 樓主| 發表於 2009-9-21 22:45:15 | 只看該作者
大大~& g+ M  K, U0 J, ]9 x6 U! M* K0 o# g
我知道你的意思了,不過我目前是需要把非IEEE 754格式的浮點數轉成IEEE 754格式.....
' V/ ^9 g( ~1 A- F7 n3 t這樣是不可能實現的嗎?^^"
14#
發表於 2009-9-22 22:21:46 | 只看該作者
可以實現
4 N& w+ @  j4 m: N請把了解規則 用電路可把非IEEE 754格式的浮點數(Fixed Point)轉成IEEE 754格式(Float Point); M$ i5 z$ y6 J' y! ?( r3 J& o/ r
然後就可以當成浮點數加法器的輸入0 o6 j$ ?: |+ G5 S- T7 l
  C, L7 n4 R* Z
[ 本帖最後由 masonchung 於 2009-9-22 10:24 PM 編輯 ]
15#
 樓主| 發表於 2009-9-23 20:05:40 | 只看該作者
masonchung 大大~
' i& v9 M% @0 b% A/ ^( {* J; h8 C
& W. L- r  a% u2 r如果要這樣做的話,我的A如果是十進制"2.5",並且可運算到小數點後第5位,二進制的輸入訊號是不是一定要是10.10000
1 @2 |9 t6 n) d這樣有錯嗎?& R3 _# o7 ]4 ?0 l( T; `
另外有一點有點疑問,這種作法是不是只能做無號數的浮點數運算?  u) M: B! T2 g: C- I% X2 C& r8 p
-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
0 D! M& e; D& i$ q' E4 T1 p3 C- B3 T: f
ieee754 的 二進位浮點數格式在此 http://zh.wikipedia.org/wiki/IEEE_7544 v+ u8 Q/ K% R' D) Q9 h5 H! ^- M; O

0 ]* i1 C$ e+ ~+ e0 r9 @3 r這兩種格式轉換可用電路實現
  p0 ~+ _# |) l0 j9 V8 p! F! R! G3 w; p
然後再輸入到浮點數加法器運算
18#
發表於 2009-10-19 10:55:44 | 只看該作者
最近剛好有碰到類似的問題 , 感謝說明
19#
發表於 2009-10-19 12:13:41 | 只看該作者
請問可以直接對ieee754格式的a跟b做四則運算嗎?
) Y: o4 H& w# j(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?
, f: [3 ^. [2 o不對
+ c4 K+ ~! a' N2 R只有浮點數加法器和乘法器
, T& C2 d9 `" |5 X, v8 G/ I所以負數要用二補數
6 {7 D& y8 h4 s. T# JC2010000=1_10000100_0000001_0000_0000_0000_00005 P; e4 n: o8 [
二補數=1101_1111.1100
' g  D( Z% c, z- k2 u4 Q22.25=0001_0110.0100
: V  r2 d. v8 B6 k; u1 x3 R8 Z4 w) b兩者相加即為答案-10, 透過浮點數加法器輸出為C12000003 [, y; q; U) _! g6 O) U

% R5 O* X1 T' I[ 本帖最後由 masonchung 於 2009-11-2 11:12 AM 編輯 ]
20#
發表於 2009-10-19 14:05:59 | 只看該作者
此二補數 1101_1111.1100 表示成IEEE754格式為420100006 r6 j$ D6 D# V3 Y1 ~$ r
所以真正的浮點加法器輸入的MSB只要反相 就變成二補數
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2025-4-2 05:55 PM , Processed in 0.217012 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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