Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

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

) ~8 V7 t% m$ Q2 e- K* L+ t8 b規則小弟是看的懂,不過疑問處在於2 B2 k! ]9 v+ Q" N+ u$ f
假設我設計一個簡單的浮點數加法器,輸入數值a跟b相加.. a' Q. i2 X2 g  E) F
那麼,我的"a如果是十進制10.5"  "b是2.125"
/ Q! M4 t1 d! e! ?) s+ ha跟b是要先正規化之後再行運算嗎?
9 C1 I" q5 D3 N. R) A這樣正規化之前,10.5要怎麼顯示成二進位?是固定位元顯示整數部份,
2 n2 X9 y. W8 E, W2 r8 |另一部份固定位元顯示小數部份..ex: 10.5=>1010.1: r; |& M9 M+ O4 M
這樣輸入a之後變成10101,程式內部再將a[4:1]斷定成整數a[0]斷定成浮點數,9 I8 C) ~9 j; v0 n' x+ g
這樣設計對嗎?; x3 m# r! [7 t
我是剛接觸的菜鳥..還請大大們指教提拔....如果有相關code可以參考感激不盡m(_ _)m
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
推薦
 樓主| 發表於 2009-10-18 14:03:42 | 只看該作者
謝謝大大們的幫助,目前我已經完成了部分的程式,現在又遇到一點問題,想提出來跟大大們討論一下...
% t8 H  n" n- m; u$ j: q/ `- p想請問大大們~
* N% W2 y# D' F$ n1 u0 Z; _$ c( p- `4 da= 41B20000  (16進制- ieee754格式)  十進制22.25  K3 L0 H- C0 }2 m6 ]! h; d6 M
b=C2010000  (16進制- ieee754格式)   十進制-32.25+ l4 w3 L! o" n- A. y0 @' C9 P
請問可以直接對ieee754格式的a跟b做四則運算嗎? + g3 }* C. U- ?0 R- z6 ]: J
(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?
! r+ `3 {$ h2 o2 K* e6 v2 U, \
+ e" J4 Y; R- J) J5 N- h6 `2 {  G
- M, b6 K" v8 M: O- U還是說一定要先做十進制的22.25+(-32.25)= -10 最後答案才用IEEE754表示?
4 t" N4 }. o% r: b. R-10的IEEE754表示=C1200000
3 U# q( ]: X1 x* {1 V, Z: K6 Z
  j# G5 e1 d. t/ }C2580000與C1200000好像不太一樣.
, p, w3 V& w; r. T% A還是說要怎麼逆運算才可以求出-10?
9 ~" E, H. ^2 H大大曉得嗎@@?
回復 支持 1 反對 0

使用道具 舉報

2#
發表於 2009-9-4 17:18:51 | 只看該作者
我之前也是這樣子用~
) u! ~# D$ z% t" Q
9 I; V- S; u6 M6 p/ S: ]4 o  @我覺得應該是ok的情況!
3#
 樓主| 發表於 2009-9-4 20:56:26 | 只看該作者
不過如果照這樣寫,感覺上小數點是固定的,不像浮點數的感覺耶....
4#
發表於 2009-9-8 20:48:56 | 只看該作者
您好
; F4 x" B/ ^4 M  v" b9 |1.如果a,b兩值還沒正規化,則先將a,b正規化,
) ~9 [1 O  K5 _6 Q2.將a,b尾數對齊$ M+ [# R: s, x; ~3 w4 z! c- t
3.尾數相加3 U, W4 r9 i4 e% W
4.將結果正規化
$ v4 {3 ~' R0 _+ S' h: m# z
( _& p# A1 y6 ^- M; B您參考看看
5#
 樓主| 發表於 2009-9-16 21:38:06 | 只看該作者
大大~我陷在卡在將輸入數值做正規化的動作,: y2 U: N: A: x8 m* a! n0 {/ i5 _$ B
假如輸入的a是10.5, 在程式裡面會變成10101串列輸入,假設我程式固定只有運算到小數第一位,4 C, H# t; v( y0 i1 l- X' b$ ^
這樣可以抓到1010.1並且將其正規化,但是如果我輸入數值是整數的00100,這樣他要怎麼判別小數點的位置@@?
4 z! k* g. O3 d; h他要怎麼判斷輸入的數值是不是浮點數?
6#
發表於 2009-9-17 08:51:20 | 只看該作者
您好
; L% h! ~; m  r, }* n. w) R! c! V& b# \. o+ [( p7 a
  a,b兩數要做浮點相加,那麼a,b兩值就要為浮點格式,
$ l2 ]: P' D, T7 q) y$ z9 D$ \+ K你的問題不是卡在正規化,10.5=1010.1是定點小數,2 d3 }  I1 j* Y
10101,00100都不是浮點格式,如何將之正規化,0 C( r0 @+ W4 \0 @+ ^) P
不能拿兩個定點格式的值來做浮點運算,
7#
 樓主| 發表於 2009-9-17 21:27:31 | 只看該作者
大大~' T5 P9 ~- ~" s. k6 n% D5 w4 a
請問您說的浮點格式,是像IEEE 754格式這種嗎?....還是??
6 F- H$ ~1 c) s3 ^  n
! E( c$ g7 ^! [: Y- J是怎樣的浮點數格式輸入到a才可以被正規化呢^^"~不好意思喔~新手問了一些蠢問題@@
8#
發表於 2009-9-18 09:04:41 | 只看該作者
您好
: a% Q4 r/ O' l5 c" G  IEEE 754是浮點格式的一種,當然還有其他的,& X* y0 Q& s8 q7 J
看你要用哪一種嚕," Z: O7 U/ X$ F* k0 ]! @2 A
+ i) h2 |# @4 q
如果你用IEEE 754,那麼輸入a,b值就要符合 IEEE 754格式
9#
 樓主| 發表於 2009-9-18 22:06:54 | 只看該作者
IEEE 754的浮點數格式 不是已經正規化了嗎?...
+ `3 N2 X  h- L0 C3 x' P3 f/ Z4 C' o
: c1 |3 g  X0 [+ ~沒辦法寫CODE讓輸入的串列資料,將十進致10.5二進致為1010.1輸入後再由程式正規化嗎?
10#
發表於 2009-9-20 11:40:30 | 只看該作者
您好
0 s5 P5 X3 b; ?- d
# I+ V4 B5 {- {. z2 L( ^ a,b不是已知的值嗎?為甚麼不直接用浮點格式來表示,- T' U. Z& A: y( [
而要用定點再轉一次呢?
11#
 樓主| 發表於 2009-9-20 21:17:28 | 只看該作者
大大~$ E" _5 m1 \9 m: ~

- _  ]: g) U! d5 r你的意思是說 假設我程式可以算到小數第3位,輸入的a 10.5 就是變1010.100  ~# H& `- c* j1 \) W) p
如果是整數1,則變成0001.000  這樣來做正規化?
5 i2 |" ?* }, l6 M; W  T! b7 F4 s還是說Quartus II 有可以判定輸入式浮點數的語法嗎?4 B7 R6 c5 f0 |% l9 o; Z% r

# [! O( P8 W4 z# V8 J如果沒有的話也得要把輸入的數值做正規化將其輸出,否則也不會有大大說的浮點數格式的輸入吧@@?
4 d  P$ d4 o+ \不知道我這樣說有沒有錯...^^"
12#
發表於 2009-9-21 20:22:38 | 只看該作者
您好
3 J/ W3 }3 C8 i% \" w3 d9 X
) Z6 N# N/ J% c  ^我的意思是你要自己算,將10.5或1先自己轉好成IEEE 754格式,
/ b) m6 S" j1 h2 ~; N- F9 E! z! c然後在輸入到a,b

評分

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

查看全部評分

13#
 樓主| 發表於 2009-9-21 22:45:15 | 只看該作者
大大~
$ k5 w0 ?' R* A7 D. `) C2 o我知道你的意思了,不過我目前是需要把非IEEE 754格式的浮點數轉成IEEE 754格式.....
7 P6 s& e* s4 w這樣是不可能實現的嗎?^^"
14#
發表於 2009-9-22 22:21:46 | 只看該作者
可以實現6 ^4 |& h6 Y% N/ U; w$ A- \
請把了解規則 用電路可把非IEEE 754格式的浮點數(Fixed Point)轉成IEEE 754格式(Float Point)8 N/ K6 t4 M0 u! m2 _9 C
然後就可以當成浮點數加法器的輸入
) \4 Y8 b3 @3 Y, ]/ ]! ~& q/ l5 j" z& o9 I
[ 本帖最後由 masonchung 於 2009-9-22 10:24 PM 編輯 ]
15#
 樓主| 發表於 2009-9-23 20:05:40 | 只看該作者
masonchung 大大~
2 a; ?' \. y9 x/ S. T' ]
; g8 U  z3 u- X: h9 o9 r5 T如果要這樣做的話,我的A如果是十進制"2.5",並且可運算到小數點後第5位,二進制的輸入訊號是不是一定要是10.10000) _. ~% s) |5 Y$ a/ r2 e$ h% \$ Y. q6 Y
這樣有錯嗎?& G. ~* o4 C  W; a2 t
另外有一點有點疑問,這種作法是不是只能做無號數的浮點數運算?$ Y4 K4 Z/ r1 M; J$ L
-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
3 e( B: c7 ~) c/ r5 x, ~. ^! H
/ h! z% A! @" d% ^ieee754 的 二進位浮點數格式在此 http://zh.wikipedia.org/wiki/IEEE_754. ?6 U5 [# Q2 T. w8 Q

- Q" Q& h& S+ |這兩種格式轉換可用電路實現 # Y4 t8 d- {) a/ k# _( ]
  b; L( m! }- X- q+ d' Z) M
然後再輸入到浮點數加法器運算
18#
發表於 2009-10-19 10:55:44 | 只看該作者
最近剛好有碰到類似的問題 , 感謝說明
19#
發表於 2009-10-19 12:13:41 | 只看該作者
請問可以直接對ieee754格式的a跟b做四則運算嗎? ' S# K+ Y- {+ g6 ~8 O
(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?
/ q- `. Y1 a/ j9 m% E不對
' ?* c! |( S# K1 z0 r, T只有浮點數加法器和乘法器1 A; Z# e+ d4 W% B% O# Y
所以負數要用二補數& m% \0 H) a$ \8 P% r; l9 d
C2010000=1_10000100_0000001_0000_0000_0000_0000
3 e/ C7 O8 j' ^& f  y- @7 L  H5 ?二補數=1101_1111.1100: ~3 `) n' G, H$ {* r
22.25=0001_0110.0100
! O; F9 r; F' s7 E# s! ~兩者相加即為答案-10, 透過浮點數加法器輸出為C1200000
1 X- N2 ?5 [6 b: z* b6 B8 f8 N* i) u9 {8 Y: m7 p" r# T
[ 本帖最後由 masonchung 於 2009-11-2 11:12 AM 編輯 ]
20#
發表於 2009-10-19 14:05:59 | 只看該作者
此二補數 1101_1111.1100 表示成IEEE754格式為42010000  p8 Y6 {+ n, P# B
所以真正的浮點加法器輸入的MSB只要反相 就變成二補數
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2025-1-31 06:32 AM , Processed in 0.219012 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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