Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-9-2 20:23:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
想請問有設計過IEEE 754 浮點數 規則的程式的大大.....
& H) a9 U. W( S. e( n9 \" C) P) I6 {
規則小弟是看的懂,不過疑問處在於
, o* G1 k4 K+ g8 |+ r# g8 h  x假設我設計一個簡單的浮點數加法器,輸入數值a跟b相加.6 n+ ]/ R) _% R9 R; w
那麼,我的"a如果是十進制10.5"  "b是2.125"
- U* A! Z5 s" E- Q( Ca跟b是要先正規化之後再行運算嗎?
: a1 }0 ?0 R; V) j這樣正規化之前,10.5要怎麼顯示成二進位?是固定位元顯示整數部份,
! W; s7 H6 B7 B5 F) i另一部份固定位元顯示小數部份..ex: 10.5=>1010.12 E0 H& p7 p& B6 M7 ^
這樣輸入a之後變成10101,程式內部再將a[4:1]斷定成整數a[0]斷定成浮點數,; H, L" t8 j4 S) l6 Z3 E- l: A, N
這樣設計對嗎?: O0 T; l# [4 U  X
我是剛接觸的菜鳥..還請大大們指教提拔....如果有相關code可以參考感激不盡m(_ _)m
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
推薦
 樓主| 發表於 2009-10-18 14:03:42 | 只看該作者
謝謝大大們的幫助,目前我已經完成了部分的程式,現在又遇到一點問題,想提出來跟大大們討論一下...
; {2 [8 n2 \; o& L1 B' _. H想請問大大們~  r$ J+ ^: a: C+ h. [
a= 41B20000  (16進制- ieee754格式)  十進制22.25. s. I: Q4 K7 x5 v
b=C2010000  (16進制- ieee754格式)   十進制-32.25; U1 \2 a) x9 Q% g2 I
請問可以直接對ieee754格式的a跟b做四則運算嗎? 3 {* w6 v( t$ d. L* K9 Z6 U
(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?
1 t2 ?- M* y" d! B/ ^2 j
8 y7 v# f( W4 M5 h) [# P
. Y  o7 ]; w( w0 }還是說一定要先做十進制的22.25+(-32.25)= -10 最後答案才用IEEE754表示?" k1 W) n  @6 M6 [6 P" V
-10的IEEE754表示=C12000006 K/ u# s  Y1 f! u# b' N

( R; W, l& n6 u! i8 i3 ~4 GC2580000與C1200000好像不太一樣.5 g2 G2 O7 ~  V" s
還是說要怎麼逆運算才可以求出-10?
  S0 g2 d$ G+ [" i/ m7 t4 c% s3 j. I: v大大曉得嗎@@?
回復 支持 1 反對 0

使用道具 舉報

2#
發表於 2009-9-4 17:18:51 | 只看該作者
我之前也是這樣子用~: z  ?1 y( k4 }1 @4 c

2 b+ k% P5 D0 M2 e0 {! v4 t: k8 E: d我覺得應該是ok的情況!
3#
 樓主| 發表於 2009-9-4 20:56:26 | 只看該作者
不過如果照這樣寫,感覺上小數點是固定的,不像浮點數的感覺耶....
4#
發表於 2009-9-8 20:48:56 | 只看該作者
您好
* ]3 \7 i- \# U4 u0 C1 d+ T! e1.如果a,b兩值還沒正規化,則先將a,b正規化,
/ g: ?. @& I. {: t  E2.將a,b尾數對齊% {0 y& p% l* a6 v3 j7 N
3.尾數相加
, Q" ]6 x' a4 R  ?0 M- E4.將結果正規化+ H7 {+ [2 d1 y: p: Z
0 V+ Z) ~3 J& ]
您參考看看
5#
 樓主| 發表於 2009-9-16 21:38:06 | 只看該作者
大大~我陷在卡在將輸入數值做正規化的動作,
) `* S1 O; \' c' a7 ?, [假如輸入的a是10.5, 在程式裡面會變成10101串列輸入,假設我程式固定只有運算到小數第一位,/ \% l. Y! c9 @* e7 h5 N" g( @3 @
這樣可以抓到1010.1並且將其正規化,但是如果我輸入數值是整數的00100,這樣他要怎麼判別小數點的位置@@?
4 ?3 z+ q) |0 n他要怎麼判斷輸入的數值是不是浮點數?
6#
發表於 2009-9-17 08:51:20 | 只看該作者
您好
; L6 l/ g" U" H8 {! l( y+ h
+ t7 [9 V7 r) H5 ]  a,b兩數要做浮點相加,那麼a,b兩值就要為浮點格式,. |$ ?9 z+ ~, u( Q- F' D/ u
你的問題不是卡在正規化,10.5=1010.1是定點小數,
. G$ g) d* v& @* V9 l, E10101,00100都不是浮點格式,如何將之正規化,
$ j/ H3 h5 _! O* Y5 W不能拿兩個定點格式的值來做浮點運算,
7#
 樓主| 發表於 2009-9-17 21:27:31 | 只看該作者
大大~  O$ @& ^1 j* a7 ]$ Z* _; \; z8 M
請問您說的浮點格式,是像IEEE 754格式這種嗎?....還是??
7 v) z; r7 K2 C9 \1 }- N, W# ^, c8 Q
: |/ ^$ f; j/ V4 F是怎樣的浮點數格式輸入到a才可以被正規化呢^^"~不好意思喔~新手問了一些蠢問題@@
8#
發表於 2009-9-18 09:04:41 | 只看該作者
您好3 s# g& i" @% A0 h% g
  IEEE 754是浮點格式的一種,當然還有其他的,1 L- o8 @, V- P9 L) J" k8 |4 j
看你要用哪一種嚕,9 s4 h9 s& {7 d9 E9 |

* J2 m+ {, f. z3 N如果你用IEEE 754,那麼輸入a,b值就要符合 IEEE 754格式
9#
 樓主| 發表於 2009-9-18 22:06:54 | 只看該作者
IEEE 754的浮點數格式 不是已經正規化了嗎?..., v3 y. ]/ f1 I% P  h. V! s1 e& ^$ |
1 ]# f" K( N! Y( l9 b& V
沒辦法寫CODE讓輸入的串列資料,將十進致10.5二進致為1010.1輸入後再由程式正規化嗎?
10#
發表於 2009-9-20 11:40:30 | 只看該作者
您好% n8 }3 d1 I2 K  P8 A1 O" [
+ r& H" h3 m$ |0 B. d/ j- Z
a,b不是已知的值嗎?為甚麼不直接用浮點格式來表示,' [4 ?( `" s0 ~8 i
而要用定點再轉一次呢?
11#
 樓主| 發表於 2009-9-20 21:17:28 | 只看該作者
大大~2 g6 ?3 N9 c3 s/ z9 w
7 I# K5 c* C+ Z# d* _
你的意思是說 假設我程式可以算到小數第3位,輸入的a 10.5 就是變1010.100
0 X5 j8 i: S2 K如果是整數1,則變成0001.000  這樣來做正規化?8 D/ P2 S- Z! F; k+ w
還是說Quartus II 有可以判定輸入式浮點數的語法嗎?
% d. m0 I- S- h7 ^' ?$ E
7 c7 b% \# U% ~+ {如果沒有的話也得要把輸入的數值做正規化將其輸出,否則也不會有大大說的浮點數格式的輸入吧@@?4 b1 N% f% ~+ ?0 W
不知道我這樣說有沒有錯...^^"
12#
發表於 2009-9-21 20:22:38 | 只看該作者
您好
# m1 u) s( f$ `0 F9 l6 Y
( U$ y! Q1 T0 T9 l& e5 K2 r! b" @" V我的意思是你要自己算,將10.5或1先自己轉好成IEEE 754格式,
. n9 p& i" q# r1 c. j% Z& l) w然後在輸入到a,b

評分

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

查看全部評分

13#
 樓主| 發表於 2009-9-21 22:45:15 | 只看該作者
大大~
  H& u3 I; T( K0 T9 }3 D5 s0 E我知道你的意思了,不過我目前是需要把非IEEE 754格式的浮點數轉成IEEE 754格式.....
3 I$ D6 \$ k( c3 U$ F+ R9 W這樣是不可能實現的嗎?^^"
14#
發表於 2009-9-22 22:21:46 | 只看該作者
可以實現( I$ C: F( b4 m  T$ v1 M8 S
請把了解規則 用電路可把非IEEE 754格式的浮點數(Fixed Point)轉成IEEE 754格式(Float Point)' o7 Z$ H: r2 K
然後就可以當成浮點數加法器的輸入  v& I8 z, b0 ~9 \' d, }

: I# B+ G" Y8 \3 k( F0 O0 i0 \[ 本帖最後由 masonchung 於 2009-9-22 10:24 PM 編輯 ]
15#
 樓主| 發表於 2009-9-23 20:05:40 | 只看該作者
masonchung 大大~
6 h: u0 R: G9 _( S ) ~9 g8 ^+ Q* N1 _* N
如果要這樣做的話,我的A如果是十進制"2.5",並且可運算到小數點後第5位,二進制的輸入訊號是不是一定要是10.100008 M! Z0 Y% Q& h: m3 v8 x- a$ ~, w
這樣有錯嗎?- I" C' G) Q3 F0 n- Y1 T' v" ~
另外有一點有點疑問,這種作法是不是只能做無號數的浮點數運算?
5 E/ P+ A* X5 k! d- U7 i' R-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
" ]# C% x  Q* {: S  B/ O$ z* e" f5 @  d% S1 o" j! z& u' d$ P
ieee754 的 二進位浮點數格式在此 http://zh.wikipedia.org/wiki/IEEE_754
6 V4 H" m# k5 N% `  v
9 \, `4 J" N" P+ s% E3 A$ H這兩種格式轉換可用電路實現 7 R& N4 k4 z3 d: M5 Z+ q( j/ C
2 }$ R: j% \# ^+ X2 E
然後再輸入到浮點數加法器運算
18#
發表於 2009-10-19 10:55:44 | 只看該作者
最近剛好有碰到類似的問題 , 感謝說明
19#
發表於 2009-10-19 12:13:41 | 只看該作者
請問可以直接對ieee754格式的a跟b做四則運算嗎? $ I) R% R% w: r0 [$ ^, _8 q& M
(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?- U4 `6 _' Z4 {- t$ I( p; [
不對
/ c' }" U2 F9 g/ A只有浮點數加法器和乘法器" |4 C: q0 x  f+ x: J" ^
所以負數要用二補數
4 D/ l4 a7 \1 D, k8 u# ^( KC2010000=1_10000100_0000001_0000_0000_0000_00002 w+ @0 j) d& W
二補數=1101_1111.1100
2 ^$ t& p. S  x& k8 \& t: _8 G22.25=0001_0110.0100
0 f$ Y" ]( v0 I' b0 N0 T兩者相加即為答案-10, 透過浮點數加法器輸出為C1200000% @9 R) `9 B( ~+ k4 z, q
6 o# s- w5 U* E  [4 G* S
[ 本帖最後由 masonchung 於 2009-11-2 11:12 AM 編輯 ]
20#
發表於 2009-10-19 14:05:59 | 只看該作者
此二補數 1101_1111.1100 表示成IEEE754格式為420100008 D6 S; Z) v# l% {& Y2 {9 k
所以真正的浮點加法器輸入的MSB只要反相 就變成二補數
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-11-16 02:52 PM , Processed in 0.183011 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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