Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-9-2 20:23:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
想請問有設計過IEEE 754 浮點數 規則的程式的大大.....7 D) h, u5 X1 x0 n

$ y) h4 \  K( a# u4 ?+ c. A規則小弟是看的懂,不過疑問處在於2 b8 q0 J$ D: x* K/ f; U
假設我設計一個簡單的浮點數加法器,輸入數值a跟b相加.# w! b$ G' a7 u/ d2 Q
那麼,我的"a如果是十進制10.5"  "b是2.125"/ t! t3 d2 ^3 Y- w
a跟b是要先正規化之後再行運算嗎?6 _- G5 E, U9 b8 p2 D
這樣正規化之前,10.5要怎麼顯示成二進位?是固定位元顯示整數部份,1 V" R8 p5 G* Y7 V3 Y  T
另一部份固定位元顯示小數部份..ex: 10.5=>1010.1
: n* f" L5 x$ b5 Q' n( b這樣輸入a之後變成10101,程式內部再將a[4:1]斷定成整數a[0]斷定成浮點數,
. x- H+ O, G  [- e這樣設計對嗎?' I) s' {5 H# m, u4 Y
我是剛接觸的菜鳥..還請大大們指教提拔....如果有相關code可以參考感激不盡m(_ _)m
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
推薦
 樓主| 發表於 2009-10-18 14:03:42 | 只看該作者
謝謝大大們的幫助,目前我已經完成了部分的程式,現在又遇到一點問題,想提出來跟大大們討論一下.... C9 P' l, W& w2 V9 _' d$ r
想請問大大們~$ e, B# e) y* I8 T9 K
a= 41B20000  (16進制- ieee754格式)  十進制22.25
+ J7 d. O" o1 m- Ob=C2010000  (16進制- ieee754格式)   十進制-32.25
4 {6 \& ^- |2 ?& W/ i請問可以直接對ieee754格式的a跟b做四則運算嗎?
; a1 i# i9 b8 T, d6 @2 T& p& ^! p(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?
$ v8 h3 ]$ N1 h0 }8 ~2 e + [+ V) z4 l) L, m- x( h

9 q% h/ W* H& ?0 w還是說一定要先做十進制的22.25+(-32.25)= -10 最後答案才用IEEE754表示?5 A& R" d! c4 \  O* F
-10的IEEE754表示=C1200000
3 q. @3 c5 K# @* ~6 L. n) t- d5 i
4 o/ [2 `' U- Y( DC2580000與C1200000好像不太一樣.+ }( v8 p1 ]% N, B' d3 M
還是說要怎麼逆運算才可以求出-10?: x$ {9 [6 i7 y; t: B' E
大大曉得嗎@@?
回復 支持 1 反對 0

使用道具 舉報

2#
發表於 2009-9-4 17:18:51 | 只看該作者
我之前也是這樣子用~: e# y  ~4 d" `& V) I( B
. Z0 D' C7 ]4 f
我覺得應該是ok的情況!
3#
 樓主| 發表於 2009-9-4 20:56:26 | 只看該作者
不過如果照這樣寫,感覺上小數點是固定的,不像浮點數的感覺耶....
4#
發表於 2009-9-8 20:48:56 | 只看該作者
您好
0 X1 J- F3 f9 X( K1.如果a,b兩值還沒正規化,則先將a,b正規化,
) u( p( P4 w  R$ r2.將a,b尾數對齊
! T) U. C* ]6 A" g, i; E0 n( [3.尾數相加, r4 ]. Q2 o: Y+ g+ u: \
4.將結果正規化
; i2 F; L8 y+ O: L2 S, H
) o2 P- g2 V4 y/ s( c% o您參考看看
5#
 樓主| 發表於 2009-9-16 21:38:06 | 只看該作者
大大~我陷在卡在將輸入數值做正規化的動作," i: Y: h8 C7 `  x' S2 a
假如輸入的a是10.5, 在程式裡面會變成10101串列輸入,假設我程式固定只有運算到小數第一位,2 c- c/ O! h( h. u& C2 w
這樣可以抓到1010.1並且將其正規化,但是如果我輸入數值是整數的00100,這樣他要怎麼判別小數點的位置@@?
$ h4 [3 N) ]4 ^4 N( ]他要怎麼判斷輸入的數值是不是浮點數?
6#
發表於 2009-9-17 08:51:20 | 只看該作者
您好
# p* r8 g9 z0 A: J0 p5 @% b, d& A! n
  a,b兩數要做浮點相加,那麼a,b兩值就要為浮點格式,# t0 x6 o* \- {9 x
你的問題不是卡在正規化,10.5=1010.1是定點小數,
) _6 \- W  r6 k" B* F10101,00100都不是浮點格式,如何將之正規化,- {$ g$ [7 p" f$ k& D) s8 ]) a: q
不能拿兩個定點格式的值來做浮點運算,
7#
 樓主| 發表於 2009-9-17 21:27:31 | 只看該作者
大大~
$ F% D) c5 [% L9 q( C3 j請問您說的浮點格式,是像IEEE 754格式這種嗎?....還是??
9 u. ^$ p! v1 ^2 k4 x/ D* `; @- ?" U& s, ~7 W
是怎樣的浮點數格式輸入到a才可以被正規化呢^^"~不好意思喔~新手問了一些蠢問題@@
8#
發表於 2009-9-18 09:04:41 | 只看該作者
您好
3 E; J) S; J# f: q  IEEE 754是浮點格式的一種,當然還有其他的,1 Q; I7 N  T, S0 A
看你要用哪一種嚕,
8 c7 V/ b) D* u9 X- j& D1 l8 ^& S4 N9 Q" |
如果你用IEEE 754,那麼輸入a,b值就要符合 IEEE 754格式
9#
 樓主| 發表於 2009-9-18 22:06:54 | 只看該作者
IEEE 754的浮點數格式 不是已經正規化了嗎?...
+ x8 X0 Z1 `5 o" M, G
2 `5 }5 M/ c- D' t) y沒辦法寫CODE讓輸入的串列資料,將十進致10.5二進致為1010.1輸入後再由程式正規化嗎?
10#
發表於 2009-9-20 11:40:30 | 只看該作者
您好" e1 V9 ]# c. A
. {6 |, \& l# n. y  @$ h
a,b不是已知的值嗎?為甚麼不直接用浮點格式來表示,! l$ z; _1 |1 S
而要用定點再轉一次呢?
11#
 樓主| 發表於 2009-9-20 21:17:28 | 只看該作者
大大~% |" ^/ D6 R0 o. @6 S

9 M3 Q5 P  A1 P2 I0 r  M+ u0 E你的意思是說 假設我程式可以算到小數第3位,輸入的a 10.5 就是變1010.1006 g0 H: }7 `: j
如果是整數1,則變成0001.000  這樣來做正規化?
6 f% F9 E* d  W; U3 O還是說Quartus II 有可以判定輸入式浮點數的語法嗎?
9 U9 R# u2 _1 ?6 V4 Z3 z8 i7 \) Q
如果沒有的話也得要把輸入的數值做正規化將其輸出,否則也不會有大大說的浮點數格式的輸入吧@@?3 L$ d: f1 M3 ?  g, y1 `
不知道我這樣說有沒有錯...^^"
12#
發表於 2009-9-21 20:22:38 | 只看該作者
您好
( X4 Q7 b8 t* L% N
! _, e6 L7 s8 \4 M我的意思是你要自己算,將10.5或1先自己轉好成IEEE 754格式,; Q0 K$ X2 q& B
然後在輸入到a,b

評分

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

查看全部評分

13#
 樓主| 發表於 2009-9-21 22:45:15 | 只看該作者
大大~
1 P+ l8 j+ E) f+ o% n我知道你的意思了,不過我目前是需要把非IEEE 754格式的浮點數轉成IEEE 754格式.....; p$ E* U5 P. P/ F8 H
這樣是不可能實現的嗎?^^"
14#
發表於 2009-9-22 22:21:46 | 只看該作者
可以實現
$ h" s& Z4 x5 V! V+ i2 b+ r/ ~請把了解規則 用電路可把非IEEE 754格式的浮點數(Fixed Point)轉成IEEE 754格式(Float Point)
# ~7 I: e" L0 v% M- z! p% ]然後就可以當成浮點數加法器的輸入
( V; g$ q% I6 ^2 M* d
  f, S* u- Y  h& o* q[ 本帖最後由 masonchung 於 2009-9-22 10:24 PM 編輯 ]
15#
 樓主| 發表於 2009-9-23 20:05:40 | 只看該作者
masonchung 大大~
6 ]8 K" P0 ]6 L# |) f
; ~5 I4 e$ H# H# S. X: N) x如果要這樣做的話,我的A如果是十進制"2.5",並且可運算到小數點後第5位,二進制的輸入訊號是不是一定要是10.10000# w9 I, z  q7 a& X
這樣有錯嗎?
6 X! k6 X- _, G* U另外有一點有點疑問,這種作法是不是只能做無號數的浮點數運算?
9 p/ ~9 j) a) C; M! |* |" S1 u2 F-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# W- W) R# d0 w4 p8 C! C
) P5 \6 K; i3 _* H4 o
ieee754 的 二進位浮點數格式在此 http://zh.wikipedia.org/wiki/IEEE_754/ o6 G! {4 x" D: @% Y
7 t) D# p5 `& h7 \
這兩種格式轉換可用電路實現
  C; z& k# p; u$ m$ L: T
+ x  G; q' v4 O3 |/ u1 C然後再輸入到浮點數加法器運算
18#
發表於 2009-10-19 10:55:44 | 只看該作者
最近剛好有碰到類似的問題 , 感謝說明
19#
發表於 2009-10-19 12:13:41 | 只看該作者
請問可以直接對ieee754格式的a跟b做四則運算嗎? # ~4 M' e5 E4 G! `9 K/ r0 |/ G
(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?
' _! [2 b& k0 T! E不對' m" ]* k% v  ~& ]9 O
只有浮點數加法器和乘法器
" I. Y% J! u- R& j所以負數要用二補數: o' ^" ?& s: B
C2010000=1_10000100_0000001_0000_0000_0000_0000
. q6 Q, _9 U2 g" B. x二補數=1101_1111.11004 U6 b4 {' n, R
22.25=0001_0110.0100
4 d5 Z$ @  G2 ~; j5 f5 j兩者相加即為答案-10, 透過浮點數加法器輸出為C1200000
. C, d+ S) Q/ o% [; Z
/ w) W4 w2 O- w  A( t7 ^[ 本帖最後由 masonchung 於 2009-11-2 11:12 AM 編輯 ]
20#
發表於 2009-10-19 14:05:59 | 只看該作者
此二補數 1101_1111.1100 表示成IEEE754格式為42010000
8 A: [3 O3 T" K/ w# x8 u2 W' i所以真正的浮點加法器輸入的MSB只要反相 就變成二補數
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2025-1-31 06:30 AM , Processed in 0.216013 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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