Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-9-2 20:23:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
想請問有設計過IEEE 754 浮點數 規則的程式的大大.....
8 y) C$ e4 f: t+ Z9 t1 d. \, i  Y' S% R7 N1 M7 J+ L$ a0 e
規則小弟是看的懂,不過疑問處在於
& g5 q7 r( I' F. B假設我設計一個簡單的浮點數加法器,輸入數值a跟b相加.- P& K$ z% D; Q6 j+ o; I* l2 f
那麼,我的"a如果是十進制10.5"  "b是2.125"! Q6 t7 X$ X/ X0 v! `7 @6 B
a跟b是要先正規化之後再行運算嗎?
/ Q' ]/ [0 A: S  W& z+ }這樣正規化之前,10.5要怎麼顯示成二進位?是固定位元顯示整數部份,7 t0 G: N8 G  [4 H' \
另一部份固定位元顯示小數部份..ex: 10.5=>1010.1
: X0 q% ^$ Z: T  J+ v5 G這樣輸入a之後變成10101,程式內部再將a[4:1]斷定成整數a[0]斷定成浮點數,/ [* @0 T+ a1 z3 O' ^9 Y
這樣設計對嗎?
5 I9 N+ M' A* M6 J我是剛接觸的菜鳥..還請大大們指教提拔....如果有相關code可以參考感激不盡m(_ _)m
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
推薦
 樓主| 發表於 2009-10-18 14:03:42 | 只看該作者
謝謝大大們的幫助,目前我已經完成了部分的程式,現在又遇到一點問題,想提出來跟大大們討論一下...8 f- c) N, @7 [9 `
想請問大大們~
# W7 o# _, M* r* Ga= 41B20000  (16進制- ieee754格式)  十進制22.25
8 N0 H% X) H3 \0 Y% g3 O% I9 xb=C2010000  (16進制- ieee754格式)   十進制-32.25
1 t: N9 o9 |. o$ h0 d2 z請問可以直接對ieee754格式的a跟b做四則運算嗎? 1 v2 J3 H- |$ b7 x! j3 a
(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?  q1 X6 n$ L) m. G9 d1 d
) M0 W+ [' H+ X" c# J9 L7 B& I
" e! p2 G4 u1 B1 [4 |9 k5 G
還是說一定要先做十進制的22.25+(-32.25)= -10 最後答案才用IEEE754表示?
, q: K4 Z) l7 i2 i3 |3 M-10的IEEE754表示=C12000008 U- b, N2 o: Y
7 \" N5 ]1 L& R
C2580000與C1200000好像不太一樣.' J8 D! }5 e! f
還是說要怎麼逆運算才可以求出-10?0 }& X# _" Q4 X7 Y& c" [) t
大大曉得嗎@@?
回復 支持 1 反對 0

使用道具 舉報

2#
發表於 2009-9-4 17:18:51 | 只看該作者
我之前也是這樣子用~
' U( ^3 N# b6 N( r4 i+ Y 4 f4 i" K( S! r& ]1 b5 Q
我覺得應該是ok的情況!
3#
 樓主| 發表於 2009-9-4 20:56:26 | 只看該作者
不過如果照這樣寫,感覺上小數點是固定的,不像浮點數的感覺耶....
4#
發表於 2009-9-8 20:48:56 | 只看該作者
您好
  L  d8 a1 J. i2 O) M1.如果a,b兩值還沒正規化,則先將a,b正規化,9 s( H1 R/ {, l8 ]9 \
2.將a,b尾數對齊
% S% [- O2 F3 }9 ?- d3.尾數相加
4 A9 ~3 o* H7 L1 C' p, L4.將結果正規化. `" _# i" a* S1 x3 k1 ^0 s* ~! ~
0 X) y- J& D; T" D/ d* r& i
您參考看看
5#
 樓主| 發表於 2009-9-16 21:38:06 | 只看該作者
大大~我陷在卡在將輸入數值做正規化的動作,! n& ^  _2 R0 c  E& x
假如輸入的a是10.5, 在程式裡面會變成10101串列輸入,假設我程式固定只有運算到小數第一位,' Y% j3 {4 Q+ u+ M7 k/ a
這樣可以抓到1010.1並且將其正規化,但是如果我輸入數值是整數的00100,這樣他要怎麼判別小數點的位置@@?" p: [" s0 R4 b8 ~) S' c: P1 G
他要怎麼判斷輸入的數值是不是浮點數?
6#
發表於 2009-9-17 08:51:20 | 只看該作者
您好8 k& Y  I0 m8 i6 e7 L
/ B( [* V  m% `( ]4 L% N
  a,b兩數要做浮點相加,那麼a,b兩值就要為浮點格式,
$ o7 f. ?' @$ X+ s你的問題不是卡在正規化,10.5=1010.1是定點小數,$ y- f" C% a% `! T$ W9 T, y9 T0 M# C$ ~
10101,00100都不是浮點格式,如何將之正規化,
: k, c  X- p$ Y3 {/ M( e$ {  t. k* f5 v不能拿兩個定點格式的值來做浮點運算,
7#
 樓主| 發表於 2009-9-17 21:27:31 | 只看該作者
大大~
7 ]. ~, L8 j( f' r' c# K請問您說的浮點格式,是像IEEE 754格式這種嗎?....還是??" R/ d' p9 n) v

' V; V/ k. d( \( l- S是怎樣的浮點數格式輸入到a才可以被正規化呢^^"~不好意思喔~新手問了一些蠢問題@@
8#
發表於 2009-9-18 09:04:41 | 只看該作者
您好. [; _# I# }: A  Z& m& l
  IEEE 754是浮點格式的一種,當然還有其他的,
2 d- }$ _9 C! b" g  V0 x 看你要用哪一種嚕,
( o5 @' O* }& |. @( m- T4 g8 N" Q' G0 E
如果你用IEEE 754,那麼輸入a,b值就要符合 IEEE 754格式
9#
 樓主| 發表於 2009-9-18 22:06:54 | 只看該作者
IEEE 754的浮點數格式 不是已經正規化了嗎?...
* c6 Y* \) q! o2 P! W, L5 u' E" a. P- U7 R' I+ o2 `: w8 i
沒辦法寫CODE讓輸入的串列資料,將十進致10.5二進致為1010.1輸入後再由程式正規化嗎?
10#
發表於 2009-9-20 11:40:30 | 只看該作者
您好
1 z4 y% l  ^3 f3 O, ]( B' y
+ z' }; b7 @% Y7 W/ D3 Y! I a,b不是已知的值嗎?為甚麼不直接用浮點格式來表示,
0 d* A4 @. r+ Q7 c1 v3 n* ?4 l7 \" t! a而要用定點再轉一次呢?
11#
 樓主| 發表於 2009-9-20 21:17:28 | 只看該作者
大大~" x. V  o$ U  C

. u  x8 A8 }8 i$ r# [你的意思是說 假設我程式可以算到小數第3位,輸入的a 10.5 就是變1010.100
* V" K+ a; a# e& \1 Z# M' c如果是整數1,則變成0001.000  這樣來做正規化?6 f; N" O. Z5 d1 w2 Y0 I; D
還是說Quartus II 有可以判定輸入式浮點數的語法嗎?
( Y5 H" ]7 G9 }: w
3 O5 G, z; d. d如果沒有的話也得要把輸入的數值做正規化將其輸出,否則也不會有大大說的浮點數格式的輸入吧@@?+ d$ n' R9 o- R7 |7 @" F  i+ h" X
不知道我這樣說有沒有錯...^^"
12#
發表於 2009-9-21 20:22:38 | 只看該作者
您好. ]) B- d8 j: K1 S; {% a
3 E+ \1 Y9 j/ D; B& u# d2 m
我的意思是你要自己算,將10.5或1先自己轉好成IEEE 754格式,
  r7 D( x9 e4 g* I6 L2 L然後在輸入到a,b

評分

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

查看全部評分

13#
 樓主| 發表於 2009-9-21 22:45:15 | 只看該作者
大大~
- `4 k6 c$ ^( }, J3 g: O" h4 @我知道你的意思了,不過我目前是需要把非IEEE 754格式的浮點數轉成IEEE 754格式.....: f9 o, B. o  y9 R: \- ^! _
這樣是不可能實現的嗎?^^"
14#
發表於 2009-9-22 22:21:46 | 只看該作者
可以實現8 e! J+ m2 m; Z0 `) c; G3 d8 U
請把了解規則 用電路可把非IEEE 754格式的浮點數(Fixed Point)轉成IEEE 754格式(Float Point)
4 ]7 S, B5 m7 G; o然後就可以當成浮點數加法器的輸入
6 s- Z8 z  {6 N: P& G6 w  h/ t, R1 i9 Q. m3 q6 ^% U
[ 本帖最後由 masonchung 於 2009-9-22 10:24 PM 編輯 ]
15#
 樓主| 發表於 2009-9-23 20:05:40 | 只看該作者
masonchung 大大~
9 F8 A4 B5 K! H; \
, o+ F+ x, Q( D! n8 M2 k+ ^如果要這樣做的話,我的A如果是十進制"2.5",並且可運算到小數點後第5位,二進制的輸入訊號是不是一定要是10.10000
1 z* r! {8 |. x- E這樣有錯嗎?% s8 W# q. U5 ~7 J2 Z* X- n5 b4 B3 ?
另外有一點有點疑問,這種作法是不是只能做無號數的浮點數運算?
3 p" T2 v9 b6 G7 i( O-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
* \% O7 _4 s! S0 B/ y, T8 x7 o) }2 @4 g- ], q
ieee754 的 二進位浮點數格式在此 http://zh.wikipedia.org/wiki/IEEE_754
* I* ~& i' r7 j: U# ]
  u* ]4 |1 F. K  q* [這兩種格式轉換可用電路實現 5 z7 |2 q0 h4 j2 K2 ?. {6 x( _

4 f: G5 M5 ?& T$ ]/ i然後再輸入到浮點數加法器運算
18#
發表於 2009-10-19 10:55:44 | 只看該作者
最近剛好有碰到類似的問題 , 感謝說明
19#
發表於 2009-10-19 12:13:41 | 只看該作者
請問可以直接對ieee754格式的a跟b做四則運算嗎?   [/ t( F. B1 p* X6 l, \+ l1 o
(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?
; g7 G, b6 {* H7 D不對
7 F* J6 U$ u. s6 P4 s% O3 P只有浮點數加法器和乘法器  O; q2 ?# L1 H7 b/ B3 q
所以負數要用二補數# M6 q6 G0 m. w; n* \) P
C2010000=1_10000100_0000001_0000_0000_0000_0000
, C& h# W- F8 u; e: K6 u8 @& v二補數=1101_1111.1100
! K4 r! i- Y8 w; C4 X) l22.25=0001_0110.0100
7 S; q. {" q& a+ E' r5 M  @: M兩者相加即為答案-10, 透過浮點數加法器輸出為C1200000( |* J6 _- K  A) D& y0 L! m# p) C

- T2 R) E% ?; N/ g+ z2 m, Z[ 本帖最後由 masonchung 於 2009-11-2 11:12 AM 編輯 ]
20#
發表於 2009-10-19 14:05:59 | 只看該作者
此二補數 1101_1111.1100 表示成IEEE754格式為42010000
( W" D/ r: R3 C" d: C6 `4 K: O所以真正的浮點加法器輸入的MSB只要反相 就變成二補數
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-6-14 01:23 PM , Processed in 0.170522 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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