Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-9-2 20:23:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
想請問有設計過IEEE 754 浮點數 規則的程式的大大.....6 P- t( k6 U' W1 _1 M. i8 b- r

. o9 a6 e% I  ?1 a4 b規則小弟是看的懂,不過疑問處在於) B' F. S: n* ^8 D, Y. M
假設我設計一個簡單的浮點數加法器,輸入數值a跟b相加.
1 O  u2 }8 E( \那麼,我的"a如果是十進制10.5"  "b是2.125"" r/ j: X6 i% N) @, I2 u
a跟b是要先正規化之後再行運算嗎?
2 B" h  Z0 N; y. R這樣正規化之前,10.5要怎麼顯示成二進位?是固定位元顯示整數部份,
' \' S/ }& ^' U( X2 P5 A另一部份固定位元顯示小數部份..ex: 10.5=>1010.13 ~- k' {1 F  ~5 a4 @
這樣輸入a之後變成10101,程式內部再將a[4:1]斷定成整數a[0]斷定成浮點數,
/ q' `  L) P1 K6 y這樣設計對嗎?- n- W6 b8 e8 F- q( A
我是剛接觸的菜鳥..還請大大們指教提拔....如果有相關code可以參考感激不盡m(_ _)m
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
推薦
 樓主| 發表於 2009-10-18 14:03:42 | 只看該作者
謝謝大大們的幫助,目前我已經完成了部分的程式,現在又遇到一點問題,想提出來跟大大們討論一下...
3 F! F" g0 h) N" m0 P  J5 I5 Q/ h想請問大大們~
* I0 }" D4 [5 Z) oa= 41B20000  (16進制- ieee754格式)  十進制22.250 o4 y6 D* |* P4 F) }4 n
b=C2010000  (16進制- ieee754格式)   十進制-32.25
' S3 D$ t& ~  G0 ^' s! _2 B% D& L請問可以直接對ieee754格式的a跟b做四則運算嗎? # [1 M9 }4 j5 q3 E" ?0 u
(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?
% T& S, z- g0 [! A7 {
9 F8 r( f8 W1 k- k. ]# D5 { ( ]5 T' T) V- x+ O1 ?! T
還是說一定要先做十進制的22.25+(-32.25)= -10 最後答案才用IEEE754表示?
. r" e0 u5 X+ P1 q-10的IEEE754表示=C1200000
  n' ?5 }. n; k9 `( O* @) i0 G ( \+ D) P' m& P5 L; B- _
C2580000與C1200000好像不太一樣.7 y+ {5 K) ~) p; d6 I) d
還是說要怎麼逆運算才可以求出-10?
# q# z$ C3 Z  M* N. P/ m大大曉得嗎@@?
回復 支持 1 反對 0

使用道具 舉報

2#
發表於 2009-9-4 17:18:51 | 只看該作者
我之前也是這樣子用~- _( N, a0 O1 p) W! I( J! ?) i
* W# Q- p" Q# ~9 {, Q- C
我覺得應該是ok的情況!
3#
 樓主| 發表於 2009-9-4 20:56:26 | 只看該作者
不過如果照這樣寫,感覺上小數點是固定的,不像浮點數的感覺耶....
4#
發表於 2009-9-8 20:48:56 | 只看該作者
您好1 j- _6 ~$ O3 h( c3 y$ I
1.如果a,b兩值還沒正規化,則先將a,b正規化,( B: U3 i( K- I/ U" O- y* R7 [
2.將a,b尾數對齊+ r* y4 z# o- X  A9 W5 |
3.尾數相加1 t" Q- n2 `1 s5 I$ F- _
4.將結果正規化2 E' }& M) K9 z1 \0 o$ n( S. W. T( B

2 t; f' ^  a3 M: _- D" K0 }您參考看看
5#
 樓主| 發表於 2009-9-16 21:38:06 | 只看該作者
大大~我陷在卡在將輸入數值做正規化的動作,3 W) }2 B$ h& g6 P% e$ ^- h  O
假如輸入的a是10.5, 在程式裡面會變成10101串列輸入,假設我程式固定只有運算到小數第一位,5 ?; V/ c1 J, Q. S( P( i
這樣可以抓到1010.1並且將其正規化,但是如果我輸入數值是整數的00100,這樣他要怎麼判別小數點的位置@@?2 v7 _9 m2 Z7 e, K! M( F4 r# _
他要怎麼判斷輸入的數值是不是浮點數?
6#
發表於 2009-9-17 08:51:20 | 只看該作者
您好, t9 q9 r8 }6 R
' H# E& P) l# n% B; y: Y6 S) u
  a,b兩數要做浮點相加,那麼a,b兩值就要為浮點格式,, S$ W+ y% ?) r) s& o) d- A
你的問題不是卡在正規化,10.5=1010.1是定點小數,5 x5 K) I+ p9 N) u: w; N
10101,00100都不是浮點格式,如何將之正規化,9 O1 B% [8 X* ]  D3 R5 @; i3 p
不能拿兩個定點格式的值來做浮點運算,
7#
 樓主| 發表於 2009-9-17 21:27:31 | 只看該作者
大大~0 G3 B9 e2 ?- C4 f6 F
請問您說的浮點格式,是像IEEE 754格式這種嗎?....還是??- ^7 O' N( D  G
- n. o& @, v/ k, Z
是怎樣的浮點數格式輸入到a才可以被正規化呢^^"~不好意思喔~新手問了一些蠢問題@@
8#
發表於 2009-9-18 09:04:41 | 只看該作者
您好3 l9 N3 O& l2 |
  IEEE 754是浮點格式的一種,當然還有其他的,8 a  d# T5 W# L9 D  ]9 l1 }% Z
看你要用哪一種嚕,+ O. H, x) {) G

( Q/ H& W4 g/ D' h; ~! t如果你用IEEE 754,那麼輸入a,b值就要符合 IEEE 754格式
9#
 樓主| 發表於 2009-9-18 22:06:54 | 只看該作者
IEEE 754的浮點數格式 不是已經正規化了嗎?...8 }1 H1 o( i! s4 r- h) {  m4 v4 {# v

3 {! g! _9 d; M$ ~沒辦法寫CODE讓輸入的串列資料,將十進致10.5二進致為1010.1輸入後再由程式正規化嗎?
10#
發表於 2009-9-20 11:40:30 | 只看該作者
您好
, R. E' Y; W/ o, [3 E, ~& x" ~) I% S7 g- R6 Z- p
a,b不是已知的值嗎?為甚麼不直接用浮點格式來表示,: F$ S: N% }( y& @; A6 h# p7 b
而要用定點再轉一次呢?
11#
 樓主| 發表於 2009-9-20 21:17:28 | 只看該作者
大大~
$ G' m9 K+ d9 H3 D$ p% K6 `* [4 E/ v8 Q8 I* s
你的意思是說 假設我程式可以算到小數第3位,輸入的a 10.5 就是變1010.1004 g: h7 V" m" c9 T& Y: w
如果是整數1,則變成0001.000  這樣來做正規化?
. G* P' Y: @! T/ h# v1 I2 X$ t還是說Quartus II 有可以判定輸入式浮點數的語法嗎?/ }! o- l4 O, O
' }. Y9 S" P$ J, z
如果沒有的話也得要把輸入的數值做正規化將其輸出,否則也不會有大大說的浮點數格式的輸入吧@@?
/ g+ L0 @6 N3 m: H; g' T8 A不知道我這樣說有沒有錯...^^"
12#
發表於 2009-9-21 20:22:38 | 只看該作者
您好
  Z- o8 r8 R; n% t" ^4 M1 h/ A+ u" b+ p9 ^8 |2 v
我的意思是你要自己算,將10.5或1先自己轉好成IEEE 754格式,: ^% j' Y- {# J3 f5 g$ I0 d% o
然後在輸入到a,b

評分

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

查看全部評分

13#
 樓主| 發表於 2009-9-21 22:45:15 | 只看該作者
大大~$ U/ ~4 R8 D6 k2 E7 X' M  |) z
我知道你的意思了,不過我目前是需要把非IEEE 754格式的浮點數轉成IEEE 754格式.....
: {2 m4 d8 {6 r- h) F! s4 q這樣是不可能實現的嗎?^^"
14#
發表於 2009-9-22 22:21:46 | 只看該作者
可以實現7 u( ~7 r9 s, G* u- a& t0 w- s
請把了解規則 用電路可把非IEEE 754格式的浮點數(Fixed Point)轉成IEEE 754格式(Float Point)- F' p$ o+ R% R9 `1 b0 S
然後就可以當成浮點數加法器的輸入
# V2 L4 ^5 p3 J; Y. u9 H7 i
- Y9 N8 A$ C/ m( N$ ][ 本帖最後由 masonchung 於 2009-9-22 10:24 PM 編輯 ]
15#
 樓主| 發表於 2009-9-23 20:05:40 | 只看該作者
masonchung 大大~/ p' t5 y/ k& [+ H* g7 ?

, i; m, \. n) Y/ w, D1 ^, w如果要這樣做的話,我的A如果是十進制"2.5",並且可運算到小數點後第5位,二進制的輸入訊號是不是一定要是10.10000
9 V( o; R7 I& V$ j" {) m這樣有錯嗎?
/ J2 c, A, J) k2 ~: L/ Y: d另外有一點有點疑問,這種作法是不是只能做無號數的浮點數運算?
) J6 k4 A. l% i( i9 j4 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  B: I$ Y2 G; X+ P  Y0 s9 C

2 ^) e; D8 Z8 L- r1 |/ eieee754 的 二進位浮點數格式在此 http://zh.wikipedia.org/wiki/IEEE_754
$ K: l5 `2 ], J* w/ m2 Z- N8 i4 S4 t. V1 S% K
這兩種格式轉換可用電路實現 $ x( B1 P* ]1 k0 g( S
- K7 U1 F5 y% Q1 v/ z) s/ ]3 i; }
然後再輸入到浮點數加法器運算
18#
發表於 2009-10-19 10:55:44 | 只看該作者
最近剛好有碰到類似的問題 , 感謝說明
19#
發表於 2009-10-19 12:13:41 | 只看該作者
請問可以直接對ieee754格式的a跟b做四則運算嗎? 9 q! v! h, V  f# j0 }9 L6 A1 a0 h
(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?/ M$ T! L! }: u5 i
不對, A: V# c1 N( Q( h$ c3 w: Y
只有浮點數加法器和乘法器) P8 x# X) D3 m! y1 t! D' \6 I
所以負數要用二補數- z+ c$ d; J: L2 G# ]5 P
C2010000=1_10000100_0000001_0000_0000_0000_0000
* r4 ~9 W" n. r' Z7 n+ |二補數=1101_1111.1100$ B! m1 t4 }$ b" J& W5 z: U" K
22.25=0001_0110.01009 a: h, r5 X" h0 B8 L
兩者相加即為答案-10, 透過浮點數加法器輸出為C1200000* U3 Q3 I: _# k3 l1 ?  j  i2 D

0 f7 K3 M, {: B" e' s# P- ~[ 本帖最後由 masonchung 於 2009-11-2 11:12 AM 編輯 ]
20#
發表於 2009-10-19 14:05:59 | 只看該作者
此二補數 1101_1111.1100 表示成IEEE754格式為42010000& K" d6 k5 L: Z0 M' c( R
所以真正的浮點加法器輸入的MSB只要反相 就變成二補數
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-4-23 05:18 PM , Processed in 0.141008 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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