Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-9-2 20:23:40 | 顯示全部樓層 回帖獎勵 |倒序瀏覽 |閱讀模式
想請問有設計過IEEE 754 浮點數 規則的程式的大大.....% w+ `, z) [/ Q

. O, r8 I- p  ?8 I) t2 r7 R; c規則小弟是看的懂,不過疑問處在於
' t9 d3 X- w- t* n假設我設計一個簡單的浮點數加法器,輸入數值a跟b相加.
! M# ]1 T& K! t那麼,我的"a如果是十進制10.5"  "b是2.125") n$ |3 \5 \! l. t: q( P  Y- X6 X7 N
a跟b是要先正規化之後再行運算嗎?: g% W8 G- I! K2 f3 x* d! ?
這樣正規化之前,10.5要怎麼顯示成二進位?是固定位元顯示整數部份,
  `! R0 w- n! _  c另一部份固定位元顯示小數部份..ex: 10.5=>1010.1
' u7 ]& d! D  h$ S0 [+ K這樣輸入a之後變成10101,程式內部再將a[4:1]斷定成整數a[0]斷定成浮點數,* k4 R# f; ^8 L( n3 |" R
這樣設計對嗎?
0 `6 U5 D* ?9 ~! j我是剛接觸的菜鳥..還請大大們指教提拔....如果有相關code可以參考感激不盡m(_ _)m
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
 樓主| 發表於 2009-9-4 20:56:26 | 顯示全部樓層
不過如果照這樣寫,感覺上小數點是固定的,不像浮點數的感覺耶....
3#
 樓主| 發表於 2009-9-16 21:38:06 | 顯示全部樓層
大大~我陷在卡在將輸入數值做正規化的動作,5 r# K' i: B7 @! r8 }7 E
假如輸入的a是10.5, 在程式裡面會變成10101串列輸入,假設我程式固定只有運算到小數第一位,
, T$ v1 [3 I3 w: G1 N" v這樣可以抓到1010.1並且將其正規化,但是如果我輸入數值是整數的00100,這樣他要怎麼判別小數點的位置@@?
! i$ H. ^4 u; ^) h他要怎麼判斷輸入的數值是不是浮點數?
4#
 樓主| 發表於 2009-9-17 21:27:31 | 顯示全部樓層
大大~/ @+ G0 j& T5 _2 s& {4 \/ S, U
請問您說的浮點格式,是像IEEE 754格式這種嗎?....還是??: J+ X7 p8 z; U$ G1 O& f% t6 D

: q" Z' J6 S0 c" G$ j2 E7 X( r是怎樣的浮點數格式輸入到a才可以被正規化呢^^"~不好意思喔~新手問了一些蠢問題@@
5#
 樓主| 發表於 2009-9-18 22:06:54 | 顯示全部樓層
IEEE 754的浮點數格式 不是已經正規化了嗎?...4 c5 p! E: S. |7 `. h

' t# t: {, Y9 X3 M8 o3 I( D! y沒辦法寫CODE讓輸入的串列資料,將十進致10.5二進致為1010.1輸入後再由程式正規化嗎?
6#
 樓主| 發表於 2009-9-20 21:17:28 | 顯示全部樓層
大大~2 ?, j) Z7 v; E/ C- Z+ m; p/ t
2 ^" t6 {3 a9 ]$ m6 t3 @# j
你的意思是說 假設我程式可以算到小數第3位,輸入的a 10.5 就是變1010.100& F  n- T. s6 r7 q: ?
如果是整數1,則變成0001.000  這樣來做正規化?8 ]* E& X) ^8 O- @+ M
還是說Quartus II 有可以判定輸入式浮點數的語法嗎?
8 p1 ^; q: H4 F3 @. v; ^% \( ?$ O' q6 k# C* p
如果沒有的話也得要把輸入的數值做正規化將其輸出,否則也不會有大大說的浮點數格式的輸入吧@@?9 d5 g9 e$ m$ ~4 O1 k9 a" k
不知道我這樣說有沒有錯...^^"
7#
 樓主| 發表於 2009-9-21 22:45:15 | 顯示全部樓層
大大~0 x  D9 c4 Z$ @% n$ X( Q: \$ X/ c8 I
我知道你的意思了,不過我目前是需要把非IEEE 754格式的浮點數轉成IEEE 754格式.....
0 z; m  F7 E8 L) y3 n這樣是不可能實現的嗎?^^"
8#
 樓主| 發表於 2009-9-23 20:05:40 | 顯示全部樓層
masonchung 大大~7 e) d" z  K, y% o- K1 Y. o. U

: Y! i3 O6 |  p. t如果要這樣做的話,我的A如果是十進制"2.5",並且可運算到小數點後第5位,二進制的輸入訊號是不是一定要是10.10000. r' Y( H  j$ _$ d8 _; U* w2 D( |
這樣有錯嗎?& K( q2 G) G" C) b: x! ?
另外有一點有點疑問,這種作法是不是只能做無號數的浮點數運算?
/ L0 @5 y' i* }0 _5 S-2.5的話,轉成二進制輸入到A會變什麼? 110.10000這樣?
9#
 樓主| 發表於 2009-10-18 14:03:42 | 顯示全部樓層
謝謝大大們的幫助,目前我已經完成了部分的程式,現在又遇到一點問題,想提出來跟大大們討論一下.../ Z9 w8 k/ h+ n* Z
想請問大大們~9 ~3 l) E# T- Z+ R; ~0 D, Y
a= 41B20000  (16進制- ieee754格式)  十進制22.25
7 U1 @% K" D4 o8 D7 Ab=C2010000  (16進制- ieee754格式)   十進制-32.25  ^  Q7 \0 P4 A; `$ K7 c! W' f
請問可以直接對ieee754格式的a跟b做四則運算嗎? 6 y0 o& v. P( M% ]3 J$ [- ?
(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?
& F9 J' K5 Y/ K3 G" e5 t9 O, ] & J2 q# v; e. O

$ p: p1 f% X8 b0 z還是說一定要先做十進制的22.25+(-32.25)= -10 最後答案才用IEEE754表示?+ D% t$ |& x: ]4 K
-10的IEEE754表示=C1200000
6 W  y# f( P$ `: N! S- y" E . `, z* q# k4 s0 W/ d
C2580000與C1200000好像不太一樣.
( ], y1 ]; I. k8 l7 |' C還是說要怎麼逆運算才可以求出-10?, c- w& e- \5 W6 y( P$ F
大大曉得嗎@@?
回復 支持 1 反對 0

使用道具 舉報

10#
 樓主| 發表於 2009-10-19 20:05:06 | 顯示全部樓層
mas大..但是如果轉成二補數42010000之後
' X1 Q& d. L4 b, t( B與41b20000 偏移值調整後42590000 做有效位數相加=425A0000 ←這樣吧@@?+ r* T5 O& g. @% r1 O
並不等於C1200000 的說....
11#
 樓主| 發表於 2009-10-21 20:20:14 | 顯示全部樓層
謝謝大大提點~又學到東西了...^^
# z1 [* f% }6 F) _% F: R, y" Z2 l2 z6 g0 A) f
另外想問做乘法運算
- R2 ?/ _% o) N. A& `有效位數直接a*b跟  a+a 加b次  哪一種作法在硬體上速度較快呢?% ~* |" P& C" m8 B, _7 ?
除法也是如此嗎?
12#
 樓主| 發表於 2009-10-23 20:43:11 | 顯示全部樓層
大大~另外請問使用quartus做波形模擬的時候,input有辦法設定輸入10進制浮點數嗎? EX: (22.25)
4 l5 N8 P) z7 r0 `! E% X1 K假如無法使用,這樣的話10進制的浮點數數值要如何輸入? 難道是輸入 A1= 22   A2=0.25  A1+A2=A  這樣訊號要怎麼分離@@~不知道大大有沒有聽的懂我的意思^^"
13#
 樓主| 發表於 2009-10-30 20:28:16 | 顯示全部樓層

回復 25# 的帖子

如果規定要用10進制浮點數輸入
0 A) m! }* ?: Z# E, v* `那你的輸入級就要多一個轉換電路  J. |) |2 r) ^5 ^
可把非IEEE 754格式的浮點數(Fixed Point)轉成IEEE 754格式(Float Point)
& j( \1 T+ Z& }' R* g% u----------------------------------------3 ^9 }; M% J+ r* y8 u' K
非IEEE 754格式的浮點數 輸入~ 是類似(22.25) => 10110.01 輸入至input ?
, M6 ?6 F- C% ^3 ]! ~那在quartus看到的input是不是變成1011001 ? 9 Y% Z1 ~2 e- ^7 G) n; [
這樣的話我怎麼曉得我輸入訊號小數點位置在哪@@?(10.5)=>1010.1  b: K5 Q8 j! H  F: \6 t: Q
還是說要給input的訊號,其訊號源必須要產生固定小數點N位的數值.
( T8 C* ]  Y% _& T2 ]假如訊號源固定產生小數點3位的訊號~
7 h2 Y* E+ t; a+ v& ^22.25=> 10110.010   第3位補0
5 z+ S3 y5 D6 M. E1 C10.5  => 1010.100   後2位補0至第3位....是這樣嗎?  如果是這樣就可以在程式內部判斷[2:0]為小數[3:N]為整數.......不知道是不是這樣做?7 J1 Q0 }; \& _# Q$ _2 [6 H

; a) `$ [4 l5 _" s* }% ^7 Y  e& _-----------------------------------8 x) O2 L& F% |5 J& o
input有辦法設定輸入10進制浮點數嗎?4 G0 l- D/ \0 Y; K6 R9 r: V
quartus 用32bit 就可以輸入阿3 g. e1 Y5 Y) n2 W2 P: ~3 Q
這邊大大是說 我input寫成32bit就可以在模擬的時候使用類似22.25十進制的浮點數?
14#
 樓主| 發表於 2009-11-2 19:56:24 | 顯示全部樓層
謝謝大大~我知道怎麼做了
1 o' e  l# ?* }- X* `3 }' o% A$ Y, j% @  O6 ]- q  ^4 J6 \6 J1 F) x
另外請問,做浮點數除法運算時 做法為 指數相減 有效數相除
; a/ V- N( X5 d" ~  B+ j) [0 Q但是為何A[22:0]跟B[22:0]的有效數相除時  C=A/B( x2 O! |: t" l, v8 K6 d0 S
如果A<B則無法運算- R" _, J4 D1 C
是除法運算需要用其他方式完成嗎?
15#
 樓主| 發表於 2009-11-10 22:47:59 | 顯示全部樓層
大大~請問BOOTH做除法器.是只要把乘法的+ -規則相反變- +就可以了嗎@@"
& a8 |" Y  t  m# S* a9 ]如果我乘法要一次判斷比較多位元規則該怎麼定呢??~因為網上找到的大多都是用2BIT作判斷~. e8 U7 B9 \9 j  N( j

/ S# e0 e* E* i: ^另外請問一下.SRT俗稱是^^?
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-6-14 09:06 AM , Processed in 0.126516 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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