版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上研究生課程論文課程名稱 FPGA及片上系統(tǒng)SOPC應(yīng)用授課學(xué)期 學(xué)年 第 一 學(xué)期學(xué)院 X 專 業(yè) C 學(xué)號 C1 姓名 C 任課教師 C 論文題目基于FPGA的計(jì)算器設(shè)計(jì)交稿日期 2014年01月09日 成績 X基于FPGA的計(jì)算器設(shè)計(jì)研究生:XX 指導(dǎo)老師:XX摘要 本文介紹了一個(gè)簡單計(jì)算器的設(shè)計(jì),基于硬件描述語言VHDL采用了現(xiàn)場可編程邏輯器件FPGA進(jìn)行設(shè)計(jì),并在Altera公司的Quartus 軟件上實(shí)現(xiàn)仿真。系統(tǒng)由鍵控模塊、運(yùn)算、存儲模塊和譯碼顯示模塊四個(gè)部分組成,計(jì)算部分為加法器、減法器、乘法器和除法器,存儲部分需要3個(gè)存儲器來實(shí)現(xiàn):內(nèi)部累加器(acc)
2、、輸入寄存器(reg)以及結(jié)果暫存器(ans)。顯示部分由四個(gè)七段譯碼管組成,分別來顯示輸入數(shù)字,輸入部分采用外接鍵盤,外部的8個(gè)按鍵他們能以單鍵和組合鍵的形式完成09999之內(nèi)的 加、減、乘、除、符號變換、存儲數(shù)據(jù)和讀取數(shù)據(jù)等七種功能運(yùn)算其結(jié)構(gòu)簡單,易于實(shí)現(xiàn)。 關(guān)鍵詞:FPGA;VHDL;計(jì)算器;設(shè)計(jì)The design of calculator based on FPGAGraduate Student: Dongdong Fan Supervisor: Shuxiang SongAbstract This article describes the design of a simple
3、 calculator, the design uses Field Programmable Gate Array FPGA based on VHDL hardware description language to design and Alteras Quartus in software for emulation. This system is componented by the key control module, computing, storage and decoding display module of the four parts, the computing p
4、art include adder, subtractor, multiplier and divider,Storage part needs three memory to help achieved: internal accumulator (acc), input register (reg) as well as the results of registers (ans). Display part is made up four decoder of 7 sections, respectively to show the number of input. The 8 keys
5、 they can by single combined key forms to be completed addition, multiplication, division arithmetic operator and symbol transform,stored data and read seven function of operation within 0 to 9999 numbers.its structure is simple and easy to implement.Key words:FPGA; VHDL; calclute ; design目錄專心-專注-專業(yè)
6、第1章 引言1.1 課程設(shè)計(jì)的目的與意義在人類學(xué)會交易的時(shí)候,計(jì)算也隨之產(chǎn)生,而算盤作為計(jì)算最實(shí)用的工具存在了幾千年。算盤亦稱珠算,是中國人民創(chuàng)造的一種計(jì)算工具,素有“中國計(jì)算機(jī)”之稱。算盤產(chǎn)生于漢代之前,是由古代的“籌算”演變而來的,珠算一詞,最早見于漢末三國時(shí)代徐岳撰數(shù)術(shù)記遺,書中有“珠算,控帶四時(shí),經(jīng)緯三才”的記述。明清時(shí)期,算盤的應(yīng)用已很廣泛,關(guān)于算盤制造規(guī)格,后來出現(xiàn)的各種規(guī)格的算盤,都是在此基礎(chǔ)上發(fā)展起來的。算盤構(gòu)造簡單,便于掌握,使用方便,成為計(jì)算理財(cái)不可缺少的工具??墒请S著人類文明的進(jìn)步和科學(xué)技術(shù)的不斷發(fā)展。算盤已經(jīng)越來越不能滿足一些高強(qiáng)度、高難度、高速度的復(fù)雜計(jì)算。這時(shí),一種
7、新的電子產(chǎn)品問世了,它就是電子計(jì)算器。電子計(jì)算器的發(fā)明是跨時(shí)代的,它比算盤計(jì)算的速度要快幾百幾千倍,計(jì)算的結(jié)果要比算盤更精確,操作的方法要更方便,更簡單易學(xué),計(jì)算的范圍更廣,并且小巧、輕便。它已經(jīng)成為人們?nèi)粘I钪胁豢扇鄙俚囊环N計(jì)算工具,為我們的生活提供了很大的方便。而隨著計(jì)算機(jī)的普及,越來越多人在使用計(jì)算機(jī),越來越多的工作離不開計(jì)算機(jī),可以說計(jì)算機(jī)已經(jīng)成為現(xiàn)代社會中不可或缺的工具,而電子計(jì)算器功能也以軟件的形式進(jìn)入計(jì)算機(jī)的軟件世界,這不僅給人們帶來了更大的便利,更為人們引入了更快的計(jì)算速度和更強(qiáng)大的運(yùn)算功能。1.2 國內(nèi)外發(fā)展現(xiàn)狀(1)國外情況在國外,電子計(jì)算器在集成電路發(fā)明后,只用短短幾年
8、時(shí)間就完成了技術(shù)飛躍,經(jīng)過激烈的市場競爭,現(xiàn)在的計(jì)算器技術(shù)己經(jīng)相當(dāng)成熟。計(jì)算器已慢慢地脫離原來的“輔助計(jì)算工具”的功能定位,正向著多功能化、可編程化方向發(fā)展,在各個(gè)領(lǐng)域都得到了廣泛的應(yīng)用。用計(jì)算器不僅可以實(shí)現(xiàn)各種各樣復(fù)雜的數(shù)學(xué)計(jì)算還可以用來編制、運(yùn)行程序,甚至解方程組,圖形計(jì)算器還可以進(jìn)行圖形處理。計(jì)算器內(nèi)置的軟件允許用戶進(jìn)行類似于對計(jì)算機(jī)的文件和目錄管理等操作,允許用戶對圖形界面進(jìn)行定制,同時(shí)各種新技術(shù)也被應(yīng)用到計(jì)算器里使計(jì)算器功能越來越強(qiáng)大。可以說,計(jì)算器就是一個(gè)“微微型”的計(jì)算機(jī)。(2)國內(nèi)情況國內(nèi)也有廠商利用計(jì)算器芯片開發(fā)新的產(chǎn)品,但對計(jì)算器技術(shù)的研究、計(jì)算器芯片的設(shè)計(jì)還處于起步階段。
9、計(jì)算器的主要功能還是在于“計(jì)算”,不妨稱之為“低檔計(jì)算器”。即便是對這種計(jì)算器,很多廠商也只從事計(jì)算器的組裝、銷售業(yè)務(wù)。一些IC設(shè)計(jì)公司、芯片提供商也開始研究計(jì)算器技術(shù)。第2章FPGA技術(shù)及硬件描述語言2.1 EDA技術(shù)及其發(fā)展1.使電子設(shè)計(jì)成果以自主知識產(chǎn)權(quán)的方式得以明確表達(dá)和確認(rèn)成為可能;2.在仿真和設(shè)計(jì)兩方面支持標(biāo)準(zhǔn)硬件描述語言的功能強(qiáng)大的EDA軟件不斷推出;3.電子技術(shù)全方位納入EDA領(lǐng)域;4.EDA使得電子領(lǐng)域各學(xué)科的界限更加模糊,更加互為包容;5.Soc高效低成本設(shè)計(jì)技術(shù)的成熟。2.2 FPGA技術(shù)(1)FPGA技術(shù)的發(fā)展現(xiàn)狀FPGA是英文Field Programmable Ga
10、te Array的縮寫,即現(xiàn)場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。FPGA芯片叫板微處理器,如果沒有微處理器,電腦會怎樣?答案令人驚訝- 它的處理速度比常規(guī)電腦更快,而且快出很多倍!盡管FPGA芯片的時(shí)鐘頻率要低于奔騰處理器,但是由于FPGA芯片可并行處理各種不同的運(yùn)算,所以可完成許多復(fù)雜的任務(wù)。例如網(wǎng)頁顯示,全球天氣建摸及基因組合核對等,而且處理速度比奔騰處理器或數(shù)字信號處理器快得多。在通用計(jì)算方面,F(xiàn)PGA仍然不敵I
11、ntel的處理器。對于那些只需要進(jìn)行重復(fù)單任務(wù)操作的機(jī)器而言,使用FPGA芯片顯然是大材小用。與FPGA對應(yīng)的還有DSP處理器,DSP處理器速度雖然很快,并對許多DSP應(yīng)用來說很有用,但仍有一些應(yīng)用要求性能再進(jìn)一步提升,而FPGA提供了更高的性能。FPGA可以生成一個(gè)定制硬件設(shè)計(jì),從而控制邏輯能夠在硬件中實(shí)現(xiàn),不必再利用精確的時(shí)鐘周期來實(shí)現(xiàn)控制功能。目前的FPGA設(shè)計(jì)一般采用Top-down(自頂向下)的設(shè)計(jì)方法。先將系統(tǒng)劃分為各個(gè)功能子模塊,在系統(tǒng)級層次上進(jìn)行行為描述,再對這些子模塊進(jìn)一步進(jìn)行行為描述。 圖2.1 應(yīng)用FPGA開發(fā)流程2.3硬件描述語言VHDL硬件描述語言是EDA技術(shù)的重要組
12、成部分,VHDL是作為電子設(shè)計(jì)主流硬件的描述語言。VHDL語言具有很強(qiáng)的電路描述和建模能力,能從多個(gè)層次對數(shù)字系統(tǒng)進(jìn)行建模和描述,從而大大簡化了硬件設(shè)計(jì)任務(wù),提高了設(shè)計(jì)效率和可靠性。 自頂向下的設(shè)計(jì)流程:圖2.2基于VHDL的自頂向下設(shè)計(jì)方法第3章 系統(tǒng)總體設(shè)計(jì)系統(tǒng)總體設(shè)計(jì)框圖如圖1.3所示。此設(shè)計(jì)由計(jì)算部分、存儲部分、顯示部分和輸入部分組成。圖3.1計(jì)算器的系統(tǒng)組成框圖3.1 計(jì)算器的計(jì)算部分完成09999之內(nèi)的數(shù),9999的二進(jìn)制表示為111,在這一部分中,可以將每一個(gè)數(shù)均表示成16位二進(jìn)制數(shù)統(tǒng)一進(jìn)行運(yùn)算,各個(gè)計(jì)算數(shù)之間的計(jì)算可以直接使用VHDL語言中的運(yùn)算符來實(shí)現(xiàn)。但在顯示時(shí),必須將個(gè)位
13、、十位、百位,千位分開顯示,設(shè)計(jì)時(shí)使用比較的方法來實(shí)現(xiàn)計(jì)算器的功能要求。3.2 計(jì)算器的存儲部分存儲部分需要3個(gè)存儲器來實(shí)現(xiàn):內(nèi)部累加器(acc)、輸入寄存器(reg)以及結(jié)果暫存器(ans)。在存放數(shù)字時(shí),將數(shù)字放入acc或者reg里面,當(dāng)?shù)谝淮伟聪聰?shù)字鍵時(shí),表示該數(shù)字是個(gè)位。當(dāng)?shù)诙伟聪聰?shù)字鍵時(shí),表示這次輸入的是個(gè)位,是十位,上一次輸入的所以要把第一次輸入的數(shù)字乘以10,再加上第二次輸入的數(shù)字,來得到最終輸入的數(shù)字。當(dāng)?shù)谌伟聪聰?shù)字鍵時(shí),要將第一次輸入的數(shù)字乘以100,再加上第二次輸入的數(shù)字乘以10,再加上第二次輸入的數(shù)字,來得到最終輸入的數(shù)字。當(dāng)?shù)谒拇伟聪聰?shù)字鍵時(shí),要將第一次輸入的數(shù)字乘
14、以1000,再加上第二次輸入的數(shù)字乘以100,再加上第三次輸入的數(shù)字乘以10,再加上第四次輸入的數(shù)字,來得到最終輸入的數(shù)字。當(dāng)進(jìn)行第一次計(jì)算時(shí),第一個(gè)數(shù)字存放在acc里面。按下運(yùn)算符以后,第二個(gè)數(shù)字放在reg里面。當(dāng)再按下運(yùn)算符號或者等號時(shí),第一次計(jì)算的結(jié)果將存放在ans里面,同時(shí)reg清零,等待下一個(gè)數(shù)字的輸入。進(jìn)行第二次運(yùn)算時(shí),將ans里面的結(jié)果與reg里面新輸入的數(shù)字進(jìn)行運(yùn)算,再將運(yùn)算結(jié)果存放在ans里面,直到最后按下等號按鍵的時(shí)候,顯示最終的運(yùn)算結(jié)果。3.3 計(jì)算器的顯示部分顯示部分是系統(tǒng)的輸出部分,用于顯示按鍵值及計(jì)算結(jié)果,由于數(shù)字系統(tǒng)的數(shù)據(jù)運(yùn)算都是二進(jìn)制的,而輸出表達(dá)式都是BCD碼
15、,為了滿足BCD碼的譯碼顯示,最方便的方法就是利用譯碼程序在FPGA中實(shí)現(xiàn)。本文采用的是共陰極七段數(shù)碼管,顯示數(shù)字時(shí)需要將對應(yīng)管腳置為高電平,輸出時(shí),從左到右,按從高到低位的順序依次接g、f、e、d、c、b、a。七段譯碼器的基本結(jié)構(gòu)如圖3.2所示。圖3.2 七段譯碼器的結(jié)構(gòu)其VHDL語言描述如下所示。在這段程序中,indata是輸入4位二進(jìn)制數(shù)的端口,outdata是輸出7位譯碼的端口,用WITH語句來實(shí)現(xiàn)譯碼。WITH indata SELECToutdata=WHEN0000, -顯示0 WHEN0001, -顯示1 WHEN0010, -顯示2 WHEN0011, WHEN0100, W
16、HEN0101, WHEN0110, WHEN0111, WHEN1000, WHEN1001, -顯示9 WHEN OTHERS; -其它的輸入按鍵均不顯示。計(jì)算器顯示部分的設(shè)計(jì)和實(shí)現(xiàn),實(shí)際上就是七段譯碼器的設(shè)計(jì)和實(shí)現(xiàn),四個(gè)七段譯碼器分別顯示的是個(gè)位、十位、百位、千位。輸入第一個(gè)數(shù)字后至再一次按下數(shù)字按鍵輸入第二個(gè)數(shù)字前,三個(gè)七段譯碼器顯示的都是第一個(gè)數(shù)字。當(dāng)開始輸入第二個(gè)數(shù)字的時(shí)候顯示第二個(gè)數(shù)字,再次按下運(yùn)算按鍵到輸入第三個(gè)數(shù)字前,顯示的是前兩個(gè)數(shù)字的運(yùn)算結(jié)果,以此類推,當(dāng)最后按下等號鍵的時(shí)候,顯示最終的運(yùn)算結(jié)果。3.4 計(jì)算器的輸入部分計(jì)算器輸入部分的設(shè)計(jì)最主要的是按鍵譯碼電路的設(shè)計(jì)和實(shí)
17、現(xiàn)。計(jì)算器的輸入部分是由外部的8個(gè)按鍵他們能以單鍵和組合鍵的形式完成09十個(gè)數(shù)字按鍵、加減乘除四則運(yùn)算的運(yùn)算符按鍵、一個(gè)等號按鍵和一個(gè)清零按。設(shè)計(jì)所要做的是對按鍵信息進(jìn)行譯碼,使其在計(jì)算器內(nèi)部可以使用。數(shù)字按鍵譯碼電路的主體部分VHDL語言描述如下。PROCESS(inclk,reset) BEGIN IF reset=1THEN outnumoutnum=0000;outflagoutnum=0001;outflagoutnum=0010;outflagoutnum=0011;outflagoutnum=0100;outflagoutnum=0101;outflagoutnum=0110;o
18、utflagoutnum=0111;outflagoutnum=1000;outflagoutnum=1001;outflagoutnum=outnum;outflag=0; -不按鍵時(shí)保持 END CASE; END IF; END PROCESS;在本次設(shè)計(jì)的程序中,設(shè)reset是異步復(fù)位信號的輸入端口,inclk是時(shí)鐘信號的輸入端口,innum端口用來表示輸入的按鍵向量,outnum端口用來表示輸入的按鍵動(dòng)作對應(yīng)的輸出數(shù)字,outflag端口用來輸出是否有按鍵動(dòng)作,它主要實(shí)現(xiàn)的是按下什么就輸出什么。一共有千、百、十、個(gè)位,初始值都為低電平“0”,當(dāng)按下哪個(gè)位時(shí)哪個(gè)位上的電平就跳為高電平(
19、有且僅有一個(gè)為高電平),這時(shí)就有相應(yīng)的輸出。那千、百、十、個(gè)位分別對應(yīng)的是09這十個(gè)數(shù)字,所以當(dāng)?shù)谝粋€(gè)位(從左往右位數(shù)依次增高)為高電平時(shí)顯示0,第千個(gè)位上位高電平時(shí),相應(yīng)的顯示為9。如果按下的鍵是加號、減號、乘號、除號或者是等于號時(shí),也是不顯示的,所以也可以稱作數(shù)字按鍵譯碼電路。第4章 計(jì)算器的VHDL設(shè)計(jì)4.1加法器的設(shè)計(jì)與仿真 全加器是組合邏輯電路中最常見也最實(shí)用的一種,考慮低位進(jìn)位的加法運(yùn)算就是全加運(yùn)算,實(shí)現(xiàn)全加運(yùn)算的電路稱為全加器。設(shè)計(jì)16位的全加器思路非常簡單且清晰,第一種方法就是先設(shè)計(jì)一個(gè)半加器和一個(gè)或門,然后兩個(gè)半加器合并成一個(gè)一位的全加器,最后用16個(gè)一位的全加器組合成為一個(gè)
20、16位的全加器;第二種方法就是先設(shè)計(jì)一個(gè)一位的全加器,然后在用16個(gè)串聯(lián)或并聯(lián)就組成了一個(gè)16位的全加器,而本次設(shè)計(jì)采用采用的4.1一位全加器的級聯(lián)原理圖程序如附錄中加法程序,經(jīng)Quartus 編譯后建立.vwf,設(shè)置被加數(shù)a為十進(jìn)制數(shù)9999(可設(shè)置09999內(nèi)的任意數(shù)字),設(shè)置加數(shù)b99999仿真后所得結(jié)果如圖4.2所示。9999+999919998,仿真結(jié)果正確,可知此加法器設(shè)計(jì)有效。圖4.2 加法器仿真9999+9999199984.2減法器的設(shè)計(jì)與仿真設(shè)計(jì)一個(gè)16位二進(jìn)制數(shù)的減法器,利用二進(jìn)制的減法原理,減法變加法多次調(diào)用一位全加器一位全減器的原理框圖如圖4.3所示。由圖可以看出,此
21、減法器共需要兩個(gè)輸入端口和一個(gè)輸出端口。減法器的設(shè)計(jì)可以引用加法器,即通過對減數(shù)的求補(bǔ),再與被減數(shù)相加得到最終的結(jié)果,所以需要增設(shè)一個(gè)進(jìn)位位輸入端口和進(jìn)位位的輸出端口。圖4.3 一位全減器的原理框圖可以設(shè)a端口為被減數(shù),b端口為減數(shù),ci為輸入借位位,s為結(jié)果的輸出端口,co為借位的輸出端口。此減法器可以進(jìn)行位數(shù)擴(kuò)展,每增加一位需要多引用一個(gè)加法器,程序如附錄中減法程序,經(jīng)Quartus 編譯后建立.vmf文件,設(shè)置被減數(shù)a為十進(jìn)制數(shù)1999(可設(shè)置09999內(nèi)的任意數(shù)字),設(shè)置減數(shù)b為999,仿真后所得結(jié)果如圖4.4所示。1999-9991000,仿真結(jié)果正確,可知此減法器設(shè)計(jì)有效。圖4.4
22、 減法器仿真1999-99910004.3乘法器的設(shè)計(jì)與仿真乘法器是數(shù)字系統(tǒng)中的基本邏輯器件,在很多應(yīng)用中都會出現(xiàn)如各種濾波器的設(shè)計(jì)、矩陣的運(yùn)算等。這里設(shè)計(jì)的是一個(gè)1616的乘法器。依據(jù)乘法器的原理,可以繪出其原理框圖如圖4.5所示。圖4.5 乘法器的原理框圖可設(shè)a端口為被乘數(shù)(一個(gè)16位二進(jìn)制數(shù)),b端口為乘數(shù)(一個(gè)16位二進(jìn)制數(shù)),y為乘法運(yùn)算的結(jié)果的輸出端口。乘法器模塊圖如附錄中所示。程序如附錄中乘法程序,經(jīng)Quartus 編譯后建立.vmf文件,設(shè)置被乘數(shù)a為十進(jìn)制數(shù)9999,設(shè)置乘數(shù)b為1000,仿真后所得結(jié)果如圖4.6所示。9999*1000,仿真結(jié)果正確,可知此乘法器設(shè)計(jì)有效。圖
23、4.6 乘法器仿真 9999*10004.4 除法器的設(shè)計(jì)與仿真另類 除法器的算法可分為兩類:基于減法操作和基于乘法操作的算法?;诔朔ǖ某ò殉闯墒浅朔ǖ哪孢\(yùn)算。如下面的式子所示: A =BQ+R對于16位無符號被除數(shù)a,先將a轉(zhuǎn)換成高16位是0,低16位是a的數(shù)tempa。在每個(gè)周期開始時(shí)tempa向左移動(dòng)一位,最后一位補(bǔ)零,然后判斷temp a的高16位是否大于等于除數(shù)b,如是則tempa的高16位減去b并且加I,得到的新值仍賦給tempa;如不是直接進(jìn)入下一步。上面的移位、比較、減法(減法視情況而定)要進(jìn)行16次,經(jīng)過16個(gè)周期后,運(yùn)算結(jié)束,所得到的tempa的高16位為余數(shù),低1
24、6位為商。將移位、比較和相減放在同一個(gè)循環(huán)中,去除了不必要的延時(shí),增加了設(shè)計(jì)的可靠性。對于32位有符號數(shù)的除法,算法與上面類似,只是需要判斷商和余數(shù)是正數(shù)還是負(fù)數(shù)。當(dāng)youWU為1時(shí)進(jìn)行有符號數(shù)運(yùn)算,否則進(jìn)行無符號數(shù)運(yùn)算。圖4.7 除法器的原理框圖設(shè)a端口為被除數(shù),b端口為除數(shù),s端口為商,y端口為余數(shù),程序如附件中除法程序,經(jīng)Quartus 編譯后建立.vmf文件,設(shè)置被除數(shù)為十進(jìn)制數(shù)9088除數(shù)為90,仿真所得結(jié)果如圖4.8所示。計(jì)算得到90889010088,仿真結(jié)果正確,由此可知此除法器設(shè)計(jì)有效。圖4.8 除法器仿真 90889010088第5章 結(jié)束語課程設(shè)計(jì)是本學(xué)期最后一次將自己所
25、學(xué)理論與實(shí)際相結(jié)合的機(jī)會,通過這次比較完整的基于FPGA的計(jì)算器的設(shè)計(jì),我自己的理論與實(shí)踐相結(jié)合的能力有了大幅度的提升。在溫習(xí)了所學(xué)專業(yè)知識的基礎(chǔ)上,同時(shí)通過查閱專業(yè)書籍、相關(guān)文獻(xiàn)資來解決實(shí)際工程問題,這鍛煉了我的綜合運(yùn)用各項(xiàng)知識和資源的能力。我采用的是分模塊的設(shè)計(jì)方法,各個(gè)模塊的設(shè)計(jì)我都是隨著設(shè)計(jì)的不斷深入而不斷熟悉并學(xué)會應(yīng)用的。由于以前沒有經(jīng)常使用VHDL語言,在編程過程中難免會與到反復(fù)調(diào)試自己也看不出的問題,幸好有實(shí)驗(yàn)室同學(xué)的解答,在此表示感謝!而且通過對整體的掌控,對局部的取舍,以及對細(xì)節(jié)的斟酌處理,都使我的實(shí)際動(dòng)手經(jīng)驗(yàn)得到了極大的豐富,由于程序編寫與處理是一項(xiàng)非常繁瑣非常令人頭疼的工
26、作,完成了這些,也使我的意志、抗壓能力及耐力都得到了不同程度的提升。這一次的設(shè)計(jì)讓我積累很多的解決實(shí)際問題的經(jīng)驗(yàn),如加法器,除法器有多種方法描述,使我的頭腦更加靈活,這必然會讓我在未來的學(xué)習(xí)、工作中表現(xiàn)出更高的應(yīng)變能力,更強(qiáng)的溝通力和理解力。通過這次的設(shè)計(jì),我對FPGA技術(shù)、VHDL語言以及Quartus 的使用都有了深入的了解。雖然設(shè)計(jì)中內(nèi)容較多,過程繁瑣但這也造就了我豐富的收獲。從未知道的原理,不一定就難,關(guān)鍵是要?jiǎng)邮秩プ觯K化設(shè)計(jì),各個(gè)擊破解決,相信下一次做其它設(shè)計(jì)時(shí)我會做的更好。參考文獻(xiàn):1朱正偉.技術(shù)及應(yīng)用.M.北京:清華大學(xué)出版社,2005.2王彥.基于FPGA的工程設(shè)計(jì)與應(yīng)用M
27、.西安:西安電子科技大學(xué)出版社,2007.3黃智偉.FPGA系統(tǒng)設(shè)計(jì)與實(shí)踐M.北京:電子工業(yè)出版社,2005.3江思敏.VHDL數(shù)字電路及系統(tǒng)設(shè)計(jì)M.北京:機(jī)械工業(yè)出版社,2006.5盧毅,賴杰.VHDL與數(shù)字電路設(shè)計(jì)M.北京:北京科學(xué)出版社,2001.6潘松,黃繼業(yè).EDA技術(shù)實(shí)用教程M.第二版.北京:科學(xué)出版社,2005.7徐志軍,徐光輝.CPLD/FPGA的開發(fā)與應(yīng)用M.北京:電子工業(yè)出版社,2002.8陳育人.8 位計(jì)算器的指令系統(tǒng)與硬件結(jié)構(gòu)J.微電子技術(shù),2000,28(3).9朱衛(wèi)華,鄭留平可任意設(shè)置計(jì)算精度的整數(shù)除法器的設(shè)計(jì)J國外電子測量技術(shù)。2008, 27(2):1618附
28、錄1. 1位全加器源程序f_adder.vhd如下:LIBRARY IEEE;-半加器USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY h_adder ISPORT (a,b:IN STD_LOGIC; so,co:OUT STD_LOGIC);END ENTITY h_adder;ARCHITECTURE behave OF h_adder ISBEGIN so=a XOR b;co=a AND b;END behave;-*LIBRARY IEEE;
29、USE IEEE.STD_LOGIC_1164.ALL;-或門邏輯USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY or2a ISPORT (a,b:IN STD_LOGIC; c:OUT STD_LOGIC);END ENTITY or2a;ARCHITECTURE one OF or2a ISBEGIN cain,b=bin,co=d,so=e);u2:h_adder PORT MAP(a=e,b=cin,co=f,so=sumf);u3:or2a PORT MAP(a=d,b=f,c=coutf);EN
30、D ARCHITECTURE fd1;2 . 16位位減法器的源程序suber.vhd如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY suber IS -減法器PORT (a,b:IN STD_LOGIC_VECTOR(15 DOWNTO 0); ci:IN STD_LOGIC; s:OUT STD_LOGIC_VECTOR(15 DOWNTO 0); co:OUT STD_LOGIC);END ENTITY suber
31、;ARCHITECTURE fd3 OF suber ISCOMPONENT f_adder IS -調(diào)用一位全加器(在工程中已經(jīng)添加)PORT (ain,bin,cin:IN STD_LOGIC; sumf,coutf:OUT STD_LOGIC);END COMPONENT;SIGNAL btem:STD_LOGIC_VECTOR(15 DOWNTO 0);SIGNAL ctem:STD_LOGIC_VECTOR(16 DOWNTO 0);SIGNAL stem:STD_LOGIC_VECTOR(15 DOWNTO 0);BEGINbtem(15 DOWNTO 0)=NOT b(15 DO
32、WNTO 0);ctem(0)=NOT ci;gl:FOR i IN 0 TO 15 GENERATE-loop add:f_adder PORT MAP(a(i),btem(i),ctem(i),stem(i),ctem(i+1);END GENERATE gl;-loop; s(15 DOWNTO 0)=stem(15 DOWNTO 0); co=NOT ctem(16);END fd3;3. 16位乘法器源程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_
33、UNSIGNED.ALL;ENTITY mul ISPORT (a,b:IN STD_LOGIC_VECTOR(15 DOWNTO 0); y:OUT STD_LOGIC_VECTOR(31 DOWNTO 0);END ENTITY mul;ARCHITECTURE fd4 OF mul ISBEGINy(31 DOWNTO 0)=a(15 DOWNTO 0)*b(15 DOWNTO 0);END fd4;4. 16位除法器源程序diver.vhd:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE
34、 IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.NUMERIC_STD.ALL;ENTITY diver ISPORT (a,b:IN STD_LOGIC_VECTOR(15 DOWNTO 0);-此信號為1進(jìn)行有符號數(shù)運(yùn)算否則是無符號數(shù)相除 youwu:IN STD_LOGIC;- s,y:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);END ENTITY diver;ARCHITECTURE fd5 OF diver ISSIGNAL tempa,tempb:STD_LOGIC_VECTOR(15 DOWNTO 0);SIGNAL fuha
35、o,sign,d:STD_LOGIC; BEGINd=(a(15) XOR b(15) AND youwu;-有符號數(shù)相除時(shí)商的符號sign=a(15) AND youwu;-被除數(shù)為負(fù)數(shù)時(shí)余數(shù)取負(fù)值PROCESS(a,b,youwu)BEGINIF youwu=1 THEN-將有符號數(shù)轉(zhuǎn)為無符號數(shù)IF a(15)=1 THEN tempa=NOT a+1; ELSEtempa=a;END IF;IF b(15)=1 THEN tempb=NOT b+1; ELSEtempb=b;END IF;ELSE-無符號數(shù)不作變化tempa=a;tempb=b;END IF;END PROCESS;PR
36、OCESS(tempa,tempb,fuhao,sign,d)VARIABLE n:INTEGER;VARIABLE temp_a,temp_b:STD_LOGIC_VECTOR(31 DOWNTO 0);BEGINtemp_a:=00000&tempa;temp_b:=tempb&00000;n:=0;WHILE(n=tempb THENtemp_a:=temp_a-temp_b+1;END IF;END LOOP;IF d=1 THEN-商為負(fù)數(shù)時(shí)用補(bǔ)碼表示 temp_a(15 DOWNTO 0):=(NOT temp_a(15 DOWNTO 0)+1;END IF;IF sign=1 T
37、HEN-余數(shù)為負(fù)數(shù)時(shí)用補(bǔ)碼表示 temp_a(31 DOWNTO 16):=(NOT temp_b(31 DOWNTO 16)+1;END IF;S=temp_a(15 DOWNTO 0); y=temp_a(31 DOWNTO 16);END PROCESS;END ARCHITECTURE fd5;5. 7段譯碼器的VHDL語言描述:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY numdecoder IS PORT(re
38、set:IN STD_LOGIC; inclk:IN STD_LOGIC; innum:STD_LOGIC_VECTOR(7 DOWNTO 0); outnum:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0); outflag:OUT STD_LOGIC); END;ARCHITECTURE behave OF numdecoder ISBEGIN PROCESS(inclk,reset) BEGIN IF reset=1THEN outnumoutnum=0000;outflagoutnum=0001;outflagoutnum=0010;outflagoutnum=
39、0011;outflagoutnum=0100;outflagoutnum=0101;outflagoutnum=0110;outflagoutnum=0111;outflagoutnum=1000;outflagoutnum=1001;outflagoutnum=outnum;outflag=0; -不按鍵時(shí)保持 END CASE; END IF; END PROCESS;END behave;6. 16位二進(jìn)制數(shù)二進(jìn)制轉(zhuǎn)換成千位、百位、個(gè)位以送至譯碼器vdecode.vhd:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGI
40、C_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY vdecode IS-7段譯碼譯碼器做顯示 PORT(indata:IN STD_LOGIC_VECTOR(3 DOWNTO 0); outdata:OUT STD_LOGIC_VECTOR(0 TO 6) );END ENTITY vdecode;ARCHITECTURE behave OF vdecode ISBEGINWITH indata SELECToutdata=WHEN0000, -顯示0 WHEN0001, -顯示1 WHEN0010, -顯示2 WHEN0011, WHEN0
41、100, WHEN0101, WHEN0110, WHEN0111, WHEN1000, WHEN1001, -顯示9 WHEN OTHERS;END ARCHITECTURE behave ;-*ctrview:PROCESS(c,clk)-二進(jìn)制轉(zhuǎn)換成千位、百位、個(gè)位以送至譯碼器BEGIN IF c=1THEN view1=0000; view2=0000; view3=0000;view4=0000; viewstep ktemp -產(chǎn)生千位數(shù)字 IF ktemp=01000THEN view1=1001;ktemp=00000THEN view1=1000;ktemp=11000THE
42、N view1=0111;ktemp=10000THEN view1=0110;ktemp=01000THEN view1=0101;ktemp=00000THEN view1=0100;ktemp=11000THEN view1=0011;ktemp=10000THEN view1=0010;ktemp=01000THEN view1=0001;ktemp=ktemp-01000; ELSE view1=0000; END IF; viewstep IF ktemp=00100THEN view2=1001;ktemp=00000THEN view2=1000;ktemp=11100THEN
43、 view2=0111;ktemp=11000THEN view2=0110;ktemp=10100THEN view2=0101;ktemp=10000THEN view2=0100;ktemp=11110THEN view2=0011;ktemp=THEN view2=0010;ktemp=00100THEN view2=0001;ktemp=ktemp-00100; -百位為1,ktemp100 ELSE view2=0000; -百位為0 END IF; viewstep -產(chǎn)生十位數(shù)字 IF ktemp=11010THEN view1=1001;ktemp=10000THEN view1=1000;ktemp=00110THEN view1=0111;ktemp=11100THEN view1=0110;ktemp=10010THEN view1=0101;ktemp=01000THEN view1=0100;ktemp=11110THEN view1=0011;ktemp=10100THEN view1=0010;ktemp=00000THEN view1=000
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年全國環(huán)保知識競賽題庫及答案(共480題)
- 2021初級護(hù)師考試基礎(chǔ)護(hù)理學(xué)考點(diǎn)習(xí)題及答案
- 2024年07月浙江路橋農(nóng)商銀行暑期實(shí)習(xí)生招募筆試歷年參考題庫附帶答案詳解
- 2024年07月浙江民生銀行金華二級分行社會招考(720)筆試歷年參考題庫附帶答案詳解
- 2024年漣水縣中醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點(diǎn)附帶答案
- 2024年漣源市中醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點(diǎn)附帶答案
- 基本看圖紙技能指南
- 2024年海南省??诒O(jiān)獄醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點(diǎn)附帶答案
- 2024年海南省婦幼保健院高層次衛(wèi)技人才招聘筆試歷年參考題庫頻考點(diǎn)附帶答案
- 古詩詞誦讀《涉江采芙蓉》說課稿 2024-2025學(xué)年統(tǒng)編版高中語文必修上冊
- 安全生產(chǎn)培訓(xùn)法律法規(guī)
- 廣東省廣州市2021-2022學(xué)年高二上學(xué)期期末五校聯(lián)考生物試題
- 2024年領(lǐng)導(dǎo)干部任前廉政知識考試測試題庫及答案
- 2023-2024學(xué)年浙江省寧波市鎮(zhèn)海區(qū)四年級(上)期末數(shù)學(xué)試卷
- 舞蹈演出編導(dǎo)排練合同模板
- 腸梗阻課件完整版本
- 中醫(yī)辨證-八綱辨證(中醫(yī)學(xué)課件)
- 冠脈介入進(jìn)修匯報(bào)
- 蔣詩萌小品《誰殺死了周日》臺詞完整版
- 生涯發(fā)展展示
- 報(bào)價(jià)單(報(bào)價(jià)單模板)
評論
0/150
提交評論