Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
樓主: 呆頭鴨
打印 上一主題 下一主題

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-9-2 20:23:40 | 顯示全部樓層 回帖獎勵 |倒序瀏覽 |閱讀模式
想請問有設計過IEEE 754 浮點數 規則的程式的大大.....% M4 I* {" \0 y) x: r/ k
* h) G( D0 s+ p' z, j# U, }' A
規則小弟是看的懂,不過疑問處在於: o5 o, N# `8 O( J: O5 h% f
假設我設計一個簡單的浮點數加法器,輸入數值a跟b相加.7 P3 `  k# c6 T/ G* |7 N  n
那麼,我的"a如果是十進制10.5"  "b是2.125"
) |! r6 `) H7 u( |* A$ _: o# M! N" qa跟b是要先正規化之後再行運算嗎?
3 W9 E! b8 U0 b這樣正規化之前,10.5要怎麼顯示成二進位?是固定位元顯示整數部份,) i' P# ^% Y' F  _9 o: w3 U: Q
另一部份固定位元顯示小數部份..ex: 10.5=>1010.1/ Y& B0 ~% J) l3 B6 _, p" s& N
這樣輸入a之後變成10101,程式內部再將a[4:1]斷定成整數a[0]斷定成浮點數,
9 p& O$ M! j0 U7 S- }這樣設計對嗎?
* r/ v( w  X: f! x, p4 o: u  g我是剛接觸的菜鳥..還請大大們指教提拔....如果有相關code可以參考感激不盡m(_ _)m
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
 樓主| 發表於 2009-9-4 20:56:26 | 顯示全部樓層
不過如果照這樣寫,感覺上小數點是固定的,不像浮點數的感覺耶....
3#
 樓主| 發表於 2009-9-16 21:38:06 | 顯示全部樓層
大大~我陷在卡在將輸入數值做正規化的動作,0 j( d  B9 J, O# t, T$ X
假如輸入的a是10.5, 在程式裡面會變成10101串列輸入,假設我程式固定只有運算到小數第一位,
8 o8 k* [3 Q8 {5 D: a, U這樣可以抓到1010.1並且將其正規化,但是如果我輸入數值是整數的00100,這樣他要怎麼判別小數點的位置@@?
; W5 o) N1 e. R, w/ K. k他要怎麼判斷輸入的數值是不是浮點數?
4#
 樓主| 發表於 2009-9-17 21:27:31 | 顯示全部樓層
大大~
3 z, w& d  m- F請問您說的浮點格式,是像IEEE 754格式這種嗎?....還是??
; @6 `4 r! t! D0 x- X& w' [% m: U, A1 Y, z3 l1 L/ U" j/ u
是怎樣的浮點數格式輸入到a才可以被正規化呢^^"~不好意思喔~新手問了一些蠢問題@@
5#
 樓主| 發表於 2009-9-18 22:06:54 | 顯示全部樓層
IEEE 754的浮點數格式 不是已經正規化了嗎?...5 m* ~2 p: v6 U' d

: s" _& Z3 j; U7 `% [# O沒辦法寫CODE讓輸入的串列資料,將十進致10.5二進致為1010.1輸入後再由程式正規化嗎?
6#
 樓主| 發表於 2009-9-20 21:17:28 | 顯示全部樓層
大大~
- |1 T' u  u% e2 ^# ~. z5 ~+ b) s$ y) Y/ D9 N- S
你的意思是說 假設我程式可以算到小數第3位,輸入的a 10.5 就是變1010.100, |+ b% w* R4 u& L# x" o) y0 t
如果是整數1,則變成0001.000  這樣來做正規化?! t! y" ]3 X0 x* D+ a: P
還是說Quartus II 有可以判定輸入式浮點數的語法嗎?  `& Z, o0 v+ Z+ ?6 U3 R) y4 Q

1 C' i4 `% k9 _) T0 b# u如果沒有的話也得要把輸入的數值做正規化將其輸出,否則也不會有大大說的浮點數格式的輸入吧@@?1 P4 S4 M0 G. y+ G
不知道我這樣說有沒有錯...^^"
7#
 樓主| 發表於 2009-9-21 22:45:15 | 顯示全部樓層
大大~
+ V' t8 v$ D% z0 @) b我知道你的意思了,不過我目前是需要把非IEEE 754格式的浮點數轉成IEEE 754格式.....9 g: `! e+ _+ J: m5 c4 K6 X& q
這樣是不可能實現的嗎?^^"
8#
 樓主| 發表於 2009-9-23 20:05:40 | 顯示全部樓層
masonchung 大大~* W* W$ a# s/ V. f% |* l
6 ]3 R9 }3 v2 `: {; `: u
如果要這樣做的話,我的A如果是十進制"2.5",並且可運算到小數點後第5位,二進制的輸入訊號是不是一定要是10.10000! D4 n& }+ k# ~6 Q
這樣有錯嗎?
+ }5 Y3 M" o6 l1 [/ R( {另外有一點有點疑問,這種作法是不是只能做無號數的浮點數運算?; z; r  `( o2 N' f# v
-2.5的話,轉成二進制輸入到A會變什麼? 110.10000這樣?
9#
 樓主| 發表於 2009-10-18 14:03:42 | 顯示全部樓層
謝謝大大們的幫助,目前我已經完成了部分的程式,現在又遇到一點問題,想提出來跟大大們討論一下...
9 L; v6 I6 [0 f% N' i( D. X, |! o想請問大大們~& O# E7 ^" s& t; G' [
a= 41B20000  (16進制- ieee754格式)  十進制22.25% \/ `6 A8 A& w% I$ m7 }- E$ ]4 |4 v
b=C2010000  (16進制- ieee754格式)   十進制-32.25$ t* A4 x: p8 z1 h- E" l0 y
請問可以直接對ieee754格式的a跟b做四則運算嗎?
6 S5 [4 s! [3 L(小數點對齊,實數相對位移後)a+b是否等於C2580000 ?9 |+ h: f) q$ b- M

% w+ Y/ J. b# ]# ?
: r9 u7 k1 [6 ^  b: f; |還是說一定要先做十進制的22.25+(-32.25)= -10 最後答案才用IEEE754表示?
3 F9 L" {! q9 P6 O9 A+ {8 t* u$ S-10的IEEE754表示=C1200000
: N1 }5 K7 E- t: c / b: d' B& v, t% H( b4 U6 u2 Y
C2580000與C1200000好像不太一樣.+ o) Y8 D- |' F7 H/ r( P
還是說要怎麼逆運算才可以求出-10?) F0 ^9 P/ f* ^2 [& |0 w9 X
大大曉得嗎@@?
回復 支持 1 反對 0

使用道具 舉報

10#
 樓主| 發表於 2009-10-19 20:05:06 | 顯示全部樓層
mas大..但是如果轉成二補數42010000之後; Z: U' x9 ^2 O9 _
與41b20000 偏移值調整後42590000 做有效位數相加=425A0000 ←這樣吧@@?; \; u4 @/ h/ P
並不等於C1200000 的說....
11#
 樓主| 發表於 2009-10-21 20:20:14 | 顯示全部樓層
謝謝大大提點~又學到東西了...^^( L! M) ]1 u% h9 l6 @* C

7 w/ S! W7 W9 k7 d另外想問做乘法運算
9 |! F/ u: U# c5 M有效位數直接a*b跟  a+a 加b次  哪一種作法在硬體上速度較快呢?
/ P* w/ h1 ?$ K% I除法也是如此嗎?
12#
 樓主| 發表於 2009-10-23 20:43:11 | 顯示全部樓層
大大~另外請問使用quartus做波形模擬的時候,input有辦法設定輸入10進制浮點數嗎? EX: (22.25)
. s7 J, S8 l# y' r假如無法使用,這樣的話10進制的浮點數數值要如何輸入? 難道是輸入 A1= 22   A2=0.25  A1+A2=A  這樣訊號要怎麼分離@@~不知道大大有沒有聽的懂我的意思^^"
13#
 樓主| 發表於 2009-10-30 20:28:16 | 顯示全部樓層

回復 25# 的帖子

如果規定要用10進制浮點數輸入& G+ W5 ?7 j3 k, C
那你的輸入級就要多一個轉換電路" y: y1 b/ Z; p# T7 H, L4 P' M2 H6 s
可把非IEEE 754格式的浮點數(Fixed Point)轉成IEEE 754格式(Float Point)
! Y! F% O& O. o% L----------------------------------------1 i% C, i+ c4 X6 e2 k# a
非IEEE 754格式的浮點數 輸入~ 是類似(22.25) => 10110.01 輸入至input ?2 u, u+ u9 D/ ?" b! A
那在quartus看到的input是不是變成1011001 ? : L8 Q0 V) U2 C$ S% }1 b$ K
這樣的話我怎麼曉得我輸入訊號小數點位置在哪@@?(10.5)=>1010.1" e1 h4 w4 z! o- U
還是說要給input的訊號,其訊號源必須要產生固定小數點N位的數值.
. S; g/ G1 k9 {' H" Z2 b3 e& L& n+ _假如訊號源固定產生小數點3位的訊號~
& F, E& J' T3 C9 g22.25=> 10110.010   第3位補0
) Z7 ]; {4 u+ R% A10.5  => 1010.100   後2位補0至第3位....是這樣嗎?  如果是這樣就可以在程式內部判斷[2:0]為小數[3:N]為整數.......不知道是不是這樣做?7 y' w; V: |8 ~' C# f9 [' c

4 T8 ?3 E$ j; s8 d$ i" V7 e/ D) Q-----------------------------------$ ?" t" W# O. }) ?4 O
input有辦法設定輸入10進制浮點數嗎?' |* h& z# E- k* u! \" [
quartus 用32bit 就可以輸入阿* D. a4 {0 S/ @
這邊大大是說 我input寫成32bit就可以在模擬的時候使用類似22.25十進制的浮點數?
14#
 樓主| 發表於 2009-11-2 19:56:24 | 顯示全部樓層
謝謝大大~我知道怎麼做了- }; V3 z6 q$ g9 }7 S4 a9 {

* t- {" l0 c0 D另外請問,做浮點數除法運算時 做法為 指數相減 有效數相除
& P* h. Z6 t% l9 s3 F但是為何A[22:0]跟B[22:0]的有效數相除時  C=A/B2 z7 t) u- R  E; t$ P
如果A<B則無法運算
5 g$ b/ K; g, W. _, A# U/ g是除法運算需要用其他方式完成嗎?
15#
 樓主| 發表於 2009-11-10 22:47:59 | 顯示全部樓層
大大~請問BOOTH做除法器.是只要把乘法的+ -規則相反變- +就可以了嗎@@"( g/ H; Q4 Y) S5 n! e; a
如果我乘法要一次判斷比較多位元規則該怎麼定呢??~因為網上找到的大多都是用2BIT作判斷~9 }2 T* d  D: h

0 o$ A0 b* \/ i5 i另外請問一下.SRT俗稱是^^?
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-7 01:32 PM , Processed in 0.111006 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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