FPGA課程論文-基于FPGA的計算器設(shè)計_第1頁
FPGA課程論文-基于FPGA的計算器設(shè)計_第2頁
FPGA課程論文-基于FPGA的計算器設(shè)計_第3頁
FPGA課程論文-基于FPGA的計算器設(shè)計_第4頁
FPGA課程論文-基于FPGA的計算器設(shè)計_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、fpga課程論文基于fpga的計算器設(shè)計學(xué) 院專業(yè)班級學(xué) 號學(xué)生姓名對旨導(dǎo)教師2016年12月30曰目錄撤要11. 弓iw 21.1課題研宂的目的與意義21.2國內(nèi)外發(fā)展現(xiàn)狀21.3課題的主要技術(shù)路線32. fpga技術(shù)及硬件描述語言32. 1 epga技術(shù)的發(fā)展現(xiàn)狀及與cpld的比較32.2 fpga設(shè)計方法62.3利用硬件描述語言(iidl)的硬件電路設(shè)計方法72.4 vhdl語言的特點(diǎn)82.5 quart us ii概述及其設(shè)計流程93. 系統(tǒng)總體設(shè)計113.1計算器的計算部分113.2計算器的存儲部分123.3計算器的顯示部分123.4計算器的輸入部分134. 計算器的vhdl設(shè)計15

2、4.1加法器的設(shè)計與仿真154.2減法器的設(shè)計與仿真174. 3乘法器的設(shè)計與仿真184. 4除法器的設(shè)計與仿真195. 結(jié)論及體會21辨娥23摘要木文介紹了一個簡單計算器的設(shè)計,該設(shè)計采用了現(xiàn)場可編程邏輯器件fpga 設(shè)計,并基于硬件描述語言vhdl在altera公司的quartus ii軟件上實現(xiàn)仿真。 系統(tǒng)由計算部分、存儲部分、顯示部分和輸入部分四個部分組成,計算部分為加 法器、減法器、乘法器和除法器,存儲部分需要3個存儲器來實現(xiàn):內(nèi)部累加器 (acc),輸入寄存器(reg)以及結(jié)果暫存器(ans)o顯示部分由四個七段譯碼 管組成,分別來顯示輸入數(shù)字,輸入部分采用外接鍵盤,由09十個數(shù)字

3、按鍵, 加減乘除四個運(yùn)算符按鍵,一個等號按鍵和一個清零按鍵組成的。通過外部的按 鍵可以完成四位數(shù)之內(nèi)的加、減、乘、除四種功能運(yùn)算,其結(jié)構(gòu)簡 單,易于實現(xiàn)。1引言1.1課題研宄的目的與意義在人類學(xué)會交易的時候,計算也隨之產(chǎn)生,而算盤作為計算最實用的工具存 在了幾千年。算盤亦稱珠算,是中國人民創(chuàng)造的一種計算工具,素有“中國計算 機(jī)”之稱。算盤產(chǎn)生于漢代之前,是由古代的“籌算”演變而來的,珠算一詞, 最早見于漢末三國時代徐岳撰數(shù)術(shù)記遺,書中有“珠算,控帶四時,經(jīng)緯三 才”的記述。南宋數(shù)學(xué)家楊輝的乘除通變算寶中有“九歸” 口訣,元代劉因 亦有算盤詩,明人吳敬九章詳注比類算法人全記載了珠算的有關(guān)算法。明

4、清 吋期,算盤的應(yīng)用己很廣泛,關(guān)于算盤制造規(guī)格,明萬歷年間柯尚遷的數(shù)學(xué)通 軌載有13檔算盤圖,上2珠,下5珠,呈長方形,四周為木框,內(nèi)有軸心, 俗稱“檔”,檔中間用一根橫梁隔開,運(yùn)算時定位后撥珠運(yùn)算。后來出現(xiàn)的各種 規(guī)格的算盤,都是在此基礎(chǔ)上發(fā)展起來的。算盤構(gòu)造簡單,便于掌握,使用方便, 成為計算理財不可缺少的工具。算盤從明代開始傳入朝鮮、日本等東亞國家。清 代吋算盤隨著經(jīng)濟(jì)文化交往被傳入東南亞諸國,二次世界大戰(zhàn)后,美國也從曰本 引進(jìn)了算盤,可見算盤在人們的日常生活中起著非常重要的作用,不管是大商人 還是小商販都需要使用算盤進(jìn)行計算??墒请S著人類文明的進(jìn)步和科學(xué)技術(shù)的不 斷發(fā)展。算盤已經(jīng)越來越

5、不能滿足一些高強(qiáng)度、高難度、高速度的復(fù)雜計算。這 時,一種新的電子產(chǎn)品問世了,它就是電子計算器。電子計算器的發(fā)明是跨時代 的,它比算盤計算的速度要快幾百幾千倍,計算的結(jié)果要比算盤更精確,操作的 方法要更方便,更簡單易學(xué),計算的范圍更廣,并且小巧、輕便。它已經(jīng)成為人 們円常生活中不可缺少的一種計算工具,為我們的生活提供了很大的方便。而隨 著計算機(jī)的普及,越來越多人在使用計算機(jī),越來越多的工作離不開計算機(jī),可 以說計算機(jī)已經(jīng)成為現(xiàn)代社會屮不可或缺的工具,而電子計算器功能也以軟件的 形式進(jìn)入計算機(jī)的軟件世界,這不僅給人們帶來了更大的便利,更為人們引入了 更快的計算速度和更強(qiáng)大的運(yùn)算功能。1.2內(nèi)外發(fā)

6、展現(xiàn)狀1.2.1國外在國外,電子計算器在集成電路發(fā)明后,只用短短幾年時間就完成了技術(shù)飛躍,經(jīng)過激烈的市場競爭,現(xiàn)在的計算器技術(shù)己經(jīng)相當(dāng)成熟。計算器已慢慢地脫 離原來的“輔助計算工具”的功能定位,正內(nèi)著多功能化、可編程化方向發(fā)展, 在各個領(lǐng)域都得到了廣泛的應(yīng)用。用計算器不僅可以實現(xiàn)各種各樣復(fù)雜的數(shù)學(xué)計 算還可以用來編制、運(yùn)行程序,甚至解方程組,圖形計算器還可以進(jìn)行圖形處理。 計算器內(nèi)置的軟件允許用戶進(jìn)行類似于對計算機(jī)的文件和目錄管理等操作,允許 用戶對圖形界而進(jìn)行定制,同時各種新技術(shù)也被應(yīng)用到計算器里使計算器功能越 來越強(qiáng)大??梢哉f,計算器就是一個“微微型”的計算機(jī)。1.2.2國內(nèi)國內(nèi)也有廠商利

7、用計算器芯片開發(fā)新的產(chǎn)品,但對計算器技術(shù)的研允、計算 器芯片的設(shè)計還處于起步階段。計算器的主要功能還是在于“計算”,不妨稱之 為“低檔計算器”。即便是對這種計算器,很多廠商也只從事計算器的組裝、銷 售業(yè)務(wù)。一些ic設(shè)計公司、芯片提供商也開始研究計算器技術(shù)。1.3課題的主要技術(shù)路線木次設(shè)計基于現(xiàn)場可編程邏輯器件fpga進(jìn)行設(shè)計,應(yīng)用硬件描述語言vhdl 編程并在altera公司的quartus ii軟件上實現(xiàn)仿真。需要進(jìn)行計算器的常用 運(yùn)算功能的實現(xiàn),通過外接鍵盤輸入、led數(shù)碼顯示來達(dá)成運(yùn)算目的。2. fpga技術(shù)及硬件描述語言fpga技術(shù)的發(fā)展現(xiàn)狀及與cpld的比較2.1.1 fpga技術(shù)的

8、發(fā)展現(xiàn)狀fpga是英文field programmable gate array的縮寫,即現(xiàn)場可編程門眸 列,它是在pal、gal、cpld等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作 為專用集成電路(astc)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路 的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。fpga采用了邏輯單元陣列l(wèi)ca (logic cell array)這樣一個概念,內(nèi)部包 括可配置遷輯模抉clb (configurable logic block)、輸入輸出模塊10b (input output block)和內(nèi)部連線(interconnect)三個部分。fpga的

9、基本特點(diǎn)主要 有:00000000000000 采用fpga設(shè)計asic電路,用戶不需要投片生產(chǎn),就能得到合用的芯片。11111111111111 fpga可做其它全定制或半定制asic電路的測試樣片。22222222222222 fpga內(nèi)部有豐富的觸發(fā)器和i / 0引腳。33333333333333 fpga是asic電路中設(shè)計周期最短、開發(fā)費(fèi)用最低、風(fēng)險最小的器件之o44444444444444 fpga采用高速chmos工藝,功耗低,可以與cmos、ttl電平兼容。fpga是由存放在片內(nèi)ram屮的程序來設(shè)置其工作狀態(tài)的,因此,工作時需要對片內(nèi)的ram進(jìn)行編程。用戶可以根據(jù)不同的配置模式

10、,采用不冋的編程方式。 加電時,fpga芯片將eprom中數(shù)據(jù)讀入片內(nèi)編程ram中,配置完成后,fpga進(jìn) 入工作狀態(tài)。掉電后,fpga恢復(fù)成白片,內(nèi)部邏輯關(guān)系消失,因此,fpga能夠 反復(fù)使用。fpga的編程無須專用的fpga編程器,只須用通用的eprom、prom編 程器即可。當(dāng)需要修改fpga功能時,只需換一片eprom即可。這樣,同一片fpga, 不同的編程數(shù)據(jù),可以產(chǎn)生不同的電路功能。因此,fpga的使用非常靈活。與fpga對應(yīng)的還有dsp處理器,dsp處理器速度雖然很快,并對許多dsp 應(yīng)用來說很有用,但仍有一些應(yīng)用要求性能再進(jìn)一步提升,而fpga提供了更高 的性能。fpga可以生

11、成一個定制硬件設(shè)計,從而控制邏輯能夠在硬件中實現(xiàn), 不必再利用精確的時鐘周期來實現(xiàn)控制功能。此外,通過裁減硬件架構(gòu),fpga 可以提供額外的性能。如果最重要的設(shè)計考慮因素是速度,那么可以在fpga中 設(shè)計完全并行的算法處理方案?,F(xiàn)在,許多系統(tǒng)己經(jīng)含了一個fpga,用于協(xié) 議轉(zhuǎn)換、膠合邏輯或一些其它系統(tǒng)功能。如果那個fpga沒有被完全利用,那么 把dsp功能加入其中可以為系統(tǒng)節(jié)約成本。而且如果標(biāo)準(zhǔn)發(fā)生改變,使用fpga 就不會有任何風(fēng)險。fpga的配置文件能夠像軟件那樣升級,以管它們必須被存 儲在系統(tǒng)的非易失性存儲器中。目前的fpga設(shè)計一般采用top-down (自頂向下)的設(shè)計方法。先將系統(tǒng)

12、劃 分為各個功能子模塊,在系統(tǒng)級層次上進(jìn)行行為描述,再對這些子模塊進(jìn)一步進(jìn) 行行為描述。1.2 fpga 與 cpld 的比較fpga是現(xiàn)場可編程邏輯門陣列的簡稱,是電子設(shè)計的一個里程碑。cpld是 復(fù)雜可編程邏輯器件的簡稱。盡管fpga和cpld都是可編程asic器件,有很多共同特點(diǎn),但由于cpld和fpga結(jié)構(gòu)上的差異,具有各自的特點(diǎn):i .cpld更適合完成各種算法和組合邏輯,fpga更適合于完成時序邏輯。換句話說,fpga更適合于觸發(fā)器豐富的結(jié)構(gòu),而cpld更適合于觸發(fā)器有限而乘積 項豐富的結(jié)構(gòu)。cpld的連續(xù)式布線結(jié)構(gòu)決定了它的時序延遲是均勻的和可預(yù)測的,jflj fpga的分段式布

13、線結(jié)構(gòu)決定了其延遲的不可預(yù)測性。在編程上fpga比cpld具有更大的靈活性。cpld通過修改具有固定內(nèi)連 電路的邏輯功能來編程,fpga主要通過改變內(nèi)部連線的布線來編程;fpga可 在邏輯門下編程,而cpld是在邏輯塊下編程。fpga的集成度比cpld高,具有更復(fù)雜的布線結(jié)構(gòu)和邏輯實現(xiàn)。cpld比fpga使用起來更方便。cpld的編程采用e2pr0m或fastflash 技術(shù),無需外部存儲器芯片,使用簡單。而fpga的編程信息需存放在外部存儲器 上,使用方法復(fù)雜。cpld的速度比fpga快,并且兵有較大的時間可預(yù)測性。這是由于fpga 是門級編程,并且clb之間采用分布式互聯(lián),而cpld是邏輯

14、塊級編程,并且其 邏輯塊之間的互聯(lián)是集總式的。在編程方式上,fpga人部分是基于sram編程,編程信息在系統(tǒng)斷電時 丟失,每次上電吋,需從器件外部將編程數(shù)據(jù)重新寫入sram中。其優(yōu)點(diǎn)是可以 編程任意次,可在工作中快速編程,從而實現(xiàn)板級和系統(tǒng)級的動態(tài)配置。cpld 主耍是基于eeprom或flash存儲器編程,編程次數(shù)可達(dá)1萬次,優(yōu)點(diǎn)是系統(tǒng)斷電 時編程信息也不丟失。cpld又可分為在編程器上編程和在系統(tǒng)編程兩類。般情況下,cpld的功耗要比fpga大,丑集成度越高越明顯。隨著fpga門數(shù)以及性能的提高,可以將現(xiàn)在的許多數(shù)字電路部分下載到 fpga上,實現(xiàn)硬件的軟件化,括51核,dsp核以及其他的

15、一些數(shù)字模塊,到 最后一個系統(tǒng)板子就剩下電源、模擬電路部分,接口部分以及一塊fpga。fpga 可以說是芯片級的pcb板,在一個芯片里設(shè)計原來的電子系統(tǒng)的所有數(shù)字電路部 分。現(xiàn)在也有將arm核嵌入到fpga里面的,比如altera公司的nois核。nois 是一個軟核,是有軟件編寫的一個32位處理器,并不是硬件上存在的處理核, 該核工作頻率為50hz,現(xiàn)在用于許多圖像處理以及其他的很多網(wǎng)絡(luò)設(shè)備。利用 鎖相環(huán)技術(shù)可以將頻率成倍提升,一般的arm核是將鎖相環(huán)做到芯片里面的,在 變成的吋候可以對某個寄存器進(jìn)行設(shè)置從而達(dá)到分頻和倍頻的b的。而將dsp 核嵌入到fpga里面去實現(xiàn)強(qiáng)大的計算功能是alte

16、ra公司近期推出的一系列芯片 的一個優(yōu)點(diǎn)。altera公司的stratix ii系列芯片采用內(nèi)嵌的dsp核,但是其dsp 核的計算速度比現(xiàn)在業(yè)界上最快的dsp芯片還要快幾個數(shù)量級。2.2 fpga設(shè)計方法在fpga設(shè)計中,有許多重要的原則和規(guī)律可循,掌握這些原則和規(guī)律,人們 可以設(shè)計出許多高性能的電子系統(tǒng)。2.2. 1硬件原則硬件原則主耍針對hdl代碼編寫而言的。硬件描述語言,它通過對硬件的抽 象,最終實現(xiàn)在芯片內(nèi)部的實際電路。因此評判一段hdl代碼的優(yōu)劣的最終標(biāo)準(zhǔn) 是:其描述并實現(xiàn)的硬件電路的性能(主要是指面積和速度)。評價一個設(shè)計的 代碼水平,主要從設(shè)計工程師所構(gòu)想的硬件實現(xiàn)方案的效率以及

17、合理性來分析。 2.2.2系統(tǒng)原則一個硬件系統(tǒng),通過何種方式進(jìn)行模塊劃分與任務(wù)分配,使用算法和實現(xiàn)功 能,以及fpga的規(guī)模估算、數(shù)據(jù)接口設(shè)計等,具體到fpga的設(shè)計就要求對設(shè)計的 全局有個宏觀上的合理安排。一般來說實時性要求高、頻率快、功耗小的功能模 塊適合使用cpld實現(xiàn)。而fpga與cpld相比,更適合實現(xiàn)規(guī)模較大、頻率較高、寄 存器資源使用較多的設(shè)計。2.2.3面積和速度的平衡與互換原則這是在進(jìn)行fpga設(shè)計時的一個重要原則。這里“面積”是指一種設(shè)計所要消 耗的fpga/cpld的邏輯資源的數(shù)量,對于fpga可以用所消耗的觸發(fā)器(ff)和查 找表(lut)來衡量,更一般的衡量方式可以用

18、設(shè)計所占用的等價邏輯門數(shù)。“速 度”是指設(shè)計在芯片上穩(wěn)定運(yùn)行,所能夠達(dá)到的最高頻率,這個頻率由設(shè)計的時 序狀況決定,和設(shè)計滿足的時鐘周期,時鐘建立時間(clock setup time),時 鐘保持時間(clock hold time)等眾多時序特征量密切相關(guān)。面積和速度是對立統(tǒng)一的矛盾體。要求一個設(shè)計同時具備運(yùn)行頻率最高而且而積最小是不現(xiàn)實的。 科學(xué)的設(shè)計方法是在滿足設(shè)計時序要求的前提下,占用最小的芯片面積?;蛘咴?所規(guī)定的面積下,頻率更高。這兩種0標(biāo)充分體現(xiàn)了面積和速度的平衡思想。相 比之下,滿足時序、工作頻率的要求更重要一些,當(dāng)兩者沖突時,采用速度優(yōu)先 的準(zhǔn)則。2.2.4同步設(shè)計原則采用

19、同步時序設(shè)計是fpga設(shè)計的一個重要原則。它可以使靜態(tài)時序分析變 得簡單而且可靠,能有效地避免毛刺的影響,使設(shè)計更加有效,還可以減小環(huán)境 對芯片的影響。在遵循這一原則的時候,應(yīng)該盡可能的在設(shè)計中使用同一時鐘, 時鐘走全局網(wǎng)絡(luò),同時避免使用混合時鐘采樣數(shù)據(jù)。2.3利用硬件描述語言(hdl)的硬件電路設(shè)計方法硬件描述語言,就是可以描述電路的功能、信號連接關(guān)系及定時關(guān)系的語言。 它能比電路圖更冇效地表示硬件電路的特性。利用硬件描述語言編程來表示邏輯 器件及系統(tǒng)硬件的功能和行為,是該設(shè)計方法的一個重要特征。隨著大規(guī)模專用 集成電路(asic)的開發(fā)和研制,為了提高開發(fā)的效率,增加己有開發(fā)成果的可 繼承

20、性以及縮短開發(fā)時間,各as1c研制和生產(chǎn)廠家相繼開發(fā)了用于各自目的的 硬件描述語言。其屮最有代表性的是美國國防部開發(fā)的v11dl語言,verilog公 司開發(fā)的vehloghdl以及日本電子工業(yè)振興協(xié)會開發(fā)的udl/t語言。利用硬件 描述語言(hdl)的硬件電路設(shè)計方法具有以下特點(diǎn):2. 3.1采用自上而下的設(shè)計方法2. 3.2系統(tǒng)中可大量采用asic芯片由于目前眾多的制造asic芯片的廠家,他們的工具軟件都可以支持hdl語 言的編程,因此,硬件設(shè)計人員在設(shè)計硬件電路時,無須受只能使用通用元器件 的限制,而可以根據(jù)硬件電路設(shè)計的需要,設(shè)計自用的astc芯片或可編程邏輯 器件。這樣最終會使系統(tǒng)電

21、路設(shè)計更趨合理,體積也可大為縮小。2. 3. 3采用系統(tǒng)早期仿真從自上至下的設(shè)計過程可以看到,在系統(tǒng)設(shè)計過程中要進(jìn)行三級仿真,即行為層次仿真、rtl層次仿真和門級層次仿真。也就是說進(jìn)行系統(tǒng)數(shù)學(xué)模型的仿真、 系統(tǒng)數(shù)據(jù)流的仿真和系統(tǒng)門級電路原理的仿真。這三級仿真貫穿系統(tǒng)硬件設(shè)計的 全過程,從而可以在系統(tǒng)設(shè)計早期發(fā)現(xiàn)設(shè)計中存在的問題。2. 3.4降低了硬件電路設(shè)計難度在采用傳統(tǒng)的硬件電路設(shè)計方法時,往往要求設(shè)計者在設(shè)計電路前應(yīng)寫出該 電路的邏輯表達(dá)式或真值表(或吋序電路的狀態(tài)表)。這一工作是很閑難和繁雜 的,特別是在系統(tǒng)比較復(fù)雜時更是如此。在用hdl語言設(shè)計硬件電路時,就可以 使設(shè)計者免除編寫邏輯表

22、達(dá)式或真值表之苦。這樣使硬件電路的設(shè)計難度有了大 幅度的下降,從而也縮短了硬件電路的設(shè)計周期。2. 3.5主要設(shè)計文件是用hdl語言編寫的源程序在傳統(tǒng)的硬件電路設(shè)計中,最后形成的主要文件是電原理圖,而采用hdl 語言設(shè)計系統(tǒng)硬件電路時,主要的設(shè)計文件是用hdl語言編寫的源程序。如果需 要也可以轉(zhuǎn)換為電原理圖形式輸出。用hdl語言源程序作為歸檔文件有很多好處。 其一是資料量小,便于保存。其二是可繼承性好。當(dāng)設(shè)計其它硬件電路時,可以 使用文件中的某些庫、進(jìn)程和過程等描述某些局部硬件電路的程序。其三是閱讀 方便。閱讀程序比閱讀原理圈耍更容易一些。閱讀者很容易在程序中看出某一硬 件電路的工作原理和邏輯

23、關(guān)系。而閱讀電原理圖,推知其工作原理卻需要較多的 硬件知識和經(jīng)驗,而丑看起來也不那么一目丫然。2.4 vhdl語言的特點(diǎn)vhdl語言作為一種標(biāo)準(zhǔn)的硬件描述語言,具有結(jié)構(gòu)嚴(yán)謹(jǐn)、描述能力強(qiáng)的特 點(diǎn)。支持從系統(tǒng)級到邏輯門級電路所冇層次的設(shè)計,適合于復(fù)雜邏輯電路和系統(tǒng) 的設(shè)計。作為一種高級硬件描述語言,vhdl語言有如下特點(diǎn):i. 與其他的硬件描述語言相比,vhdl具有更強(qiáng)的行為描述能力。強(qiáng)大的行 為描述能力是避開具體的器件結(jié)構(gòu)、從邏輯行為上描述和設(shè)計人規(guī)模電子系統(tǒng)的 重要保證。ii. vhdl具有豐富的仿真語句和庫函數(shù),使得在任何大系統(tǒng)的設(shè)計早期,就 能檢查系統(tǒng)的功能可行性,隨時可對系統(tǒng)進(jìn)行仿真模擬

24、,使設(shè)計者對整個工程的 結(jié)構(gòu)和功能的可行性做出判斷。ui.用vhdl完成一個確定的設(shè)計,可以利用eda工具進(jìn)行邏輯綜合和優(yōu)化, 并自動把vhdl描述設(shè)計轉(zhuǎn)變成門級網(wǎng)表(根據(jù)不同的實現(xiàn)芯片)。這種方式突破 了門級設(shè)計的瓶頸,極大地減少了電路設(shè)計的時間和可能發(fā)生地錯誤,降低了開 發(fā)成本。利用eda工具的邏輯優(yōu)化功能,可以自動地把一個綜合后的設(shè)計變成一 個更小、更高速的電路系統(tǒng)。反過來,設(shè)計者還可以容易地從綜合和優(yōu)化的電路 中獲得設(shè)計信息,返回去更新修改vhdl設(shè)計描述,使之更加完善。iv. vhdl對設(shè)計的描述具有相對獨(dú)立性。設(shè)計者可以不懂硬件的結(jié)構(gòu),也不 必顧及最終設(shè)計的目標(biāo)器件是什么,而進(jìn)行獨(dú)

25、立的設(shè)計。正因為vhdl得硬件描 述與具體的工藝技術(shù)和硬件結(jié)構(gòu)無關(guān),所以vhdl設(shè)計程序的硬件實現(xiàn)0標(biāo)器件 有廣闊的選擇范圍。v. 由于vhdl具有類屬描述語句和子程序調(diào)用等功能,對于完成的設(shè)計,在 不改變源程序的條件下,只需改變類屬參量或函數(shù),就能輕而易舉地改變設(shè)計的 規(guī)模和結(jié)構(gòu)。vi. vhdl本身的生命周期長。因為vhdl得硬件描述與工藝無關(guān),不會因工 藝變化而使描述過時。而與工藝技術(shù)有關(guān)的參數(shù)可通過vhdl提供的屬性加以描 述,當(dāng)生產(chǎn)工藝改變時,只需要修改相應(yīng)程序中的屬性參數(shù)即可。2.5 quartus ii概述及其設(shè)計流程2. 5. 1 quartusii概述quartus ii是a

26、ltera公司的綜合性pld開發(fā)軟件,支持原理圖、v11dl、 veriloghdl 以及 ahdl (altera hardware description language)等多種 設(shè)計輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計輸入到硬 件配置的完整pld設(shè)計流程。quartus ii可以在xp、linux以及unix上使 用,除了可以使用tel腳本完成設(shè)計流程外,提供了完善的用戶圖形界而 設(shè)計方式。具有運(yùn)行速度快,界面統(tǒng)一,功能集屮,易學(xué)易用等特點(diǎn)。quartus ii 支持 altera 的 tp 核,包含了 lpm/megafunction 宏功能模 塊庫,使用戶可以充分利

27、用成熟的模塊,簡化了設(shè)計的復(fù)雜性、加快了設(shè) 計速度。對第三方eda工具的良好支持也使用戶可以在設(shè)計流程的各個階 段使用熟悉的第三方eda工具。此外,quartus ii通過和dsp builder工具 與matlab/simulink相結(jié)合,可以方便地實現(xiàn)各種dsp應(yīng)用系統(tǒng);支持altera的片上可編程系統(tǒng)(sopc)開發(fā),集系統(tǒng)級設(shè)計、嵌入式軟件開發(fā)、 口丁編程邏輯設(shè)計于一體,是一種綜合性的開發(fā)平臺。maxplus ii作為altera 的上一代pld設(shè)計軟件,由于其出色的易用性而得到了廣泛的應(yīng)用。0前 altera己經(jīng)停止了對maxplus ii的更新支持,quart us 11與之相比不

28、僅僅 是支持器件類型的豐富和圖形界面的改變。altera在quartus ii中包含了 許多諸如signaltap ii、chip editor和rtl viewer的設(shè)計輔助工具,集 成了 sopc和hardcopy設(shè)計流程,并且繼承了 maxplus ii友好的圖形界面 及簡便的使用方法。altera quartus ii作為一種可編程邏輯的設(shè)計環(huán)境,由于其強(qiáng)大的設(shè) 計能力和直觀易用的接口,越來越受到數(shù)字系統(tǒng)設(shè)計者的歡迎。altera的 quartus ii可編程邏輯軟件屬于第四代pld開發(fā)平臺。該平臺支持一個工作 組環(huán)境k的設(shè)計要求,其屮包括支持基于internet的協(xié)作設(shè)計。quart

29、us 平臺與 cadence、exemplar logic、mentorgraphicssynopsys 和 synplicity 等eda供應(yīng)商的開發(fā)工異相兼容。改進(jìn)了軟件的logiclock模塊設(shè)計功能, 增添了 easteit編譯選項,推進(jìn)了網(wǎng)絡(luò)編輯性能,而且提升了調(diào)試能力。 支持max7000/max3000等乘積項器件。2. 5. 2 quartus ii 設(shè)計流程i .建立新工程:首先將所設(shè)計工程項目劃分為若干子模塊,將每個子 模塊單獨(dú)存放在一個文件夾中,并分別進(jìn)行編譯,驗證通過后,將每個子 模塊的v11dl文本文件添加到總工程文件夾屮,并建立圖元(建立圖元block, 右鍵點(diǎn)擊.

30、v 文件,選擇 create symbol files for current files),將 各個圖元(亦即子模塊)連接起來構(gòu)成總體設(shè)計項目。ii.設(shè)計各子模快:編寫各子模塊相應(yīng)的代碼,并分別進(jìn)行編譯,驗證 通過后將各子模塊vhdl文件添加到頂層設(shè)計中,創(chuàng)建圖元,進(jìn)行連接以完 成總體項目的設(shè)計。這部分就是將管腳連好。在原理圖編輯屮,英文的大 小寫代表相同的含義,只要器件連接線的節(jié)點(diǎn)名稱相同就會默認(rèn)為是連接 的,總線(bus)在圖形編輯窗口顯示的是一條粗線,總線必須在名稱的后 面加上“a.b”,表示一條總線內(nèi)所含有的節(jié)點(diǎn)編號,原理圖編輯的文件擴(kuò)展名為“.bdf”,在quartus ii中工程

31、名稱必須與頂層實體名稱相同, 丑vi1dl設(shè)計中實體名稱亦為相同的名字,否則不能進(jìn)行編譯。iii. 編譯工程iv. 仿真:波形矢量文件的擴(kuò)展名為“.vwf”,仿真分為功能仿真和時 序仿真,也稱為前仿真和后仿真,功能仿真是忽略延時后的仿真,是最理 想的仿真,時序仿真則是加上了一些延時的仿真,是最接近于實際的仿真, 在設(shè)計屮通常先做功能仿真驗證邏輯的正確性,后做時序仿真驗證時序是 否符合要求,需注意默認(rèn)為時序仿真,在設(shè)置功能仿真后需要生成功能仿 真網(wǎng)絡(luò)表。3. 系統(tǒng)總體設(shè)計系統(tǒng)總體設(shè)計框圖如圖1所示。此設(shè)計由計算部分、存儲部分、顯示部分和 輸入部分組成。圖1計算器的系統(tǒng)組成框圖3.1計算器的計算部

32、分在這一部分中,可以將每一個數(shù)均表示成8位或者4位二進(jìn)制數(shù)統(tǒng)一進(jìn)行運(yùn) 算,各個計算數(shù)之間的計算可以直接使用vhdl語言屮的運(yùn)算符來實現(xiàn)。但在顯 示時,必須將個位、i位、百位分開顯示,設(shè)計時使用比較的方法來實現(xiàn)計算器 的功能要求。另外,由于在vhdl語言中只能進(jìn)行除數(shù)是2的冪的除法,不能進(jìn) 行任意數(shù)的除法,因此必須單獨(dú)設(shè)計一個除法器來實現(xiàn)計算器的功能要求,該除 法器可以利用減法運(yùn)算和左移位運(yùn)算實現(xiàn)除法運(yùn)算。3.2計算器的存儲部分存儲部分需要3個存儲器來實現(xiàn):內(nèi)部累加器(acc),輸入寄存器(reg) 以及結(jié)果暫存器(ans)o在存放數(shù)字時,將數(shù)字放入acc或者reg里面,當(dāng)?shù)谝?次按下數(shù)字鍵時,

33、表示該數(shù)字是個位。當(dāng)?shù)诙伟磇數(shù)字鍵時,表示這次輸入的 是個位,上一次輸入的是十位,所以要把第一次輸入的數(shù)字乘以10,再加上第 二次輸入的數(shù)字,來得到最終輸入的數(shù)字。當(dāng)?shù)谌伟聪聰?shù)字鍵時,要將第一次 輸入的數(shù)字乘以100,再加上第二次輸入的數(shù)字乘以10,再加上第一次輸入的數(shù) 字,來得到最終輸入的數(shù)字。當(dāng)進(jìn)行第一次計算時,第一個數(shù)字存放在acc里面。按下運(yùn)算符以后,第二 個數(shù)字放在reg里而。當(dāng)再按下運(yùn)算符號或者等號時,第一次計算的結(jié)果將存放 在ans里面,同時:reg清零,等待下一個數(shù)字的輸入。進(jìn)行第二次運(yùn)算時,將 ans里面的結(jié)果與reg里面新輸入的數(shù)字進(jìn)行運(yùn)算,再將運(yùn)算結(jié)果存放在ans里

34、面,直到最后按下等號按鍵的時候,顯示最終的運(yùn)算結(jié)果。3.3計算器的顯示部分顯示部分是系統(tǒng)的輸出部分,用于顯示按鍵值及計算結(jié)果,由于數(shù)字系統(tǒng)的 數(shù)據(jù)運(yùn)算都是二進(jìn)制的,而輸出表達(dá)式都是bcd碼,為丫滿足bcd碼的譯碼顯示, 最方便的方法就是利用譯碼程序在fpga中實現(xiàn)。本文采用的是共陽極七段數(shù)碼 管,顯示數(shù)字時需要將對應(yīng)管腳罝為低電平,輸出時,從左到右,按從高到低位 的順序依次接g、f、e、d、c、b、a。七段譯碼器的基本結(jié)構(gòu)如圖3. 2所示。a閣2七段譯碼器的結(jié)構(gòu)其vhdl語言描述如下所示。在這段程序中,indata是輸入4位二進(jìn)制數(shù)的 端口,out data是輸出7位譯碼的端口,用with語句

35、來實現(xiàn)譯碼。with indata selectoutdat vz011111 l"whe>r0000",-0的品不;"0000110"when0001,-1的顯不;1011011when"0010,-2的顯示;"1001111when0011",3的顯示;"110011(rvhen"0100",-4的顯示;"iioiiorwhen"oior,-5的顯不;"111110rvhen0110",-6的顯示;"00001 llvhen"

36、0111",-7的顯示;"1111111when"1ooo",-8的顯不;"1101111"when"1001",-9的顯示;"0000000"when others;-其它的輸入按鍵均不顯示計算器顯示部分的設(shè)計和實現(xiàn),實際上就是七段譯碼器的設(shè)計和實現(xiàn),三個 七段譯碼器分別顯示的是個位、十位和百位。輸入第一個數(shù)字后至再一次按下數(shù) 字按鍵輸入第二個數(shù)字前,三個七段譯碼器顯示的都是第一個數(shù)字。當(dāng)開始輸入 第二個數(shù)字的時候顯示第二個數(shù)字,再次按下運(yùn)算按鍵到輸入第三個數(shù)字前,顯 示的是前兩個數(shù)字的運(yùn)算結(jié)

37、果,以此類推,當(dāng)最后按k等號鍵的時候,顯示最終 的運(yùn)算結(jié)果。3.4計算器的輸入部分計算器輸入部分的設(shè)計最主要的是按鍵譯碼電路的設(shè)計和實現(xiàn)。計算器的輸 入部分是由0一9十個數(shù)字按鍵、加減乘除四則運(yùn)算的運(yùn)算符按鍵、一個等號 按鍵和一個清零按鍵組成的,設(shè)計所要做的是對按鍵信息進(jìn)行譯碼,使其在計算 器內(nèi)部可以使用。數(shù)字按鍵譯碼電路的主體部分vhdl語言描述如下。process(inclk, reset)begintf resets 1 then異步復(fù)位信號為高電平的時候outnum<=0000;一把“0000”賦值給數(shù)字的輸出端口elsie inclkevent and inclk= f the

38、ncase innum iswhen/0000000001"=outnum<="0000"outflag<=, 1 ;-按下一個鍵表示輸入力0wllen0000000010"=>outnum="0001"outflag= 1 ;-按下第二個鍵表示輸入為1when"0000000100"=outnum<="0010"outflag<= 1 ;-按下第三個鍵表示輸入為2when0000001000"=>outnum=00ir;outflag二 1 ;-按

39、下第四個鍵表示輸入為3when0000010000"=>outnum=0100"outflag= 1 ;-按下第五個鍵表示輸入為4when0000100000"二>outniun二"0101;outflag二 1 ;-按下第六個鍵表示輸入為5 when0001000000"=>outnum=0110"outflag二 1 ;-按下第七個鍵表示輸入為6 when0010000000"=outnum<=0111;outflag<= 1 ;按卜第八個鍵表示輸入為7 raeroloooooooooutn

40、umlooo'joutflag f ;-按下第九個鍵表示輸入為8 wllen1000000000"=>outnum="1001"outflag= 1 ;-按下第十個鍵表示輸入為9when others=>outnum<=outnum;outflag<=0 ;一不按鍵時保持end case;end tf;end process;在本次設(shè)計的程序中,設(shè)reset是異步復(fù)位信號的輸入端口,inclk是時鐘信號的輸入端口,innum端口用來表示輸入的按鍵向量,outnum端口用來表示輸 入的按鍵動作對應(yīng)的輸出數(shù)字,outflag端口用來輸出

41、是否冇按鍵動作,它主要 實現(xiàn)的是按下什么就輸出什么。一共有十個位,初始值都為低電平“0”,當(dāng)按下 哪個位時哪個位上的電平就跳為高電平(有且僅有一個為高電平),這時就有相 應(yīng)的輸出。那十個位分別對應(yīng)的是09這十個數(shù)字,所以當(dāng)?shù)谝粋€位(從左往右位數(shù)依次增高)為高電平時顯示0, ,第十個位上位高電平時,相應(yīng)的顯示為9。如果按下的鍵是加號、減號、乘號、除號或者是等于號時,也是不顯示 的,所以也可以稱作數(shù)字按鍵譯碼電路。4.計算器的vhdl設(shè)計4.1加法器的設(shè)計與仿真本次設(shè)計的加法器屬于多位加法器的范疇,可按其進(jìn)位方式的不同分為兩類: 串行進(jìn)位加法器和并行進(jìn)位加法器。畢行進(jìn)位加法器是將多個一位全加器級聯(lián)

42、, 低位全加器的進(jìn)位輸出送給相鄰高位全加器作為進(jìn)位輸入,以此構(gòu)成多位加法器。 這種設(shè)計思路簡單明了il占用資源少,但運(yùn)算速度較慢。并行進(jìn)位方式則是在各 位的加法環(huán)節(jié)之外,另外設(shè)有進(jìn)位產(chǎn)生邏輯電路,各位的進(jìn)位輸入信號同時產(chǎn)生, 從而各位可以同時完成全加運(yùn)算,輸出最后結(jié)果。并行進(jìn)位方式具有較快的運(yùn)算 速度,但是相對于串行進(jìn)位方式來說,卻往往占用更多的資源。尤其是當(dāng)運(yùn)算位 數(shù)增加的時候,相同位數(shù)的并行進(jìn)位和串行進(jìn)位加法器的資源古用差距也越來越 大。因此,常常需要設(shè)計者在運(yùn)算速度和資源占用量之間做出折中平衡。而經(jīng)過 實踐證明,4位二進(jìn)制并行進(jìn)位加法器和串行級聯(lián)加法器占用的資源幾乎相同。 因此,可以用兩

43、個4位二進(jìn)制并行加法器級聯(lián)構(gòu)成8位二進(jìn)制加法器,這是一種 較為合理的選擇,加法器的原理框圖如圖3所示。被加數(shù)加數(shù)圖3加法器的原理框圖加法器要有被加數(shù)、加數(shù)和進(jìn)位位的輸入端u。設(shè)a端u為被加數(shù),b端u 為加數(shù),ci為輸入進(jìn)位。此加法器還有兩個輸出端口,分別是加法運(yùn)算的最終 結(jié)果輸出和進(jìn)位位的輸出,設(shè)s為結(jié)果的輸出端門,co為進(jìn)位的輸出端口。當(dāng) 輸入被加數(shù)與加數(shù)后,兩個8位二進(jìn)制數(shù)開始相加,之后,再與輸入進(jìn)位位相加, 這樣得到的最終結(jié)果就是加法器加法運(yùn)算的最終結(jié)果。加法器模塊圖如附錄巾所zps o程序如附錄中加法程序,經(jīng)quartus ii編譯后建立.vmf文件,設(shè)置被加數(shù) a為“0010000”

44、即十進(jìn)制數(shù)16 (可設(shè)置0255內(nèi)的任意數(shù)字),設(shè)置加數(shù)b為 “10110000”即十進(jìn)制數(shù)176 (可設(shè)置0255內(nèi)的任意數(shù)字,但因為程序中未 包含出錯溢出判斷,所以需滿足a+b彡255),仿真后所得結(jié)果如圖4所示。16+176 = 192,仿真結(jié)果正確,可知此加法器設(shè)計有效。vilae 19.2j)ps 80.0 n!160,0 ns 2«,0ns320,0 m oo.ons «0,0m560.0 nsmo.pns19.!s as縿0qtdj:16)::瘆9q i“r1t6沙18ciai019coaii>20qsall':j:192 : !圖4加法器仿真1

45、6+176 = 1924.2減法器的設(shè)計與仿真首先設(shè)計一個四位二進(jìn)制數(shù)的減法器,四位全減器的原理框圖如圖5所示。 由圖可以看出,此減法器共需耍兩個輸入端口和一個輸出端口。減法器的設(shè)計可 以引用加法器,即通過對減數(shù)的求補(bǔ),再與被減數(shù)相加得到最終的結(jié)果,所以需 要增設(shè)一個進(jìn)位位輸入端和進(jìn)位位的輸出端ij。圖5四位全減器的原理框圖可以設(shè)a端1_1為被減數(shù),b端1_1為減數(shù),ci為輸入借位位,s為結(jié)果的輸出 端口,co為借位的輸出端口。減法器的運(yùn)算過程中首先要引用加法器,在此不 再贅述。而且此減法器可以進(jìn)行位數(shù)擴(kuò)展,每增加一位需要多引用一個加法器, 為使圖形原理簡潔,所以此處只列出四位減法器。減法器模

46、塊圖如附錄中所示。程序如附錄中減法程序,經(jīng)quartus ii編譯后建立.vmf文件,設(shè)罝被減數(shù) a為“1111”即十進(jìn)制數(shù)15(可設(shè)置015內(nèi)的任意數(shù)字),設(shè)置減數(shù)b為“ 1001” 即十進(jìn)制數(shù)9 (可設(shè)置0 15內(nèi)的任意數(shù)字,但因為程序中未包含出錯判斷,所 以需滿ma<b),仿真后所得結(jié)果如圖6所示。15-9 = 6,仿真結(jié)果正確,可知此 減法器設(shè)計有效。vilue19.2;)ps 80.0w 160 0 m 2«.(0w bom ttoons <80.0 w 560 0 ns moom t20.0nsbe19.25 ns成0al(15qlu19ci大i矽11co大i

47、鉍12qs6圖6減法器仿真15-9 = 64. 3乘法器的設(shè)計與仿真乘法器是數(shù)字系統(tǒng)屮的基本邏輯器件,在很多應(yīng)用中都會出現(xiàn)如各種濾波器 的設(shè)計、矩陣的運(yùn)算等。這里設(shè)計的是一個4x4的乘法器。依據(jù)乘法器的原理, 可以繪出其原理框圖如圖7所示。圖7乘法器的原理框圖可設(shè)a端口為被乘數(shù)(一個4位二進(jìn)制數(shù)),b端口為乘數(shù)(一個4位二進(jìn)制數(shù)),y為乘法運(yùn)算的結(jié)果的輸出端口。程序如附錄中乘法程序,經(jīng)quartus ii編譯后建立.vmf文件,設(shè)置被乘數(shù)a為“1101”即十進(jìn)制數(shù)13(可設(shè)置0 16內(nèi)的任意數(shù)字),設(shè)置乘數(shù)b為“ 1010” 即十進(jìn)制數(shù)10(可設(shè)罝0 16內(nèi)的任意數(shù)字),仿真后所得結(jié)果如閣8所

48、示。13*10 = 130,仿真結(jié)果正確,可知此乘法器設(shè)計有效。圖8乘法器仿真13*10=1304.4除法器的設(shè)計與仿真除法器是基于連減和移位操作的,連減實際上就是基于數(shù)學(xué)上除法的基木原 理。例如,a + b=c余數(shù)是d,就等價于a減去c個b后得到d而且db;之所以 可以使用移位操作,是因為所有運(yùn)算的數(shù)都用二進(jìn)制表示,本文設(shè)計的除法器主 要部分為一個控制移位的控制器,另有一個由全加器組成的4位減法器(引用上 面的減法器的設(shè)計)。乂因為規(guī)定了結(jié)果為4位,控制器首先比較被除數(shù)的高4 位與除數(shù)的大小,判斷是否溢出,溢出則退出,否則就做4位移位和減法得到結(jié) 果。在每次做完減法以后都要判斷是否夠減,即判斷是否奮借位,不夠得話,就 恢復(fù)被減數(shù),移一位再減。除法器的原理框圖如圖9所示。圖9除法器的原理框圖設(shè)a端口為被除數(shù),b端口為除數(shù),elk為時鐘信號的輸入端門,str為啟 動信號的輸入端口,此端口的作用是當(dāng)啟動信號為高電平的吋候冇效,表示啟動 了除法器開始作除法運(yùn)算。s為除法運(yùn)算所得到的商的輸岀端u, y為除法運(yùn)算 中所得到的余數(shù)的輸出端口。該除法器的設(shè)計中使用了狀態(tài)機(jī),它有5個狀態(tài): start為幵始狀態(tài),one力第一次移位狀

溫馨提示

  • 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

提交評論