專利名稱:一種數(shù)據(jù)類型轉(zhuǎn)換電路的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)類型轉(zhuǎn)換電路,特別是支持整型、短整型、單精度浮點數(shù)以及 雙精度浮點數(shù)幾種數(shù)據(jù)類型之間互相進(jìn)行格式轉(zhuǎn)換的電路。
背景技術(shù):
在現(xiàn)有的各種數(shù)據(jù)處理電路中,根據(jù)不同的應(yīng)用需求以及精度要求主要包括有整 數(shù)類型和浮點數(shù)類型的數(shù)據(jù)類型格式,其中整數(shù)類型有32位的整型和16位的短整型二種, 浮點數(shù)有32位的單精度浮點數(shù)和64位的雙精度浮點數(shù)二種。上述數(shù)據(jù)類型均在數(shù)據(jù)處理 電路中,均使用二進(jìn)制表示,下面分別對每種數(shù)據(jù)類型的標(biāo)準(zhǔn)格式進(jìn)行介紹。整型使用32位表示帶符號的整數(shù)類型,采用二進(jìn)制補碼表示,其中最高位表示為 符號位。因此整型可表示的數(shù)據(jù)范圍為_2~31 2~31-1。短整型使用16位表示帶符號的 整數(shù),同樣采用二進(jìn)制補碼表示,最高位的第15位為符號位,因此短整型可表示的數(shù)據(jù)范 圍為_2~15 2~15-1。整型和短整型數(shù)據(jù)類型如圖1中所示。浮點數(shù)數(shù)據(jù)包括單精度浮點數(shù)和雙精度浮點數(shù)。其中單精度浮點數(shù)使用32位表 示,最高位為符號位S,中間8位為指數(shù)位E,采用移碼表示,剩下的低23位為尾數(shù)位M,采用 原碼表示,并且在規(guī)范化浮點數(shù)格式中,隱藏了整數(shù)位的最低位1。在指數(shù)位E中,8位位寬 可表示的范圍為(Γ255,其中0和255分別保留用于表示正負(fù)0和正負(fù)無窮,因此可用于表 示正常浮點數(shù)的指數(shù)E的范圍為廣254,而移碼127之后,指數(shù)的原碼ES范圍為-126 127。 對于規(guī)范化的浮點數(shù)尾數(shù),隱藏整數(shù)位1,低23位為最低位整數(shù)1之后的小數(shù),因此尾數(shù)的 范圍為[1,2)。單精度浮點數(shù)的數(shù)值表示等式為
N = (-1)s*2(e_127)*(LM)
在雙精度浮點數(shù)中,使用64位表示浮點數(shù)。其中最高位為符號位S,中間11位用于表 示使用移碼表示的指數(shù)位E,剩下的低位52位為尾數(shù)位M,采用原碼表示,同樣在規(guī)范化的 浮點數(shù)格式中,隱藏了整數(shù)的最低位1。在雙精度指數(shù)位E中,11位位寬可表示的范圍為 (Γ2047,其中0和2047用于表示雙精度的正負(fù)0和正負(fù)無窮,因此可表示的正常浮點數(shù)指 數(shù)E的范圍為廣2046,在移碼1023之后,指數(shù)的原碼ES的范圍為-1022 1023。對于尾數(shù) 位,范圍同樣為[1,2)。雙精度浮點數(shù)的數(shù)值表示等式為 N = (-1Γ*2(ε_1023)*(1·Μ) 浮點數(shù)數(shù)據(jù)類型如圖2中所示。在實際應(yīng)用中,經(jīng)常需要進(jìn)行各種數(shù)據(jù)類型的轉(zhuǎn)換,前面描述的四種數(shù)據(jù)類型之 間的數(shù)據(jù)類型轉(zhuǎn)換包括12種,分別為整型轉(zhuǎn)短整型、整型轉(zhuǎn)單精度、整型轉(zhuǎn)雙精度、短整型 轉(zhuǎn)整型、短整型轉(zhuǎn)單精度、短整型轉(zhuǎn)雙精度、單精度轉(zhuǎn)整型、單精度轉(zhuǎn)短整型、單精度轉(zhuǎn)雙精 度、雙精度轉(zhuǎn)整型、雙精度轉(zhuǎn)短整型、雙精度轉(zhuǎn)單精度。根據(jù)轉(zhuǎn)換的類型不同,需要的運算可 能包括補碼轉(zhuǎn)原碼、前導(dǎo)零計數(shù)、移位操作等,同時還需要進(jìn)行舍入和規(guī)范化操作。如果對 每種數(shù)據(jù)類型轉(zhuǎn)換分別進(jìn)行運算和處理,因為轉(zhuǎn)換類型的數(shù)量和不同數(shù)據(jù)格式的表示方式 會導(dǎo)致轉(zhuǎn)換效率的降低,并且使用大量的硬件資源而增大電路面積。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種高效并且面積小的數(shù)據(jù)轉(zhuǎn)換電路,能夠支持多種數(shù)據(jù)類 型之間的格式轉(zhuǎn)換。本發(fā)明是這樣實現(xiàn)的一種數(shù)據(jù)類型轉(zhuǎn)換電路,所述電路包括,整型數(shù)據(jù)轉(zhuǎn)換預(yù)處 理電路和浮點型數(shù)據(jù)轉(zhuǎn)換預(yù)處理電路;所述整型數(shù)據(jù)轉(zhuǎn)換預(yù)處理電路包括補碼轉(zhuǎn)換電路和 前導(dǎo)零計數(shù)電路,所述補碼轉(zhuǎn)換電路用于將表示整型或者短整型的補碼轉(zhuǎn)換成原碼,所述 前導(dǎo)零計數(shù)電路用于對所述補碼轉(zhuǎn)換電路輸出的原碼進(jìn)行前導(dǎo)零計數(shù);所述浮點型數(shù)據(jù)轉(zhuǎn) 換預(yù)處理電路包括移碼轉(zhuǎn)換電路和原碼轉(zhuǎn)換電路,所述移碼轉(zhuǎn)換電路用于將浮點型數(shù)據(jù)指 數(shù)位移碼E轉(zhuǎn)換為指數(shù)原碼ES,所述原碼轉(zhuǎn)換電路用于將所述浮點型數(shù)據(jù)的尾數(shù)轉(zhuǎn)換為補 碼;所述數(shù)據(jù)類型轉(zhuǎn)換電路還包括指數(shù)運算電路、轉(zhuǎn)換數(shù)據(jù)操作單元、轉(zhuǎn)換結(jié)果選擇電路以 及舍入和規(guī)范化處理電路;所述指數(shù)運算電路用于根據(jù)所述前導(dǎo)零計數(shù)電路的計數(shù)結(jié)果或 者所述移碼轉(zhuǎn)換電路的轉(zhuǎn)換結(jié)果ES對數(shù)據(jù)的指數(shù)部分進(jìn)行運算;所述轉(zhuǎn)換數(shù)據(jù)操作單元 包括轉(zhuǎn)換數(shù)據(jù)組,所述經(jīng)過整型數(shù)據(jù)轉(zhuǎn)換預(yù)處理電路或浮點型數(shù)據(jù)轉(zhuǎn)換預(yù)處理電路處理之 后的數(shù)據(jù)存放于所述轉(zhuǎn)換數(shù)據(jù)組,所述轉(zhuǎn)換數(shù)據(jù)操作單元對所述轉(zhuǎn)換數(shù)據(jù)組中存放的數(shù)據(jù) 進(jìn)行轉(zhuǎn)換操作,所述轉(zhuǎn)換操作后的數(shù)據(jù)以統(tǒng)一的格式存放在所述轉(zhuǎn)換數(shù)據(jù)組中;所述轉(zhuǎn)換 結(jié)果選擇電路用于根據(jù)需要轉(zhuǎn)換的數(shù)據(jù)類型從所述轉(zhuǎn)換數(shù)據(jù)組中選擇轉(zhuǎn)換結(jié)果;所述舍入 和規(guī)范化處理電路用于對所述選擇的轉(zhuǎn)換結(jié)果進(jìn)行舍入和規(guī)范化處理。更進(jìn)一步,所述前導(dǎo)零計數(shù)電路包括高16位計數(shù)單元和低16位計數(shù)單元,所述高 16位計數(shù)單元和所述低16位計數(shù)單元分別將16位輸入數(shù)據(jù)分為4組,每組4位分別在4 位前導(dǎo)零計數(shù)器中進(jìn)行計數(shù)。更進(jìn)一步,所述前導(dǎo)零計數(shù)器輸出的計數(shù)結(jié)果包括二位的前導(dǎo)零的個數(shù)CNT[1 0]以及全0標(biāo)志位ALUER0。更進(jìn)一步,所述高16位計數(shù)單元和所述低16位計數(shù)單元在所述前導(dǎo)零計數(shù)器計 數(shù)完成后,分別直接通過4組4位的計數(shù)結(jié)果通過選擇和拼接得出16位的計數(shù)結(jié)果。更進(jìn)一步,所述高16位計數(shù)單元和所述低16位計數(shù)單元計數(shù)完成后,如果高16 位計數(shù)為全0,則使用低位計數(shù)結(jié)果拼接l’bl作為32位的計數(shù)結(jié)果,否則使用高位的計數(shù) 結(jié)果拼接TbO作為計數(shù)結(jié)果。更進(jìn)一步,所述轉(zhuǎn)換數(shù)據(jù)組為84位,其中高32位為整數(shù)部分,低52位為小數(shù)部 分。更進(jìn)一步,對于整數(shù)數(shù)據(jù)類型的32位數(shù)據(jù),在進(jìn)入所述轉(zhuǎn)換數(shù)據(jù)組之前,如果需 要轉(zhuǎn)換為短整型數(shù)據(jù),那么選擇沒有轉(zhuǎn)換的補碼進(jìn)入所述轉(zhuǎn)換數(shù)據(jù)組,如果需要轉(zhuǎn)換為浮 點類型,那么選擇經(jīng)所述補碼轉(zhuǎn)換電路轉(zhuǎn)換的原碼進(jìn)入所述轉(zhuǎn)換數(shù)據(jù)組。更進(jìn)一步,對于短整型數(shù)據(jù)的16位數(shù)據(jù),在進(jìn)入所述轉(zhuǎn)換數(shù)據(jù)組之前,如果需要 轉(zhuǎn)換為整型數(shù)據(jù),那么選擇沒有轉(zhuǎn)換的補碼進(jìn)入所述轉(zhuǎn)換數(shù)據(jù)組,否則選擇經(jīng)所述補碼轉(zhuǎn) 換電路轉(zhuǎn)換的原碼進(jìn)入所述轉(zhuǎn)換數(shù)據(jù)組。更進(jìn)一步,對于雙精度浮點數(shù),進(jìn)入所述數(shù)據(jù)轉(zhuǎn)換組的數(shù)據(jù)為尾數(shù)M,尾數(shù)M進(jìn)入 到所述轉(zhuǎn)換數(shù)據(jù)組的低52位,并且在高32位的最低位補隱藏的整數(shù)位1,然后根據(jù)需要轉(zhuǎn) 換的數(shù)據(jù)類型進(jìn)行移位。
更進(jìn)一步,對于單精度浮點數(shù),進(jìn)入所述數(shù)據(jù)轉(zhuǎn)換組的數(shù)據(jù)為尾數(shù)M,尾數(shù)M進(jìn)入 到所述轉(zhuǎn)換數(shù)據(jù)組的低52位,不足部分補0。更進(jìn)一步,如果轉(zhuǎn)換為整型數(shù)據(jù),那么所述轉(zhuǎn)換數(shù)據(jù)組的高32位為轉(zhuǎn)換結(jié)果,低 52位用于進(jìn)行舍入判斷和處理;如果轉(zhuǎn)換為短整型,所述轉(zhuǎn)換數(shù)據(jù)組的高32位的低16位 為轉(zhuǎn)換結(jié)果,低52位用于舍入處理;如果轉(zhuǎn)換為單精度浮點數(shù),所述轉(zhuǎn)換數(shù)據(jù)組的低52位 中的高23位為轉(zhuǎn)換結(jié)果的尾數(shù),并且使用所述轉(zhuǎn)換數(shù)據(jù)組的低52位中的低四位進(jìn)行舍入 處理,同時將前導(dǎo)零計數(shù)結(jié)果或者雙精度浮點數(shù)的指數(shù)位通過移碼在所述規(guī)范化處理電路 中轉(zhuǎn)換為指數(shù);如果轉(zhuǎn)換為雙精度浮點數(shù),使用所述轉(zhuǎn)換數(shù)據(jù)組的低52位為尾數(shù),同時將 前導(dǎo)零計數(shù)結(jié)果或者單精度浮點數(shù)的指數(shù)位轉(zhuǎn)換為指數(shù)。采用本發(fā)明的技術(shù)方案后,通過共享轉(zhuǎn)換電路以及轉(zhuǎn)換數(shù)據(jù)組,采用高速的前導(dǎo) 零計數(shù)單元來實現(xiàn)多種數(shù)據(jù)類型的高效轉(zhuǎn)換,并節(jié)省電路面積。
圖1是整型和短整型數(shù)據(jù)類型示意圖; 圖2是單精度和雙精度浮點數(shù)據(jù)類型示意圖; 圖3是數(shù)據(jù)類型轉(zhuǎn)換電路結(jié)構(gòu)圖4是32位前導(dǎo)零計數(shù)器; 圖5是轉(zhuǎn)換數(shù)據(jù)組CVT示意圖; 圖6是整型類型轉(zhuǎn)換數(shù)據(jù)組; 圖7是短整型類型轉(zhuǎn)換數(shù)據(jù)組; 圖8是雙精度浮點數(shù)類型轉(zhuǎn)換數(shù)據(jù)組; 圖9是單精度浮點數(shù)類型轉(zhuǎn)換數(shù)據(jù)組; 圖10是數(shù)據(jù)類型轉(zhuǎn)換結(jié)果選擇; 圖11是數(shù)據(jù)類型轉(zhuǎn)換指數(shù)運算電路。
具體實施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對 本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并 不用于限定本發(fā)明。 本發(fā)明的數(shù)據(jù)類型轉(zhuǎn)換電路結(jié)構(gòu)圖如圖3所示,在數(shù)據(jù)類型轉(zhuǎn)換電路109中,首先 對需要進(jìn)行數(shù)據(jù)轉(zhuǎn)換的數(shù)據(jù)進(jìn)行預(yù)處理,主要包括補碼轉(zhuǎn)換成原碼電路101,前導(dǎo)零計數(shù)電 路102,移碼轉(zhuǎn)換電路106,原碼轉(zhuǎn)換電路107。預(yù)處理完成之后,本發(fā)明為了統(tǒng)一各種類型 的數(shù)據(jù)轉(zhuǎn)換運算,并且減少硬件資源消耗,定義了一組轉(zhuǎn)換數(shù)據(jù)組,所有類型轉(zhuǎn)換運算的數(shù) 據(jù)全部統(tǒng)一到轉(zhuǎn)換數(shù)據(jù)組中,在轉(zhuǎn)換數(shù)據(jù)操作單元103中進(jìn)行數(shù)據(jù)移位和轉(zhuǎn)換,轉(zhuǎn)換數(shù)據(jù) 操作單元103還包含了轉(zhuǎn)換數(shù)據(jù)組。然后在轉(zhuǎn)換結(jié)果選擇單元104中根據(jù)需要轉(zhuǎn)換的數(shù)據(jù) 類型選擇轉(zhuǎn)換結(jié)果,并在舍入和規(guī)范化處理單元105進(jìn)行舍入處理和規(guī)范化操作。指數(shù)運 算電路108用于對數(shù)據(jù)的指數(shù)部分進(jìn)行運算,詳細(xì)說明見圖11。因為本發(fā)明定義了統(tǒng)一的 轉(zhuǎn)換數(shù)據(jù)組,在提高了轉(zhuǎn)換效率的同時,使舍入和規(guī)范化操作也變得非常簡單。
整數(shù)的數(shù)據(jù)預(yù)處理包括補碼轉(zhuǎn)換電路101和前導(dǎo)零計數(shù)器102。在補碼轉(zhuǎn)換電路101中,將整數(shù)類型數(shù)據(jù)操作數(shù)IN轉(zhuǎn)換成原碼,如果整數(shù)的補碼符號位為負(fù),那么需要將補 碼進(jìn)行取反然后加1運算轉(zhuǎn)換成原碼,如果符號位為正,補碼跟原碼一樣,因此不需要進(jìn)行 運算,運算結(jié)果為整數(shù)數(shù)據(jù)類型的原碼INO以及操作數(shù)IN的補碼INB。補碼轉(zhuǎn)換完成之后, 將整數(shù)類型的原碼INO在前導(dǎo)零計數(shù)電路102中進(jìn)行前導(dǎo)零計數(shù),計算從高位到低位出 現(xiàn)第一個1之前的零的個數(shù)。本發(fā)明中設(shè)計了一種快速的前導(dǎo)零計數(shù)電路用于提高數(shù)據(jù)轉(zhuǎn) 換速度和平衡路徑延遲。前導(dǎo)零計數(shù)單元將需要計數(shù)的數(shù)據(jù)分組進(jìn)行計數(shù),以32位整數(shù)類 型為例,將整數(shù)分為高16位和低16位分別進(jìn)行計數(shù),然后根據(jù)二組16位的計數(shù)結(jié)果得出 32位的計數(shù)結(jié)果。前導(dǎo)零計數(shù)器電路如圖4所示,分為高16位計數(shù)單元202和低16位計數(shù)單元205。 在高16位前導(dǎo)零計數(shù)單元202中,將16位輸入數(shù)據(jù)分為4組,每組4位分別在4位前導(dǎo) 零計數(shù)器201中進(jìn)行計數(shù)。計數(shù)結(jié)果包括二位的前導(dǎo)零的個數(shù)CNT [1 :0]以及全0標(biāo)志位 ALUER0。對應(yīng)關(guān)系如表1中所示。表1 4位前導(dǎo)零計數(shù)器
Bits[3:0]CNT [1:0]ALLZER00000/10001110OOlX100OlXX010IXXX000
在16位計數(shù)單元202和205中,其中4組4位的前導(dǎo)零計數(shù)器完成之后可以直接通過 4組4位的計數(shù)結(jié)果通過選擇和拼接就可以得出16位的計數(shù)結(jié)果,而不需要額外的計數(shù)和 運算。如圖2所示,如果最高位的4位計數(shù)器計數(shù)結(jié)果不為全0,那么使用最高位的4位的 計數(shù)器的計數(shù)結(jié)果拼接2’ b00作為16位的計數(shù)結(jié)果;否則如果接下來的一個4位計數(shù)器 結(jié)果不為全0,那么使用計數(shù)結(jié)果拼接2’b01作為計數(shù)結(jié)果;同樣如果高位的三個4位計數(shù) 器計數(shù)結(jié)果全為0,那么使用最低位的4位計數(shù)器計數(shù)結(jié)果拼接2’bll作為計數(shù)結(jié)果,并且 在全零運算單元203和206中計算得出高16位和低16位是否全部為0。運算得出高16位 計數(shù)結(jié)果CNTl和全零標(biāo)志ALUER01以及低16位計數(shù)結(jié)果CNTO和全零標(biāo)志ALUER00。以數(shù)據(jù)0000_0000_0100_1011為例,將數(shù)據(jù)分成4組分別進(jìn)行計數(shù)之后,從高位到 低位的計數(shù)器結(jié)果分別為0,0,1,0。全零標(biāo)志ALLZER00為1,ALLZER01為1,ALLZER02為 0,ALLZER03為0,也就是說高位的二組數(shù)據(jù)計數(shù)結(jié)果為全零,根據(jù)上述說明,將2’ 10跟第 三組4位計數(shù)的結(jié)果1拼接作為整個16位計數(shù)的結(jié)果,即1001 (9)。因為采用分組計數(shù)的 方式可以大大減少計數(shù)的復(fù)雜度,從而減少計數(shù)的延遲,并且采用判斷全零標(biāo)志和拼接計 數(shù)結(jié)果的方式就可以得出更多位的計數(shù)結(jié)果。相比于傳統(tǒng)的采用全數(shù)據(jù)計數(shù)方式,不但計 數(shù)延遲大大減少,而且電路簡單,硬件資源消耗非常小。二個16位的計數(shù)器計數(shù)完成之后,通過高16位是否全0的標(biāo)志ALUER01選擇32 位的結(jié)果。如果高16位計數(shù)為全0,那么使用低位計數(shù)結(jié)果拼接l’bl作為32位的計數(shù)結(jié) 果,否則使用高位的計數(shù)結(jié)果拼接1’ b0作為計數(shù)結(jié)果。另外在全零運算單元207中判斷 32位的數(shù)據(jù)是否為全0,輸出標(biāo)志位ALUER0。浮點數(shù)的預(yù)處理電路包括移碼轉(zhuǎn)換電路106和原碼轉(zhuǎn)換電路107。在移碼轉(zhuǎn)換電 路106中,對浮點數(shù)的指數(shù)進(jìn)行移碼轉(zhuǎn)換,將移碼E轉(zhuǎn)換為指數(shù)原碼ES。對于單精度的浮點 數(shù)來說,進(jìn)行E減去127的運算,對于雙精度的浮點數(shù)來說,進(jìn)行E減去1023的運算。完成之后在原碼轉(zhuǎn)換電路107中根據(jù)浮點數(shù)的符號位將尾數(shù)M轉(zhuǎn)換為補碼MB,用于在浮點數(shù)轉(zhuǎn) 換為整數(shù)時的轉(zhuǎn)換運算,原碼轉(zhuǎn)換電路107中的運算結(jié)果包括MB和沒有經(jīng)過轉(zhuǎn)換的尾數(shù)原 碼M0。對于數(shù)據(jù)類型轉(zhuǎn)換運算,接下來在轉(zhuǎn)換數(shù)據(jù)操作單元103中進(jìn)行移位和統(tǒng)一化處 理。在本發(fā)明中定義了一個84位的轉(zhuǎn)換數(shù)據(jù)組CVT[83:0]。其中高32位為整數(shù)部分INT, 低52位為小數(shù)部分FLT。如圖5所示。對于整數(shù)數(shù)據(jù)類型的32位數(shù)據(jù),在轉(zhuǎn)換數(shù)據(jù)操作單元103中進(jìn)行移位處理,如果 需要轉(zhuǎn)換為短整型數(shù)據(jù),那么選擇沒有轉(zhuǎn)換的補碼INB進(jìn)入數(shù)據(jù)組CVT,否則如果需要轉(zhuǎn)換 為浮點類型,那么選擇轉(zhuǎn)換為原碼的INO進(jìn)入數(shù)據(jù)組。并且如果轉(zhuǎn)換為短整型數(shù)據(jù),移位位 數(shù)為0,因為整型數(shù)據(jù)全部從CVT高32位的最低位開始對齊。如果轉(zhuǎn)換為浮點數(shù)據(jù)類型,根 據(jù)前導(dǎo)零的計數(shù)結(jié)果,將原碼INO進(jìn)行右移位,直到第一個1跟高32位的最低位對齊。移位 位數(shù)為前導(dǎo)零的計數(shù)結(jié)果CNT,并且在指數(shù)運算電路110中根據(jù)前導(dǎo)零計數(shù)結(jié)果計算浮點 數(shù)的指數(shù),將計數(shù)結(jié)果CNT轉(zhuǎn)換為移碼,也就是分別加上127(單精度)和1023(雙精度)。 整數(shù)類型數(shù)據(jù)轉(zhuǎn)換組及移位如圖6所示。對于短整型數(shù)據(jù)的16位數(shù)據(jù),如果需要轉(zhuǎn)換為整型,同樣使用沒有轉(zhuǎn)換的補碼 INB進(jìn)入轉(zhuǎn)換數(shù)據(jù)組,否則使用INO進(jìn)入轉(zhuǎn)換數(shù)據(jù)組。跟整型數(shù)據(jù)的區(qū)別在于不管短整型轉(zhuǎn) 換為任何類型的數(shù)據(jù),CVT中的高位整數(shù)全部用短整型的最高位進(jìn)行擴展。短整型類型數(shù) 據(jù)轉(zhuǎn)換組及移位如圖7所示。對于雙精度浮點數(shù),將尾數(shù)M在轉(zhuǎn)換數(shù)據(jù)操作單元103中進(jìn)行轉(zhuǎn)換和移位運算,如 果轉(zhuǎn)換為單精度數(shù)據(jù)類型,移位數(shù)為0,否則移位數(shù)為指數(shù)原碼ES。尾數(shù)M首先跟轉(zhuǎn)換數(shù)據(jù) 組的低52位對齊,并且在高32位的最低位補隱藏的整數(shù)位1。然后根據(jù)需要轉(zhuǎn)換的數(shù)據(jù)類 型在轉(zhuǎn)換數(shù)據(jù)操作單元103中進(jìn)行移位,如果轉(zhuǎn)換為單精度數(shù)據(jù)類型,移位數(shù)為0。否則移 位數(shù)為指數(shù)原碼ES。雙精度浮點數(shù)轉(zhuǎn)換數(shù)據(jù)組和移位如圖8所示。對于單精度浮點數(shù)在數(shù)據(jù)轉(zhuǎn)換組中的轉(zhuǎn)換和移位處理跟雙精度浮點數(shù)類似,區(qū)別 在于單精度浮點數(shù)的尾數(shù)只有23位,因此需要在CVT的低52位中補0。本發(fā)明中在單精度 數(shù)據(jù)類型轉(zhuǎn)換時將CVT中的低四位全部補0。單精度浮點數(shù)轉(zhuǎn)換數(shù)據(jù)組和移位如圖9所示。在指數(shù)運算電路108中,本發(fā)明統(tǒng)一了數(shù)據(jù)轉(zhuǎn)換的指數(shù)運算,減少了電路面積。如 圖11所示,指數(shù)運算電路108的輸入數(shù)據(jù)為整數(shù)的前導(dǎo)零計數(shù)結(jié)果CNT和浮點數(shù)的指數(shù)移 碼轉(zhuǎn)換結(jié)果ES。然后根據(jù)數(shù)據(jù)轉(zhuǎn)換的源轉(zhuǎn)換類型是整型或者是浮點型選擇CNT或者ES進(jìn) 行運算,分別進(jìn)行加127運算和1023運算。運算完成之后,根據(jù)數(shù)據(jù)轉(zhuǎn)換的目的轉(zhuǎn)換類型 選擇加法器輸出結(jié)果AS或者AD作為指數(shù)運算的結(jié)果。在轉(zhuǎn)換數(shù)據(jù)組中的運算及移位和指數(shù)運算完成之后,本發(fā)明可以非常快速的得出 轉(zhuǎn)換的結(jié)果,并且可以非常簡單的進(jìn)行舍入和規(guī)范化處理。如圖8中所示,如果轉(zhuǎn)換為整型 數(shù)據(jù),那么CVT的高32位為轉(zhuǎn)換結(jié)果,并且CVT的低52位用于進(jìn)行舍入判斷和處理,其中 低52位的最高位作為舍入位RB,剩下的51位的或運算結(jié)果為跟隨位SB ;如果轉(zhuǎn)換為短整 型,CVT的高32位的低16位為轉(zhuǎn)換結(jié)果,CVT的低52位用于舍入處理,同樣低52位的最 高位為舍入位RB,剩下的51位的或運算結(jié)果為跟隨位SB ;如果轉(zhuǎn)換為單精度浮點數(shù),那么 CVT的低52位中的高23位為轉(zhuǎn)換結(jié)果的尾數(shù),并且使用CVT低52位中的低四位進(jìn)行舍入處理,其中低四位的最高位為舍入位RB,低觀位的或運算結(jié)果為跟隨位SB ;如果轉(zhuǎn)換為雙 精度浮點數(shù),使用CVT的低52位為尾數(shù),其他數(shù)據(jù)類型轉(zhuǎn)換為雙精度不會出現(xiàn)舍入。然后 根據(jù)RB和SB的值判斷是否需要因為舍入而產(chǎn)生進(jìn)位,以四舍五入方式為例。如果RB = 0, SB = 0,那么不需要進(jìn)位。如果RB = 0, SB = 1,那么不需要進(jìn)位。如果RB = 1,SB = 0,那么需要進(jìn)位。如果RB = 1, SB = 1,那么需要進(jìn)位。如果轉(zhuǎn)換為浮點數(shù)據(jù)類型,指數(shù)運算電路的結(jié)果作為浮點數(shù)的指數(shù)結(jié)果。而對于 符號位,因為在整數(shù)數(shù)據(jù)中,符號位就是最高位,而浮點數(shù)的符號位也是最高位,因此并不 需要單獨進(jìn)行運算。以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精 神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種數(shù)據(jù)類型轉(zhuǎn)換電路,所述電路包括,整型數(shù)據(jù)轉(zhuǎn)換預(yù)處理電路和浮點型數(shù)據(jù)轉(zhuǎn) 換預(yù)處理電路;所述整型數(shù)據(jù)轉(zhuǎn)換預(yù)處理電路包括補碼轉(zhuǎn)換電路和前導(dǎo)零計數(shù)電路,所述 補碼轉(zhuǎn)換電路用于將表示整型或者短整型的補碼轉(zhuǎn)換成原碼,所述前導(dǎo)零計數(shù)電路用于對 所述補碼轉(zhuǎn)換電路輸出的原碼進(jìn)行前導(dǎo)零計數(shù);所述浮點型數(shù)據(jù)轉(zhuǎn)換預(yù)處理電路包括移碼 轉(zhuǎn)換電路和原碼轉(zhuǎn)換電路,所述移碼轉(zhuǎn)換電路用于將浮點型數(shù)據(jù)指數(shù)位移碼E轉(zhuǎn)換為指數(shù) 原碼ES,所述原碼轉(zhuǎn)換電路用于將所述浮點型數(shù)據(jù)的尾數(shù)轉(zhuǎn)換為補碼;其特征在于,所述 數(shù)據(jù)類型轉(zhuǎn)換電路還包括指數(shù)運算電路、轉(zhuǎn)換數(shù)據(jù)操作單元、轉(zhuǎn)換結(jié)果選擇電路以及舍入 和規(guī)范化處理電路;所述指數(shù)運算電路用于根據(jù)所述前導(dǎo)零計數(shù)電路的計數(shù)結(jié)果或者所述 移碼轉(zhuǎn)換電路的轉(zhuǎn)換結(jié)果ES對數(shù)據(jù)的指數(shù)部分進(jìn)行運算;所述轉(zhuǎn)換數(shù)據(jù)操作單元包括轉(zhuǎn) 換數(shù)據(jù)組,所述經(jīng)過整型數(shù)據(jù)轉(zhuǎn)換預(yù)處理電路或浮點型數(shù)據(jù)轉(zhuǎn)換預(yù)處理電路處理之后的數(shù) 據(jù)存放于所述轉(zhuǎn)換數(shù)據(jù)組,所述轉(zhuǎn)換數(shù)據(jù)操作單元對所述轉(zhuǎn)換數(shù)據(jù)組中存放的數(shù)據(jù)進(jìn)行轉(zhuǎn) 換操作,所述轉(zhuǎn)換操作后的數(shù)據(jù)以統(tǒng)一的格式存放在所述轉(zhuǎn)換數(shù)據(jù)組中;所述轉(zhuǎn)換結(jié)果選 擇電路用于根據(jù)需要轉(zhuǎn)換的數(shù)據(jù)類型從所述轉(zhuǎn)換數(shù)據(jù)組中選擇轉(zhuǎn)換結(jié)果;所述舍入和規(guī)范 化處理電路用于對所述選擇的轉(zhuǎn)換結(jié)果進(jìn)行舍入和規(guī)范化處理。
2.如權(quán)利要求1所述的數(shù)據(jù)類型轉(zhuǎn)換電路,其特征在于,所述前導(dǎo)零計數(shù)電路包括高 16位計數(shù)單元和低16位計數(shù)單元,所述高16位計數(shù)單元和所述低16位計數(shù)單元分別將 16位輸入數(shù)據(jù)分為4組,每組4位分別在4位前導(dǎo)零計數(shù)器中進(jìn)行計數(shù)。
3.如權(quán)利要求2所述的數(shù)據(jù)類型轉(zhuǎn)換電路,其特征在于,所述前導(dǎo)零計數(shù)器輸出的計 數(shù)結(jié)果包括前導(dǎo)零的個數(shù)CNT [1 0]以及全0標(biāo)志位ALUER0。
4.如權(quán)利要求3所述的數(shù)據(jù)類型轉(zhuǎn)換電路,其特征在于,所述高16位計數(shù)單元和所述 低16位計數(shù)單元在所述前導(dǎo)零計數(shù)器計數(shù)完成后,分別直接通過4組4位的計數(shù)結(jié)果通過 選擇和拼接得出16位的計數(shù)結(jié)果。
5.如權(quán)利要求4所述的數(shù)據(jù)類型轉(zhuǎn)換電路,其特征在于,所述高16位計數(shù)單元和所述 低16位計數(shù)單元計數(shù)完成后,如果高16位計數(shù)為全0,則使用低位計數(shù)結(jié)果拼接1’ bl作 為32位的計數(shù)結(jié)果,否則使用高位的計數(shù)結(jié)果拼接1’ b0作為計數(shù)結(jié)果。
6.如權(quán)利要求1至5中任意一項所述的數(shù)據(jù)類型轉(zhuǎn)換電路,其特征在于,所述轉(zhuǎn)換數(shù)據(jù) 組為84位,其中高32位為整數(shù)部分,低52位為小數(shù)部分。
7.如權(quán)利要求6所述的數(shù)據(jù)類型轉(zhuǎn)換電路,其特征在于,對于整數(shù)數(shù)據(jù)類型的32位數(shù) 據(jù),在進(jìn)入所述轉(zhuǎn)換數(shù)據(jù)組之前,如果需要轉(zhuǎn)換為短整型數(shù)據(jù),那么選擇沒有轉(zhuǎn)換的補碼進(jìn) 入所述轉(zhuǎn)換數(shù)據(jù)組,如果需要轉(zhuǎn)換為浮點類型,那么選擇經(jīng)所述補碼轉(zhuǎn)換電路轉(zhuǎn)換的原碼 進(jìn)入所述轉(zhuǎn)換數(shù)據(jù)組。
8.如權(quán)利要求6所述的數(shù)據(jù)類型轉(zhuǎn)換電路,其特征在于,對于短整型數(shù)據(jù)的16位數(shù)據(jù), 在進(jìn)入所述轉(zhuǎn)換數(shù)據(jù)組之前,如果需要轉(zhuǎn)換為整型數(shù)據(jù),那么選擇沒有轉(zhuǎn)換的補碼進(jìn)入所 述轉(zhuǎn)換數(shù)據(jù)組,否則選擇經(jīng)所述補碼轉(zhuǎn)換電路轉(zhuǎn)換的原碼進(jìn)入所述轉(zhuǎn)換數(shù)據(jù)組。
9.如權(quán)利要求6所述的數(shù)據(jù)類型轉(zhuǎn)換電路,其特征在于,對于雙精度浮點數(shù),進(jìn)入所述 數(shù)據(jù)轉(zhuǎn)換組的數(shù)據(jù)為尾數(shù)M,尾數(shù)M進(jìn)入到所述轉(zhuǎn)換數(shù)據(jù)組的低52位,并且在高32位的最 低位補隱藏的整數(shù)位1,然后根據(jù)需要轉(zhuǎn)換的數(shù)據(jù)類型進(jìn)行移位。
10.如權(quán)利要求6所述的數(shù)據(jù)類型轉(zhuǎn)換電路,其特征在于,對于單精度浮點數(shù),進(jìn)入所 述數(shù)據(jù)轉(zhuǎn)換組的數(shù)據(jù)為尾數(shù)M,尾數(shù)M進(jìn)入到所述轉(zhuǎn)換數(shù)據(jù)組的低52位,不足部分補0。
11.如權(quán)利要求6所述的數(shù)據(jù)類型轉(zhuǎn)換電路,其特征在于,如果轉(zhuǎn)換為整型數(shù)據(jù),那么 所述轉(zhuǎn)換數(shù)據(jù)組的高32位為轉(zhuǎn)換結(jié)果,低52位用于進(jìn)行舍入判斷和處理;如果轉(zhuǎn)換為短整 型,所述轉(zhuǎn)換數(shù)據(jù)組的高32位的低16位為轉(zhuǎn)換結(jié)果,低52位用于舍入處理;如果轉(zhuǎn)換為單 精度浮點數(shù),所述轉(zhuǎn)換數(shù)據(jù)組的低52位中的高23位為轉(zhuǎn)換結(jié)果的尾數(shù),并且使用所述轉(zhuǎn)換 數(shù)據(jù)組的低52位中的低四位進(jìn)行舍入處理,同時將前導(dǎo)零計數(shù)結(jié)果或者雙精度浮點數(shù)的 指數(shù)位通過移碼在所述規(guī)范化處理電路中轉(zhuǎn)換為指數(shù);如果轉(zhuǎn)換為雙精度浮點數(shù),使用所 述轉(zhuǎn)換數(shù)據(jù)組的低52位為尾數(shù),同時將前導(dǎo)零計數(shù)結(jié)果或者單精度浮點數(shù)的指數(shù)位轉(zhuǎn)換 為指數(shù)。
全文摘要
一種數(shù)據(jù)類型轉(zhuǎn)換電路,所述電路包括,整型數(shù)據(jù)轉(zhuǎn)換預(yù)處理電路、浮點型數(shù)據(jù)轉(zhuǎn)換預(yù)處理電路、指數(shù)運算電路、轉(zhuǎn)換數(shù)據(jù)操作單元、轉(zhuǎn)換結(jié)果選擇電路以及舍入和規(guī)范化處理電路;所述指數(shù)運算電路用于根據(jù)所述前導(dǎo)零計數(shù)電路的計數(shù)結(jié)果或者所述移碼轉(zhuǎn)換電路的轉(zhuǎn)換結(jié)果ES對數(shù)據(jù)的指數(shù)部分進(jìn)行運算;所述轉(zhuǎn)換數(shù)據(jù)操作單元包括轉(zhuǎn)換數(shù)據(jù)組,所述轉(zhuǎn)換數(shù)據(jù)操作單元對所述轉(zhuǎn)換數(shù)據(jù)組中存放的數(shù)據(jù)進(jìn)行轉(zhuǎn)換操作,所述轉(zhuǎn)換操作后的數(shù)據(jù)以統(tǒng)一的格式存放在所述轉(zhuǎn)換數(shù)據(jù)組中。采用本發(fā)明的技術(shù)方案后,通過共享轉(zhuǎn)換電路以及轉(zhuǎn)換數(shù)據(jù)組,采用高速的前導(dǎo)零計數(shù)單元來實現(xiàn)多種數(shù)據(jù)類型的高效轉(zhuǎn)換,并節(jié)省電路面積。
文檔編號G06F7/38GK102122240SQ20111002282
公開日2011年7月13日 申請日期2011年1月20日 優(yōu)先權(quán)日2011年1月20日
發(fā)明者李松 申請人:東莞市泰斗微電子科技有限公司