Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-9-2 20:23:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
想請問有設計過IEEE 754 浮點數 規則的程式的大大.....
3 \. A( h! q+ z+ s0 ~2 a: \6 d6 P+ y0 x, }# ?$ Y- ~6 y
規則小弟是看的懂,不過疑問處在於
( k" d1 G) q" U9 N- U假設我設計一個簡單的浮點數加法器,輸入數值a跟b相加.
* U8 p- v9 u/ m! v# ]& X那麼,我的"a如果是十進制10.5"  "b是2.125"2 N2 ~, S& x" I- f1 k
a跟b是要先正規化之後再行運算嗎?9 N9 U  G, B6 Q0 ~6 [! J) k
這樣正規化之前,10.5要怎麼顯示成二進位?是固定位元顯示整數部份,
3 p" p9 e2 {# }( `另一部份固定位元顯示小數部份..ex: 10.5=>1010.1& [* s) ?9 y4 \: b/ M' x. ?& m
這樣輸入a之後變成10101,程式內部再將a[4:1]斷定成整數a[0]斷定成浮點數,4 [. i/ ^; u5 h, J2 ]( P) A. E8 \
這樣設計對嗎?
( I9 ^3 i0 A1 R# q  _+ V; D1 q2 ?. e我是剛接觸的菜鳥..還請大大們指教提拔....如果有相關code可以參考感激不盡m(_ _)m
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
推薦
 樓主| 發表於 2009-10-18 14:03:42 | 只看該作者
謝謝大大們的幫助,目前我已經完成了部分的程式,現在又遇到一點問題,想提出來跟大大們討論一下...7 Z! i6 p* J7 @6 T/ J
想請問大大們~
8 v+ x* k# v$ s& X- U7 ]7 Ra= 41B20000  (16進制- ieee754格式)  十進制22.25+ k+ T9 u) a/ Z( h, }( [
b=C2010000  (16進制- ieee754格式)   十進制-32.25
* G+ l# C0 |4 a3 J0 n0 S請問可以直接對ieee754格式的a跟b做四則運算嗎? # H' v$ Y  n4 Y$ y. a
(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?
3 G" o  i* d+ ]4 r
$ Q( Z) {; _" \
, U) }8 V" O7 g4 o- `( p7 |1 Q還是說一定要先做十進制的22.25+(-32.25)= -10 最後答案才用IEEE754表示?
# r& Z1 {; k& v5 f5 I# }) E+ w  W-10的IEEE754表示=C1200000
+ K' q. t: J" p9 h0 C 5 a; `$ Q( s. N! I/ a  J6 E
C2580000與C1200000好像不太一樣.
/ A1 F' P* |+ ?7 X( H! q! L  S  ~還是說要怎麼逆運算才可以求出-10?
- V* N( C  U2 A; A8 {, p; k大大曉得嗎@@?
回復 支持 1 反對 0

使用道具 舉報

2#
發表於 2009-9-4 17:18:51 | 只看該作者
我之前也是這樣子用~
+ k8 ]7 n0 d& S) q& p1 s . J' j, O8 J- r
我覺得應該是ok的情況!
3#
 樓主| 發表於 2009-9-4 20:56:26 | 只看該作者
不過如果照這樣寫,感覺上小數點是固定的,不像浮點數的感覺耶....
4#
發表於 2009-9-8 20:48:56 | 只看該作者
您好* o% w; a) Y6 a2 C- L6 B
1.如果a,b兩值還沒正規化,則先將a,b正規化,/ X5 _6 f% n. X  `4 V/ f
2.將a,b尾數對齊
3 K7 y! j" D6 N/ W0 v4 z3.尾數相加$ G5 a) B8 k7 f
4.將結果正規化3 _( N6 L) T  ~( L4 G0 [# u, d  h
0 u+ O% F+ h! [# d
您參考看看
5#
 樓主| 發表於 2009-9-16 21:38:06 | 只看該作者
大大~我陷在卡在將輸入數值做正規化的動作,
; {& o) J3 `" b7 {8 ^假如輸入的a是10.5, 在程式裡面會變成10101串列輸入,假設我程式固定只有運算到小數第一位,% |! k' @: H$ S
這樣可以抓到1010.1並且將其正規化,但是如果我輸入數值是整數的00100,這樣他要怎麼判別小數點的位置@@?+ ]" R: ~  G$ w8 O
他要怎麼判斷輸入的數值是不是浮點數?
6#
發表於 2009-9-17 08:51:20 | 只看該作者
您好3 a) ?3 n; R9 H1 ^" }" c, Q

0 d7 q' A8 [$ |5 d+ w; _  a,b兩數要做浮點相加,那麼a,b兩值就要為浮點格式,9 e7 P9 |/ P0 m; e# k5 Y4 T! `
你的問題不是卡在正規化,10.5=1010.1是定點小數,7 g- n5 W4 P& [% A( Z% v
10101,00100都不是浮點格式,如何將之正規化,! ~/ F* r3 _1 p: c
不能拿兩個定點格式的值來做浮點運算,
7#
 樓主| 發表於 2009-9-17 21:27:31 | 只看該作者
大大~
+ z! ]# L4 t+ I8 Q% M* Z6 d請問您說的浮點格式,是像IEEE 754格式這種嗎?....還是??" q6 q0 D, u3 J/ y! C. x. i9 i

, u' }# m1 q; ~- e; A是怎樣的浮點數格式輸入到a才可以被正規化呢^^"~不好意思喔~新手問了一些蠢問題@@
8#
發表於 2009-9-18 09:04:41 | 只看該作者
您好: z6 s/ |! v$ z# p& F0 o8 u
  IEEE 754是浮點格式的一種,當然還有其他的,2 z  u6 b: V5 B0 a* K
看你要用哪一種嚕,
' P: b0 g( j! [* N6 C; Y, d2 P. Q, k( H; O* F- ^( [
如果你用IEEE 754,那麼輸入a,b值就要符合 IEEE 754格式
9#
 樓主| 發表於 2009-9-18 22:06:54 | 只看該作者
IEEE 754的浮點數格式 不是已經正規化了嗎?...5 `, B. ]8 {" T& X: |. q
& F3 J2 Q) R) f+ U# H
沒辦法寫CODE讓輸入的串列資料,將十進致10.5二進致為1010.1輸入後再由程式正規化嗎?
10#
發表於 2009-9-20 11:40:30 | 只看該作者
您好
2 }9 |: B, o8 h1 K, l) J7 G( X  S1 f4 K) ]
a,b不是已知的值嗎?為甚麼不直接用浮點格式來表示,
) B  q, U0 i! O6 `  k% f而要用定點再轉一次呢?
11#
 樓主| 發表於 2009-9-20 21:17:28 | 只看該作者
大大~6 K5 d! A" f- t0 f$ B; I% A4 x. l7 e
0 n6 J( j7 r/ C8 O$ ?( W* f% U3 k6 N* k
你的意思是說 假設我程式可以算到小數第3位,輸入的a 10.5 就是變1010.100) v7 @* `7 z* [" O7 n  U" r5 k' U+ Q
如果是整數1,則變成0001.000  這樣來做正規化?+ ]# n+ G* s/ Y9 k+ V
還是說Quartus II 有可以判定輸入式浮點數的語法嗎?
- S/ ]% T7 ?( R# b5 m+ A- E
7 ^0 B; K0 S9 b+ R% v如果沒有的話也得要把輸入的數值做正規化將其輸出,否則也不會有大大說的浮點數格式的輸入吧@@?- K3 f& {" _8 r1 [- |
不知道我這樣說有沒有錯...^^"
12#
發表於 2009-9-21 20:22:38 | 只看該作者
您好, n3 E% [# i: j- D
, p% c+ D6 T& F0 b
我的意思是你要自己算,將10.5或1先自己轉好成IEEE 754格式,% j% x1 ~1 `1 _. ^
然後在輸入到a,b

評分

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

查看全部評分

13#
 樓主| 發表於 2009-9-21 22:45:15 | 只看該作者
大大~
5 B) m% Z1 ]4 }3 `5 k( Z7 |我知道你的意思了,不過我目前是需要把非IEEE 754格式的浮點數轉成IEEE 754格式.....
" p. k/ v; `& I8 d3 A這樣是不可能實現的嗎?^^"
14#
發表於 2009-9-22 22:21:46 | 只看該作者
可以實現
0 _4 D( W5 H. ^4 Q請把了解規則 用電路可把非IEEE 754格式的浮點數(Fixed Point)轉成IEEE 754格式(Float Point)1 L, a) B- k% x6 r5 P7 Q3 o5 e
然後就可以當成浮點數加法器的輸入" V; ^8 z+ C( |  a" F0 ]

3 w  Q# v0 g% M7 d; q+ Y! h0 ]  Y[ 本帖最後由 masonchung 於 2009-9-22 10:24 PM 編輯 ]
15#
 樓主| 發表於 2009-9-23 20:05:40 | 只看該作者
masonchung 大大~  F/ f' k2 V" @3 ^

8 a2 w5 [' r1 Y  `% p1 t2 p如果要這樣做的話,我的A如果是十進制"2.5",並且可運算到小數點後第5位,二進制的輸入訊號是不是一定要是10.10000
8 L5 g' r: W6 n; P" X$ X這樣有錯嗎?
+ l7 s; M4 H2 e6 B, r2 L另外有一點有點疑問,這種作法是不是只能做無號數的浮點數運算?
. [! t* \/ y: R5 w" Y* j9 C) v6 T-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
' g( E. _9 H5 p9 K; J7 K2 A. m* t9 o5 d0 k1 s! r
ieee754 的 二進位浮點數格式在此 http://zh.wikipedia.org/wiki/IEEE_754
% D7 w- {8 N  t/ R0 A
2 L5 |( R* H! d, e0 a這兩種格式轉換可用電路實現
# C* k, K* H8 c4 H' T; \
4 n$ {0 h2 m, x3 ^然後再輸入到浮點數加法器運算
18#
發表於 2009-10-19 10:55:44 | 只看該作者
最近剛好有碰到類似的問題 , 感謝說明
19#
發表於 2009-10-19 12:13:41 | 只看該作者
請問可以直接對ieee754格式的a跟b做四則運算嗎?
( g0 i, G& z4 h/ s. |: G6 B  S$ o(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?
$ K, @0 I( Q& H. }! Q% O" i不對0 H+ h+ z% ]0 A( g
只有浮點數加法器和乘法器
" \* P* c' X4 y( Z所以負數要用二補數6 T2 B- |( z4 Y0 @2 s
C2010000=1_10000100_0000001_0000_0000_0000_00002 E9 `7 K- M/ [& g+ X
二補數=1101_1111.1100
9 O  E7 ?: N% U6 u" b22.25=0001_0110.01000 z# d+ Q) ^( G8 J& J
兩者相加即為答案-10, 透過浮點數加法器輸出為C1200000$ @8 p+ K" o! F5 D( u& k
' S. Y+ O) `0 p/ K7 i
[ 本帖最後由 masonchung 於 2009-11-2 11:12 AM 編輯 ]
20#
發表於 2009-10-19 14:05:59 | 只看該作者
此二補數 1101_1111.1100 表示成IEEE754格式為42010000; n$ p! v6 U2 ^5 G% k' d+ Q; B
所以真正的浮點加法器輸入的MSB只要反相 就變成二補數
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-8 06:55 AM , Processed in 0.126007 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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