Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-9-2 20:23:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
想請問有設計過IEEE 754 浮點數 規則的程式的大大.....7 X; Z' t: z; Y, q/ T

- U) S4 c( _1 S) N" ~( l" D7 e規則小弟是看的懂,不過疑問處在於# v$ z& Y6 s8 @% ~
假設我設計一個簡單的浮點數加法器,輸入數值a跟b相加.( b; Z% V7 T3 f4 ^1 Y# H# A/ j
那麼,我的"a如果是十進制10.5"  "b是2.125"
7 w& x9 O; N( n5 o  l" }, j' p# q. aa跟b是要先正規化之後再行運算嗎?5 ]( L/ ?, d2 x! e2 c( ?# C  U5 j6 C
這樣正規化之前,10.5要怎麼顯示成二進位?是固定位元顯示整數部份,# Z8 `9 ^, X3 ?% n: S
另一部份固定位元顯示小數部份..ex: 10.5=>1010.18 c! ]. ~2 s5 a" }8 \$ B
這樣輸入a之後變成10101,程式內部再將a[4:1]斷定成整數a[0]斷定成浮點數,
( t6 a, `0 ~$ ~0 c, N! q5 ?這樣設計對嗎?4 G5 E6 {9 N3 R( S/ |
我是剛接觸的菜鳥..還請大大們指教提拔....如果有相關code可以參考感激不盡m(_ _)m
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
推薦
 樓主| 發表於 2009-10-18 14:03:42 | 只看該作者
謝謝大大們的幫助,目前我已經完成了部分的程式,現在又遇到一點問題,想提出來跟大大們討論一下...' ]. B; A/ r( ]  F. b
想請問大大們~3 F. _( M0 Q4 P: d) z) ^+ R
a= 41B20000  (16進制- ieee754格式)  十進制22.25
8 t! h( M0 t  X& Hb=C2010000  (16進制- ieee754格式)   十進制-32.25
3 ]6 N+ T2 t! r# M. O5 O請問可以直接對ieee754格式的a跟b做四則運算嗎? ! }) d, A( ?: Q. a3 n5 w9 c
(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?
' \3 ?5 l/ F+ I, }( l
3 {7 e5 d+ ^5 J# J& o" f# ^9 I
+ N: E7 O, O" d還是說一定要先做十進制的22.25+(-32.25)= -10 最後答案才用IEEE754表示?& Y% R- V1 v& S- q9 ~; M8 P# Z" a
-10的IEEE754表示=C1200000; {4 W/ }3 N) O5 o* _
- |, R, C9 A" ]6 [4 K/ X" |
C2580000與C1200000好像不太一樣.
, k: o/ O; A) @- s還是說要怎麼逆運算才可以求出-10?
: h! v4 Q' e, V: u) x3 v- x大大曉得嗎@@?
回復 支持 1 反對 0

使用道具 舉報

2#
發表於 2009-9-4 17:18:51 | 只看該作者
我之前也是這樣子用~
! c) H  E) v) G' ^ 3 X, e" M. E* |
我覺得應該是ok的情況!
3#
 樓主| 發表於 2009-9-4 20:56:26 | 只看該作者
不過如果照這樣寫,感覺上小數點是固定的,不像浮點數的感覺耶....
4#
發表於 2009-9-8 20:48:56 | 只看該作者
您好
7 j, O6 s1 N/ O8 E% H2 d- P1.如果a,b兩值還沒正規化,則先將a,b正規化,
) m% c, \, ^6 k2.將a,b尾數對齊
6 Q: ~6 R4 {! r& n2 T- y3.尾數相加
/ A' h& \; v+ e$ B4.將結果正規化( t; Q- l# Z- J( Z

7 B/ c4 c# _5 {5 m1 M4 Q$ v) Z您參考看看
5#
 樓主| 發表於 2009-9-16 21:38:06 | 只看該作者
大大~我陷在卡在將輸入數值做正規化的動作,/ A9 U- i, l6 e0 D& k+ _7 Y
假如輸入的a是10.5, 在程式裡面會變成10101串列輸入,假設我程式固定只有運算到小數第一位,0 \3 Q/ F- }; T% k. C4 {- l
這樣可以抓到1010.1並且將其正規化,但是如果我輸入數值是整數的00100,這樣他要怎麼判別小數點的位置@@?
9 [- u" I1 i, e, {$ l; h他要怎麼判斷輸入的數值是不是浮點數?
6#
發表於 2009-9-17 08:51:20 | 只看該作者
您好
4 D# \" G$ b0 h  y. ]' E  l: l, \, [4 P6 i
  a,b兩數要做浮點相加,那麼a,b兩值就要為浮點格式,
6 w9 C/ f! M4 e# _- z* t你的問題不是卡在正規化,10.5=1010.1是定點小數,1 N1 w% g* ^& r5 h
10101,00100都不是浮點格式,如何將之正規化,
% s/ Z! l+ l2 U8 n2 w& A4 g不能拿兩個定點格式的值來做浮點運算,
7#
 樓主| 發表於 2009-9-17 21:27:31 | 只看該作者
大大~5 |/ n6 a( K% o* M3 b
請問您說的浮點格式,是像IEEE 754格式這種嗎?....還是??
! d+ b1 {$ m, [8 y: q/ a5 d9 ]6 W- H7 K8 d  B
是怎樣的浮點數格式輸入到a才可以被正規化呢^^"~不好意思喔~新手問了一些蠢問題@@
8#
發表於 2009-9-18 09:04:41 | 只看該作者
您好  |/ ]  m' l8 |$ w
  IEEE 754是浮點格式的一種,當然還有其他的,8 w! ~/ n* f& G' E. G1 b' ]4 }4 y" N
看你要用哪一種嚕,
4 F0 i1 c) q/ ^5 w! w
/ G  u% F, D) b$ s- Z如果你用IEEE 754,那麼輸入a,b值就要符合 IEEE 754格式
9#
 樓主| 發表於 2009-9-18 22:06:54 | 只看該作者
IEEE 754的浮點數格式 不是已經正規化了嗎?...$ k8 `  }2 L- O: s: W' }! L: s

8 w7 E$ T# P4 @5 H5 w) B1 T4 x沒辦法寫CODE讓輸入的串列資料,將十進致10.5二進致為1010.1輸入後再由程式正規化嗎?
10#
發表於 2009-9-20 11:40:30 | 只看該作者
您好
: U; g. ?; c5 n. W% D  B. K
6 c- D, N. _0 E& h a,b不是已知的值嗎?為甚麼不直接用浮點格式來表示,$ E5 m* x" `0 o6 \7 o
而要用定點再轉一次呢?
11#
 樓主| 發表於 2009-9-20 21:17:28 | 只看該作者
大大~
3 S* C! s& Z3 I# G. x* P4 v' r2 y' }
你的意思是說 假設我程式可以算到小數第3位,輸入的a 10.5 就是變1010.1000 B# U4 }6 }' l" j
如果是整數1,則變成0001.000  這樣來做正規化?7 z" C- [' s" d" T' Q
還是說Quartus II 有可以判定輸入式浮點數的語法嗎?% C1 y: T& y) i* E

5 Z* W( y4 q1 L8 c/ L4 d如果沒有的話也得要把輸入的數值做正規化將其輸出,否則也不會有大大說的浮點數格式的輸入吧@@?
- K' a# [5 W" F; ?. @: j不知道我這樣說有沒有錯...^^"
12#
發表於 2009-9-21 20:22:38 | 只看該作者
您好! j; k8 s! G- t

1 q5 W; C6 _0 o3 ~. e我的意思是你要自己算,將10.5或1先自己轉好成IEEE 754格式,2 D1 W' l" j$ z+ B% X9 f
然後在輸入到a,b

評分

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

查看全部評分

13#
 樓主| 發表於 2009-9-21 22:45:15 | 只看該作者
大大~
! P+ f. s8 \; P, G; \我知道你的意思了,不過我目前是需要把非IEEE 754格式的浮點數轉成IEEE 754格式.....
9 q7 ?0 N! M! ^/ B這樣是不可能實現的嗎?^^"
14#
發表於 2009-9-22 22:21:46 | 只看該作者
可以實現
. A8 s2 |1 |4 Y5 @' P  ^0 ~  {請把了解規則 用電路可把非IEEE 754格式的浮點數(Fixed Point)轉成IEEE 754格式(Float Point)5 L/ [8 I0 A6 P! W3 a
然後就可以當成浮點數加法器的輸入
8 X4 U" [' n7 @3 U4 P3 O9 `7 [( A
: G* r) a5 Q0 x$ ?, ^5 M4 C( t[ 本帖最後由 masonchung 於 2009-9-22 10:24 PM 編輯 ]
15#
 樓主| 發表於 2009-9-23 20:05:40 | 只看該作者
masonchung 大大~
" H4 @- C/ F; A- |! E# E ; j2 h# ^  S$ n2 @0 O5 Y
如果要這樣做的話,我的A如果是十進制"2.5",並且可運算到小數點後第5位,二進制的輸入訊號是不是一定要是10.10000
- [, {: _- l4 w7 R9 X3 |這樣有錯嗎?
5 i# `8 K" \; m( i另外有一點有點疑問,這種作法是不是只能做無號數的浮點數運算?
6 q9 W$ E- {7 e+ k$ W! X$ T0 n! P-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
7 L, E; [3 J2 n5 V/ ^; U1 |. g4 R6 p  ]
ieee754 的 二進位浮點數格式在此 http://zh.wikipedia.org/wiki/IEEE_7541 e! N9 W6 Y0 A. i! H

+ R1 Z& T0 e( N! y1 _: D這兩種格式轉換可用電路實現 8 f/ N: N2 U+ n; s8 L- x

/ Q/ R1 S, c, J1 g+ y2 |然後再輸入到浮點數加法器運算
18#
發表於 2009-10-19 10:55:44 | 只看該作者
最近剛好有碰到類似的問題 , 感謝說明
19#
發表於 2009-10-19 12:13:41 | 只看該作者
請問可以直接對ieee754格式的a跟b做四則運算嗎?
( h* @3 y6 }5 P/ y! I) V: |# ]0 W; s& @(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?
$ n" e8 I1 N+ W! O- f1 k+ g7 V不對  G' S! R  R. E7 ~) |/ |( ^! {
只有浮點數加法器和乘法器
6 w6 @4 u. U; j, w# c4 c# E所以負數要用二補數
1 u; o+ T1 D& i4 y% k7 Z* tC2010000=1_10000100_0000001_0000_0000_0000_0000, m$ k6 O6 S: O$ t4 k1 q  q
二補數=1101_1111.1100
$ {6 Z4 ^& S( l& Z1 {22.25=0001_0110.0100; b, H4 E' {. D, r+ u' m
兩者相加即為答案-10, 透過浮點數加法器輸出為C12000006 [3 [" s" r% b
/ k4 t2 T0 ]: |5 ~7 a# A8 Z
[ 本帖最後由 masonchung 於 2009-11-2 11:12 AM 編輯 ]
20#
發表於 2009-10-19 14:05:59 | 只看該作者
此二補數 1101_1111.1100 表示成IEEE754格式為42010000& ?$ T, T8 M7 N+ Z
所以真正的浮點加法器輸入的MSB只要反相 就變成二補數
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-7 07:05 PM , Processed in 0.119007 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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