【精品】基于FPGA浮點運算器的設計及其在雷達中的應用_第1頁
【精品】基于FPGA浮點運算器的設計及其在雷達中的應用_第2頁
【精品】基于FPGA浮點運算器的設計及其在雷達中的應用_第3頁
【精品】基于FPGA浮點運算器的設計及其在雷達中的應用_第4頁
【精品】基于FPGA浮點運算器的設計及其在雷達中的應用_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、西安電子科技大學碩士學位論文基于fpga浮點運算器的設計及其在雷達中的應用姓名:崔云娟中請學位級別:碩士專業(yè):信號與信息處理指導教師:陳伯孝20070101摘要在很多髙精度計算場合需要采用浮點運算。過去用門電路進行各種運算通常 為定點運算,但其計算精度有限。隨著現(xiàn)場可編程門陣(fpga)的迅速發(fā)展, 可以采用fpga實現(xiàn)浮點運算。本文首先介紹定點數(shù)和浮點數(shù)的格式,完成基于fpga的幾種常用浮點運算 器的vhdl設計,包括浮點數(shù)與定點數(shù)之間的相互轉(zhuǎn)換,浮點加法器、減法器、 乘法器以及除法器。在這些浮點運算單元電路中采用多級流水線技術,并在某些 方面優(yōu)化算法,提高了運算器的性能。在此基礎上討論浮點

2、運算器的應用,通 過調(diào)用自主開發(fā)的浮點乘、加模塊設計浮點fir濾波器,并將其應用于正交中頻 采樣,結(jié)果表明浮點運算的正交中頻采樣可以得到更高的鏡頻抑制比。最后應用 浮點運算模塊設計浮點fft處理器,在fpga中實現(xiàn)高精度的fft處理。關鍵詞:fpga 浮點數(shù) vhdl fir濾波器 中頻正交采樣 fftabstractfloating-point (fp) arithmetic is usually used in many high accuracy calculation fields in the past, fixing-point operation is usually used

3、in gate circuits whose calculation precision is limited with the rapid development of fpga, it is possible to do fp operation in fpga.this paper introduces the format of floating-point (fp) and fixing-point data at the beginning. accomplish the vhdl design of floating-point(fp) arithmetic units in c

4、ommon use based on fpga, including the conversion between fp data and fixingpoint data. fp addition, subtraction, multiplication and division. all of them are pipeline architectures and specified in vhdl, are fully synthesizable with performance comparable to other available high speed implementatio

5、ns. special emphasis is put on the application of fp data in radar. as an example, the fp operation modules are used in quadrature sampling of intermediate frequency (if) signal, to show that a much higher performance can be obtained. at last the fp operation modules are used to design fp ffr proces

6、sor, achieve high precision of fft processing on fpga.key words: fpga floating-point(fp) vhdl fir filter quadrature sampling fft西安電子科技大學學位論文獨創(chuàng)性(或創(chuàng)新性)聲明秉承學校嚴謹?shù)膶W風和優(yōu)良的科學道德,本人聲明所呈交的論文是我個人在導 師指導下進行的研究工作及取得的研究成果。盡我所知,除了文中特別加以標注 和致謝中所羅列的內(nèi)容以外,論文中不包含其他人已經(jīng)發(fā)表或撰寫過的研究成果; 也不包含為獲得西安電子科技大學或其它教育機構的學位或證書而使用過的材 料。與我一同

7、工作的同志對本研究所做的任何貢獻均己在論文中做了明確的說明 并表示了謝意。申請學位論文與資料若有不實之處,本人承擔一切的法律責任。本人簽名:卷n妁fi期2。°7丿20西安電子科技大學關于論文使用授權的說明本人完全了解西安電子科技大學有關保留和使用學位論文的規(guī)定,即:研究 生在校攻讀學位期間論文工作的知識產(chǎn)權單位屬西安電子科技大學。學校有權保 留送交論文的復印件,允許查閱和借閱論文;學??梢怨颊撐牡娜炕虿糠謨?nèi) 容,可以允許采用影印、縮印或其它復制手段保存論文。同時本人保證,畢業(yè)后 結(jié)合學位論文硏究課題再撰寫的文章一律署名單位為西安電子科技大學。(保密的論文在解密后遵守此規(guī)定)本人簽

8、名:程人請fi期7叫/ 20導師簽名:丫耶磷日期®宀第一章緒論1.1論文選題的背景及意義在現(xiàn)代雷達、通訊、圖象處理等領域中,數(shù)字信號系統(tǒng)經(jīng)常需要高精度的計 算。在某些應用場合定點數(shù)己經(jīng)不能滿足計算精度的要求,因此需要將定點運算 轉(zhuǎn)化為浮點運算。使用有符號數(shù)值表達方式時,如果遇到超過32位的大范圍 數(shù),表示時必須放棄低位,這時為了提髙精度可以選擇用浮點數(shù)來表示。浮點數(shù) 的主要特點是存儲范圍大,因此用浮點數(shù)來表示數(shù)或進行運算可以得到比較精確 的結(jié)果。fpga (現(xiàn)場可編程門陣列)技術及其硬件描述語言(vhdl) 1,1121 jf.得到越 來越廣泛的應用。fpga是一種半定制集成電路,具

9、有面向數(shù)字信號處理算法的 物理結(jié)構。fpga芯片在每次加電時從外部讀入構造數(shù)據(jù)。因此具有以下優(yōu)點:無限可重復編程,且編程速度快(毫秒級);不需要專用的或價格高的編程設備,用戶只需對裝載構造數(shù)據(jù)的prom 或eprom編程,不需要對fpga本身進行編程;在系統(tǒng)加電運行時完成重構,需要時可讓芯片重新編程,讀入另一種設計 的構造數(shù)拯,完成系統(tǒng)在線重構;設計修改方便,可在不改變印制板連線關系的情況下,對設計作較大的改 動,產(chǎn)品換代升級方便,尤其適合于新產(chǎn)品開發(fā)。fpga邏輯設計與綜合的軟件已經(jīng)發(fā)展得相當完善,用戶甚至可以不用詳細 了解fpga的內(nèi)部結(jié)構,也能用自己熟悉的方法來完成fpga的設計。用fp

10、ga實現(xiàn)浮點運算具有硬件系統(tǒng)簡單、功耗低以及開發(fā)時間較短、成本 較低等優(yōu)點。絕大多數(shù)的商用浮點運算庫只提供一小部分具有固定位寬和運算速 度的浮點模塊,而在實際的工程運用中通常需要改良設計以滿足實際需要。本 文設計的浮點運算器靈活的采用流水線結(jié)構,在一定范圍內(nèi)可調(diào)整流水線的深度 以滿足實際運算速度的需要,并在某些方面優(yōu)化算法較一般的浮點運算器也能達 到更高的性能。1.2 fpga與數(shù)字信號處理1. 2. 1實現(xiàn)數(shù)字信號處理的兩種主要手段:實現(xiàn)數(shù)字信號處理主要有兩種形式:一種是使用單片機或數(shù)字信號處理器 (dsp),通過軟件編程來實現(xiàn);另一種是應用專用集成電路芯片或可編程大規(guī)模 集成電路來實現(xiàn)。第

11、一種利用軟件編程來實現(xiàn),雖然有很大的靈活性,但受dsp 本身性能及程序指令順序執(zhí)行的限制,難以實現(xiàn)高速、大規(guī)模運算;而專用集成 fr路芯片或可編程大規(guī)模集成電路卻可以實現(xiàn)很高的運算速度,非常適合高速信 號處理系統(tǒng)的應用。1.2.2實現(xiàn)數(shù)字信號處理的兩種手段的比較傳統(tǒng)dsp技術主要是指以dsp處理器為核心或作為主要處理單元的dsp應 用系統(tǒng)及其開發(fā)技術?,F(xiàn)代dsp技術主要指的是第二種形式中的可編程大規(guī)模集 成電路實現(xiàn)(即使用fpga技術)。但到目前為止,這兩種技術還沒有較好地相互 替代(或相互包含、相互覆蓋),也沒有很好地相互融合。嚴格地說,現(xiàn)代dsp技術不可能融入傳統(tǒng)dsp技術,但反過來卻可以

12、歸屬 于傳統(tǒng)技術范疇,因為其自底向上的設計流程沒有改變。現(xiàn)代dsp技術與傳統(tǒng)dsp技術的不同之處主要表現(xiàn)在以下幾個方面叫1)系統(tǒng)工作速度不同與fpga相比,dsp處理器最大的劣勢之一是處理速度比較慢。盡管在硬件 結(jié)構上作了大量的改進,如增加硬件乘法累加模塊和加入各種專用的加速協(xié)處理 器等,但其速度瓶頸來自于基于cpu的指令順序執(zhí)行的基本工作模式,以及通 常使用的多片dsp組合電路和過多的外部接口電路(fpga通常可以實現(xiàn)單片系 統(tǒng))導致的信號通道過長、過復雜。用dsp處理器和fpga完成同一算法(即8位224階f1r濾波器)如表1.1。表1. 1 fpga與dsp處理器運算速度的比較功能實現(xiàn)資

13、源需求tms320c5402tms320c6414ep1s】2o(fpga)階數(shù)224224224乘法累加器數(shù)18(最人)224 (28個dsp模塊)內(nèi)部時鐘速度100mhz600mhz250mhz算出結(jié)果的時鐘周期數(shù)224281每秒乘加運算次數(shù)ojgmacs4.8gmacs56gmacs從表1.1可以看岀,tms320c6414和tms32oc5402中分別有8和1個 mac模塊,而ep1s120中有28個dsp模塊,并且fpga中數(shù)以力計的邏輯宏 單元可隨意組合成各種類型的硬件電路功能模塊。由表1.1可見,ep1s120型的fpga的乘加速度最快,每秒為56千兆個乘加 (mac)操作,是

14、tms320c6414 的 12 倍,tms320c5402 的 560 倍。而這時 fpga中采用的內(nèi)部時鐘速度還不到tms320c6414的1/2。此外還應看到tms320c6414與epis120的單片售價相當,但在實用dsp系 統(tǒng)中,單片c6x幾乎無法完成實際的運算任務,而fpga卻常能構成單片系 統(tǒng)。2) 系統(tǒng)結(jié)構可重構性不同雖然加載不同的軟件程序能夠改變dsp處理器的功能,但這種相對于asic 系統(tǒng)來說十分靈活的功能并沒有什么實用價值。因為僅僅通過對dsp處理器加載 不同的程序代碼,并不能有效地改變dsp系統(tǒng)的諸如吞吐量、數(shù)據(jù)總線寬度、 dsp加速模塊的數(shù)量與功能、調(diào)制模式(如am

15、, fm, tsb, fsk, psk, msk, qam等)、實時加密算法、處理頻段帶寬、通信協(xié)議、動態(tài)范圍等技術參數(shù)和技 術方案。因為這一切必須完全改變硬件結(jié)構、硬件功能和硬件組成才能實現(xiàn)。也 就是說除非dsp系統(tǒng)具有硬件可重構性,即結(jié)構有可重配置性才能實現(xiàn)上述變 化。由于不同的配置文件下載于fpga后,將能獲得不同的硬件結(jié)構和硬件功 能,因此基于fpga的dsp系統(tǒng)具有良好的系統(tǒng)結(jié)構可重配置特性。3) 系統(tǒng)知識產(chǎn)權自主性不同由于基于fpga的dsp系統(tǒng)主要是純硬件系統(tǒng)設計,可選的硬件實現(xiàn)方式很 多,因此系統(tǒng)具有較好的自主知識產(chǎn)權屬性?;赿sp處理器的系統(tǒng)則沒有這種 屬性。4) 開發(fā)技術

16、標準化、規(guī)范化與技術兼容性不同為了適應不同dsp應用系統(tǒng)的技術指標要求和適用領域,必須推岀不同系列 和具有不同功能特點的dsp處理器,而不同的dsp處理器其硬件結(jié)構通常都有 較大的差別,因此對應不同的匯編語言,需要不同的軟硬件開發(fā)工具和仿真器。 此外,由于相應的c程序的運行效率比較低,實時要求較高的系統(tǒng)仍然需要利用 匯編語言進行開發(fā),因此調(diào)試成熟的軟件模塊難以移植和再利用。在這里,硬件 結(jié)構與計算機語言的密切相關性、仿真測試與硬件系統(tǒng)的密切相關性,以及系統(tǒng) 性能與dsp處理器選擇的密切相關性,注定了無論是設計流程、仿真開發(fā)王具還 是開發(fā)語言都不可能得到標準化、規(guī)范化,從而極大地降低了 dsp開

17、發(fā)技術的學 習效率、開發(fā)效率、實現(xiàn)效率及升級更新效率。傳統(tǒng)dsp技術難以標準化的另一重要原因是該技術的實現(xiàn)流程過于單向化, 技術兼容性不好,很難與其它開發(fā)技術融為一體。如單片機開發(fā)技術、嵌入式系 統(tǒng)開發(fā)技術、可配胃模擬系統(tǒng)開發(fā)技術、大規(guī)??删幊踢壿嬒到y(tǒng)開發(fā)技術等。開 發(fā)技術標準化和規(guī)范化是現(xiàn)代dsp技術的優(yōu)勢之一。自頂向下的設計流程為dsp 開發(fā)技術的標準化奠定了基礎;標準化的硬件描述語言和大量支持這一語言的綜 合器與仿真器構成了這一技術的核心;功能強大、適用面廣的dsp開發(fā)集成環(huán)境 將多種開發(fā)目標兼收并蓄;大規(guī)模的可重配置器件fpga/cpld及相關的軟硬ip 核確保了 dsp硬件系統(tǒng)離效高

18、質(zhì)的實現(xiàn)。5) 掌握開發(fā)技術的難易程度不同掌握傳統(tǒng)dsp技術的困難主要來自以下幾個方面:(1) 不同的開發(fā)目標需要選擇不同的dsp處理器,詳細了解dsp器件的結(jié)構 對正確地設計dsp硬件系統(tǒng)至關重要,特別當需要多片dsp連用時更是如此。 對器件硬件結(jié)構的熟悉和關注能力需要相當?shù)挠布_發(fā)經(jīng)驗,這顯然增加了學習 難度。(2) 不同的dsp處理器結(jié)構將對應不同的匯編語言,以及不同的編程方法和 編程技巧。語言與結(jié)構的密切相關性在明顯增加學習難度的同時,縮短了新的計 算機語言的可用性周期,即學會的軟硬件知識容易過時。(3) 不同的dsp處理器結(jié)構、不同的匯編語言及其對應的不同的dsp系統(tǒng)結(jié) 構,都將對應

19、不同的仿真開發(fā)工具以及編譯軟件。(4) 由于必須直接使用計算機語言來描述和實現(xiàn)復雜的算法,且描述的方法與 dsp結(jié)構相關,因而設計過程缺乏直觀性和一般性。(5) 由于系統(tǒng)的低速性,為了了解和實現(xiàn)典型的dsp功能,需將大量的精力 花在本應由計算機就能實現(xiàn)的軟硬件結(jié)構技巧上?,F(xiàn)代dsp技術(fpga)是完 全基于電子設計自動化技術的,系統(tǒng)級開發(fā)工具是目前各學科領域普遍使用的 r/atlab, 一切設計操作都可以在同一環(huán)境中完成,整個設計流程中兒乎可以不 必了解1pga的結(jié)構和vhdl硬件描述語言,從而最大程度地發(fā)揮了計算機自動 化設計的優(yōu)勢。設計者所有的任務都集中在系統(tǒng)行為和功能的描述,以及系統(tǒng)性

20、 能的優(yōu)化上。6) 系統(tǒng)成本、功耗、集成度與可靠性不同111于cpu的靈活性,對于低速、低吞吐量和大量復雜運算的情況,dsp處 淮器方案的系統(tǒng)成本要比fpga系統(tǒng)低得多,而且此方案貝有不可替代性。然 而,以上的情況在實用系統(tǒng)中是比較少的。大多數(shù)情況中不但需要盡可能高速、 高性能的dsp處理器,而且多片dsp連用的情況也十分普遍。在這種多片dsp 系統(tǒng)中,每一片dsp處理器都必須配置完整的輔助器件才能正常工作,其中包括 諸如數(shù)據(jù)ram、程序ram和rom、fifo、雙口 ram、fpga/cpld輔助接口 盎件等等。這種系統(tǒng)的成本將成倍提高,而且功耗、集成度與可靠性等性能指標 也都有不同程度地下

21、降。但是如果使用fpga來構成dsp系統(tǒng),在dsp處理器 系統(tǒng)中存在的許多問題將迎刃而解?;趂pga的dsp系統(tǒng)的優(yōu)勢主要源于可以 形成單片系統(tǒng)。目前擁有大規(guī)模邏輯資源的fpga完全能容納本來必須由多片 dsp處理器構成的系統(tǒng),從而使得單片dsp系統(tǒng)在各項技術指標大幅度提髙的前 提下,成本和功耗大幅度下降,集成度與可靠性則大幅度提高。1.2.3總結(jié)總之,上述兩種方法各有優(yōu)缺點,應根據(jù)實際需要決定采用哪種方法,或者 將兩者結(jié)合起來使用。在實現(xiàn)fft運算或其逆變換ifft運算時,尤其是在對實時性要求很高的情 況下,幾乎所有的通用dsp都難以實現(xiàn)這一要求??删幊踢壿嬈骷试S設計人員 利用并行處理技

22、術實現(xiàn)髙速信號處理算法,并且只需單個器件就能實現(xiàn)所期望的 性能。當通用的dsp無法達到速度要求時,唯一的選擇是增加處理器的數(shù)目,或 采用定制門陣列產(chǎn)品?,F(xiàn)在,隨著微電子技術的發(fā)展,采用現(xiàn)場可編程門陣列 (fpga)進行數(shù)字信號處理發(fā)展迅速,而且還可以內(nèi)嵌dsp模塊。釆用現(xiàn)場可編 程器件不僅加速了產(chǎn)品上市時間,還可滿足現(xiàn)在和下一代便攜式設計所需要的成 本、性能、尺寸等方面的要求,并提供系統(tǒng)級支持。本文也正是基于fpga芯 片,設計浮點運算器,并將其運用于雷達系統(tǒng)。13研究內(nèi)容及本文組成本文基于fpga,用vhdl語言設計浮點運算器,并討論其應用。主要做了 以下幾個方面的工作:(1) 介紹定點數(shù)和

23、ieee單精度浮點數(shù)格式,討論定點數(shù)轉(zhuǎn)化為浮點數(shù)、浮 點數(shù)轉(zhuǎn)化為定點數(shù)的fpga設計方法及其vhdl語言實現(xiàn);(2) 介紹浮點數(shù)乘法器、加法/減法器以及除法器的基本運算步驟,以及用 vhdl語言實現(xiàn)的具體流程,并討論如何在fpga中實現(xiàn)浮點運算的最優(yōu)設計;(3) 將自行設計的浮點運算器應用于數(shù)字信號處理中常用的fir濾波器、 中頻正交釆樣、fft,討論如何變定點運算為浮點,得到高精度的處理結(jié)果。第二章 定點數(shù)、浮點數(shù)格式及其相互轉(zhuǎn)化在進行浮點運算之前,首先要將a/d變換等釆樣后的定點數(shù)轉(zhuǎn)化為浮點數(shù); 處理結(jié)果通常要將浮點數(shù)轉(zhuǎn)化為定點數(shù)。本章重點介紹定點數(shù)和ieee單精度浮點 數(shù)格式,討論定點數(shù)

24、轉(zhuǎn)化為浮點數(shù)、浮點數(shù)轉(zhuǎn)化為定點數(shù)的fpga設計方法及其 vhdl語言實現(xiàn)。2.1定點數(shù)的格式定點法是小數(shù)點在數(shù)中的位置固定不變。以定點法表示的實數(shù)稱作定點數(shù)。 通常,定點數(shù)有兩種表示方法:方法一:規(guī)定小數(shù)點固定在最高數(shù)值位之前,表示的所有數(shù)都是小數(shù)。n位數(shù) 值部分所能表示的數(shù)n的范圍為(原碼表示)l-2-n>y>-(l-2"n)(2-1)它能表示的數(shù)的最大絕對值為1-2-最小絕對值為2-方法二:規(guī)定小數(shù)點固定在最低數(shù)值位之后,表示的所有數(shù)都是整數(shù)。n位數(shù) 值部分所能表示的數(shù)n的范圍為-qnn-(2-”-1)(2-2)它能表示的數(shù)的最大絕對值為2n-l,最小絕對值為lo本文

25、用的定點數(shù)為十二位有符號定點數(shù),表示如下:dll d10do符號數(shù)值位此定點數(shù)所表示的整數(shù)范圍是一2047+ 2047,表示數(shù)的范圍較小,在運算 過程中容易產(chǎn)生溢出。2.1. 1補碼的表示在計算機中定點數(shù)都是以補碼的形式來表示的。二進制的補碼就是用機器數(shù) 的最高1位表示符號,以下的各位以給出數(shù)值按2取模的結(jié)果來表示。其具體定 義為:設以二進制補碼表示數(shù)以一2卒),那么根據(jù)x-的不同值可以得到:當和=0時,表示x是正數(shù),即x = (0xk_2xxq)9它所表示的數(shù)值為:*-2x = °2(2-3)(2) 當仏=1,表示x是負數(shù),即x = (ixk_2-xx0),它所表示的數(shù)值為:x =

26、 42(*',)-(x,_2.-xix0)29 x“2(5 + (*2)/-0x=-(d2)+i綜上所述,可以得出采用二進制補碼運算的幾個特點:(1) 在采用補碼表示的二進制數(shù)中,機器數(shù)的最高一位是符號位,0表示正數(shù), 1表示負數(shù)。(2-4)(2-5)(2-6)+0complement=-01complement=0(2-7)(2) 在釆用補碼表示的二進制數(shù)中,0具有唯一的編碼,即:釆用補碼表示后,進行加法運算時,可以將符號位與數(shù)值位等同處理。但是, 要特別注意的是,得到的結(jié)果不能超過計算機系統(tǒng)所能表達的數(shù)值范圍,否則可 能會產(chǎn)生“溢出”的異常。2.2浮點數(shù)的格式目前通用的浮點數(shù)字信號

27、處理器(dsp)大多采用ieee的32位單精度、40 位擴展精度浮點格式。浮點數(shù)即小數(shù)點的位置是可以變化的,用階碼表征小數(shù)點 的位置。ieee 754單精度浮點數(shù)的格式如圖2.2所示,包括符號位、階碼位和尾 數(shù),共32位。其中:符號(s)占1位;階碼(e)占8位,視作無符號數(shù)(心255)。 e有127的偏移,因此小數(shù)點實際移動位數(shù)等于e-127;尾數(shù)(q為23位,對應 定點數(shù)的數(shù)值部分,但是隱藏了其最高位1,且小數(shù)點在階碼(e)的右邊, 表示的定點數(shù)為1齊d31d30d23d22do符號(s)階碼)尾數(shù)s小數(shù)點圖2.2 ieee單精度浮點數(shù)格式按照ieee單精度浮點數(shù)格式標準:浮點數(shù)的數(shù)值=(

28、-l)a5xip<2a(e-127)o在 單精度浮點格式中ieee還提供了幾種特殊的數(shù)據(jù)形式,如表2.1。表2.1 ieee單精度浮點數(shù)據(jù)類型階碼)尾數(shù)(/)含義nan255非零數(shù)據(jù)溢出、未經(jīng)初始化的變童值或無效運算結(jié)果無窮大2550正無窮或負無窮正常l<e<254任意m)xl./x2(e-127)零00040位擴展精度與32位單精度浮點數(shù)格式大致相同,只是尾數(shù)(p多了 8位, 為31位。雙精度浮點數(shù)格式(也稱為長實數(shù)格式)為64位。符號位1位,尾數(shù)域52 位,及指數(shù)域11位。同短實數(shù)格式一樣,尾數(shù)經(jīng)過規(guī)格化并對數(shù)字的整數(shù)部分使 用隱含位。這樣,長實數(shù)格式便有53位有效二進制

29、數(shù)字。本文主要針對ieee754 單精度浮點格式進行浮點運算器的設計。應特別注意:浮點數(shù)的尾數(shù)存著定點數(shù)的數(shù)值部分,但是隱藏了其最高位1。 例如:整數(shù)2對應定點數(shù)000000000010b,對應的浮點數(shù)為40000000h。2. 3.1定點數(shù)轉(zhuǎn)化為浮點數(shù)的基本方法對照定點數(shù)以及浮點數(shù)的格式可以看出,把定點數(shù)轉(zhuǎn)化為浮點數(shù)就是將定點 數(shù)的符號、小數(shù)點位置、數(shù)值大小的信息對應存入浮點數(shù)的符號位、階碼、尾數(shù)。在轉(zhuǎn)化過程中移動定點數(shù)的小數(shù)點使其只有一位整數(shù)(即變?yōu)?./的形式), 再將定點數(shù)的符號位、小數(shù)點移動位數(shù)+127和移動后定點數(shù)的小數(shù)部分(q分別 存入浮點數(shù)的符號位、階碼和尾數(shù)。下面以12位定點

30、數(shù)為例,如果是其它位數(shù)的定點數(shù),轉(zhuǎn)化方法類似。具體轉(zhuǎn) 化步驟如下:符號位不變,即 a31 (float) =a 11 (fix)階碼=小數(shù)點移動位數(shù)+ 7fh (移動二進制數(shù)的小數(shù)點使其只有一位整數(shù)) 尾數(shù)=移動后二進制數(shù)的小數(shù)部分例如:將定點數(shù)1111 1111 1010(-6)轉(zhuǎn)化為浮點數(shù)該數(shù)對應的原碼為:1000 0000 0110,符號位不變,a(31)=l;數(shù)值為110, “小數(shù)點”左移兩位變?yōu)?.10,所以階碼為:e =a30a23 = 2+127 = 10000001 ;將小數(shù)點后的部分存入y的高位,所以a22aomoooooh;因此,一6對應 的浮點數(shù)為cocoooooho具體

31、流程圖如下:a(ll)a(10)a(0)圖2.3定點數(shù)轉(zhuǎn)化為浮點數(shù)實例2. 3.2流程圖及程序說明由定點數(shù)轉(zhuǎn)化為浮點數(shù)的實例可以得出在利用vhdl語言編程時,關鍵是從 高位a(10)開始逐一往下找1,當找到第一個1時,將其后部分存入的高位, 階碼作相應的調(diào)整。具體流程是對輸入的12位定點數(shù)a,先判斷是否為零,若為則輸出y=0。否 則對a作進一步的處理。第一步:將a的補碼轉(zhuǎn)化為原碼;第二步:將a的符號 位存入y的符號位;第三步:從高位a(10)開始逐一往下找1,當找到第一個1時, 將其后部分存入v的高位,階碼作相應的調(diào)整。流程圖如下:圖2.4定點數(shù)轉(zhuǎn)化為浮點數(shù)流程圖2. 3.3生成模塊將12位定

32、點數(shù)轉(zhuǎn)化為浮點數(shù),在quartusii環(huán)境下生成的模塊如下: 輸入:時鐘,12位定點數(shù)a11.o輸出:ieee的32位浮點數(shù)y31.otlmf巴; i floatt * clk?匸三5彗護r iclmr*iypi x) me葉ypi:;o1剛i5>。17?'l 的)戦丫 j : ! inrt9i*圖2. 5定點數(shù)轉(zhuǎn)浮點數(shù)模塊可將此模塊調(diào)用于各個應用場合,方便的變定點運算為浮點運算。2. 3.4仿真波形及結(jié)果對照表對此模塊進行時序仿真,按時鐘輸入定點數(shù),經(jīng)過一段時間的延遲后輸出對 應浮點數(shù),最高時鐘頻率能達到1 oomhzo并且可以根拯實際工程需要靈活變換 定點數(shù)的位寬。(1) 在

33、具體仿真時,定點數(shù)a按時鐘輸入:1、1、2040、3、2040、3、 6、2044、1、6(十進制),經(jīng)過定點轉(zhuǎn)浮點模塊后輸出對應浮點數(shù)y: bf800000 、 3f800000 、 44ff0000 、 c0400000 、 44ff0000 、 44ff8000 、dk® y10.0 ns»20.0 m130 0 ns40.0 as50.0 ns60 0 m j 10.0 as z±zi 2040n_rn_rr -3 y 2040lj*n_jt2rly 2044 y -3 y -6 丫 2d44 y 1屹mj2-alak v收 bmiao人 cvv,hama

34、 £vt,人厶人d_a*丁3祕偵 *44fftts*c0401xo* 44fk0x) :(?4頑 ®cmucoooy cococttlo c0400000、c0c00000(均為十六進制)如下圖所示:tme jhr: 10.0 ds :川pointer: 736.7 minternl: j25.7 m sttrt:fed:-圖2. 6時序仿真波形圖(2) 輸入定點數(shù)a的十進制、十六進制原碼及補碼,輸出浮點數(shù)y的十六進 制對照表如下:表2. 2仿真結(jié)果對照表定點數(shù)a十進制-1-62040-32044原碼(h)8018067f88037fc補碼(h)fffff27f8ffd7f

35、c浮點數(shù)y十六進制bf800000cocooooo44ff0000c040000044ff80002.4浮點數(shù)轉(zhuǎn)化為定點數(shù)久4. 1轉(zhuǎn)化方法浮點運算結(jié)束后,通常要將數(shù)據(jù)定點化以方便后續(xù)處理,下面將討論如何將 浮點數(shù)轉(zhuǎn)化為所需位長的定點數(shù):由浮點數(shù)以及定點數(shù)的格式可以看岀,定點數(shù)占用的位數(shù)是由浮點數(shù)的階碼 來確定的,而定點數(shù)的數(shù)值則由浮點數(shù)的尾數(shù)確定,所以轉(zhuǎn)換過程大概可以分為 三個步驟;(1)算出二進制定點數(shù)的有效位數(shù):count=ae-127+1(2)根® count將街存入y,并在y的高位補1和0(3)原碼轉(zhuǎn)化為補碼,輸岀。2. 4.2流程圖浮點數(shù)轉(zhuǎn)化為定點數(shù)與定點數(shù)轉(zhuǎn)化為浮點數(shù)相

36、反,用vhdl語言具體實現(xiàn)其 轉(zhuǎn)化時:先算出浮點數(shù)轉(zhuǎn)化為定點數(shù)之后所占用的位數(shù),即counted26;再根據(jù) onim的值將/存入定點數(shù)的低位,并在其的髙位補出隱藏的1,即為浮點數(shù)所對 應的定點數(shù)了。用vhdl語言實現(xiàn)的關鍵是:根據(jù)浮點數(shù)的階碼算出定點數(shù)要占 用位數(shù),并在定點數(shù)的高位補出隱藏的1。圖2. 7浮點數(shù)轉(zhuǎn)化為定點數(shù)流程圖2. 4.3仿真波形在quartusli環(huán)境下對生成的浮點轉(zhuǎn)定點模塊進行時序仿真,按時鐘輸入浮點 數(shù),經(jīng)過一段時間的延遲后輸岀對應浮點數(shù),類似定點轉(zhuǎn)浮點模塊,最高時鐘頻 率能達到loomhzo并且可以根據(jù)實際工程需要確定輸出定點數(shù)的位寬。按時鐘輸入數(shù)a為32位的iee

37、e浮點格式:bf8oooo、44ff0000、c0400000、 44ff8000、c0c00000. cooooooo、44ffc000、41000000. 3f8ooooo(十六進制) 經(jīng)過仿真后輸出十二位的定點數(shù)為:-k 2040、-3、2044、6、2、2046、8、1(十 進制)。圖2.8時序仿真波形圖2.5本章小結(jié)本章重點討論定點數(shù)、浮點數(shù)的格式以及如何用vhdl語言來實現(xiàn)它們之間的 相互轉(zhuǎn)化。定點數(shù)的位寬固定,小數(shù)點位置固定,所表示數(shù)的范圍較小,在運算 過程中容易產(chǎn)生溢出。而浮點數(shù)由符號位、階碼、尾數(shù)構成,由階碼給出實際小 數(shù)點的位置,規(guī)格化后的尾數(shù)表示1到2之間的實數(shù)。所表示數(shù)

38、的動態(tài)范圍比較大, 適合對數(shù)掘精度要求較髙的處理場合。以12位定點數(shù)及單精度浮點數(shù)為例,討論 如何用vhdl語言實現(xiàn)其相互轉(zhuǎn)化。第三章浮點運算電路的設計將定點數(shù)轉(zhuǎn)化為浮點數(shù)后就可以在fpga中實現(xiàn)浮點運算。下面介紹用 vhdl語言編寫浮點數(shù)乘法器、加法/減法器以及除法器的基本操作步驟。其中輸 入的兩浮點數(shù)用a、b表示,運算結(jié)果用y表示,階碼用e,尾數(shù)用/表示。3. 1浮點數(shù)乘法器3.1.1浮點數(shù)乘法的基本方法由浮點數(shù)的格式可以看出兩浮點數(shù)相乘,步驟比較簡單,直接把符號位異 或、階碼相加、尾數(shù)相乘,最后把結(jié)果規(guī)格化輸岀即可。具體轉(zhuǎn)化步驟如下:(1) 檢測a或b是否為0,若為,則結(jié)果置0,運算結(jié)束

39、。(2) 符號位:y(31)=a(31)xor(b(31)o(3) 尾數(shù)運算:街、b/高位移入1。注:兩個相同位數(shù)的二進制數(shù)相乘其結(jié)果的位數(shù)為乘數(shù)的兩倍或兩倍減lo 因為定點數(shù)轉(zhuǎn)化為浮點數(shù)時省略髙位1,并將其后部分存入浮點數(shù)尾數(shù)的高位。 所以在進行乘法運算時先在尾數(shù)高位移入1,再將23位尾數(shù)相乘。用vhdl語 言可以表示為:c(48 downto l)v=(t&ax22 downto 0)*(t&b/(22 downto 0);(4) 階碼相加:若c(48)=0,則尾數(shù)相乘無進位e=y(30 downto 23)<=a(30 downto 23)“0111111 l”+b

40、(30 downto 23); 若c(48)=l,則尾數(shù)相乘有進位e-y(30 downto 23)<=a(30 downto 23)”01111110”+b(30 downto 23); 注:階碼=小數(shù)點移動位數(shù)+ 7fh (移動二進制數(shù)的小數(shù)點使其只有一位整數(shù))(5) 歸一化:即是將上面的運算結(jié)果規(guī)范為單精度浮點數(shù)格式輸岀。具體 操作時,將c(48 downto 1)的最高位1省略,把其后部分存入y/的高位。即:若 c(48)=0,則.戶y(22 downto 0)<=c(46 downto 24);若 c(48)=l,則.戶y(22 downto 0)<=c(47 do

41、wnto 25);下面將給岀一個兩浮點數(shù)相乘的例子:例如 a-40400000, b=c2cc0000, y=c3990000, y=a*baby=a*b單精度浮點(h)40400000c2cc0000c3990000定點數(shù)(d)3102306第一步:在a/, b/的高位移入1第二步:則ap b/的長度變成了 24位,即從0到23,所以c(48 downto l)=(t&a/22 downto 0)*(,r&b/22 downto 0) =10011001 00000第三步:因為 c(48)=l,所以 y(3023)= 10000000-1111111+10000101 = 1

42、0000110,最后將 c(47 downto 25)存入 y(22 downto 0)。-具體運算流程如下:a:a。,y=c3990000h圖3. 1浮點數(shù)乘法運算實例3. 1.2流程圖根拒兩浮點數(shù)相乘的步驟,用vhdl語言編寫程序。先判斷輸入a或者b 是否為零,若為則輸岀y=0o否則繼續(xù)運算,第一步先處理符號位 y(31)-a(31)xor b(31);第二步:a和b的尾數(shù)高位移入1;第三步:運算c(48 downto opa® 第四步:根據(jù)c(48)為0或1,將c的高位做歸一化處理,存入y尾數(shù)的高位,并對階碼做相應的調(diào)整。具體流程如下圖所示:圖3. 2浮點乘法器流程圖3.1.

43、3生成模塊在quartusii環(huán)境下生成了 32位浮點數(shù)乘法器的模塊如下:輸入:clk、ieee 單精度浮點數(shù) a31.0、b31.o輸出:ieee單精度浮點數(shù)y31.oa()b(3l.o圖33浮點乘法模塊3.1.4仿真波形及結(jié)果對照表按時鐘clk(最高時鐘頻率可以達到50mhz),輸入兩浮點數(shù)a、ba: 3f8ooooo、40000000、3f800000.4040000040a00000、bf800000、40400000b: 3f800000. bf800000.44ff0000.40400000> c0000000.44ffe000、coaooooo經(jīng)過仿真輸出結(jié)果為浮點數(shù)y=a

44、*by: 3f800000 > c0000000、44ffoooo >41100000、c1200000、c4ffe000、c170000090.0 m;fi圖3. 4時序仿真波形輸入數(shù)a, b的定點十進制、浮點十六進制以及對應相乘結(jié)果y的定點十進 制、浮點十六進制的對照表如下:表3. 1仿真結(jié)果對照表a定點(d)12351a浮點(h)3f800000400000003f8000004040000040aooooobf800000b定點(d)1120403-22047b浮點(h)3f8ooooobf80000044ffoooo40400000cooooooo44ffe000y=a*

45、b定點(d)1-220409-10-2047浮點(h)3f800000cooooooo44ffoooo41100000cl200000c4ffe0003. 2浮點數(shù)加法器3. 2. 1浮點數(shù)加法的基本思路浮點加法器的運算比較復雜,是浮點運算的基礎和處理器的核心部件。因此 加法器的運算速度制約著浮點處理器的運算速度,其設計優(yōu)化是提高浮點運算速 度和精度的關鍵途徑。浮點加法器的設計經(jīng)過多年的發(fā)展,在算法的改進上取得 了大量的成果,其中最主要的是twopath算法。此算法的目的就是使各個操作 步驟盡可能的并行化,以減少算法的總延時。這些改進一般都需要附加硬件,改 進是基于浮點加/減計算的某些特性?;?/p>

46、于這種算法的加法器已經(jīng)在一些商用機上 設計實現(xiàn)。浮點數(shù)加法在運算過程中大概可以分為以下幾個步驟:(1) 對階一對階操作就是使兩個數(shù)據(jù)的階碼相等,這樣才能進行尾數(shù)的加減 運算。在對階操作時,使小階向大階對齊,即小階尾數(shù)右移才不會導致溢出。其具體實現(xiàn)方法為:比較2、be的大小(假設ae>be),得階差a£,將b/ 右移位,即b/高位移入ae個oo(2) 運算原碼帶符號位加法的規(guī)則為:若a和b同號,則符號位不變, y/=vb/o若a和b異號,符號位由絕對值大者決定(假設反之亦然。(3) 歸一化將定點數(shù)存入浮點數(shù)尾數(shù)過程中,省略了定點數(shù)最高位的1, 因此在運算過程中首先還原1 (即在尾

47、數(shù)高位移入1)。運算完畢,其結(jié)果要歸一 化為ieee的浮點格式。具體做法,找出運算結(jié)果的最高位1,將其后部分存入勺髙位,階碼作相應 的調(diào)整。';下面給出兩浮點數(shù)相加的例子:例如 a=cooooooo, b=42f40000, y=a+b=42f00000。結(jié)合圖 3.5 的運算過程 作以下分析:a(22)a(0)b(22)b(0)圖35浮點加法器實例a(31)=l, b(31)=0,a(30 downto 23)=10000000, b(30 downto 23)=10000101第一步:釦,色的高位移入1即:a(23 downto 0)=1000-00, b(23 downto 0)

48、=111010-000第二步:算出階差。beae=101b=5,在小階釦的高位移入5個0,即:a(23 downto 0)=000001000第三步:運算。a為負數(shù),b為正數(shù),且釦,所以 y/24 downto 0)=a/=0111100-0 0第四步:符號位由b決定,y(31)=1,因為yx23)=0,所以y(30 downto 23)=10000101將y/(23)后的數(shù)存入y尾數(shù)的高位y(22 downto 0)=11100-000由浮點加法運算過程可以看出,浮點數(shù)加法的操作步驟比較復雜,在實際設 計過程中為了提高運算速度,通常采用流水線結(jié)構。下面將對流水線結(jié)構作簡要 介紹。.3. 2.

49、2流水線結(jié)構設計簡介何3流水線處理是高速設計中的一個常用設計手段。如果某個設計的處理流程分 為若干步驟,而且整個數(shù)據(jù)處理是“單流向”的,即沒有反饋或者迭代運算,前 一個步驟的輸出是下一個步驟的輸入則可以考慮采用流水線設計方法提髙系統(tǒng)的工作頻率問。流水線設計的結(jié)構示意圖如圖3.6所示:? step 2stepn s圖3.6流水線設計結(jié)構示意圖圖3.7流水線設計時序示意圖其基本結(jié)構為:將適當劃分的單個操作步驟單流向串聯(lián)起來。流水線操作的特點和要求是,從時間上看數(shù)據(jù)流在各個步驟的處理是連續(xù)的。如果將每個操作步驟簡化假設為通過一個d觸發(fā)器(就是用寄存器打一個節(jié)拍),那么流水線操作就類似一個移位寄存器組

50、,數(shù)據(jù)流依次流經(jīng)d觸發(fā)器,完成每個步驟的操作。流水線時序設計如圖3.7所示。流水線設計的關鍵在于,整個設計時序的合理安排。要求每個操作步驟的劃 分合理。如果前級操作時間恰好等于后級操作時間,設計最為簡單,前級的輸出 直接匯入后級的輸入即可。如果前級操作時間大于后級的操作時間,則需要對前 級的輸出數(shù)據(jù)適為緩存,才能匯入后級的輸入端。如果前級操作時間恰好小于后 級的操作時間,則必須通過復制邏輯,將數(shù)據(jù)流分流,或者在前級對數(shù)據(jù)采用存 儲、后處理方式,否則會造成后級數(shù)拯溢出。由于流水線的處理方式相當于復制了處理模塊,所以通過這種方式設計的芯 片頻率較高,現(xiàn)如今,在fpga的設計中使用相當普遍。為了達到

51、較高的運算速 度,本文所設計的浮點運算器均可釆用流水線結(jié)構。并且可以根據(jù)實際的工程需 要,靈活改變流水線的級數(shù),達到最佳的速度/面積比。下面以浮點數(shù)加法器為例 說明如何在具體設計中采用流水線結(jié)構提高工作頻率。3.2.3浮點加法流程圖及程序說明本文用vhdl語言設計的浮點數(shù)加法器也是基于two-path算法,并做岀了 一些改進。先比較兩操作數(shù)絕對值的大小,如有需要則交換操作數(shù)使其總是絕對 值大的減小的。根據(jù)運算的特點采用4級流水線結(jié)構如圖3.8。$丿 $2e, e2fif2圖3.8浮點加法器流程圖step 1:比較兩浮點數(shù)絕對值的大小,如果|a|<|b|,那么交換a、b的位置。 在計算前使

52、得對于任何輸入操作數(shù),a總是對應絕對值大者。絕對值的比較是通 過比較階碼和尾數(shù)來完成的。然后在尾數(shù)高位補岀隱藏的1(a/vr&釦, r/<=1&b/)以便于一步操作。step 2:對階,當小數(shù)點移動的位數(shù)相同時才能進彳亍浮點數(shù)加/減運算,即讓 兩浮點數(shù)的階碼相等。操作時讓小階向大階對齊,將小階的尾數(shù)右移才不會導致 溢岀。具體實現(xiàn)方法為:aebe得階差ae,再將b/右移山位。step 3:數(shù)值計算,根據(jù)符號位,將浮點尾數(shù)相加或者相減。如果符號位相 同,則y/=a/i-b/;若符號位相反,則y/=ab/ostep4:規(guī)格化,整理運算結(jié)果,變成為ieee單精度浮點格式后輸岀。具

53、體 實現(xiàn)方法就是找出運算結(jié)果的最高位1,將其后部分存入y/的高位,階碼作相應 的調(diào)整。3. 2. 4生成模塊在quartus ii環(huán)境下生成32位浮點數(shù)加法器模塊如下:y-ahb輸入:clk、浮點數(shù) a31.o、b31.o圖3. 9浮點加法模塊亦可將此浮點加法模塊方便調(diào)用于各個應用場合,實現(xiàn)浮點運算。34. 5仿真波形及結(jié)果對照表將此浮點加法模塊在quartusii壞境下進行時序仿真。對于四級流水線結(jié)構, 最高時鐘頻率能達到30mhz。若想提高運算速度,則可通過增加流水線級數(shù)來實 現(xiàn),但這樣做會相應增加所使用邏輯單元的數(shù)目。所以在實際運用中,我們可靈 活的根據(jù)需要選擇流水線的級數(shù),來達到最佳的

54、速度/面積比。按時鐘clk輸入浮點數(shù)a、ba; 45924000、3f800000、00000000> 40c00000、00000000、40c00000;b: 478fee00、00000000、44ffa000、c0c00000、c0c00000. 40800000;經(jīng)過一段時間延遲,輸出浮點數(shù)y=a+by; 47991200、3f800000、44ffa000、00000000. c0c00000、41200000;由圖3. 10可以看岀,使用了兩個時鐘clk (30ns)和clk1 (7ns)。前者 為外部送數(shù)時鐘,每個時鐘輸入兩個加數(shù),經(jīng)過一段時間的延遲后輸出一個持續(xù) 30n

55、s的運算結(jié)果;后者為內(nèi)部運算時鐘,比較兩數(shù)絕對值的大小、對階、數(shù)值 計算以及對結(jié)果的歸一化操作都用的是clk1,這樣可以大大提高運算速度。)09 am i2d.0 xa 1».o m 200./) mm 280 0 ns 320 0 as 380 0 m 400 p »他 9 ri 480.(5 0dkr 1 r l_r ) rn lnr!_r<lk!wumnwuirinjuuirmimjmuuuuuwuuuuuuuuuumwwuwuuwjuuws ai ocowcoo 7x 378x0® :oqxooq x iocoowo x coxcoco x3 b(u

56、ftamo xocjttooysfi滅to& yl|ocomxoxi yrsoaxi 廠cokdis j cxaiuj |cixoxe圖3.10時序仿真波形輸入加數(shù)al, a2的定點十進制、浮點十六進制以及對應相加結(jié)果y的定點 十進制、浮點十六進制的對照表如下:表3. 2仿真結(jié)杲對照表a定點(d)468010606a浮點(h)459240003f8000000000000040cooooo0000000040cooooob定點(d)7369202045664b浮點(h)478fee000000000044ffa000cocooooococooooo40800000y-a+b定點(d)78

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論