Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-9-2 20:23:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
想請問有設計過IEEE 754 浮點數 規則的程式的大大.....
- o5 E* b& Y8 K. i% O& {$ L. e& {$ O( f  k1 ~- N
規則小弟是看的懂,不過疑問處在於
) u1 Z  t1 A7 F" ?假設我設計一個簡單的浮點數加法器,輸入數值a跟b相加.6 z( c, g5 ~4 ]8 }" n/ s; K
那麼,我的"a如果是十進制10.5"  "b是2.125"
1 R: S* x- ^! ^a跟b是要先正規化之後再行運算嗎?) x* a! t+ W2 }! B2 s$ M/ T/ ?
這樣正規化之前,10.5要怎麼顯示成二進位?是固定位元顯示整數部份,
8 w! c/ G+ Q; s& i& [另一部份固定位元顯示小數部份..ex: 10.5=>1010.1
; F1 l2 N1 z- [7 L這樣輸入a之後變成10101,程式內部再將a[4:1]斷定成整數a[0]斷定成浮點數,5 ^& q, R. r) w" Q
這樣設計對嗎?
3 u& @0 f! u7 [% A我是剛接觸的菜鳥..還請大大們指教提拔....如果有相關code可以參考感激不盡m(_ _)m
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
推薦
 樓主| 發表於 2009-10-18 14:03:42 | 只看該作者
謝謝大大們的幫助,目前我已經完成了部分的程式,現在又遇到一點問題,想提出來跟大大們討論一下...
& }$ t$ }: o9 w- J4 @想請問大大們~
9 X. u8 Q, D+ e8 K$ g1 Q. ^a= 41B20000  (16進制- ieee754格式)  十進制22.256 Z: `& F0 |' s, b( g, J
b=C2010000  (16進制- ieee754格式)   十進制-32.25! C0 h8 a( d- {) ?: ~5 E6 G
請問可以直接對ieee754格式的a跟b做四則運算嗎?
# R: M* L) M: T' Y$ j6 {(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?
8 t' m% b' n$ f5 j* {# X1 I/ K
2 R1 J% M3 c! A
4 a6 }4 }  r8 v1 o還是說一定要先做十進制的22.25+(-32.25)= -10 最後答案才用IEEE754表示?7 u$ [3 M6 B* `
-10的IEEE754表示=C1200000
2 ~7 [% @: d2 D$ S4 ` : i8 ~' x9 i5 Q8 _. b4 V
C2580000與C1200000好像不太一樣.
7 }+ v8 R1 u+ P! ]4 [/ l還是說要怎麼逆運算才可以求出-10?. \9 }' V, `. F4 N% ^
大大曉得嗎@@?
回復 支持 1 反對 0

使用道具 舉報

2#
發表於 2009-9-4 17:18:51 | 只看該作者
我之前也是這樣子用~
* w% s  k8 b: _# y/ E; v
& P( ~! s" |9 \& G. g/ J# w; D我覺得應該是ok的情況!
3#
 樓主| 發表於 2009-9-4 20:56:26 | 只看該作者
不過如果照這樣寫,感覺上小數點是固定的,不像浮點數的感覺耶....
4#
發表於 2009-9-8 20:48:56 | 只看該作者
您好7 P8 Q: _& Y5 E* m0 Z2 G" J
1.如果a,b兩值還沒正規化,則先將a,b正規化," P+ q" E9 }  |
2.將a,b尾數對齊
3 h. e% W- y# o3.尾數相加
4 u; T6 H2 C( C( T; w! Z4.將結果正規化
  P* |0 ~0 s. m* k( w# p% L2 Y. j! E: Q8 m& L% ]# D/ ?, C
您參考看看
5#
 樓主| 發表於 2009-9-16 21:38:06 | 只看該作者
大大~我陷在卡在將輸入數值做正規化的動作,
# `' D. \" w2 g6 ~/ \% }+ s$ E/ T假如輸入的a是10.5, 在程式裡面會變成10101串列輸入,假設我程式固定只有運算到小數第一位,) O3 r3 T8 e0 ]; K$ b
這樣可以抓到1010.1並且將其正規化,但是如果我輸入數值是整數的00100,這樣他要怎麼判別小數點的位置@@?
/ ^9 }& u7 p! ]2 m他要怎麼判斷輸入的數值是不是浮點數?
6#
發表於 2009-9-17 08:51:20 | 只看該作者
您好
5 d# r) o- ?% y0 a9 M5 H
: x0 ?/ W+ W2 p  a,b兩數要做浮點相加,那麼a,b兩值就要為浮點格式,
8 o& H: W, J: t: h+ m) Y你的問題不是卡在正規化,10.5=1010.1是定點小數,
% v- }* N+ W! |+ G3 R6 o10101,00100都不是浮點格式,如何將之正規化,3 r, U: j. o4 f! g" e2 l; Y* B
不能拿兩個定點格式的值來做浮點運算,
7#
 樓主| 發表於 2009-9-17 21:27:31 | 只看該作者
大大~# ]+ z3 c: e, n1 q) U
請問您說的浮點格式,是像IEEE 754格式這種嗎?....還是??/ t2 P6 \9 p' `( i0 d! M7 q8 K

2 q, h/ L  ?2 A8 b+ S是怎樣的浮點數格式輸入到a才可以被正規化呢^^"~不好意思喔~新手問了一些蠢問題@@
8#
發表於 2009-9-18 09:04:41 | 只看該作者
您好3 \+ c6 i" l( ~8 W8 G) n3 |' T
  IEEE 754是浮點格式的一種,當然還有其他的,4 s& w$ i, i- `: w1 q9 ]
看你要用哪一種嚕,
: q$ n, ~0 C5 O0 v0 Z% o. f* S
9 z# h9 i) }# K8 \) H. x3 b5 G如果你用IEEE 754,那麼輸入a,b值就要符合 IEEE 754格式
9#
 樓主| 發表於 2009-9-18 22:06:54 | 只看該作者
IEEE 754的浮點數格式 不是已經正規化了嗎?...0 K. ]) T0 K+ ?1 |3 Y
8 {/ E; _7 e7 p* V
沒辦法寫CODE讓輸入的串列資料,將十進致10.5二進致為1010.1輸入後再由程式正規化嗎?
10#
發表於 2009-9-20 11:40:30 | 只看該作者
您好
- m- O" `3 t+ G9 g2 a1 W* O. y8 S, j+ [% W0 s& `
a,b不是已知的值嗎?為甚麼不直接用浮點格式來表示,$ W* q' n9 b# N. ?+ o4 [$ ^$ |
而要用定點再轉一次呢?
11#
 樓主| 發表於 2009-9-20 21:17:28 | 只看該作者
大大~6 e# ^2 L+ S6 t* w; S* v/ Z

8 I" n, E; O5 E6 [: |3 {8 G你的意思是說 假設我程式可以算到小數第3位,輸入的a 10.5 就是變1010.100
. S2 d: T9 @; `# a  \+ O+ I; w如果是整數1,則變成0001.000  這樣來做正規化?
5 O7 _+ T( m' K0 X還是說Quartus II 有可以判定輸入式浮點數的語法嗎?  F# j/ Y6 q. [" ~: m
% E  M/ p, \' U( W' F" ?8 U/ W
如果沒有的話也得要把輸入的數值做正規化將其輸出,否則也不會有大大說的浮點數格式的輸入吧@@?$ E- N' w  x- D) N
不知道我這樣說有沒有錯...^^"
12#
發表於 2009-9-21 20:22:38 | 只看該作者
您好6 l- \+ ?$ m0 J# r+ j+ H

! Z: [$ v' [# i& Q) M我的意思是你要自己算,將10.5或1先自己轉好成IEEE 754格式,# A6 i9 d$ Y& b$ X( b# \
然後在輸入到a,b

評分

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

查看全部評分

13#
 樓主| 發表於 2009-9-21 22:45:15 | 只看該作者
大大~
0 |$ P6 v* L$ i$ J我知道你的意思了,不過我目前是需要把非IEEE 754格式的浮點數轉成IEEE 754格式.....
1 @' b  P" K- Q: a- r2 w這樣是不可能實現的嗎?^^"
14#
發表於 2009-9-22 22:21:46 | 只看該作者
可以實現$ Q3 K) }% U6 a$ M; b8 ~, `
請把了解規則 用電路可把非IEEE 754格式的浮點數(Fixed Point)轉成IEEE 754格式(Float Point)' E8 Y' ?( ~, L2 L: r! S
然後就可以當成浮點數加法器的輸入2 A- d  m3 w4 z4 p

1 F7 d. z! d8 X' Y: K[ 本帖最後由 masonchung 於 2009-9-22 10:24 PM 編輯 ]
15#
 樓主| 發表於 2009-9-23 20:05:40 | 只看該作者
masonchung 大大~" B0 m- h! Y& u1 z/ A$ v7 O

% l/ O% C4 _: y. v如果要這樣做的話,我的A如果是十進制"2.5",並且可運算到小數點後第5位,二進制的輸入訊號是不是一定要是10.10000
% O$ e  b, F. d* T0 S這樣有錯嗎?* S9 _+ T8 S; q2 m: s- L( y
另外有一點有點疑問,這種作法是不是只能做無號數的浮點數運算?
+ d6 s: O3 M; j/ @# ^. G-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' e3 Z, }# v: O( X1 g! m- O

8 d9 O+ r9 I) T" k% l# pieee754 的 二進位浮點數格式在此 http://zh.wikipedia.org/wiki/IEEE_754& g' @! B+ G% V9 m) ]% ~1 h

2 e5 S1 a* E1 E這兩種格式轉換可用電路實現
+ s6 M; s1 Q6 d" B0 \% J2 V5 ]3 \2 e; c
然後再輸入到浮點數加法器運算
18#
發表於 2009-10-19 10:55:44 | 只看該作者
最近剛好有碰到類似的問題 , 感謝說明
19#
發表於 2009-10-19 12:13:41 | 只看該作者
請問可以直接對ieee754格式的a跟b做四則運算嗎? / K$ E& c9 Y. X8 h; ]
(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?9 ^+ c8 j* ]3 N7 \/ H, ]1 w" u
不對5 Y/ x; O6 ~( Q% @% F# R
只有浮點數加法器和乘法器! d4 X! |7 R8 u6 z: i7 z% I1 O1 w
所以負數要用二補數
8 X$ w4 w  L, {) n4 t- A0 W3 yC2010000=1_10000100_0000001_0000_0000_0000_0000
% |5 r6 }0 K  O0 ?# C二補數=1101_1111.1100' j  m( i  B6 @& V% A$ N& u3 \9 N
22.25=0001_0110.0100
1 S1 }% S3 k: N5 C4 J" G兩者相加即為答案-10, 透過浮點數加法器輸出為C1200000) K' M5 {; |# b/ Z0 ]1 |: C
+ `: e! W) i- ^
[ 本帖最後由 masonchung 於 2009-11-2 11:12 AM 編輯 ]
20#
發表於 2009-10-19 14:05:59 | 只看該作者
此二補數 1101_1111.1100 表示成IEEE754格式為42010000' m" Q" j! L# {1 s
所以真正的浮點加法器輸入的MSB只要反相 就變成二補數
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-15 06:38 PM , Processed in 0.123516 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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