Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-9-2 20:23:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
想請問有設計過IEEE 754 浮點數 規則的程式的大大.....
" V- N' ?# f% i( o, I
; o) s1 d( t- k) M, `/ a0 T! O/ [規則小弟是看的懂,不過疑問處在於
: D; Q1 _) Y6 t1 Z$ k  i假設我設計一個簡單的浮點數加法器,輸入數值a跟b相加./ e( D# a  ?  g
那麼,我的"a如果是十進制10.5"  "b是2.125"
, t% `! w7 Y* f9 n2 q: B, B, |1 ^a跟b是要先正規化之後再行運算嗎?# K" A! O4 o/ w/ u
這樣正規化之前,10.5要怎麼顯示成二進位?是固定位元顯示整數部份,
; r3 f  X: N/ A: B* {6 k' F  V另一部份固定位元顯示小數部份..ex: 10.5=>1010.1# X+ a4 G' l: s
這樣輸入a之後變成10101,程式內部再將a[4:1]斷定成整數a[0]斷定成浮點數,/ X- s6 r& g7 _4 ^
這樣設計對嗎?
4 _! g2 z. r5 {$ n9 I! h" m我是剛接觸的菜鳥..還請大大們指教提拔....如果有相關code可以參考感激不盡m(_ _)m
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
推薦
 樓主| 發表於 2009-10-18 14:03:42 | 只看該作者
謝謝大大們的幫助,目前我已經完成了部分的程式,現在又遇到一點問題,想提出來跟大大們討論一下...
+ s7 w" n3 ?+ g4 u& }/ ?想請問大大們~# Y( @2 q8 R( `3 c$ w* {7 @( ^5 Q
a= 41B20000  (16進制- ieee754格式)  十進制22.25
7 y/ Q4 Y7 o3 ^. a9 Ub=C2010000  (16進制- ieee754格式)   十進制-32.25
/ _  z; `% R+ J6 I請問可以直接對ieee754格式的a跟b做四則運算嗎?
: |9 r" B, M: k: d. L3 ~(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?% m& O6 M- R5 j( W, s; G3 `6 u) F% L  z
$ e/ T+ L, z8 i3 d2 @( u0 G; M

5 m7 k' S9 d% x; X5 d還是說一定要先做十進制的22.25+(-32.25)= -10 最後答案才用IEEE754表示?+ Q9 V* n) V$ Z6 p& X! p
-10的IEEE754表示=C1200000
9 s+ A/ W) c. M1 d7 c. N8 P
8 d/ g9 R& n, g; |8 V( ^4 [% ?% PC2580000與C1200000好像不太一樣.
& o, K7 g) ?7 T: j還是說要怎麼逆運算才可以求出-10?
; N' b" V8 K+ g1 m大大曉得嗎@@?
回復 支持 1 反對 0

使用道具 舉報

2#
發表於 2009-9-4 17:18:51 | 只看該作者
我之前也是這樣子用~# V4 |6 _) L( u8 F+ H" F) b! c

8 W4 e9 u$ {: G  ]% v- ~5 s- K( h) ^9 r我覺得應該是ok的情況!
3#
 樓主| 發表於 2009-9-4 20:56:26 | 只看該作者
不過如果照這樣寫,感覺上小數點是固定的,不像浮點數的感覺耶....
4#
發表於 2009-9-8 20:48:56 | 只看該作者
您好" D  w' r2 {: r
1.如果a,b兩值還沒正規化,則先將a,b正規化,8 b$ T" C9 X& }4 t- S
2.將a,b尾數對齊2 X( k" C9 s% s  c4 @
3.尾數相加
$ O# B+ C8 P- z, [( ]( H8 p4.將結果正規化
" s( U, X3 M1 X% R" G/ d
6 h3 Z. N5 _9 M3 L您參考看看
5#
 樓主| 發表於 2009-9-16 21:38:06 | 只看該作者
大大~我陷在卡在將輸入數值做正規化的動作,
6 p3 ^, U0 W7 n* J( ]; Y+ `假如輸入的a是10.5, 在程式裡面會變成10101串列輸入,假設我程式固定只有運算到小數第一位,% y' b7 e; {1 ~7 \1 b% i0 \1 p
這樣可以抓到1010.1並且將其正規化,但是如果我輸入數值是整數的00100,這樣他要怎麼判別小數點的位置@@?2 L4 y& ~; k3 ^' R# y9 Q( f
他要怎麼判斷輸入的數值是不是浮點數?
6#
發表於 2009-9-17 08:51:20 | 只看該作者
您好: L9 d5 x* G) x; @$ O/ g+ U& n9 N. I
1 x+ H2 @- ~8 Z$ [& n* k2 O- m
  a,b兩數要做浮點相加,那麼a,b兩值就要為浮點格式,5 X  n& g$ \( n9 a* ^. Y
你的問題不是卡在正規化,10.5=1010.1是定點小數,7 M5 o8 @2 Z# x/ n. t' p( Y4 J
10101,00100都不是浮點格式,如何將之正規化,
# ^4 n1 O3 n* d- h( D( K不能拿兩個定點格式的值來做浮點運算,
7#
 樓主| 發表於 2009-9-17 21:27:31 | 只看該作者
大大~
; r5 ~# k+ t1 q" B2 c- L# }; j請問您說的浮點格式,是像IEEE 754格式這種嗎?....還是??! K2 U2 P5 d' ~/ V! V, B
; Q# M/ G/ I; k' P' p* V
是怎樣的浮點數格式輸入到a才可以被正規化呢^^"~不好意思喔~新手問了一些蠢問題@@
8#
發表於 2009-9-18 09:04:41 | 只看該作者
您好7 U, i6 L7 l6 y7 r  z
  IEEE 754是浮點格式的一種,當然還有其他的,7 h! q% W3 I7 @. M( g7 f
看你要用哪一種嚕,! E& U7 `- T2 k
+ `; ]4 h# l: R. U9 }
如果你用IEEE 754,那麼輸入a,b值就要符合 IEEE 754格式
9#
 樓主| 發表於 2009-9-18 22:06:54 | 只看該作者
IEEE 754的浮點數格式 不是已經正規化了嗎?...$ t, N! |5 S9 P/ b

% M  x+ ~) o8 {3 l" I6 N1 `沒辦法寫CODE讓輸入的串列資料,將十進致10.5二進致為1010.1輸入後再由程式正規化嗎?
10#
發表於 2009-9-20 11:40:30 | 只看該作者
您好
6 o) P5 E: `2 i9 y7 I
8 O: h( T# P. o# b: \) D' O0 t a,b不是已知的值嗎?為甚麼不直接用浮點格式來表示,8 V# w9 s1 Q4 f' U9 X
而要用定點再轉一次呢?
11#
 樓主| 發表於 2009-9-20 21:17:28 | 只看該作者
大大~7 @, J& F/ }  x% d3 D9 S3 K

7 e; F( M, B8 R! A/ ?2 B# _你的意思是說 假設我程式可以算到小數第3位,輸入的a 10.5 就是變1010.100* ^) s' q7 K; r  M
如果是整數1,則變成0001.000  這樣來做正規化?( T; x' t9 D# {5 O! v
還是說Quartus II 有可以判定輸入式浮點數的語法嗎?
) I5 k  G: x6 N, ?6 x. v& Q  q. y. L9 _, }
如果沒有的話也得要把輸入的數值做正規化將其輸出,否則也不會有大大說的浮點數格式的輸入吧@@?, D' V% n3 g; a$ C/ u# P4 R, |, V3 {) p
不知道我這樣說有沒有錯...^^"
12#
發表於 2009-9-21 20:22:38 | 只看該作者
您好
( z, f: s/ O6 y; Q  S# s& p7 o- C: Z
我的意思是你要自己算,將10.5或1先自己轉好成IEEE 754格式,, `; [% S' I( Q
然後在輸入到a,b

評分

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

查看全部評分

13#
 樓主| 發表於 2009-9-21 22:45:15 | 只看該作者
大大~
, W! w; P" l& B我知道你的意思了,不過我目前是需要把非IEEE 754格式的浮點數轉成IEEE 754格式....." }3 B3 ^$ N, |3 g
這樣是不可能實現的嗎?^^"
14#
發表於 2009-9-22 22:21:46 | 只看該作者
可以實現; x) I* w, ]8 t2 i. X) f# O0 E
請把了解規則 用電路可把非IEEE 754格式的浮點數(Fixed Point)轉成IEEE 754格式(Float Point)
1 k8 F4 M& G' Q9 E8 w然後就可以當成浮點數加法器的輸入
7 H$ |6 g+ ~4 F! v) \3 _$ ^4 {- B' I* @% S( v
[ 本帖最後由 masonchung 於 2009-9-22 10:24 PM 編輯 ]
15#
 樓主| 發表於 2009-9-23 20:05:40 | 只看該作者
masonchung 大大~
5 v0 }6 T8 n( Z) g* b/ p. L- N- B
( s1 b+ I0 U8 D如果要這樣做的話,我的A如果是十進制"2.5",並且可運算到小數點後第5位,二進制的輸入訊號是不是一定要是10.10000
0 s0 L- S$ v3 _- g7 a! N" R& g, d這樣有錯嗎?
7 Q* z) t+ Z% J' l& ?另外有一點有點疑問,這種作法是不是只能做無號數的浮點數運算?
8 z) Q: ]" H) }) e-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/ r" A! r" r, y. a) k9 ^# F
  O9 I& P3 g' i* K
ieee754 的 二進位浮點數格式在此 http://zh.wikipedia.org/wiki/IEEE_754
, G0 L& D& Z3 a/ R* ]( ~7 t: Y% [1 c9 f4 d  b& z* b
這兩種格式轉換可用電路實現
6 q3 Z0 R. z& E" `2 q+ a7 G
  a. |$ Y" E: c6 _) z+ I1 Q6 c然後再輸入到浮點數加法器運算
18#
發表於 2009-10-19 10:55:44 | 只看該作者
最近剛好有碰到類似的問題 , 感謝說明
19#
發表於 2009-10-19 12:13:41 | 只看該作者
請問可以直接對ieee754格式的a跟b做四則運算嗎?
# j; |+ S' T" I9 |! ]# o% y(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?, A; M& l/ P, r* l' A
不對
7 U$ v& Z( X: z# X, U: @! Y只有浮點數加法器和乘法器
" H+ u+ ~! y% i所以負數要用二補數. D$ o# e2 F& Z+ A  V
C2010000=1_10000100_0000001_0000_0000_0000_0000
4 V; P1 ~$ E" d4 F' {1 J二補數=1101_1111.1100" V0 v5 [  f0 q3 U" A
22.25=0001_0110.0100
0 `6 n' ?- ?' W兩者相加即為答案-10, 透過浮點數加法器輸出為C1200000, x& g9 T9 ?; {, E' ?& R% l
, {! \7 Y0 p; |0 v  o9 H+ o
[ 本帖最後由 masonchung 於 2009-11-2 11:12 AM 編輯 ]
20#
發表於 2009-10-19 14:05:59 | 只看該作者
此二補數 1101_1111.1100 表示成IEEE754格式為42010000
* g6 D7 \, M: ~所以真正的浮點加法器輸入的MSB只要反相 就變成二補數
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2025-4-3 04:59 PM , Processed in 0.220013 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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