Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-9-2 20:23:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
想請問有設計過IEEE 754 浮點數 規則的程式的大大.....! R1 t# ]2 O' [
( t# R' o- w& I. G7 u
規則小弟是看的懂,不過疑問處在於
0 ~/ `. @% }5 y" i& ^, u8 V假設我設計一個簡單的浮點數加法器,輸入數值a跟b相加.6 `7 `1 h. f/ C$ K( v
那麼,我的"a如果是十進制10.5"  "b是2.125"
* X) `' t2 x- X7 o+ r( Pa跟b是要先正規化之後再行運算嗎?  V$ @: V, X% ~( M6 c% r+ z# q
這樣正規化之前,10.5要怎麼顯示成二進位?是固定位元顯示整數部份,% V  Y9 }# p0 ?. i
另一部份固定位元顯示小數部份..ex: 10.5=>1010.1
/ Y& @/ V2 k  q) {3 M' f( e這樣輸入a之後變成10101,程式內部再將a[4:1]斷定成整數a[0]斷定成浮點數,
( v3 D0 @" G$ e. ?: V; Z# i  Y- S這樣設計對嗎?" ]9 ^# s3 C. d9 a( e
我是剛接觸的菜鳥..還請大大們指教提拔....如果有相關code可以參考感激不盡m(_ _)m
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
推薦
 樓主| 發表於 2009-10-18 14:03:42 | 只看該作者
謝謝大大們的幫助,目前我已經完成了部分的程式,現在又遇到一點問題,想提出來跟大大們討論一下...
/ S$ E& r* M) |* p7 _+ @" N8 [/ X' O想請問大大們~& Z& m" G7 E$ I9 x; C* V' r  u
a= 41B20000  (16進制- ieee754格式)  十進制22.25. a, I1 j' T% _2 Z
b=C2010000  (16進制- ieee754格式)   十進制-32.25  F* e, @  `3 h) S& c7 S- o
請問可以直接對ieee754格式的a跟b做四則運算嗎? & f& c6 z: H" G% x
(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?
! ?% Q, _+ K* w* E* Z
0 h1 y: l  p, z( O1 I" T7 S   _1 m$ d1 o, \- U" `
還是說一定要先做十進制的22.25+(-32.25)= -10 最後答案才用IEEE754表示?
! p; L/ P" ?5 h0 I1 [  x-10的IEEE754表示=C1200000
8 l5 e2 k: o5 b3 a8 G8 ~ ; ^) Q  U  A# @
C2580000與C1200000好像不太一樣.
+ q9 U- L9 m* Q還是說要怎麼逆運算才可以求出-10?
- P; j' J, F$ P) {* l  p7 w1 [大大曉得嗎@@?
回復 支持 1 反對 0

使用道具 舉報

2#
發表於 2009-9-4 17:18:51 | 只看該作者
我之前也是這樣子用~
8 X1 N- T1 ~" E9 `8 \5 }3 s1 Y
! v& r, w; o; q, [0 W我覺得應該是ok的情況!
3#
 樓主| 發表於 2009-9-4 20:56:26 | 只看該作者
不過如果照這樣寫,感覺上小數點是固定的,不像浮點數的感覺耶....
4#
發表於 2009-9-8 20:48:56 | 只看該作者
您好
6 |9 N) w- C4 q; M% J% D1.如果a,b兩值還沒正規化,則先將a,b正規化,7 n# z: J2 @) ^! s0 z
2.將a,b尾數對齊9 o  I' u8 w! b8 n* v
3.尾數相加
1 T$ }% t, f! d$ o# A, ?4.將結果正規化
+ {5 [. [( i  C4 A; n  @& ]+ C% `- {; Q/ i& z- o2 q
您參考看看
5#
 樓主| 發表於 2009-9-16 21:38:06 | 只看該作者
大大~我陷在卡在將輸入數值做正規化的動作,
6 y# U: v* ]) `假如輸入的a是10.5, 在程式裡面會變成10101串列輸入,假設我程式固定只有運算到小數第一位,
1 L9 e+ ?: y+ U' m這樣可以抓到1010.1並且將其正規化,但是如果我輸入數值是整數的00100,這樣他要怎麼判別小數點的位置@@?0 I0 x7 i4 `  k  R
他要怎麼判斷輸入的數值是不是浮點數?
6#
發表於 2009-9-17 08:51:20 | 只看該作者
您好7 {, x' a" ?# ^4 W9 v. g
4 v3 O, p( T# g$ y
  a,b兩數要做浮點相加,那麼a,b兩值就要為浮點格式,2 h* Q# U* {* p- E7 o) `) M' a
你的問題不是卡在正規化,10.5=1010.1是定點小數,
1 B, H6 e$ p& G2 J# y" `10101,00100都不是浮點格式,如何將之正規化,; I  f4 S6 |; z5 E/ A; z, x( k; X
不能拿兩個定點格式的值來做浮點運算,
7#
 樓主| 發表於 2009-9-17 21:27:31 | 只看該作者
大大~0 R2 u7 n$ Y* l! @
請問您說的浮點格式,是像IEEE 754格式這種嗎?....還是??. g2 j2 |# h, S! @" z8 i# M* |$ r
0 r. [8 ~! A  d3 n  |4 h6 Q
是怎樣的浮點數格式輸入到a才可以被正規化呢^^"~不好意思喔~新手問了一些蠢問題@@
8#
發表於 2009-9-18 09:04:41 | 只看該作者
您好. [) H  Z; P2 Q6 Q' A3 f$ c. `
  IEEE 754是浮點格式的一種,當然還有其他的,
/ H- S0 K' ]3 t5 @" J  M" c 看你要用哪一種嚕,
3 U* y1 D6 \; }% b/ S2 u7 i) X7 K3 t
如果你用IEEE 754,那麼輸入a,b值就要符合 IEEE 754格式
9#
 樓主| 發表於 2009-9-18 22:06:54 | 只看該作者
IEEE 754的浮點數格式 不是已經正規化了嗎?...
5 R9 Z1 L- S4 A9 v, j* X8 `) f3 s1 E6 W# N& q
沒辦法寫CODE讓輸入的串列資料,將十進致10.5二進致為1010.1輸入後再由程式正規化嗎?
10#
發表於 2009-9-20 11:40:30 | 只看該作者
您好
) N, V) F$ M: @7 {/ L
$ O5 K  x( B) t& w, c2 ~4 D a,b不是已知的值嗎?為甚麼不直接用浮點格式來表示,2 o$ Y" R9 D3 \: m! j( y9 `% e
而要用定點再轉一次呢?
11#
 樓主| 發表於 2009-9-20 21:17:28 | 只看該作者
大大~/ K% o9 ^: F4 f+ X# L$ q2 C3 j
2 z. l* D5 Z. A5 R  Z! G
你的意思是說 假設我程式可以算到小數第3位,輸入的a 10.5 就是變1010.1004 H: D- c0 N0 V* e1 h
如果是整數1,則變成0001.000  這樣來做正規化?, O& S7 b. |" \( j0 \" B5 \. l7 k! s
還是說Quartus II 有可以判定輸入式浮點數的語法嗎?
: v# o& d  B( }) K# h2 m- q" k' T' |/ U# `3 P9 @& G9 }
如果沒有的話也得要把輸入的數值做正規化將其輸出,否則也不會有大大說的浮點數格式的輸入吧@@?. o+ v& ~6 K+ |$ i# K
不知道我這樣說有沒有錯...^^"
12#
發表於 2009-9-21 20:22:38 | 只看該作者
您好
9 z; a5 N# D9 ?+ M! |, ^9 L+ @% f! V5 ?7 y0 c; s
我的意思是你要自己算,將10.5或1先自己轉好成IEEE 754格式,
# H4 l1 q4 ?' T然後在輸入到a,b

評分

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

查看全部評分

13#
 樓主| 發表於 2009-9-21 22:45:15 | 只看該作者
大大~
: X4 T8 E, u8 \0 t  S3 d( D我知道你的意思了,不過我目前是需要把非IEEE 754格式的浮點數轉成IEEE 754格式.....
+ r; o& ?# {( H, p9 E% r這樣是不可能實現的嗎?^^"
14#
發表於 2009-9-22 22:21:46 | 只看該作者
可以實現4 `0 N/ X, i1 q3 c
請把了解規則 用電路可把非IEEE 754格式的浮點數(Fixed Point)轉成IEEE 754格式(Float Point)$ }* U/ Z7 P$ u; [; n
然後就可以當成浮點數加法器的輸入
9 U* H" s/ P/ {: K8 v; x+ k3 [
5 t& U8 V# w/ f" p- D& d# X[ 本帖最後由 masonchung 於 2009-9-22 10:24 PM 編輯 ]
15#
 樓主| 發表於 2009-9-23 20:05:40 | 只看該作者
masonchung 大大~
5 F% Q1 q( r& x$ f
: O6 N1 @# S, U4 I$ I) B- Y如果要這樣做的話,我的A如果是十進制"2.5",並且可運算到小數點後第5位,二進制的輸入訊號是不是一定要是10.10000- c* J4 e/ a5 n- B
這樣有錯嗎?2 l$ y: n/ I" U! e1 j
另外有一點有點疑問,這種作法是不是只能做無號數的浮點數運算?. e8 n* W7 N( Y$ k
-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%B81 X. K7 s2 M, u  p

' N7 {  T: I; x; Z9 B! nieee754 的 二進位浮點數格式在此 http://zh.wikipedia.org/wiki/IEEE_754
; g  A, A5 B8 V& ?- ^+ k% D& ^, e" u( [! e5 _- E* x7 \2 @
這兩種格式轉換可用電路實現
, K  H% `  x  c! {
5 E6 f. D* r0 c4 C/ [然後再輸入到浮點數加法器運算
18#
發表於 2009-10-19 10:55:44 | 只看該作者
最近剛好有碰到類似的問題 , 感謝說明
19#
發表於 2009-10-19 12:13:41 | 只看該作者
請問可以直接對ieee754格式的a跟b做四則運算嗎? $ s% T) F3 O5 ?" i: H
(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?
8 ^- ]) ^# y' @3 {1 b不對
! T( w# [' O+ }: f  [( h1 N: C; v只有浮點數加法器和乘法器1 U8 N! }8 ^4 j2 @2 S0 m
所以負數要用二補數$ D) I3 m: k6 Y0 d+ @8 `# s
C2010000=1_10000100_0000001_0000_0000_0000_0000* H( c1 M  g% @- V& P8 K, F8 s
二補數=1101_1111.1100
& W" F, _3 i4 |6 L, h8 ~1 i% V& z22.25=0001_0110.0100# o2 ~# B* X, V+ h/ O
兩者相加即為答案-10, 透過浮點數加法器輸出為C12000001 p/ Z, \- I5 K" z5 j6 S$ \
9 B6 l4 R+ `+ D4 T
[ 本帖最後由 masonchung 於 2009-11-2 11:12 AM 編輯 ]
20#
發表於 2009-10-19 14:05:59 | 只看該作者
此二補數 1101_1111.1100 表示成IEEE754格式為42010000
& C2 _7 a0 V! W5 g; O) C所以真正的浮點加法器輸入的MSB只要反相 就變成二補數
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-4-19 04:17 PM , Processed in 0.121007 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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