基于FPGA的32位除法器設(shè)計(jì)_第1頁(yè)
基于FPGA的32位除法器設(shè)計(jì)_第2頁(yè)
基于FPGA的32位除法器設(shè)計(jì)_第3頁(yè)
基于FPGA的32位除法器設(shè)計(jì)_第4頁(yè)
基于FPGA的32位除法器設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、目錄摘要1第1章 緒論2第2章 設(shè)計(jì)原理32.1 除法運(yùn)算分析32.2 除法器算法的實(shí)現(xiàn)42.2.1除法器無(wú)符號(hào)數(shù)的除法42.2.2除法器有符號(hào)數(shù)的除法4第3章 軟件介紹及設(shè)計(jì)過(guò)程53.1 Quartus II簡(jiǎn)介53.2 程序設(shè)計(jì)過(guò)程63.3 仿真結(jié)果7結(jié)論8參考文獻(xiàn)9附錄1 源程序10摘要介紹了一種使用可編程邏輯器件FPGA和VHDL語(yǔ)言實(shí)現(xiàn)32位除法器的設(shè)計(jì)方法。該除法器不僅可以實(shí)現(xiàn)有符號(hào)數(shù)運(yùn)算,也可以實(shí)現(xiàn)無(wú)符號(hào)數(shù)的運(yùn)算。除法器采用節(jié)省FPGA邏輯資源的時(shí)序方式設(shè)計(jì),主要由移位、比較和減法三種操作構(gòu)成。由于優(yōu)化了程序結(jié)構(gòu),因此程序淺顯易懂,算法簡(jiǎn)單,不需要分層次分模塊進(jìn)行。并使用Alte

2、ra公司的Quartus軟件對(duì)該除法器進(jìn)行編譯、仿真,得到了完全正確的結(jié)果。關(guān)鍵詞:FPGA;VHDL;除法器;減法;移位第1章 緒論EDA 技術(shù)就是以計(jì)算機(jī)為工具,設(shè)計(jì)者在 EDA 軟件平臺(tái)上,用硬件描述語(yǔ)言 VHDL完成設(shè)計(jì)文件,然后由計(jì)算機(jī)自動(dòng)地完成邏輯編譯、化簡(jiǎn)、分割、綜合、優(yōu)化、布局、布線和仿真,直至對(duì)于特定目標(biāo)芯片的適配編譯、邏輯映射和編程下載等工作。EDA 技術(shù)的出現(xiàn),極大地提高了電路設(shè)計(jì)的效率和可操作性,減輕了設(shè)計(jì)者的勞動(dòng)強(qiáng)度。 VHDL是一種全方位的硬件描述語(yǔ)言,包括系統(tǒng)行為級(jí)、寄存器傳輸級(jí)和邏輯門級(jí)多個(gè)設(shè)計(jì)層次,支持結(jié)構(gòu)、數(shù)據(jù)流和行為 3 種描述形式的混合描述,因此 VHD

3、L幾乎覆蓋了以往各種硬件描述語(yǔ)言的功能,整個(gè)自頂向下或自底向上的電路設(shè)計(jì)過(guò)程都可以用 VHDL來(lái)完成。另外,VHDL還有以下優(yōu)點(diǎn):VHDL的寬范圍描述能力使它成為高層次設(shè)計(jì)的核心,將設(shè)計(jì)人員的工作重心轉(zhuǎn)移到了系統(tǒng)功能的實(shí)現(xiàn)和調(diào)試上,只需要花較少的精力用于物理實(shí)現(xiàn);VHDL可以用簡(jiǎn)潔明確的代碼描述來(lái)進(jìn)行復(fù)雜控制邏輯的設(shè)計(jì),靈活且方便,而且也便于設(shè)計(jì)結(jié)果的交流、保存和重用;VHDL的設(shè)計(jì)不依賴于特定的器件,方便了工藝的轉(zhuǎn)換。VHDL 是一個(gè)標(biāo)準(zhǔn)語(yǔ)言,為眾多的 EDA 場(chǎng)上支持,因此移植性好2。 本次課程設(shè)計(jì)通過(guò)利用 QuartusII 軟件實(shí)現(xiàn)32位除法器。從而對(duì) EDA 技術(shù)進(jìn)一步的熟悉、了解和

4、掌握。通過(guò)本課程的學(xué)習(xí),可以了解硬件描述語(yǔ)言編程方法 ,掌握 VHDL編程方法。除法是數(shù)值計(jì)算和數(shù)據(jù)分析中最常用的運(yùn)算之一,許多高級(jí)運(yùn)算如平方根、指數(shù)、三角函數(shù)等都與其有關(guān)。在FPGA中,有加、減、乘、除的算法指令,但除法中除數(shù)必須是2的冪,因此無(wú)法實(shí)現(xiàn)除數(shù)為任意數(shù)的除法。然而除法器是微處理器的一個(gè)重要運(yùn)算單元,除法器的運(yùn)算速度、性能、功耗等都會(huì)影響系統(tǒng)的整體性能,相對(duì)于其他運(yùn)算操作,除法很復(fù)雜且其操作的效率很低,所以研究的人很少 引,但是對(duì)除法的忽視會(huì)導(dǎo)致系統(tǒng)整體性能的下降。因此當(dāng)前不但應(yīng)該研究除法,而且研究的重點(diǎn)應(yīng)該放在提升運(yùn)算速度上。如今大部分電子系統(tǒng)的最大位寬只有32位,因此本文用VH

5、DL編寫了實(shí)現(xiàn)32位數(shù)相除的除法器。本文設(shè)計(jì)的除法器,不僅能實(shí)現(xiàn)有符號(hào)數(shù)的運(yùn)算,也可以實(shí)現(xiàn)無(wú)符號(hào)數(shù)的運(yùn)算。除法器是電子技術(shù)領(lǐng)域的基礎(chǔ)模塊, 在電子電路設(shè)計(jì)中得到廣泛地應(yīng)用。然而相對(duì)于加法和乘法等其他操作, 除法操作的效率很低。出現(xiàn)這種情況的原因除了除法本身的復(fù)雜性外, 還與人們普遍認(rèn)為除法是不頻繁的操作有關(guān)。作為微處理器的一個(gè)重要的運(yùn)算單元, 除法器的運(yùn)算速度、性能、功耗等都會(huì)影響系統(tǒng)的整體性能, 所以對(duì)除法效率的忽視會(huì)導(dǎo)致系統(tǒng)整體性能的下降。硬件除法器的運(yùn)算速度比軟件實(shí)現(xiàn)方法快得多, 但為了提升運(yùn)算速度, 就要以硬件資源的消耗為代價(jià)。第2章 設(shè)計(jì)原理2.1 除法運(yùn)算分析除法器的算法可分為兩類

6、: 基于減法操作和基于乘法操作的算法。數(shù)字循環(huán)是最簡(jiǎn)單, 運(yùn)用最廣泛的一類算法, 以減法為基本的操作, 在每一次迭代中求固定位數(shù)的商。在最早的Resorting 方法中, 每次嘗試在余數(shù)中減去除數(shù), 然后判斷得到的結(jié)果, 如果結(jié)果為正就上商 1, 否則上商 0, 并恢復(fù)余數(shù), 最后移位進(jìn)行下一次迭代。Resorting 方法一次迭代的框圖如圖 1 所示:在這種方法中一次迭代需要 2 次加法運(yùn)算, 這樣增加了不必要延時(shí), Non_resorting 方法把下一次迭代中和減法合并, 這樣在每次迭代中根據(jù)上一次上商的結(jié)果進(jìn)行操作, 如果上次上商為 1, 這次迭代用余數(shù)減去除數(shù), 否則用余數(shù)加上除數(shù),

7、 然后和Resorting 方法一樣得到本次迭代的商。還有就是基于乘法的算法, 把除法看成是乘法的逆運(yùn)算。如下面的式子所示:A=B×Q+R其中 A 為被除數(shù), B 為除數(shù), Q 為商, R 為余數(shù)。這樣的算法主要有 SRT, Newton- Raphson 和 Goldschmidt 算法等。除法在很多方面與乘法不同, 最重要的區(qū)別就是在乘法中所有的部分乘積都可以并行生成, 而在除法中每個(gè)商的位都是以一種順序的過(guò)程確定的,因此速度較慢。而以FPGA為硬件基礎(chǔ),基于減法的除法器算法不僅節(jié)省資源,速度也較快。2.2 除法器算法的實(shí)現(xiàn) 2.2.1除法器無(wú)符號(hào)數(shù)的除法本設(shè)計(jì)中的除法器,巧用V

8、HDL語(yǔ)言,將有符號(hào)數(shù)和無(wú)符號(hào)數(shù)的除法結(jié)合在一起,節(jié)省了資源,也提高了速度。其算法如下:對(duì)于32位無(wú)符號(hào)被除數(shù)a,先將a轉(zhuǎn)換成高32位是0低32位是a的數(shù)temp_a。在每個(gè)周期開(kāi)始時(shí)temp_a向左移動(dòng)一位,最后一位補(bǔ)零,然后判斷temp_a的高32位是否大于等于除數(shù)b,如是則temp_a的高32位減去b并且加I,得到的新值仍賦給temp_a;如不是直接進(jìn)入下一步。上面的移位、比較、減法(減法視情況而定)要進(jìn)行32次,經(jīng)過(guò)32個(gè)周期后,運(yùn)算結(jié)束,所得到的temp_a的高32位為余數(shù),低32位為商。將移位、比較和相減放在同一個(gè)循環(huán)中,去除了不必要的延時(shí),增加了設(shè)計(jì)的可靠性。2.2.2除法器有符

9、號(hào)數(shù)的除法對(duì)于32位有符號(hào)數(shù)的除法,算法與上面類似,只是需要判斷商和余數(shù)是正數(shù)還是負(fù)數(shù)。令d=a(31)b(31),如果d=0則被除數(shù)與除數(shù)同為正數(shù)或者負(fù)數(shù),最終商為正數(shù);如果d=1說(shuō)明被除數(shù)與除數(shù)一個(gè)為正一個(gè)為負(fù),最終商為負(fù)數(shù)。被除數(shù)是負(fù)數(shù)時(shí)余數(shù)為負(fù),否則為正。有符號(hào)數(shù)的除法采用的算法是將被除數(shù)與除數(shù)均變成無(wú)符號(hào)的32位數(shù),緊接著的計(jì)算過(guò)程與無(wú)符號(hào)數(shù)除法一樣。最后根據(jù)d的值對(duì)商作處理,如果d=0商不需任何處理,如果d=1則將商取反加1才是正確的結(jié)果。余數(shù)的調(diào)整則根據(jù)被除數(shù)的符號(hào)位進(jìn)行。32位除法器的框圖如圖1。當(dāng)you_wu為1時(shí)進(jìn)行有符號(hào)數(shù)運(yùn)算,否則進(jìn)行無(wú)符號(hào)數(shù)運(yùn)算。圖1 除法器邏輯框圖第

10、3章 軟件介紹及設(shè)計(jì)過(guò)程3.1 Quartus II簡(jiǎn)介Altera Quartus II 作為一種可編程邏輯的設(shè)計(jì)環(huán)境, 由于其強(qiáng)大的設(shè)計(jì)能力和直觀易用的接口,越來(lái)越受到數(shù)字系統(tǒng)設(shè)計(jì)者的歡迎。當(dāng)前官方提供下載的最新版本是v12.1。Altera Quartus II (3.0和更高版本)設(shè)計(jì)軟件是業(yè)界唯一提供FPGA和固定功能HardCopy器件統(tǒng)一設(shè)計(jì)流程的設(shè)計(jì)工具。工程師使用同樣的低價(jià)位工具對(duì) Stratix FPGA進(jìn)行功能驗(yàn)證和原型設(shè)計(jì),又可以設(shè)計(jì)HardCopy Stratix器件用于批量成品。系統(tǒng)設(shè)計(jì)者現(xiàn)在能夠用Quartus II軟件評(píng)估HardCopy Stratix器件的性

11、能和功耗,相應(yīng)地進(jìn)行最大吞吐量設(shè)計(jì)。Altera的Quartus II可編程邏輯軟件屬于第四代PLD開(kāi)發(fā)平臺(tái)。該平臺(tái)支持一個(gè)工作組環(huán)境下的設(shè)計(jì)要求,其中包括支持基于Internet的協(xié)作設(shè)計(jì)。Quartus平臺(tái)與Cadence、ExemplarLogic、 MentorGraphics、Synopsys和Synplicity等EDA供應(yīng)商的開(kāi)發(fā)工具相兼容。改進(jìn)了軟件的LogicLock模塊設(shè)計(jì)功能,增添了FastFit編譯選項(xiàng),推進(jìn)了網(wǎng)絡(luò)編輯性能,而且提升了調(diào)試能力。3.2 程序設(shè)計(jì)過(guò)程由設(shè)計(jì)原理知道本設(shè)計(jì)用的最多的操作就是移位、比較和減法。有設(shè)計(jì)者指出分別用3個(gè)模塊實(shí)現(xiàn)移位、比較和減法,再加

12、上控制模塊共4個(gè)模塊??墒谴朔椒▽?shí)現(xiàn)的僅是8位無(wú)符號(hào)數(shù)的運(yùn)算,不能實(shí)現(xiàn)有符號(hào)數(shù)運(yùn)算且程序很復(fù)雜,占用的FPGA資源也多。也有人提出將被除數(shù)作為被減數(shù)、除數(shù)作為減數(shù),作減法,差重新置入被減數(shù),反復(fù)相減,直到被減數(shù)小于減數(shù)為止,記錄能夠相減的次數(shù)即得到商的整數(shù)部分。這樣做不僅占用的邏輯資源很多,而且隨著被除數(shù)與除數(shù)差值的增大、相減的次數(shù)增多,速度也就降低。本設(shè)計(jì)不分模塊,僅用兩個(gè)進(jìn)程,巧妙使用loop語(yǔ)句便可方便的實(shí)現(xiàn)32位有符號(hào)和無(wú)符號(hào)數(shù)除法。另外需要注意的是,被除數(shù)與除數(shù)的臨時(shí)存儲(chǔ)單元temp_a和temp_b必須設(shè)為變量,如果設(shè)置成信號(hào)即使編譯完全正確,也得不到正確的仿真結(jié)果。循環(huán)變量n的初

13、值不能在設(shè)定變量時(shí)設(shè)置,必須在循環(huán)開(kāi)始前設(shè)置,否則程序?qū)⒊蔀樗姥h(huán),只有注意到上面兩點(diǎn),loop語(yǔ)句才能真的起到巧妙的作用。本設(shè)計(jì)采用Quartus II編寫程序代碼、編譯、執(zhí)行結(jié)果如下兩圖所示:圖2 程序代碼圖3 編譯、執(zhí)行結(jié)果3.3 仿真結(jié)果利用Quartus II軟件進(jìn)行無(wú)符號(hào)數(shù)的運(yùn)算除法器的仿真圖如下:圖4 無(wú)符號(hào)數(shù)的運(yùn)算除法器的仿真圖利用Quartus II軟件進(jìn)行有符號(hào)數(shù)的運(yùn)算除法器的仿真圖如下:圖5有符號(hào)數(shù)的運(yùn)算除法器的仿真圖圖4和圖5是32位除法器的仿真圖。圖4中令you_wu為0,實(shí)現(xiàn)無(wú)符號(hào)數(shù)相除,圖5中you_wu為1,實(shí)現(xiàn)有符號(hào)數(shù)相除。本設(shè)計(jì)運(yùn)行速度較快,當(dāng)兩個(gè)值相差很大

14、的數(shù)(不管是有符號(hào)數(shù)還是無(wú)符號(hào)數(shù))相除時(shí),速度優(yōu)勢(shì)將更加明顯。另外圖4和圖5中沒(méi)有任何毛刺,說(shuō)明該除法器性能很穩(wěn)定,不僅速度較快,而且沒(méi)有競(jìng)爭(zhēng)冒險(xiǎn),是一個(gè)成功的設(shè)計(jì)。結(jié)論在FPGA的設(shè)計(jì)中,要關(guān)心兩個(gè)參數(shù):邏輯資源的占用率和速度 。本文給出的32位除法器占用的邏輯資源較少;而速度主要取決于系統(tǒng)時(shí)鐘,如果系統(tǒng)時(shí)鐘為50 MHz,則完成32位數(shù)除法所需時(shí)間不到1 txs。文中有關(guān)代碼均經(jīng)Quartus II編譯通過(guò),可以用于實(shí)際系統(tǒng)設(shè)計(jì)。為期近兩周的 EDA 課程設(shè)計(jì)就這樣結(jié)束了,設(shè)計(jì)首先對(duì) EDA 課程的到了復(fù)習(xí)和應(yīng)用,并且對(duì)所學(xué)的知識(shí)的到了應(yīng)用。本次課程設(shè)計(jì)通過(guò)理論與實(shí)踐的相結(jié)合,對(duì)理論知識(shí)的

15、掌握更佳的熟練。最后,感謝學(xué)校給我們這次機(jī)會(huì),鍛煉了我們的動(dòng)手能力。通過(guò)這次課程設(shè)計(jì)讓我將理論知識(shí)應(yīng)用到實(shí)踐中,當(dāng)然也讓我意識(shí)到自身理論知識(shí)的缺乏和動(dòng)手能力有待提高,讓我明白在以后的學(xué)習(xí)中應(yīng)該更應(yīng)該努力鉆研。同時(shí)也感謝指導(dǎo)老師在設(shè)計(jì)過(guò)程中的輔導(dǎo)以及同學(xué)的幫助參考文獻(xiàn)1朱衛(wèi)華,鄭留平可任意設(shè)置計(jì)算精度的整數(shù)除法器的設(shè)計(jì)J國(guó)外電子測(cè)量技術(shù)。2008,27(2):16182栗素娟,閻保定,朱清智基于FPGA的快速浮點(diǎn)除法器IP核的實(shí)現(xiàn)J河南科技大學(xué)學(xué)報(bào):自然科學(xué)版,2008,29(6):34-33劉志剛,汪旭東,鄭關(guān)東基于SRT算法的單精度浮點(diǎn)除法器J電子技術(shù)應(yīng)用,2007,33(1O):56-58

16、4潘明,許勇基于加減交替法除法器的FPGA設(shè)計(jì)與實(shí)現(xiàn)J微計(jì)算機(jī)信息,2008,24(9-2):1411435基于VHDL的8位除法器的實(shí)現(xiàn)J微計(jì)算機(jī)信息2006,22(12-3):277-2786姜詠江基于QuartusII的計(jì)算機(jī)核心設(shè)計(jì)M北京:清華大學(xué)出版社,20067張靜亞FPGA系統(tǒng)設(shè)計(jì)中資源分配的分析和研究J信息化研究,2009,35(3):37-39附錄1 源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;use ieee.

17、numeric_std.all;entity divide isport(you_wu:in std_logic;a,b:in std_logic_vector(31 downto 0);yshang,yyushu:out std_logic_vector(31 downto 0);end;architecture one of divide issignal tempa,tempb : std_logic_vector(31 downto 0);signal fuhao,sign,d: std_logic;begind<=(a(31)xor b(31)and you_wu;sign&l

18、t;=a(31)and you_wu;process(a,b,you_wu)beginif you_wu = '1'thenif a(31) ='1'thentempa<=not a+1;elsetempa<=a;end if;if b(31)='1'thentempb<=not b+1;elsetempb<=b;end if;else-無(wú)符號(hào)數(shù)不作變化tempa<=a ; tempb<=b;end if;end process;process(tempa,tempb,fuhao,sign)variable n:integer;variable temp_a,temp_b: std_logic_vector(63 downto 0);begin

溫馨提示

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

評(píng)論

0/150

提交評(píng)論