Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-9-2 20:23:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
想請問有設計過IEEE 754 浮點數 規則的程式的大大...... `+ H9 Y6 A' A' v
# L7 @. `2 d! f' Y
規則小弟是看的懂,不過疑問處在於
. h# n4 [: v4 f7 ~8 Z1 T/ i9 D5 x假設我設計一個簡單的浮點數加法器,輸入數值a跟b相加.8 z, |) T$ P5 N6 E  E, `1 \
那麼,我的"a如果是十進制10.5"  "b是2.125"
) i( C  C+ C  Q$ g2 B! ia跟b是要先正規化之後再行運算嗎?4 S. m1 A! ]+ a5 Y: z7 R
這樣正規化之前,10.5要怎麼顯示成二進位?是固定位元顯示整數部份,
  {" n  c& s- U# d/ F另一部份固定位元顯示小數部份..ex: 10.5=>1010.1$ i: a& c: q) Z! k/ m- u0 w- i4 o
這樣輸入a之後變成10101,程式內部再將a[4:1]斷定成整數a[0]斷定成浮點數,
/ G5 o$ V0 h/ N/ ?4 S$ e4 \這樣設計對嗎?5 U* e& I+ @8 w8 A; ]
我是剛接觸的菜鳥..還請大大們指教提拔....如果有相關code可以參考感激不盡m(_ _)m
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
推薦
 樓主| 發表於 2009-10-18 14:03:42 | 只看該作者
謝謝大大們的幫助,目前我已經完成了部分的程式,現在又遇到一點問題,想提出來跟大大們討論一下...
1 i3 m/ e2 F2 \! b想請問大大們~2 {4 D  l8 H2 Z' ]
a= 41B20000  (16進制- ieee754格式)  十進制22.25
1 T$ t0 O2 N6 e% r- a: Cb=C2010000  (16進制- ieee754格式)   十進制-32.25
2 X+ U% v! Y: T" [請問可以直接對ieee754格式的a跟b做四則運算嗎? / r9 l" Y  _% E7 O0 Q) c
(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?
$ F" D. _/ @. r% b* c: B$ ~8 ~# m  ?
9 r( i4 r  g/ x2 R: I4 X7 J
) R: \8 ]" g, |7 l  z. s5 l還是說一定要先做十進制的22.25+(-32.25)= -10 最後答案才用IEEE754表示?
* z8 T- K6 i1 I! t-10的IEEE754表示=C1200000
! y% q% D; d2 l: e# s! ]" [
( }( c& ]/ c  k  fC2580000與C1200000好像不太一樣.% W5 W9 f7 o9 p! U% o1 E
還是說要怎麼逆運算才可以求出-10?
: g" g5 y; J/ S0 a3 B4 t, N大大曉得嗎@@?
回復 支持 1 反對 0

使用道具 舉報

2#
發表於 2009-9-4 17:18:51 | 只看該作者
我之前也是這樣子用~9 N1 ]6 O) H- _* E, |1 a- i

3 [8 A$ w# y: h. Z5 t$ ^8 P: E我覺得應該是ok的情況!
3#
 樓主| 發表於 2009-9-4 20:56:26 | 只看該作者
不過如果照這樣寫,感覺上小數點是固定的,不像浮點數的感覺耶....
4#
發表於 2009-9-8 20:48:56 | 只看該作者
您好
1 g: t+ Z& n$ p9 p8 _; z1.如果a,b兩值還沒正規化,則先將a,b正規化,
  `6 S) s8 z" w: ]2.將a,b尾數對齊6 _' w  W/ I) s
3.尾數相加
# C" |# c5 G9 P5 s- ^* d4.將結果正規化9 H% p5 ~" J7 h3 C  ]
* k) O  O+ _  x# Y$ d! R
您參考看看
5#
 樓主| 發表於 2009-9-16 21:38:06 | 只看該作者
大大~我陷在卡在將輸入數值做正規化的動作,
, z! I  a6 e5 b假如輸入的a是10.5, 在程式裡面會變成10101串列輸入,假設我程式固定只有運算到小數第一位,
" g: r; ]1 P3 p$ c這樣可以抓到1010.1並且將其正規化,但是如果我輸入數值是整數的00100,這樣他要怎麼判別小數點的位置@@?; w4 C! \+ d$ Y9 ~5 E; v$ A: ^1 |
他要怎麼判斷輸入的數值是不是浮點數?
6#
發表於 2009-9-17 08:51:20 | 只看該作者
您好& O5 V7 G; R) N$ c& F- W

( _1 _! C1 ~# J2 [1 x  a,b兩數要做浮點相加,那麼a,b兩值就要為浮點格式,
& w. R4 j3 @9 M( g3 ]; Q! g你的問題不是卡在正規化,10.5=1010.1是定點小數,
4 n# P6 ]/ P( o10101,00100都不是浮點格式,如何將之正規化,
" [2 T+ U! l9 |" @8 o8 t7 G; D不能拿兩個定點格式的值來做浮點運算,
7#
 樓主| 發表於 2009-9-17 21:27:31 | 只看該作者
大大~2 q' f& R& Z% X1 S
請問您說的浮點格式,是像IEEE 754格式這種嗎?....還是??
8 D1 ]# O" e. ]3 E% P/ b/ A
; n: H' g1 w' y- w' J1 g4 p% B是怎樣的浮點數格式輸入到a才可以被正規化呢^^"~不好意思喔~新手問了一些蠢問題@@
8#
發表於 2009-9-18 09:04:41 | 只看該作者
您好4 o& x! J  o. I( ~, C- H& T* c0 ?
  IEEE 754是浮點格式的一種,當然還有其他的,/ K( {! l$ m) V7 U
看你要用哪一種嚕,
8 h" o# L/ z" e
# u0 p: h# I* G/ q% B$ }如果你用IEEE 754,那麼輸入a,b值就要符合 IEEE 754格式
9#
 樓主| 發表於 2009-9-18 22:06:54 | 只看該作者
IEEE 754的浮點數格式 不是已經正規化了嗎?...
) n! Z  K9 V  V( n) J- s0 w% a: a" r7 X5 ~9 T
沒辦法寫CODE讓輸入的串列資料,將十進致10.5二進致為1010.1輸入後再由程式正規化嗎?
10#
發表於 2009-9-20 11:40:30 | 只看該作者
您好
! m. w9 g/ A' T7 _
2 Y$ u! E+ K/ j a,b不是已知的值嗎?為甚麼不直接用浮點格式來表示,
+ p. b- A+ G6 }: \, p) \0 d+ s而要用定點再轉一次呢?
11#
 樓主| 發表於 2009-9-20 21:17:28 | 只看該作者
大大~7 R# j" W6 P$ q5 G8 G1 c) S4 }

' M. s% r7 ~3 ^: L4 |; Q5 L; m你的意思是說 假設我程式可以算到小數第3位,輸入的a 10.5 就是變1010.100, O* y% ~  g6 y" }' E7 O5 [4 O
如果是整數1,則變成0001.000  這樣來做正規化?" F% l- H* p! E) s& A" `
還是說Quartus II 有可以判定輸入式浮點數的語法嗎?( J- I( G: P% ?2 f9 \& s- i
2 v  `7 D1 Y2 _3 G& N0 L5 J& T1 r
如果沒有的話也得要把輸入的數值做正規化將其輸出,否則也不會有大大說的浮點數格式的輸入吧@@?
. s; m! H( T3 w* \* z' {不知道我這樣說有沒有錯...^^"
12#
發表於 2009-9-21 20:22:38 | 只看該作者
您好
' ?4 p$ ]& ]  V7 u: ]8 a3 [0 o" Q0 y/ |8 m+ i: S$ ^# L8 D
我的意思是你要自己算,將10.5或1先自己轉好成IEEE 754格式,$ x* O; t. z# ^  [3 A
然後在輸入到a,b

評分

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

查看全部評分

13#
 樓主| 發表於 2009-9-21 22:45:15 | 只看該作者
大大~
, j3 }* s! V5 j4 p( ]我知道你的意思了,不過我目前是需要把非IEEE 754格式的浮點數轉成IEEE 754格式.....
! o" y& F% u9 Z+ ]' D- d這樣是不可能實現的嗎?^^"
14#
發表於 2009-9-22 22:21:46 | 只看該作者
可以實現
1 e, G! l2 a0 O! o( T/ g% d- b% ]請把了解規則 用電路可把非IEEE 754格式的浮點數(Fixed Point)轉成IEEE 754格式(Float Point)' b- c3 o! f( _: R" i  z
然後就可以當成浮點數加法器的輸入% |- i9 p4 [. H
& B9 ?8 |. w% P2 f9 E7 T
[ 本帖最後由 masonchung 於 2009-9-22 10:24 PM 編輯 ]
15#
 樓主| 發表於 2009-9-23 20:05:40 | 只看該作者
masonchung 大大~- {6 d1 g2 s- u" Y( E7 j  A# z
- A2 \; f( z) ~& |3 C) G$ }+ t2 c" }
如果要這樣做的話,我的A如果是十進制"2.5",並且可運算到小數點後第5位,二進制的輸入訊號是不是一定要是10.10000
3 f! G4 H1 \( i  R6 Z2 q這樣有錯嗎?
& k; y% R2 N0 A2 X另外有一點有點疑問,這種作法是不是只能做無號數的浮點數運算?
* N4 X8 L# a2 u$ d# V-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* u9 C2 f9 y3 d) O, J

: b( F0 V" G8 ^0 @# B5 ~: Z2 P+ Zieee754 的 二進位浮點數格式在此 http://zh.wikipedia.org/wiki/IEEE_754. X9 r3 E$ c: r5 H0 s- t3 J
6 V% h& n4 y0 r) z4 y
這兩種格式轉換可用電路實現 % L/ O7 [# h/ a8 \" E
# y" J' W# b; D! |& c' O# v
然後再輸入到浮點數加法器運算
18#
發表於 2009-10-19 10:55:44 | 只看該作者
最近剛好有碰到類似的問題 , 感謝說明
19#
發表於 2009-10-19 12:13:41 | 只看該作者
請問可以直接對ieee754格式的a跟b做四則運算嗎?
' `- a, s! r+ h(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?
$ K: @; G& }+ `8 e不對
1 o% g; P7 R: ]9 V! U! c. K只有浮點數加法器和乘法器* V6 B9 w# N  v# I4 r6 N
所以負數要用二補數
$ T) ?' R: P$ H7 n% q7 W3 YC2010000=1_10000100_0000001_0000_0000_0000_00002 ?- r3 M* W) @6 B9 f" e- C) u
二補數=1101_1111.1100
( |% h5 |( N" d. H7 I22.25=0001_0110.01001 k% k" I5 S" M; z8 A  z  h
兩者相加即為答案-10, 透過浮點數加法器輸出為C1200000
. q0 U8 Z. J& A6 E: x! s7 ]. `! y7 |; E4 d/ T
[ 本帖最後由 masonchung 於 2009-11-2 11:12 AM 編輯 ]
20#
發表於 2009-10-19 14:05:59 | 只看該作者
此二補數 1101_1111.1100 表示成IEEE754格式為42010000
. B" R7 G% W3 B# _' c所以真正的浮點加法器輸入的MSB只要反相 就變成二補數
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-20 12:33 AM , Processed in 0.126516 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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