Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-9-2 20:23:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
想請問有設計過IEEE 754 浮點數 規則的程式的大大.....: B2 Q: K* a+ R4 i8 t

. G0 @( D; A; K規則小弟是看的懂,不過疑問處在於5 `- D/ ^; C" h" Y
假設我設計一個簡單的浮點數加法器,輸入數值a跟b相加.6 m& |: Z) M1 d: a8 F0 j
那麼,我的"a如果是十進制10.5"  "b是2.125"3 h" G: q- f7 N+ P
a跟b是要先正規化之後再行運算嗎?; S  {  \: X) I. `* r  I
這樣正規化之前,10.5要怎麼顯示成二進位?是固定位元顯示整數部份,
4 b. ~6 \* e* y2 i7 t! D* L% D( M另一部份固定位元顯示小數部份..ex: 10.5=>1010.1) X. F% U4 f7 T. M7 z
這樣輸入a之後變成10101,程式內部再將a[4:1]斷定成整數a[0]斷定成浮點數,
" \) ~% D9 X+ \  v3 ?7 d% w1 A+ F+ [這樣設計對嗎?/ @6 @+ i6 O8 Z5 y! |) u) B
我是剛接觸的菜鳥..還請大大們指教提拔....如果有相關code可以參考感激不盡m(_ _)m
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
推薦
 樓主| 發表於 2009-10-18 14:03:42 | 只看該作者
謝謝大大們的幫助,目前我已經完成了部分的程式,現在又遇到一點問題,想提出來跟大大們討論一下...
  q( Z4 g4 _+ K* D想請問大大們~; Q5 y3 S9 x( K; U+ [5 z
a= 41B20000  (16進制- ieee754格式)  十進制22.25
; Z* n7 ]( Z8 L- n6 Yb=C2010000  (16進制- ieee754格式)   十進制-32.25, I) b' k. ?2 S1 G
請問可以直接對ieee754格式的a跟b做四則運算嗎? , d  k0 {% M( N+ {( I- i
(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?
7 b" ?9 q- c( G9 o( E' W
* `0 \- v) ^4 D0 a. u1 ]  o4 E8 d0 g
6 o) ]- Z8 P7 a2 P8 g) C+ X還是說一定要先做十進制的22.25+(-32.25)= -10 最後答案才用IEEE754表示?
: X% W' @* E3 C$ t% a  {* L-10的IEEE754表示=C1200000) R! c+ y" z# @. q$ ]
4 w" v7 D+ [5 P
C2580000與C1200000好像不太一樣.
2 l& g( |0 r! y還是說要怎麼逆運算才可以求出-10?2 f) H; t" C, A7 V5 S: B
大大曉得嗎@@?
回復 支持 1 反對 0

使用道具 舉報

2#
發表於 2009-9-4 17:18:51 | 只看該作者
我之前也是這樣子用~
* S7 d* W+ Z( E, H, I
" I9 v$ ~3 {4 ~$ p8 |我覺得應該是ok的情況!
3#
 樓主| 發表於 2009-9-4 20:56:26 | 只看該作者
不過如果照這樣寫,感覺上小數點是固定的,不像浮點數的感覺耶....
4#
發表於 2009-9-8 20:48:56 | 只看該作者
您好' i( d4 I# Y+ C$ U$ o. n
1.如果a,b兩值還沒正規化,則先將a,b正規化,
$ }0 l0 K! n. i" e( Q$ [2.將a,b尾數對齊6 _. {; ^& s$ b9 _, `% O/ N
3.尾數相加& i6 y4 |; X/ z3 h2 f  M
4.將結果正規化
/ u1 h& z' V. t
; e9 y1 j: R2 L2 W1 r. @您參考看看
5#
 樓主| 發表於 2009-9-16 21:38:06 | 只看該作者
大大~我陷在卡在將輸入數值做正規化的動作,
& E8 i8 T! G/ D- g' l假如輸入的a是10.5, 在程式裡面會變成10101串列輸入,假設我程式固定只有運算到小數第一位,  i# x0 k5 Y5 ^4 |' x
這樣可以抓到1010.1並且將其正規化,但是如果我輸入數值是整數的00100,這樣他要怎麼判別小數點的位置@@?
! M( }3 v; Y/ q. `# H% Z8 [% x他要怎麼判斷輸入的數值是不是浮點數?
6#
發表於 2009-9-17 08:51:20 | 只看該作者
您好  I) D. G4 M  M8 q0 Q
5 c: q; a3 K. P: G; T* L
  a,b兩數要做浮點相加,那麼a,b兩值就要為浮點格式,- r0 N, Q9 T: L
你的問題不是卡在正規化,10.5=1010.1是定點小數,
/ }; U" J# C2 f* e: U% y# S10101,00100都不是浮點格式,如何將之正規化,
3 A7 u: k- X- N/ e" g4 |不能拿兩個定點格式的值來做浮點運算,
7#
 樓主| 發表於 2009-9-17 21:27:31 | 只看該作者
大大~
2 Q6 I. S: n) g6 x請問您說的浮點格式,是像IEEE 754格式這種嗎?....還是??% H" t0 Q+ b0 i# s( _
/ D6 b- V" r* [6 Q
是怎樣的浮點數格式輸入到a才可以被正規化呢^^"~不好意思喔~新手問了一些蠢問題@@
8#
發表於 2009-9-18 09:04:41 | 只看該作者
您好
1 a, H1 R0 N- T- T/ `  B9 i, S  IEEE 754是浮點格式的一種,當然還有其他的,
: i. A$ A+ K/ S4 Z3 t, Z 看你要用哪一種嚕,, P0 V' H' d1 o* n" i
$ v2 Y! ?) K: J; E" x0 a
如果你用IEEE 754,那麼輸入a,b值就要符合 IEEE 754格式
9#
 樓主| 發表於 2009-9-18 22:06:54 | 只看該作者
IEEE 754的浮點數格式 不是已經正規化了嗎?..." }) c( Q# e7 x! @/ t: @$ @

6 x5 q/ g/ `; D沒辦法寫CODE讓輸入的串列資料,將十進致10.5二進致為1010.1輸入後再由程式正規化嗎?
10#
發表於 2009-9-20 11:40:30 | 只看該作者
您好
* D/ G! F/ j9 j' o. N+ N- P8 p9 C" D5 p2 ]4 Q9 s" S2 P) O* v
a,b不是已知的值嗎?為甚麼不直接用浮點格式來表示,
1 l& J) U! l2 D* {而要用定點再轉一次呢?
11#
 樓主| 發表於 2009-9-20 21:17:28 | 只看該作者
大大~; s! j! K4 s1 u* x2 W2 L1 x; X$ F, d" {0 _

/ Y8 C  Q. m9 T4 C2 ?你的意思是說 假設我程式可以算到小數第3位,輸入的a 10.5 就是變1010.100
3 s0 O# S; z! ~6 B如果是整數1,則變成0001.000  這樣來做正規化?" d# y; u; T% p% F- c7 X
還是說Quartus II 有可以判定輸入式浮點數的語法嗎?% E! w* [; W/ A4 H6 s" U

; f. ^4 j! p# f! `7 ]如果沒有的話也得要把輸入的數值做正規化將其輸出,否則也不會有大大說的浮點數格式的輸入吧@@?
% [) h- _% o/ }4 C8 a不知道我這樣說有沒有錯...^^"
12#
發表於 2009-9-21 20:22:38 | 只看該作者
您好
% c# A' L8 Y# k' @; a( ]( |, r0 p) r& b+ ^1 W' H
我的意思是你要自己算,將10.5或1先自己轉好成IEEE 754格式,2 t8 m6 V) S0 b+ z2 t4 n. ^8 {" _
然後在輸入到a,b

評分

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

查看全部評分

13#
 樓主| 發表於 2009-9-21 22:45:15 | 只看該作者
大大~
/ z4 q8 w4 a  @& u我知道你的意思了,不過我目前是需要把非IEEE 754格式的浮點數轉成IEEE 754格式.....& F* ]! j2 |# ^$ Z
這樣是不可能實現的嗎?^^"
14#
發表於 2009-9-22 22:21:46 | 只看該作者
可以實現/ o2 h. N2 X1 _3 ~$ z
請把了解規則 用電路可把非IEEE 754格式的浮點數(Fixed Point)轉成IEEE 754格式(Float Point)
6 k* d( Y- r% b然後就可以當成浮點數加法器的輸入. d  D, y4 X, m5 w  x

9 n  N9 S( _$ V2 c  `[ 本帖最後由 masonchung 於 2009-9-22 10:24 PM 編輯 ]
15#
 樓主| 發表於 2009-9-23 20:05:40 | 只看該作者
masonchung 大大~
9 p4 x4 j3 W7 M, P $ g( A8 ~) ^5 m, y
如果要這樣做的話,我的A如果是十進制"2.5",並且可運算到小數點後第5位,二進制的輸入訊號是不是一定要是10.100007 r% r! a4 O  q& w) ?' k7 G
這樣有錯嗎?
+ q" J# a9 [; r/ T另外有一點有點疑問,這種作法是不是只能做無號數的浮點數運算?5 \1 u7 `8 k- V" |/ W1 }
-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
; A9 j- Y9 U* ]1 {$ ?9 k% o/ A
! E$ Y+ j7 p# i# p# o1 W! pieee754 的 二進位浮點數格式在此 http://zh.wikipedia.org/wiki/IEEE_7545 m$ H& T6 K, @$ a

8 m" K7 h) x+ i' J: y' [. W+ n$ k這兩種格式轉換可用電路實現
3 ]; g" j- r. X; A  Q( j& ?- f4 n* h" }0 X
然後再輸入到浮點數加法器運算
18#
發表於 2009-10-19 10:55:44 | 只看該作者
最近剛好有碰到類似的問題 , 感謝說明
19#
發表於 2009-10-19 12:13:41 | 只看該作者
請問可以直接對ieee754格式的a跟b做四則運算嗎?
4 \" i1 t; I$ Q- f3 Y; D(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?
6 Z3 d+ Y1 [3 s) {; g& q不對
9 g2 m0 O7 Z+ U只有浮點數加法器和乘法器7 D. Z; R, R1 l% v! P' E
所以負數要用二補數$ P0 n! `" N& a4 x
C2010000=1_10000100_0000001_0000_0000_0000_0000
* N% z& P& q5 |/ m二補數=1101_1111.1100" }9 p4 _& s% X$ s8 _3 k4 A
22.25=0001_0110.0100
: s) C" Z2 H. w6 }# Y9 b% o+ f& c  S兩者相加即為答案-10, 透過浮點數加法器輸出為C1200000# ?0 \" R% W) \9 }) @

, l1 G! \0 O; U9 ]& `[ 本帖最後由 masonchung 於 2009-11-2 11:12 AM 編輯 ]
20#
發表於 2009-10-19 14:05:59 | 只看該作者
此二補數 1101_1111.1100 表示成IEEE754格式為42010000+ z- }$ U8 s8 k0 w) C, ]5 c3 u
所以真正的浮點加法器輸入的MSB只要反相 就變成二補數
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2025-1-30 06:45 AM , Processed in 0.210012 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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