Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-9-2 20:23:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
想請問有設計過IEEE 754 浮點數 規則的程式的大大.....
) [. r5 p; z  s: z4 i, x$ d" s; b$ Y. S% O/ O$ N
規則小弟是看的懂,不過疑問處在於
! S' t' Q, B( C假設我設計一個簡單的浮點數加法器,輸入數值a跟b相加.5 L# H* X: j9 Z
那麼,我的"a如果是十進制10.5"  "b是2.125"
3 [6 a/ H' x+ k8 oa跟b是要先正規化之後再行運算嗎?: b3 @9 g3 _1 i8 k5 h/ y
這樣正規化之前,10.5要怎麼顯示成二進位?是固定位元顯示整數部份,+ a$ S9 d1 }, F/ W8 Q4 B
另一部份固定位元顯示小數部份..ex: 10.5=>1010.1
- p# w" ]( S" Q這樣輸入a之後變成10101,程式內部再將a[4:1]斷定成整數a[0]斷定成浮點數,
, F2 i, Q/ M6 V1 A$ A- X這樣設計對嗎?) q, k* K0 `8 l' S* a, O5 t
我是剛接觸的菜鳥..還請大大們指教提拔....如果有相關code可以參考感激不盡m(_ _)m
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
推薦
 樓主| 發表於 2009-10-18 14:03:42 | 只看該作者
謝謝大大們的幫助,目前我已經完成了部分的程式,現在又遇到一點問題,想提出來跟大大們討論一下.../ y+ v' f! d; r) i& U. S
想請問大大們~" K' O- Y2 Q" v* P  k) P8 F
a= 41B20000  (16進制- ieee754格式)  十進制22.251 Z8 d" e+ p0 f5 M
b=C2010000  (16進制- ieee754格式)   十進制-32.25
. r+ e4 f% h8 \" F4 |, T9 F, {請問可以直接對ieee754格式的a跟b做四則運算嗎?
0 y& g8 ~" _# W! e, r; Q- B  V* R  W(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?0 L+ g) q; O" G4 H9 q/ t  P; K7 {

$ f- j2 i+ M" ?; X& }
) h$ l! V% F: P. @3 V還是說一定要先做十進制的22.25+(-32.25)= -10 最後答案才用IEEE754表示?
+ [$ Q5 T) ~+ _-10的IEEE754表示=C12000004 I  `5 E! d" @3 l; N
* n3 X7 n4 h8 M$ x
C2580000與C1200000好像不太一樣.: k, r+ E; e1 z& C7 a- ^
還是說要怎麼逆運算才可以求出-10?
  _% f5 }" \) y  n大大曉得嗎@@?
回復 支持 1 反對 0

使用道具 舉報

2#
發表於 2009-9-4 17:18:51 | 只看該作者
我之前也是這樣子用~% U, V7 {2 R2 h- Z! N0 q6 \% F

& {3 {2 [  ?& S% z& C3 W* j8 K我覺得應該是ok的情況!
3#
 樓主| 發表於 2009-9-4 20:56:26 | 只看該作者
不過如果照這樣寫,感覺上小數點是固定的,不像浮點數的感覺耶....
4#
發表於 2009-9-8 20:48:56 | 只看該作者
您好
( q1 ?2 ^" w' A1.如果a,b兩值還沒正規化,則先將a,b正規化,0 E0 g+ q: o! _2 b
2.將a,b尾數對齊9 p; j% n& n2 i: n9 j# S6 z
3.尾數相加
5 Z: N9 i# S; {* z4.將結果正規化" L" h1 G( k' Q, `- S  n

4 T; o+ W& V; N" f! X( b您參考看看
5#
 樓主| 發表於 2009-9-16 21:38:06 | 只看該作者
大大~我陷在卡在將輸入數值做正規化的動作,$ q* F) c; o; Y( ^9 U& D7 Y% f
假如輸入的a是10.5, 在程式裡面會變成10101串列輸入,假設我程式固定只有運算到小數第一位,
) e- H9 f8 A! j9 a) ?這樣可以抓到1010.1並且將其正規化,但是如果我輸入數值是整數的00100,這樣他要怎麼判別小數點的位置@@?! X( l" |2 h, \8 B' r0 d$ U
他要怎麼判斷輸入的數值是不是浮點數?
6#
發表於 2009-9-17 08:51:20 | 只看該作者
您好
( z/ x! C- [+ j! a/ w( d- h, m4 ]: D7 x
  a,b兩數要做浮點相加,那麼a,b兩值就要為浮點格式,
$ v4 Z* B, ?) p  D; w* c. t你的問題不是卡在正規化,10.5=1010.1是定點小數,
! k; A1 k# Z5 U% m10101,00100都不是浮點格式,如何將之正規化,* B& B! I* \* U. N0 F  s, @! w
不能拿兩個定點格式的值來做浮點運算,
7#
 樓主| 發表於 2009-9-17 21:27:31 | 只看該作者
大大~# z4 p  M  A9 c( B' U+ P, P
請問您說的浮點格式,是像IEEE 754格式這種嗎?....還是??
% n$ w5 T, [' ^1 l5 i) N$ M% h  w+ F5 P3 i- B4 W! L3 ]% d
是怎樣的浮點數格式輸入到a才可以被正規化呢^^"~不好意思喔~新手問了一些蠢問題@@
8#
發表於 2009-9-18 09:04:41 | 只看該作者
您好
1 Z! R" n3 c2 @  IEEE 754是浮點格式的一種,當然還有其他的,
# j2 `8 D- w3 T7 K4 w0 w$ v 看你要用哪一種嚕,: I9 V3 }# \/ ^1 n( g) f

0 o# ]: x4 z8 p% S4 B1 d) T如果你用IEEE 754,那麼輸入a,b值就要符合 IEEE 754格式
9#
 樓主| 發表於 2009-9-18 22:06:54 | 只看該作者
IEEE 754的浮點數格式 不是已經正規化了嗎?..." ~8 J+ I% }9 K' v
+ h8 Y" |. {% _7 m9 E
沒辦法寫CODE讓輸入的串列資料,將十進致10.5二進致為1010.1輸入後再由程式正規化嗎?
10#
發表於 2009-9-20 11:40:30 | 只看該作者
您好
: c0 q  w: o9 X/ @# r1 u
8 H; u2 c. ]; n a,b不是已知的值嗎?為甚麼不直接用浮點格式來表示,
9 U8 O0 c9 w) B7 i3 n+ t9 @而要用定點再轉一次呢?
11#
 樓主| 發表於 2009-9-20 21:17:28 | 只看該作者
大大~
7 ^2 q7 |; ?% k) x: t( ]% Z$ O* P, C, z2 [5 E0 U7 r6 |
你的意思是說 假設我程式可以算到小數第3位,輸入的a 10.5 就是變1010.100( y6 P! k# t+ a1 M
如果是整數1,則變成0001.000  這樣來做正規化?
; Y2 Z! H4 [8 ?) w) S還是說Quartus II 有可以判定輸入式浮點數的語法嗎?8 B; R9 o  P. E: n  g& c

2 V  l! Y$ K& l5 r# F8 a! \如果沒有的話也得要把輸入的數值做正規化將其輸出,否則也不會有大大說的浮點數格式的輸入吧@@?5 X; A! s7 W" X4 q
不知道我這樣說有沒有錯...^^"
12#
發表於 2009-9-21 20:22:38 | 只看該作者
您好/ K' O, Q$ o8 D5 Q6 o  A
1 ^  g3 K1 o" i0 Y0 Y
我的意思是你要自己算,將10.5或1先自己轉好成IEEE 754格式,# g; h1 c5 R4 R" y7 y) A. D1 m
然後在輸入到a,b

評分

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

查看全部評分

13#
 樓主| 發表於 2009-9-21 22:45:15 | 只看該作者
大大~  `" m# P, q- ^! T! w3 C
我知道你的意思了,不過我目前是需要把非IEEE 754格式的浮點數轉成IEEE 754格式.....
/ L- j* f0 y3 l/ F' X, z這樣是不可能實現的嗎?^^"
14#
發表於 2009-9-22 22:21:46 | 只看該作者
可以實現( @6 @) i6 V! M
請把了解規則 用電路可把非IEEE 754格式的浮點數(Fixed Point)轉成IEEE 754格式(Float Point)
0 S& S' G" ^+ C3 W5 j4 C然後就可以當成浮點數加法器的輸入
) S" L, p6 d& i+ o8 o, c. ?* z* @9 V8 V% }
[ 本帖最後由 masonchung 於 2009-9-22 10:24 PM 編輯 ]
15#
 樓主| 發表於 2009-9-23 20:05:40 | 只看該作者
masonchung 大大~7 W2 b. o# o% }6 J7 E0 a$ [
6 h, y8 A% m% S$ m# J
如果要這樣做的話,我的A如果是十進制"2.5",並且可運算到小數點後第5位,二進制的輸入訊號是不是一定要是10.10000
# N- H. }8 o( n* B6 z這樣有錯嗎?( e2 P( X* P( Z/ R
另外有一點有點疑問,這種作法是不是只能做無號數的浮點數運算?4 Y9 @3 A: f0 v0 t6 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+ J3 e; h2 b3 i9 v4 ]) ^" V, R, g
: [5 Y; Q+ b1 u8 O. A4 j
ieee754 的 二進位浮點數格式在此 http://zh.wikipedia.org/wiki/IEEE_754, _) l' f& `( F- e6 y' R* H

+ B% t+ `3 ^0 g0 ?" `' u7 t這兩種格式轉換可用電路實現
# A; {0 H& g$ n/ j
  z1 |8 ~+ i! }4 L7 a然後再輸入到浮點數加法器運算
18#
發表於 2009-10-19 10:55:44 | 只看該作者
最近剛好有碰到類似的問題 , 感謝說明
19#
發表於 2009-10-19 12:13:41 | 只看該作者
請問可以直接對ieee754格式的a跟b做四則運算嗎?
, x! H' f5 U" _- a0 m(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?
9 C$ r5 G, n- a5 J2 y不對! J8 R0 l# }! F* F- G; k$ w8 q
只有浮點數加法器和乘法器
- L3 b+ g  t, t8 M, V2 Z6 i# ^. M所以負數要用二補數/ v, |/ Y: L/ `) c$ a1 z
C2010000=1_10000100_0000001_0000_0000_0000_0000
4 x. b: o* T- V$ r' X0 q二補數=1101_1111.1100
0 x6 I% t* O! B% N5 F- B22.25=0001_0110.0100
2 s( r3 j8 N. y& N. T4 R& E6 i7 Q& R兩者相加即為答案-10, 透過浮點數加法器輸出為C1200000# N/ W- Z- w  Z

- a6 g4 v+ G% X/ v[ 本帖最後由 masonchung 於 2009-11-2 11:12 AM 編輯 ]
20#
發表於 2009-10-19 14:05:59 | 只看該作者
此二補數 1101_1111.1100 表示成IEEE754格式為420100005 L% g8 g; C( O! r8 l  q% `3 I
所以真正的浮點加法器輸入的MSB只要反相 就變成二補數
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-6-14 12:32 AM , Processed in 0.138518 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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