【精品】基于FPGA浮點(diǎn)運(yùn)算器的設(shè)計及其在雷達(dá)中的應(yīng)用_第1頁
【精品】基于FPGA浮點(diǎn)運(yùn)算器的設(shè)計及其在雷達(dá)中的應(yīng)用_第2頁
【精品】基于FPGA浮點(diǎn)運(yùn)算器的設(shè)計及其在雷達(dá)中的應(yīng)用_第3頁
【精品】基于FPGA浮點(diǎn)運(yùn)算器的設(shè)計及其在雷達(dá)中的應(yīng)用_第4頁
【精品】基于FPGA浮點(diǎn)運(yùn)算器的設(shè)計及其在雷達(dá)中的應(yīng)用_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

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

2、運(yùn)算器的應(yīng)用,通 過調(diào)用自主開發(fā)的浮點(diǎn)乘、加模塊設(shè)計浮點(diǎn)fir濾波器,并將其應(yīng)用于正交中頻 采樣,結(jié)果表明浮點(diǎn)運(yùn)算的正交中頻采樣可以得到更高的鏡頻抑制比。最后應(yīng)用 浮點(diǎn)運(yùn)算模塊設(shè)計浮點(diǎn)fft處理器,在fpga中實現(xiàn)高精度的fft處理。關(guān)鍵詞:fpga 浮點(diǎn)數(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西安電子科技大學(xué)學(xué)位論文獨(dú)創(chuàng)性(或創(chuàng)新性)聲明秉承學(xué)校嚴(yán)謹(jǐn)?shù)膶W(xué)風(fēng)和優(yōu)良的科學(xué)道德,本人聲明所呈交的論文是我個人在導(dǎo) 師指導(dǎo)下進(jìn)行的研究工作及取得的研究成果。盡我所知,除了文中特別加以標(biāo)注 和致謝中所羅列的內(nèi)容以外,論文中不包含其他人已經(jīng)發(fā)表或撰寫過的研究成果; 也不包含為獲得西安電子科技大學(xué)或其它教育機(jī)構(gòu)的學(xué)位或證書而使用過的材 料。與我一同

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

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

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

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

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

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

13、源需求tms320c5402tms320c6414ep1s】2o(fpga)階數(shù)224224224乘法累加器數(shù)18(最人)224 (28個dsp模塊)內(nèi)部時鐘速度100mhz600mhz250mhz算出結(jié)果的時鐘周期數(shù)224281每秒乘加運(yùn)算次數(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。此外還應(yīng)看到tms320c6414與epis120的單片售價相當(dāng),但在實用dsp系 統(tǒng)中,單片c6x幾乎無法完成實際的運(yùn)算任務(wù),而fpga卻常能構(gòu)成單片系 統(tǒng)。2) 系統(tǒng)結(jié)構(gòu)可重構(gòu)性不同雖然加載不同的軟件程序能夠改變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ù)參數(shù)和技 術(shù)方案。因為這一切必須完全改變硬件結(jié)構(gòu)、硬件功能和硬件組成才能實現(xiàn)。也 就是說除非dsp系統(tǒng)具有硬件可重構(gòu)性,即結(jié)構(gòu)有可重配置性才能實現(xiàn)上述變 化。由于不同的配置文件下載于fpga后,將能獲得不同的硬件結(jié)構(gòu)和硬件功 能,因此基于fpga的dsp系統(tǒng)具有良好的系統(tǒng)結(jié)構(gòu)可重配置特性。3) 系統(tǒng)知識產(chǎn)權(quán)自主性不同由于基于fpga的dsp系統(tǒng)主要是純硬件系統(tǒng)設(shè)計,可選的硬件實現(xiàn)方式很 多,因此系統(tǒng)具有較好的自主知識產(chǎn)權(quán)屬性?;赿sp處理器的系統(tǒng)則沒有這種 屬性。4) 開發(fā)技術(shù)

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

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

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

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

20、 能的優(yōu)化上。6) 系統(tǒng)成本、功耗、集成度與可靠性不同111于cpu的靈活性,對于低速、低吞吐量和大量復(fù)雜運(yùn)算的情況,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)的成本將成倍提高,而且功耗、集成度與可靠性等性能指標(biāo) 也都有不同程度地下

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

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

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

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

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

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

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

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

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

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

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

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

33、具體仿真時,定點(diǎn)數(shù)a按時鐘輸入:1、1、2040、3、2040、3、 6、2044、1、6(十進(jìn)制),經(jīng)過定點(diǎn)轉(zhuǎn)浮點(diǎn)模塊后輸出對應(yīng)浮點(diǎ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(均為十六進(jìn)制)如下圖所示:tme jhr: 10.0 ds :川pointer: 736.7 minternl: j25.7 m sttrt:fed:-圖2. 6時序仿真波形圖(2) 輸入定點(diǎn)數(shù)a的十進(jìn)制、十六進(jìn)制原碼及補(bǔ)碼,輸出浮點(diǎn)數(shù)y的十六進(jìn) 制對照表如下:表2. 2仿真結(jié)果對照表定點(diǎn)數(shù)a十進(jìn)制-1-62040-32044原碼(h)8018067f88037fc補(bǔ)碼(h)fffff27f8ffd7f

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

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

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

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

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

40、(30 downto 23); 若c(48)=l,則尾數(shù)相乘有進(jìn)位e-y(30 downto 23)<=a(30 downto 23)”01111110”+b(30 downto 23); 注:階碼=小數(shù)點(diǎn)移動位數(shù)+ 7fh (移動二進(jìn)制數(shù)的小數(shù)點(diǎn)使其只有一位整數(shù))(5) 歸一化:即是將上面的運(yùn)算結(jié)果規(guī)范為單精度浮點(diǎn)數(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);下面將給岀一個兩浮點(diǎn)數(shù)相乘的例子:例如 a-40400000, b=c2cc0000, y=c3990000, y=a*baby=a*b單精度浮點(diǎn)(h)40400000c2cc0000c3990000定點(diǎn)數(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)。-具體運(yùn)算流程如下:a:a。,y=c3990000h圖3. 1浮點(diǎn)數(shù)乘法運(yùn)算實例3. 1.2流程圖根拒兩浮點(diǎn)數(shù)相乘的步驟,用vhdl語言編寫程序。先判斷輸入a或者b 是否為零,若為則輸岀y=0o否則繼續(xù)運(yùn)算,第一步先處理符號位 y(31)-a(31)xor b(31);第二步:a和b的尾數(shù)高位移入1;第三步:運(yùn)算c(48 downto opa® 第四步:根據(jù)c(48)為0或1,將c的高位做歸一化處理,存入y尾數(shù)的高位,并對階碼做相應(yīng)的調(diào)整。具體流程如下圖所示:圖3. 2浮點(diǎn)乘法器流程圖3.1.

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

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

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

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

47、數(shù)高位移入1)。運(yùn)算完畢,其結(jié)果要?dú)w一 化為ieee的浮點(diǎn)格式。具體做法,找出運(yùn)算結(jié)果的最高位1,將其后部分存入勺髙位,階碼作相應(yīng) 的調(diào)整。';下面給出兩浮點(diǎn)數(shù)相加的例子:例如 a=cooooooo, b=42f40000, y=a+b=42f00000。結(jié)合圖 3.5 的運(yùn)算過程 作以下分析:a(22)a(0)b(22)b(0)圖35浮點(diǎn)加法器實例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第三步:運(yùn)算。a為負(fù)數(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由浮點(diǎn)加法運(yùn)算過程可以看出,浮點(diǎn)數(shù)加法的操作步驟比較復(fù)雜,在實際設(shè) 計過程中為了提高運(yùn)算速度,通常采用流水線結(jié)構(gòu)。下面將對流水線結(jié)構(gòu)作簡要 介紹。.3. 2.

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

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

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

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

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

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

55、s的運(yùn)算結(jié)果;后者為內(nèi)部運(yùn)算時鐘,比較兩數(shù)絕對值的大小、對階、數(shù)值 計算以及對結(jié)果的歸一化操作都用的是clk1,這樣可以大大提高運(yùn)算速度。)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的定點(diǎn)十進(jìn)制、浮點(diǎn)十六進(jìn)制以及對應(yīng)相加結(jié)果y的定點(diǎn) 十進(jìn)制、浮點(diǎn)十六進(jìn)制的對照表如下:表3. 2仿真結(jié)杲對照表a定點(diǎn)(d)468010606a浮點(diǎn)(h)459240003f8000000000000040cooooo0000000040cooooob定點(diǎn)(d)7369202045664b浮點(diǎn)(h)478fee000000000044ffa000cocooooococooooo40800000y-a+b定點(diǎn)(d)78

溫馨提示

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

評論

0/150

提交評論