Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-9-2 20:23:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
想請問有設計過IEEE 754 浮點數 規則的程式的大大.....
- i" F$ |; Y* R, k$ h
1 \7 V8 G& R% |* p7 W. J規則小弟是看的懂,不過疑問處在於
9 Z9 C( d, k) @% k) }2 C假設我設計一個簡單的浮點數加法器,輸入數值a跟b相加.4 H+ K) O. B# `0 @- A& P
那麼,我的"a如果是十進制10.5"  "b是2.125"+ J$ v* t/ o8 _' o! `" V9 K
a跟b是要先正規化之後再行運算嗎?
) ^  R2 v8 R/ o9 e這樣正規化之前,10.5要怎麼顯示成二進位?是固定位元顯示整數部份,
, d9 Y1 u. \3 c& o4 P  {5 s另一部份固定位元顯示小數部份..ex: 10.5=>1010.1# e* L9 Y5 ~3 L7 b
這樣輸入a之後變成10101,程式內部再將a[4:1]斷定成整數a[0]斷定成浮點數,
* H, ~; b; F! ]" ]& B! K. [* d這樣設計對嗎?
' l5 ]& O4 T" \# d# P; t我是剛接觸的菜鳥..還請大大們指教提拔....如果有相關code可以參考感激不盡m(_ _)m
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
推薦
 樓主| 發表於 2009-10-18 14:03:42 | 只看該作者
謝謝大大們的幫助,目前我已經完成了部分的程式,現在又遇到一點問題,想提出來跟大大們討論一下...
5 C2 Z" V3 i, W" g想請問大大們~( t/ u1 w7 Z0 ]% k$ L
a= 41B20000  (16進制- ieee754格式)  十進制22.251 ^4 i  {" {$ Y6 P7 f0 b
b=C2010000  (16進制- ieee754格式)   十進制-32.25
- X+ O) v- L& U; L: l* P請問可以直接對ieee754格式的a跟b做四則運算嗎? - G3 e* W9 U  U
(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?
5 }0 n0 S4 T/ u) N! u/ \0 u( M / b. o/ f4 i  Y6 Z

* J* c: D6 w# ?- @還是說一定要先做十進制的22.25+(-32.25)= -10 最後答案才用IEEE754表示?( D  c3 n7 [& x/ e0 S/ X3 O
-10的IEEE754表示=C1200000$ D+ q. Q0 D! M% t& i1 r
1 h" s: `: }0 @( l
C2580000與C1200000好像不太一樣.: G, L  T' z, ?, }1 t& T! N: t
還是說要怎麼逆運算才可以求出-10?
' M  O" E. @  n5 |大大曉得嗎@@?
回復 支持 1 反對 0

使用道具 舉報

2#
發表於 2009-9-4 17:18:51 | 只看該作者
我之前也是這樣子用~
  e, ]/ X# k0 A* W: `) l 7 `' Y  G  n% U- p
我覺得應該是ok的情況!
3#
 樓主| 發表於 2009-9-4 20:56:26 | 只看該作者
不過如果照這樣寫,感覺上小數點是固定的,不像浮點數的感覺耶....
4#
發表於 2009-9-8 20:48:56 | 只看該作者
您好% L# V5 L  Y' Y5 ^6 B( ]# ^
1.如果a,b兩值還沒正規化,則先將a,b正規化,
: B+ C5 \; A5 F  o: n, U, f2.將a,b尾數對齊
: Z4 j* `* p2 m5 Z3.尾數相加+ R8 E4 c. Y& H0 M& [
4.將結果正規化
% F  i6 U4 Q/ Q3 j% D& m3 c' B" f! S7 z% b
您參考看看
5#
 樓主| 發表於 2009-9-16 21:38:06 | 只看該作者
大大~我陷在卡在將輸入數值做正規化的動作,. {6 H& C+ m$ M0 e9 Z" w' E8 o
假如輸入的a是10.5, 在程式裡面會變成10101串列輸入,假設我程式固定只有運算到小數第一位,
6 E3 t9 t  H; p. f( F" I7 p! _" c) O這樣可以抓到1010.1並且將其正規化,但是如果我輸入數值是整數的00100,這樣他要怎麼判別小數點的位置@@?
" K. A% c% ^* o他要怎麼判斷輸入的數值是不是浮點數?
6#
發表於 2009-9-17 08:51:20 | 只看該作者
您好$ W$ o4 d# R# j( y

( K- c$ F& i" o9 K) I: g  a,b兩數要做浮點相加,那麼a,b兩值就要為浮點格式,1 i' U. c, b8 U* {. {
你的問題不是卡在正規化,10.5=1010.1是定點小數,$ }$ J* G$ X, ]# i% p3 L4 q$ R0 z
10101,00100都不是浮點格式,如何將之正規化,7 N( U& c" G. M" v
不能拿兩個定點格式的值來做浮點運算,
7#
 樓主| 發表於 2009-9-17 21:27:31 | 只看該作者
大大~
: Z5 d' Y* U0 h請問您說的浮點格式,是像IEEE 754格式這種嗎?....還是??( G8 n% ^  ^8 c$ ^' O. X, _

1 {, A" z3 b. A2 p" l2 M是怎樣的浮點數格式輸入到a才可以被正規化呢^^"~不好意思喔~新手問了一些蠢問題@@
8#
發表於 2009-9-18 09:04:41 | 只看該作者
您好
2 Y, I' v7 I; r, f/ w4 R! Y  IEEE 754是浮點格式的一種,當然還有其他的,# s. q. e8 q2 `! O8 T
看你要用哪一種嚕,+ F" O; J' i( Q/ N( k7 T2 q! h

5 T  I5 @0 Q" e- g% }7 J如果你用IEEE 754,那麼輸入a,b值就要符合 IEEE 754格式
9#
 樓主| 發表於 2009-9-18 22:06:54 | 只看該作者
IEEE 754的浮點數格式 不是已經正規化了嗎?...
: [, E5 C4 D: P5 c( [+ n
5 N( k) k9 Q5 r" M+ ]# c5 ?4 h沒辦法寫CODE讓輸入的串列資料,將十進致10.5二進致為1010.1輸入後再由程式正規化嗎?
10#
發表於 2009-9-20 11:40:30 | 只看該作者
您好7 S- q" F1 g& N* ?
# ~  |# B% n0 M& U* ]$ C
a,b不是已知的值嗎?為甚麼不直接用浮點格式來表示,/ }2 D( v- l- v2 H
而要用定點再轉一次呢?
11#
 樓主| 發表於 2009-9-20 21:17:28 | 只看該作者
大大~1 p$ g: x' o$ A
8 x. {* v: E6 T. L
你的意思是說 假設我程式可以算到小數第3位,輸入的a 10.5 就是變1010.100" B% ]0 w6 E+ Y1 u  P& Y. r. N
如果是整數1,則變成0001.000  這樣來做正規化?
: T/ i8 V4 b' F- i還是說Quartus II 有可以判定輸入式浮點數的語法嗎?
8 W* c( |/ H+ U4 s$ [1 U
/ H9 f' ~' k8 N2 b如果沒有的話也得要把輸入的數值做正規化將其輸出,否則也不會有大大說的浮點數格式的輸入吧@@?
( c1 v6 r; g9 H& q6 d不知道我這樣說有沒有錯...^^"
12#
發表於 2009-9-21 20:22:38 | 只看該作者
您好
# @, ~7 o1 Q7 F# B$ J
  Q: A5 L2 w+ e2 A" n3 c9 u我的意思是你要自己算,將10.5或1先自己轉好成IEEE 754格式,* o3 D* C9 z* `/ V
然後在輸入到a,b

評分

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

查看全部評分

13#
 樓主| 發表於 2009-9-21 22:45:15 | 只看該作者
大大~3 ?3 w! A: A; i( ~
我知道你的意思了,不過我目前是需要把非IEEE 754格式的浮點數轉成IEEE 754格式....." s9 f- O% }( F/ I
這樣是不可能實現的嗎?^^"
14#
發表於 2009-9-22 22:21:46 | 只看該作者
可以實現, V+ E; O6 M0 \' r  n
請把了解規則 用電路可把非IEEE 754格式的浮點數(Fixed Point)轉成IEEE 754格式(Float Point)3 C- t% A9 ]0 e
然後就可以當成浮點數加法器的輸入5 P( J& q9 w% N
' h6 T& i3 S1 k. }
[ 本帖最後由 masonchung 於 2009-9-22 10:24 PM 編輯 ]
15#
 樓主| 發表於 2009-9-23 20:05:40 | 只看該作者
masonchung 大大~
9 ^9 Y' l7 b+ s/ q7 ^+ _7 ^
7 z6 ~9 L) Q" b6 I如果要這樣做的話,我的A如果是十進制"2.5",並且可運算到小數點後第5位,二進制的輸入訊號是不是一定要是10.10000
7 C9 u+ y' R6 l2 j0 w這樣有錯嗎?
  e2 y: d# Z1 b8 |. L5 |另外有一點有點疑問,這種作法是不是只能做無號數的浮點數運算?
; K' i( d. v3 ]; Q3 O3 W-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
, M, X3 k7 R& t5 Q
- [* `3 [. V; l4 L& g/ ^0 t+ uieee754 的 二進位浮點數格式在此 http://zh.wikipedia.org/wiki/IEEE_754" `- Y5 h$ T. ~% o1 Y
# Q  L6 v0 Q! `0 Q( t
這兩種格式轉換可用電路實現   ?0 |  e  k2 j$ Z5 [: [

; w9 U- t2 h/ q$ s% j7 w然後再輸入到浮點數加法器運算
18#
發表於 2009-10-19 10:55:44 | 只看該作者
最近剛好有碰到類似的問題 , 感謝說明
19#
發表於 2009-10-19 12:13:41 | 只看該作者
請問可以直接對ieee754格式的a跟b做四則運算嗎? * y8 X4 X* t$ S1 Q8 ^5 O
(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?
6 v9 f% A" Z. N, D5 v不對. ]! g2 M3 N; q& \2 P
只有浮點數加法器和乘法器
( N' I% I: l8 d2 V  m所以負數要用二補數
( y/ }8 R: N4 u. \! B) m( @C2010000=1_10000100_0000001_0000_0000_0000_00003 p; L1 |/ t5 Y# H
二補數=1101_1111.1100* F$ x4 [  b$ v* b! J
22.25=0001_0110.0100
( c1 F3 k1 B$ a- ^( n2 X兩者相加即為答案-10, 透過浮點數加法器輸出為C1200000  H0 K3 Q& r* r, H" A  |  `* V
5 a: @9 f( J0 _, j0 A
[ 本帖最後由 masonchung 於 2009-11-2 11:12 AM 編輯 ]
20#
發表於 2009-10-19 14:05:59 | 只看該作者
此二補數 1101_1111.1100 表示成IEEE754格式為42010000* _4 e/ e% @) T0 N% J( z
所以真正的浮點加法器輸入的MSB只要反相 就變成二補數
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-6-14 10:45 AM , Processed in 0.142018 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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