Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

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

9 B" q: {" r3 x; t0 \1 x! T; m! B& M規則小弟是看的懂,不過疑問處在於
, l. r6 Q9 u/ h" o9 z假設我設計一個簡單的浮點數加法器,輸入數值a跟b相加.
, D- C$ ~2 Z5 X) k* u那麼,我的"a如果是十進制10.5"  "b是2.125"
( p& X. @# j' ?) Ka跟b是要先正規化之後再行運算嗎?3 @! I- i+ \% i9 U
這樣正規化之前,10.5要怎麼顯示成二進位?是固定位元顯示整數部份,( M) k- f# A) L  H) k3 S
另一部份固定位元顯示小數部份..ex: 10.5=>1010.14 ?0 E4 @& H& W0 X. }
這樣輸入a之後變成10101,程式內部再將a[4:1]斷定成整數a[0]斷定成浮點數,  D: v2 a+ D. h4 `& v  }5 `. x
這樣設計對嗎?3 A0 s. m" n/ C+ Y6 c' {
我是剛接觸的菜鳥..還請大大們指教提拔....如果有相關code可以參考感激不盡m(_ _)m
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
推薦
 樓主| 發表於 2009-10-18 14:03:42 | 只看該作者
謝謝大大們的幫助,目前我已經完成了部分的程式,現在又遇到一點問題,想提出來跟大大們討論一下...8 G; E$ B! @3 T0 N6 `
想請問大大們~
* M2 S9 U/ W' C4 \a= 41B20000  (16進制- ieee754格式)  十進制22.25
2 J' R) Z/ V& k3 ~* wb=C2010000  (16進制- ieee754格式)   十進制-32.25/ K3 Q% a3 y5 u" i1 o
請問可以直接對ieee754格式的a跟b做四則運算嗎? 8 ]. V1 D1 L# K" G! v
(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?2 w1 p3 O0 L5 y- [6 f% h
5 b7 V8 P, E5 }! ?5 \% X4 O) g

" B* D& ^2 t; }5 A. O6 U: K8 w1 N9 r還是說一定要先做十進制的22.25+(-32.25)= -10 最後答案才用IEEE754表示?  M/ J5 e& Y3 e6 M
-10的IEEE754表示=C1200000
: p3 Z+ a' M! |! ?) t( W8 [ 7 o0 ~' Q. P" B# i: `2 o
C2580000與C1200000好像不太一樣.
+ ]# a7 c* g$ \' `還是說要怎麼逆運算才可以求出-10?# ?  i1 [# U4 o) N. ~
大大曉得嗎@@?
回復 支持 1 反對 0

使用道具 舉報

2#
發表於 2009-9-4 17:18:51 | 只看該作者
我之前也是這樣子用~, ?* p2 t1 Q1 i) j7 J8 X

5 B+ o3 Q0 f" W) A( d我覺得應該是ok的情況!
3#
 樓主| 發表於 2009-9-4 20:56:26 | 只看該作者
不過如果照這樣寫,感覺上小數點是固定的,不像浮點數的感覺耶....
4#
發表於 2009-9-8 20:48:56 | 只看該作者
您好
2 ?' S. }' q& Y9 a( ~1.如果a,b兩值還沒正規化,則先將a,b正規化,
, ]# W2 T/ C3 E6 s2.將a,b尾數對齊
- {. q. Q! K2 T3.尾數相加9 m+ n+ O+ n" Z
4.將結果正規化/ o  B. Z, z2 |# t. }/ _
0 E6 }  c' {) G& h
您參考看看
5#
 樓主| 發表於 2009-9-16 21:38:06 | 只看該作者
大大~我陷在卡在將輸入數值做正規化的動作,
% i3 W, r3 ]7 P/ p假如輸入的a是10.5, 在程式裡面會變成10101串列輸入,假設我程式固定只有運算到小數第一位,  ?8 i6 ]8 N9 c& s
這樣可以抓到1010.1並且將其正規化,但是如果我輸入數值是整數的00100,這樣他要怎麼判別小數點的位置@@?$ J9 {* L" w1 P' m- [6 R2 p0 B
他要怎麼判斷輸入的數值是不是浮點數?
6#
發表於 2009-9-17 08:51:20 | 只看該作者
您好3 @; L# B( ?+ v, V4 g) Q7 q

# U# g% ?$ ~1 F/ a& E' r  a,b兩數要做浮點相加,那麼a,b兩值就要為浮點格式,
9 r2 V' F& e+ z( J+ w3 Z7 C5 w你的問題不是卡在正規化,10.5=1010.1是定點小數,
! J; b2 ]8 p1 b10101,00100都不是浮點格式,如何將之正規化,
. a. A& a# ~0 a& k1 G$ K3 T不能拿兩個定點格式的值來做浮點運算,
7#
 樓主| 發表於 2009-9-17 21:27:31 | 只看該作者
大大~2 ]$ A0 N% i6 k
請問您說的浮點格式,是像IEEE 754格式這種嗎?....還是??
$ \# R  x2 X' S$ G# N" p; h9 L2 g5 Y7 O  g' }
是怎樣的浮點數格式輸入到a才可以被正規化呢^^"~不好意思喔~新手問了一些蠢問題@@
8#
發表於 2009-9-18 09:04:41 | 只看該作者
您好' m, c! l% p8 H5 Q& A( s' g+ ?5 C
  IEEE 754是浮點格式的一種,當然還有其他的,
, [8 T+ c% P6 Q* u+ ]3 A+ } 看你要用哪一種嚕,
! u) m! R# u5 K) {
: R( u% j0 I2 `+ n, e如果你用IEEE 754,那麼輸入a,b值就要符合 IEEE 754格式
9#
 樓主| 發表於 2009-9-18 22:06:54 | 只看該作者
IEEE 754的浮點數格式 不是已經正規化了嗎?...
  R9 m6 K/ K. e
/ d# G( B5 H: i4 d- c) ?, c* t; I8 N沒辦法寫CODE讓輸入的串列資料,將十進致10.5二進致為1010.1輸入後再由程式正規化嗎?
10#
發表於 2009-9-20 11:40:30 | 只看該作者
您好4 p$ u5 |4 Q6 v* p9 W9 a; n- E) {; Q

5 V8 ]  d6 J5 H9 r1 N, A a,b不是已知的值嗎?為甚麼不直接用浮點格式來表示," [) V) j# N" W1 A0 ~8 K
而要用定點再轉一次呢?
11#
 樓主| 發表於 2009-9-20 21:17:28 | 只看該作者
大大~
. q8 U$ Q" y4 K6 [9 q3 w+ N% P: R1 |8 W  w. a
你的意思是說 假設我程式可以算到小數第3位,輸入的a 10.5 就是變1010.100
' m- [8 _  B- G5 K+ ^$ H; x; y如果是整數1,則變成0001.000  這樣來做正規化?
& ~' S, O% S. r$ ?3 S- v" C還是說Quartus II 有可以判定輸入式浮點數的語法嗎?
9 K0 m( T6 g! X3 ~5 f
$ C% t5 D; n- E; e  u如果沒有的話也得要把輸入的數值做正規化將其輸出,否則也不會有大大說的浮點數格式的輸入吧@@?
+ r* I: S# Y" F7 N7 B& ^不知道我這樣說有沒有錯...^^"
12#
發表於 2009-9-21 20:22:38 | 只看該作者
您好) R$ {, L5 [& c) y8 g: N  C) h" I) y

+ V7 n% s' M7 q  ?# @我的意思是你要自己算,將10.5或1先自己轉好成IEEE 754格式,) W- K  I4 W" r3 d9 {
然後在輸入到a,b

評分

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

查看全部評分

13#
 樓主| 發表於 2009-9-21 22:45:15 | 只看該作者
大大~! b. Y+ f4 k  U2 g! }+ `7 |; Y
我知道你的意思了,不過我目前是需要把非IEEE 754格式的浮點數轉成IEEE 754格式.....
- s1 j2 }9 d- O3 K& |% Q) {- R; G  G這樣是不可能實現的嗎?^^"
14#
發表於 2009-9-22 22:21:46 | 只看該作者
可以實現; e3 O" O# r. Y) ~3 E, Y: k
請把了解規則 用電路可把非IEEE 754格式的浮點數(Fixed Point)轉成IEEE 754格式(Float Point)5 Q  L# I  l/ `8 ]+ m
然後就可以當成浮點數加法器的輸入# G+ j& X- _, j: X. D5 M. r

4 Z6 B2 s/ E$ w1 N[ 本帖最後由 masonchung 於 2009-9-22 10:24 PM 編輯 ]
15#
 樓主| 發表於 2009-9-23 20:05:40 | 只看該作者
masonchung 大大~" v. {& w7 O6 t( d% v, D- ~

- v7 _. Q0 N3 K/ z: k如果要這樣做的話,我的A如果是十進制"2.5",並且可運算到小數點後第5位,二進制的輸入訊號是不是一定要是10.10000
0 c* T! o0 F' l( v. j5 y這樣有錯嗎?
4 N, M6 @) J7 }' Z/ j0 n3 f另外有一點有點疑問,這種作法是不是只能做無號數的浮點數運算?
) \( F3 s3 R- A3 p+ h' 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+ p3 p! q! Q  Y# k. t( v+ A- c
( T% p# f; w) d# l6 f. V
ieee754 的 二進位浮點數格式在此 http://zh.wikipedia.org/wiki/IEEE_754& ^3 R! @$ L* v! k* F8 r

7 Q* _& W5 T3 D! e; u這兩種格式轉換可用電路實現
0 a7 O- M$ X0 i" }% l4 D. t: [2 Y+ Q. L& f
然後再輸入到浮點數加法器運算
18#
發表於 2009-10-19 10:55:44 | 只看該作者
最近剛好有碰到類似的問題 , 感謝說明
19#
發表於 2009-10-19 12:13:41 | 只看該作者
請問可以直接對ieee754格式的a跟b做四則運算嗎?
" e7 l# J6 h5 d* b(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?* R/ N' N3 W6 C3 l
不對0 y9 g" C% Z  ]  C
只有浮點數加法器和乘法器
# k5 e" F  q; A& |. R* p$ [所以負數要用二補數# j& F4 Q; ]% p
C2010000=1_10000100_0000001_0000_0000_0000_0000
1 C1 H3 ~! j# n1 E二補數=1101_1111.1100
: E4 q  F  _* V! s22.25=0001_0110.0100
$ p* W, }( L. q  {兩者相加即為答案-10, 透過浮點數加法器輸出為C1200000: M. E2 {8 B9 e) i) H8 S* S

0 l/ ~  F* Y" l4 W! K! x$ \[ 本帖最後由 masonchung 於 2009-11-2 11:12 AM 編輯 ]
20#
發表於 2009-10-19 14:05:59 | 只看該作者
此二補數 1101_1111.1100 表示成IEEE754格式為42010000. ~5 ]% \! ?( r% ?& q. }1 E
所以真正的浮點加法器輸入的MSB只要反相 就變成二補數
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-11-16 11:34 AM , Processed in 0.186011 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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