Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-9-2 20:23:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
想請問有設計過IEEE 754 浮點數 規則的程式的大大.....
, z) K5 V6 }2 i& I! I8 N3 x) x
! i+ _+ h( I7 `8 O* m0 U- p規則小弟是看的懂,不過疑問處在於6 E, I3 ~/ U7 O2 [' k
假設我設計一個簡單的浮點數加法器,輸入數值a跟b相加., E; y% E. @9 @- w6 f4 U! Z
那麼,我的"a如果是十進制10.5"  "b是2.125"" d  k; z! F! B) Y, c2 n, e# A+ J: v
a跟b是要先正規化之後再行運算嗎?
. i* {" j3 U" m$ X: Z4 O這樣正規化之前,10.5要怎麼顯示成二進位?是固定位元顯示整數部份,; W4 q" {* r! d
另一部份固定位元顯示小數部份..ex: 10.5=>1010.1
% o& E1 G" A) o2 l( [) V這樣輸入a之後變成10101,程式內部再將a[4:1]斷定成整數a[0]斷定成浮點數,2 `7 F" ?* X5 ^2 [! W
這樣設計對嗎?: d( g% \! ?+ u
我是剛接觸的菜鳥..還請大大們指教提拔....如果有相關code可以參考感激不盡m(_ _)m
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
推薦
 樓主| 發表於 2009-10-18 14:03:42 | 只看該作者
謝謝大大們的幫助,目前我已經完成了部分的程式,現在又遇到一點問題,想提出來跟大大們討論一下...8 X& O, c% t2 E
想請問大大們~
. Y) }, C# G; d# F. P! V9 r( Sa= 41B20000  (16進制- ieee754格式)  十進制22.25
# y6 B4 X0 _5 M1 a) Q7 }: [4 vb=C2010000  (16進制- ieee754格式)   十進制-32.25
' o: u+ {; e+ E' Z請問可以直接對ieee754格式的a跟b做四則運算嗎?
3 j# _4 c% g: |8 O# E6 f4 R(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?
: x0 v/ B6 c$ u8 d4 i& Q 9 U5 U) F4 M' O5 D
) u9 h- i0 S% k% u: d1 K. Q# v
還是說一定要先做十進制的22.25+(-32.25)= -10 最後答案才用IEEE754表示?
0 ]$ c7 t! ?! ^8 A9 p-10的IEEE754表示=C12000006 s4 F: t8 A2 ^/ ]  ~! U# I' e" u

* d8 I. u" X1 r- l# ]C2580000與C1200000好像不太一樣.( _, R% |! b: x; J
還是說要怎麼逆運算才可以求出-10?
6 o9 z) Z  I) k大大曉得嗎@@?
回復 支持 1 反對 0

使用道具 舉報

2#
發表於 2009-9-4 17:18:51 | 只看該作者
我之前也是這樣子用~# U6 r6 M* w. T
5 t+ g! L1 u) C% F: B  M
我覺得應該是ok的情況!
3#
 樓主| 發表於 2009-9-4 20:56:26 | 只看該作者
不過如果照這樣寫,感覺上小數點是固定的,不像浮點數的感覺耶....
4#
發表於 2009-9-8 20:48:56 | 只看該作者
您好
8 {) x: u. _. N- A7 w2 v! j1.如果a,b兩值還沒正規化,則先將a,b正規化,
6 e$ ?3 U% I6 E& _$ w0 F) m, a2.將a,b尾數對齊. J5 T& n! p6 W$ f& u; \. k0 M
3.尾數相加3 ~( l! b" Q7 m
4.將結果正規化( r8 k& E; @9 R; P
$ h  J+ W6 D9 b' A
您參考看看
5#
 樓主| 發表於 2009-9-16 21:38:06 | 只看該作者
大大~我陷在卡在將輸入數值做正規化的動作,4 Q0 K. G3 s3 H4 H' r
假如輸入的a是10.5, 在程式裡面會變成10101串列輸入,假設我程式固定只有運算到小數第一位,
3 j, f% ~; i. Z1 G. C: `  f這樣可以抓到1010.1並且將其正規化,但是如果我輸入數值是整數的00100,這樣他要怎麼判別小數點的位置@@?, i, T9 [# [% B3 q
他要怎麼判斷輸入的數值是不是浮點數?
6#
發表於 2009-9-17 08:51:20 | 只看該作者
您好
) e2 j8 n1 |; R0 H2 d6 v$ `
/ h. Y$ j( ~  G% A" @+ e! _+ Z  a,b兩數要做浮點相加,那麼a,b兩值就要為浮點格式,* h( w6 r& j1 m4 ~: ?& k
你的問題不是卡在正規化,10.5=1010.1是定點小數,! b+ \, n/ r* M5 n
10101,00100都不是浮點格式,如何將之正規化,
3 J( c5 A2 S7 j! K; P0 b# ~# K% m不能拿兩個定點格式的值來做浮點運算,
7#
 樓主| 發表於 2009-9-17 21:27:31 | 只看該作者
大大~2 j* b/ b6 \. B2 ]
請問您說的浮點格式,是像IEEE 754格式這種嗎?....還是??
5 a. L0 z' R  l6 ]6 E
- V5 n' F( \3 H9 L是怎樣的浮點數格式輸入到a才可以被正規化呢^^"~不好意思喔~新手問了一些蠢問題@@
8#
發表於 2009-9-18 09:04:41 | 只看該作者
您好: ]' t# v4 J4 j8 ?9 N
  IEEE 754是浮點格式的一種,當然還有其他的,( w9 E7 G" Z& e2 `
看你要用哪一種嚕,! ^0 _) t, f3 A* k
. E: e' v+ Q, ~  _* L& {. s  x2 |
如果你用IEEE 754,那麼輸入a,b值就要符合 IEEE 754格式
9#
 樓主| 發表於 2009-9-18 22:06:54 | 只看該作者
IEEE 754的浮點數格式 不是已經正規化了嗎?...2 r8 j+ R$ R+ T! Z+ Z
* f6 }  k: c- B! i2 _
沒辦法寫CODE讓輸入的串列資料,將十進致10.5二進致為1010.1輸入後再由程式正規化嗎?
10#
發表於 2009-9-20 11:40:30 | 只看該作者
您好
9 T; [# C( P; @# c: A+ Q
2 F/ v$ c* X0 i9 o) W a,b不是已知的值嗎?為甚麼不直接用浮點格式來表示,
& K& ^3 U. [  r- ?, J2 @而要用定點再轉一次呢?
11#
 樓主| 發表於 2009-9-20 21:17:28 | 只看該作者
大大~
8 k. w! h9 K8 V1 x; R. {+ v
3 a5 F6 z7 i! i6 M你的意思是說 假設我程式可以算到小數第3位,輸入的a 10.5 就是變1010.100
6 f8 L% y9 q- \1 ~2 l/ o- q如果是整數1,則變成0001.000  這樣來做正規化?
) c: r+ F5 ]. F/ C0 S2 q還是說Quartus II 有可以判定輸入式浮點數的語法嗎?
8 q; b& [9 R/ P" p5 a2 r& \
3 R9 j$ \) H% k如果沒有的話也得要把輸入的數值做正規化將其輸出,否則也不會有大大說的浮點數格式的輸入吧@@?' ?/ W6 q6 b2 i4 Q
不知道我這樣說有沒有錯...^^"
12#
發表於 2009-9-21 20:22:38 | 只看該作者
您好# D+ S  {) h) _4 q, M; D& X$ k
. M6 G' V) ~# {) o
我的意思是你要自己算,將10.5或1先自己轉好成IEEE 754格式,
( ]7 A. e2 t, U3 i2 ?/ C9 |' L然後在輸入到a,b

評分

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

查看全部評分

13#
 樓主| 發表於 2009-9-21 22:45:15 | 只看該作者
大大~
% P; m$ w' z, y4 Q! V  ]) t我知道你的意思了,不過我目前是需要把非IEEE 754格式的浮點數轉成IEEE 754格式.....
! _/ ~, g0 `1 {! V. J9 }這樣是不可能實現的嗎?^^"
14#
發表於 2009-9-22 22:21:46 | 只看該作者
可以實現
* D" R# _! N* z1 h+ ~* ?  `# e: r請把了解規則 用電路可把非IEEE 754格式的浮點數(Fixed Point)轉成IEEE 754格式(Float Point)5 D! G. [8 v: _1 Y  w/ s
然後就可以當成浮點數加法器的輸入& A( v+ Z; ^% H2 P% l8 I3 k

+ d2 d3 x6 k( I[ 本帖最後由 masonchung 於 2009-9-22 10:24 PM 編輯 ]
15#
 樓主| 發表於 2009-9-23 20:05:40 | 只看該作者
masonchung 大大~# w1 s2 y' a3 \
0 B8 |: z( G1 Y7 c" ^
如果要這樣做的話,我的A如果是十進制"2.5",並且可運算到小數點後第5位,二進制的輸入訊號是不是一定要是10.10000
+ q; b: _0 `/ m( D這樣有錯嗎?: h! S- R, u9 S$ b: w! u
另外有一點有點疑問,這種作法是不是只能做無號數的浮點數運算?+ [- O8 g, 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
1 |6 |" q8 b/ F( T+ }$ C/ S' f1 S+ O& P2 T- H5 P" r0 b# B
ieee754 的 二進位浮點數格式在此 http://zh.wikipedia.org/wiki/IEEE_754( c+ X7 A8 L3 ^
7 z: Z/ V9 G$ P( m9 A9 f
這兩種格式轉換可用電路實現
6 v3 ]( t0 W' U) a' }6 ]1 Q8 w) A# P9 [, p, ~: m; K6 x# k
然後再輸入到浮點數加法器運算
18#
發表於 2009-10-19 10:55:44 | 只看該作者
最近剛好有碰到類似的問題 , 感謝說明
19#
發表於 2009-10-19 12:13:41 | 只看該作者
請問可以直接對ieee754格式的a跟b做四則運算嗎?
* u. W; N. u0 p' k(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?' S% e0 ^! i, c) Z3 O
不對, I* V2 a! N* G, |- v+ v* x
只有浮點數加法器和乘法器
9 G0 i6 n3 j- _- }0 q1 N! [! U所以負數要用二補數
6 h+ n1 n+ M) t. o! G, {. N9 \4 t# HC2010000=1_10000100_0000001_0000_0000_0000_0000
; S* |" j" C, Y- t& d( z1 w二補數=1101_1111.1100
  z) m! o" g+ G; @# c22.25=0001_0110.0100! l. a0 z8 v9 k# G
兩者相加即為答案-10, 透過浮點數加法器輸出為C1200000
! K6 ~; f  M" n, x7 k) U8 p5 T$ a7 T, L3 x
[ 本帖最後由 masonchung 於 2009-11-2 11:12 AM 編輯 ]
20#
發表於 2009-10-19 14:05:59 | 只看該作者
此二補數 1101_1111.1100 表示成IEEE754格式為42010000
/ J- ~* s  M/ c/ ~# I; F# U6 U1 K所以真正的浮點加法器輸入的MSB只要反相 就變成二補數
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-11-16 09:56 AM , Processed in 0.187010 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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