基于FPGA的查表式運算器的設(shè)計與仿真 通信技術(shù)專業(yè)
《基于FPGA的查表式運算器的設(shè)計與仿真 通信技術(shù)專業(yè)》由會員分享,可在線閱讀,更多相關(guān)《基于FPGA的查表式運算器的設(shè)計與仿真 通信技術(shù)專業(yè)(42頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 題目: 基于FPGA的查表式運算器的設(shè)計與仿真 摘 要 隨著我國的經(jīng)濟的發(fā)展,人們要求計算的方法更好簡單和方便,尤其是在計算這個方面,所以對于運算器的設(shè)計是非常的重要的,所以為了更好的設(shè)計該設(shè)計采用了現(xiàn)場可編程邏輯器件FPGA設(shè)計,并基于硬件描述語言VHDL在Altera公司的Quartus Ⅱ軟件上實現(xiàn)仿真。系統(tǒng)由計算部分、存儲部分、顯示部分和輸入部分四個部分組成,計算部分為加法器、減法器、乘法器和除法器,存儲部分需要3個存儲器來實現(xiàn):內(nèi)部累加器(acc)、輸入
2、寄存器(reg)以及結(jié)果暫存器(ans)。顯示部分由四個七段譯碼管組成,分別來顯示輸入數(shù)字,輸入部分采用外接鍵盤,由0—9十個數(shù)字按鍵,加減乘除四個運算符按鍵,一個等號按鍵和一個清零按鍵組成的。通過外部的按鍵可以完成四位數(shù)之內(nèi)的 ‘加’、‘減’、‘乘’、‘除’四種功能運算,其結(jié)構(gòu)簡單,易于實現(xiàn)。 關(guān)鍵詞:FPGA;VHDL;計算器 38 Abstract This article describes the design of a simple calculator, the design uses Field Programmable Gate Arra
3、y FPGA based on VHDL hardware description language to design and Altera's Quartus Ⅱ in software for emulation. This system is componentted by the calculation section, storage section, display and input section of the four parts, the computing part include adder, subtractor, multiplier and divider,St
4、orage 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 three decoder of 7 sections, respectively to show the number of input. Input part has ten number keys, from 0 – 9, also has addition and
5、 subtraction and multiplication and division arithmetic operator keys, a button and of equal sign and the clear key. Buttons can be done through external within the four-digit 'add', 'subtract', 'multiple', 'divede' the four kinds of functional operations, its structure is simple and easy to impleme
6、nt. Key words:FPGA;VHDL;calclute 目 錄 第一章 引言 1 1.1 課題研究的目的與意義 1 1.2 國內(nèi)外發(fā)展現(xiàn)狀 1 1.3課題的主要技術(shù)路線 2 第二章 FPGA技術(shù)及硬件描述語言 3 2.1 FPGA技術(shù)的發(fā)展現(xiàn)狀及與CPLD的比較 3 2.2 FPGA設(shè)計方法 5 2.3 利用硬件描述語言(HDL)的硬件電路設(shè)計方法 6 2.4 VHDL語言的特點 7 2.5 Quartus Ⅱ概述及其設(shè)計流程 7 第三章 系統(tǒng)總體設(shè)計 10 3.1 計算器的計算部分 10 3.2 計算器的存儲部分 10 3.3
7、計算器的顯示部分 11 3.4 計算器的輸入部分 12 第四章 計算器的VHDL設(shè)計 14 4.1加法器的設(shè)計與仿真 14 4.2減法器的設(shè)計與仿真 15 4.3乘法器的設(shè)計與仿真 16 4.4 除法器的設(shè)計與仿真 18 第五章 結(jié)束語 20 參考文獻 21 附 錄 22 第一章 引言 1.1 課題研究的目的與意義 在人類學(xué)會買賣的時分,計算也隨之爆發(fā),而算盤成為計算最適用的工具存在了幾千年。算盤也叫珠算,是中國人民發(fā)明的一種計算用具,古代時有“中國的計算機”的稱號。算盤產(chǎn)生在我國漢代的前期,是由古代的“籌算”演化變成的,珠算這個詞語,最早出現(xiàn)在漢末的三國演義
8、時代的徐岳撰的《數(shù)術(shù)記遺》里,有一句敘述“珠算,控帶四時,經(jīng)緯三才”是出自出本里的?!冻顺ㄗ兯銓殹肥悄纤螖?shù)學(xué)家楊輝的,里面有“九歸”的口訣,劉因是元代人,也作了一首算盤的詩句,吳敬是明代人,他的的《九章詳注比類算法大全》里寫有珠算的大部分有關(guān)算法。在明清的時候,人們對算盤的運用就非常多,而對于算盤的制作大小,明萬歷年間的柯尚遷寫的《數(shù)學(xué)通軌》里記載了13檔算盤的圖片,上有2珠,下有5珠,樣似長方形,四周都是木框,里面有一個軸心,人們都叫作“檔”,檔的中間是用一根橫木來分隔開來,運算的時候在確定位置后撥動珠字來進行計算。起初出世的每一種規(guī)格的算盤,全部在這個基礎(chǔ)上發(fā)展起來。算盤的結(jié)構(gòu)鑄造十分簡
9、單,不僅便于掌握,而且使用的時候也很便利,它變成了計算和理財不能缺少的其中一種工具。算盤的傳入是從明代開始,它來自朝鮮和日本等一些國家。清代的時候算盤根據(jù)經(jīng)濟和文化的交流被傳進東南亞每個國家,在第二次世界大戰(zhàn)結(jié)束后,美國在日本引入了一些算盤,看得出來算盤在現(xiàn)代人的生活里擁有非常重要的作用,無論是大商人或者是小商人都會通過運用小算盤來計算。不過根據(jù)人類文明的發(fā)展與現(xiàn)代科學(xué)技術(shù)的一直進步。算盤慢慢變成越來越不能滿足一部分高強度和高難度與高速度的非常復(fù)雜的一種計算。就在這時,一種新型的電子類產(chǎn)品出世了,我們都叫它電子計算器。電子計算器是一種跨越了一個時代的偉大發(fā)明,比其算盤來,它的計算速度要快幾百甚
10、至幾千倍,電子計算器的計算的結(jié)果也要比算盤更具精確度,它操作得非常方便,容易學(xué)會,它的計算的范圍非常廣泛,而且很靈巧,便于攜帶出門。電子計算器已經(jīng)變成現(xiàn)代人生活中不可減少的計算用器,它給我們的生活帶來了很大的便利。并且根據(jù)計算機的流行,更多的人在運用計算機,更多的工作都和計算機密不可分,也就是說計算機慢慢變成現(xiàn)代社會中不可缺少的計算用具,并且電子計算器擁有的功能也通過軟件的形式使用到計算機里的軟件世界里,它不僅給人們帶來了很大的便利,還為現(xiàn)代人提供了更迅捷的計算速度,縮短了計算時間,和具有非常強大的運算功能。 1.2 國內(nèi)外發(fā)展現(xiàn)狀 (1)國外情況 如今在國外,集成電路出世后,電子計算器
11、只用僅僅幾年功夫就達成了一種技術(shù)發(fā)展,通過猛烈的市場競爭,如今的計算器技術(shù)就非常成熟。計算器已漸漸地脫離原本的“輔佐計算工具”的功用定位,正往著多功能化和可編程化的目的發(fā)展,在各個范圍都得到了普遍的使用。計算器不但能夠完成各種各樣復(fù)雜的數(shù)學(xué)計算還能夠來編制和運行程序,方程組也可以用來解決,圖形計算器也能用圖形解決。計算器的一些內(nèi)置軟件也容許用戶使用一些類似于對計算機的文件與目錄管理等操縱,同意用戶自行定制圖形界面,此時每一種新的技術(shù)也被使用到計算器里讓計算器功能更加強大。也就是說,電子計算器也能被稱為“微微型”的計算機。 (2)國內(nèi)情況 在國內(nèi),有廠商也使用計算器芯片來發(fā)明新的產(chǎn)品,不過針
12、對計算器技術(shù)的鉆研和計算器的芯片的設(shè)計現(xiàn)在還是起步的階段?!坝嬎恪笔怯嬎銠C的最主要公用,我們可以把它叫做“低檔計算器”。就算是關(guān)于這種計算器,大部分廠家和商人也僅僅工作在組裝計算器和銷售的業(yè)務(wù)。一部分IC設(shè)計公司和芯片的供應(yīng)商人也開始慢慢鉆研和學(xué)習(xí)計算器技術(shù)。 1.3課題的主要技術(shù)路線 這次實驗是做基于現(xiàn)場可編程邏輯器件FPGA來進行設(shè)計,不僅是運用了硬件描述語言VHDL,還編程,并且在Altera公司的Quartus Ⅱ軟件上完成了仿真。我們還必須實現(xiàn)進行計算器的一部分常用到的運算功能,經(jīng)過外接鍵盤輸入、LED數(shù)碼顯示來達到和完成運算目標(biāo)。
13、 第二章 FPGA技術(shù)及硬件描述語言 2.1 FPGA技術(shù)的發(fā)展現(xiàn)狀及與CPLD的比較 (1)FPGA技術(shù)的發(fā)展現(xiàn)狀 FPGA是把英文Field Programmable Gate Array的縮寫,也就是現(xiàn)場可編程門陣列,它是在CPLD和GAL與PAL等可編程器件的根本上更深入發(fā)展的產(chǎn)物。FPGA是作為專用集成電路(ASIC)領(lǐng)域中出現(xiàn)的的一種半定制電路,不但處理了定制電路的缺乏,還克服了原本存在的可編程器件門電路數(shù)有限的幾個缺點。 FPGA使用了邏輯單元陣列LCA(Logic Cell Array)這個概念,它還包含可配置邏輯模塊CLB(Configurabl
14、e Logic Block),輸入輸出模塊IOB(Input Output Block)和內(nèi)部連線(Interconnect)三個內(nèi)部局部。FPGA的基本特點主要有: ⅰ.采納FPGA設(shè)計ASIC電路,用戶不需要投片消費,就能獲得合用的芯片。 ⅱ.FPGA能做其它全定制或者半定制ASIC電路的測試樣片。 ⅲ.FPGA內(nèi)部有豐富的觸發(fā)器和I/O引腳。 ⅳ.FPGA是ASIC電路中設(shè)計周期最短、開發(fā)費用最低、風(fēng)險最小的器件之一。 ⅴ.FPGA采用高速CHMOS工藝,功耗低,可以與CMOS、TTL電平兼容。 RAM中的程序是用來設(shè)置FPGA工作狀態(tài)的,它存放在片內(nèi)RAM的程序里,因而,工
15、作時就得對片內(nèi)的RAM進行編程。用戶也能隨著不同的配置方式,使用不同的編程方法。加電時,片內(nèi)編程RAM被FPGA芯片讀入一些EPROM中的一些數(shù)據(jù),在配置完成后,F(xiàn)PGA就進入工作狀態(tài)。掉電后,F(xiàn)PGA恢復(fù)成白片,內(nèi)部邏輯關(guān)系消失,因而,F(xiàn)PGA能使用很多次。FPGA的編程不需要專用的FPGA編程器,只要通用的EPROM、PROM編程器就可以。當(dāng)必要改正FPGA性能的時候,只要換一片EPROM就可以了。同一片F(xiàn)PGA,不同的編程數(shù)據(jù),能夠發(fā)生差別的電路性能。因而,F(xiàn)PGA的運用十分靈便。 FPGA和DSP處理器還相對應(yīng),盡管DSP處理器速度非???,還對許多DSP運用來說很有用,不過還有一些應(yīng)
16、用要求功能需要再一步提高,而且FPGA還提供了更高的功能。FPGA能夠生成一個定制硬件設(shè)計,控制邏輯可以實現(xiàn)在硬件中,不用再使用精確的時鐘周期來實現(xiàn)控制功用。另外,經(jīng)過縮小硬件的框架,F(xiàn)PGA還能夠供應(yīng)額定的功能。假如,速度是最關(guān)鍵的設(shè)計思考原因,這樣一來我們能夠在FPGA中設(shè)計一個齊全并行的算法解決方法。如今,諸多系統(tǒng)都包含了一個FPGA,用于膠合邏輯和協(xié)議轉(zhuǎn)換或者一些其它系統(tǒng)功用。假如,那FPGA沒有被全部運用,那可以把DSP功能加入里面,能夠為系統(tǒng)節(jié)省一部分成本。并且假如標(biāo)準(zhǔn)產(chǎn)生了一些變化,F(xiàn)PGA的運用就不會有一切風(fēng)險。FPGA的配置文件可以升級,就像一個軟件一樣,雖然它們必需被存儲在
17、系統(tǒng)的非易失性存儲器中。 目前,F(xiàn)PGA設(shè)計的設(shè)計方法,通常使用的是Top-down(自頂向下)。系統(tǒng)被分成各個功能子模塊,在系統(tǒng)級層次上使用行為描述,再對這些子模塊進一步使用行為描述。 (2)FPGA與CPLD的比較 FPGA簡要稱呼叫現(xiàn)場可編程邏輯門陣列,它是電子設(shè)計的一個里程碑。CPLD的簡要稱呼叫復(fù)雜可編程邏輯器件。雖然FPGA和CPLD一起都是可編程ASIC器件,有很多共同特性,但由于CPLD和FPGA構(gòu)造上的差異,具備各自的特性: ? 1..CPLD更合適實現(xiàn)各種算法和組合邏輯,F(xiàn)PGA更合適在完成時序邏輯。換個說法, FPGA更合適在觸發(fā)器豐富的構(gòu)造,而CPLD更合適在觸
18、發(fā)器有限且乘積項很豐富的構(gòu)造。 2.這種形式的集成度是非常的高的,并且它內(nèi)部的結(jié)構(gòu)和邏輯性也是非常的好的,受了廣大的電子器件兒人們的喜歡。 3.運行的速度比現(xiàn)在業(yè)界上最快的DSP芯片還要快,是非常的快的。 4.在這種形式的使用方面,他也是非常的好的,她沒有外部的存儲芯片,使用著操作起來也非常的簡單。 5.這種芯片它的運行的速度也是非常的快的。能在很多的時間真之內(nèi)運行出來很多的程序使用度非常的高。 6.在編程方面可編程度是非常的好的,通過這些 程序員可以把自己的程序?qū)戝e時他可以隨意的進行改正的,并且這種部件兒在運行的過程中中如果在斷電的時候里邊存儲的信息也不會丟失他能更好地去保存出來功
19、能是非常的強大的 2.2 FPGA設(shè)計方法 在這個軟件進行設(shè)計是中號,他有很多的規(guī)則,如果成員更好地掌握了這些規(guī)則,他能夠使用起來非常的方便,他并且是功能非常的強大的更好的去運行程序。 我們知道應(yīng)下系統(tǒng)對于一個系統(tǒng)來說是非常的重要的,它可以根據(jù)重新進行實現(xiàn)功能,它通常是欲望算法來實現(xiàn)的。又要能夠讓每個各部件都能更好地實現(xiàn)出什么工程? 2從系統(tǒng)方面分析它可以加上哥哥模塊兒進行組合起來,讓哥哥摸罐進行時間他索要要求的工程,并且它對要求高頻率會紅,夜宵的模塊兒更加的實用。但是對于功能比較強大的模塊兒它也能更好地使用,有利于程序進行設(shè)計和實現(xiàn)。 3這個系統(tǒng)運行的速度是非??斓?,他每秒鐘能時
20、間3000萬。非常的方便與實用它的體積是非常小的,能融合到各個單片機中旭能配合好,單片機更好的去工作。他的工作效率也是非常的高的不能和任何程序,靜靜充足,他的準(zhǔn)確性高,受到了廣大程序員的喜歡。由于它的芯片是非常的小的可以更好的切入到單片機中,去輔助單片機更好的進行工作。 4同步說句在這方面也是非常的重要的他能跟工程同步到這個程序運行起來,這個功能也發(fā)揮著巨大的作用,它同步的效果是非常的高的。有趣的是,在師宗方便它的經(jīng)文確定也是非常的準(zhǔn)的。老婆更好的去采集數(shù)據(jù),這樣把臺積出來的,輸液更好的分析出來,得到結(jié)果然后配合系統(tǒng)去執(zhí)行相關(guān)的木命令把幾個模塊兒更好的整合出來。 2.3 利用硬件描述語言(
21、HDL)的硬件電路設(shè)計方法 硬件兒的編程的語言是非常的重要的,可以通過這一個語言讓硬件兒和硬件進行交流,明白這個硬件發(fā)出了是什么命令,并且配合區(qū)執(zhí)行其他相關(guān)的命令,好比也是,人和人之間的說話,它能更好的去溝通了解人所能表達出來的意思應(yīng)該是家的語言,他也是這樣的,這個軟件所采用的語言是VACdAC于二這種雨呀功能是非常的強大的收到了國代變成舍得,喜歡接下來我介紹這桌描述語言的幾個特點,他們是怎么更好地輔助電路去工作的。 1他的方向二是自上向下的,這樣有利于編程語言的能夠一步一步的進行,實現(xiàn)功能是非常的方便的。 2由于我國制作芯片的廠家是非常的多的,他們所使用的軟件都可以支持這種H直接一次語
22、言,所以這種語言在適應(yīng)很多種軟件,硬件的設(shè)計人員也非常喜歡這種語言,因為他是用都非常的大,并且體積小,更容易切入到單片機中去,能夠更好的企業(yè)設(shè)計,并且更加的合理。店家收到了很大的設(shè)計人員的喜歡。 3這種軟件還能夠更好的進行仿真,通過仿真能知道這些程序?qū)崿F(xiàn)的是什么功能,并且對每個功能進行詳細(xì)的分析。更好地找到錯誤,并且。開發(fā)出來的功能,大大的提高了工作的效率。也降低的硬線使用的頻率。難度使廣大的硬件設(shè)計人員喜歡她也大大的提高了工作的效率這種啊,軟件是非常的好的。 5他的設(shè)計文件是用這種語言編寫的源程序通過這種現(xiàn)象可以看出這種。語言要掛房子是用在哥哥方面。通過用這種程序編程出來,然后發(fā)站出來電
23、路圖,通過這些電路圖可以更好的找到解決的方法,知道什么地方是錯誤的,并且能在很多的時間進行改正出來,收到了過完那的營銷人員咋喜歡這種方式也更加方便。硬件設(shè)計人員去閱讀它,去了解它。一眼就能看的出來,這個程序編程有什么問題,有什么優(yōu)點可以方便去改正。 2.4 VHDL語言的特點 VHDl與安生非常的厲害的,受到了廣大硬件人員的喜歡它的結(jié)構(gòu)非常的嚴(yán)謹(jǐn),操作起來也非常的簡單,所以受到了硬件人員的喜歡,接下來我解詳細(xì)的介紹它的急個特點,他是怎么更好地輔助硬件系統(tǒng)進行工作的,她不要和其他的硬件語言一樣。他大范圍也是非常大的功能也是非常的大的,超過了其他軟件的編程語言,他比Java更佳的簡單,比C語言
24、更加的強大,所以很多的硬件設(shè)計人員喜歡用它。在這個編程的語言中,他還可以創(chuàng)造出來很大的系統(tǒng),有些事在變成函數(shù)的時候我們都知道變成函數(shù)是非常復(fù)雜的,但是用這種語言進行編程式分享的,簡單的他能夠很準(zhǔn),在很短的時間進行月行把自己想要表達的函數(shù)進行表達出來。不用寫這種語言能夠隨時的調(diào)用其他模塊兒的內(nèi)容,他的銜接,都是非常的好的,能與哥哥麼會進行交通和溝流,就向人和人進行語言交流一樣,當(dāng)一個軟件的我被發(fā)射出命令的時候,另一個軟件模塊進行接收,他能更好地讀懂它,是什么的意思,能夠去執(zhí)行這項任務(wù)。所以說他的工程師非常早,強大的受到了很多硬件人員咋喜歡他們,非常喜歡用這種程序語言去進行編程。這種編程語言是相互
25、獨立的,他能更好的和其他的語言進行區(qū)分。不會受到任何變成語言的。干擾能夠更好地掌握編程的準(zhǔn)確性。這種語言的生命周期是非常的長的,她不會隨時對軟件的更新而改變錯誤,他從開發(fā)到現(xiàn)在已經(jīng)有了80年的歷史,在這個歷史的演變的過程中,經(jīng)過不斷的開發(fā)和演變,他慢慢的成長起來,受到了廣大程序人員的喜歡。。 2.5 Quartus Ⅱ概述及其設(shè)計流程 這種軟件是非常高智能的,它能夠?qū)D形以及視頻進行方進行演示,并且把所有的程序。進行仿真出來很好的發(fā)現(xiàn)出什么地方出現(xiàn)問題,并且它出它運行的速度是非常的快的使用的街面也是非常的簡單的適用于初學(xué)者的使用。 這種軟件是由德國科學(xué)家西門子洛夫斯基研發(fā)出來的,他剛開始
26、研發(fā)這款軟件的時候,就是為了解決編程的問題,在他不斷的努力進行研發(fā)的過程中,終于研發(fā)出來了,這款軟件這種國產(chǎn)軟件的工廠是非常的強大的,受到了廣大人們的喜愛。并且這種軟件的設(shè)計邏輯已設(shè)計環(huán)境都是非常簡單的,并且工程非常的強大,能夠使使用者一眼就能看的出來他具有什么作用,能夠讓使用者更好地進行操作。并加他運行的環(huán)境可以支持多種環(huán)境,避免了單一的環(huán)境給程序員帶來的煩惱。他的編程的能力也是非常的大的,通過編程,它可以運行出來程序所要顯示的功能大大的提高了調(diào)試的能力,并且支持很多的插件兒直接插墊是用來干什么的,這些插件兒主要的增加了軟件的功能,比如畫圖仿真或者是語言或者是視頻這種功能都是非常的氣。非常的
27、強大的,受到了硬件兒變成語言的喜歡,所以這種軟件是越來越流行的。 2接下來我就想起咋去設(shè)計這款軟件怎么進行設(shè)計的流程,怎么去運營它,首先要在這個軟件上建立新的工程,你把這個工程建立好了就跟把自己要建立的項目進行合理的去命運了,給自己的項目起一個名字,這個名字命名的時候一定要以英文字母去開頭,因為這款軟件是y。是外國人進行設(shè)計的,一定要遵循這種命名的方法,等我們建立了這個。工程之后就應(yīng)該選擇自己所需要的模塊兒,在這個軟件中他的魔罐是非常的多的,咱們使用起來也非常的簡單和方便。根據(jù)子,我們的需要進行選擇模塊兒,并且知道每個模塊兒之家。有什么作用的充分的利用他們的作用進行變成這樣,能夠更好的去分析
28、和發(fā)現(xiàn)變成中出現(xiàn)的錯誤能夠更好地改正出來,當(dāng)我們運行的過程中就進行編譯,編譯出是不是他們有錯誤,是不是能夠正常的進行編程,編程也是非常的重要的,通過編程我們能知道我們所。說做創(chuàng)的程序是不是能夠正常的演示出來,如果能演示出來,我們就能夠發(fā)現(xiàn)我們做出來的程序所要表達的功能是不是和我們所要表達的功能是不是一樣及時的發(fā)現(xiàn)問題并能更好的及時的去解決問題,這樣是非常的好的。仿真的時候一定要知道網(wǎng)絡(luò)是不是正常的連接,如果網(wǎng)絡(luò)不能正常的了。了解就需要及時的改正仿真,所以說是非常的重要的,一定要記住自己文件的擴展名要合理的運用這種擴展并如果擴展名錯誤了這種仿真也不能夠更好的防震出來,他們會出現(xiàn)很多的錯誤。如果仿
29、真的時候出現(xiàn)了錯誤,這個軟件會出現(xiàn)很多的代碼,他說他能夠告訴你。是什么地方出現(xiàn)錯誤,他能方便的,告訴你什么地方出現(xiàn)了錯誤之后你能更好地發(fā)現(xiàn)問題更好的去解決問題。 第三章 系統(tǒng)總體設(shè)計 系統(tǒng)總體設(shè)計框圖如圖3.1所示。此設(shè)計由計算部分、存儲部分、顯示部分和輸入部分組成。 圖3.1 計算器的系統(tǒng)組成框圖 3.1 計算器的計算部分 接下來我們就分些這個計算機也得計算的不穩(wěn),他是怎么通過計算的方式進行計算的,他是一般是通過八杯或者四杯的20斤是進行計算的我們都很熟悉這種語言,并
30、且用這種VHDl語言進行把這種程序更二的解決出來更好的預(yù)算裝出來具體的算法,我們上面都跟網(wǎng)的。據(jù)介紹了,他不能進。進行人也數(shù)的除法,但是他能夠更好的進行任意數(shù)的加法,減法,這都是沒有任何問題的,他能更好地進行繼續(xù)計算,所以工程是非常的強大的。 3.2 計算器的存儲部分 我們都知道計算器的存儲不分是非常的重要的,他主要有三個存儲蓄業(yè)去實現(xiàn)它計算的工程。在做Java的時候,他使用的是內(nèi)部累加器侄兒個累加器能夠更好的進行加法的運算,輸出寄存器也是能夠更好地去存儲相關(guān)的敘述句,將這些數(shù)據(jù)進行更好的及存儲能夠更好的進行運算。結(jié)果在實際也是非常的重要的可以把結(jié)果暫存器進行合理的運用起來,讓上面相加的結(jié)
31、果進行存著,然后再進行的加減乘除,這樣都是非常的好的,非常的快的。 3.3 計算器的顯示部分 我們都知道計算出來的結(jié)果,一定要顯示在屏幕上,我們用的屏幕是Fede的屏幕,這種屏幕功能是非常的強大的,能夠非常更好的顯示圖形以及聲音的制作他需要的是BCD碼,這種BCD嗎?是非常的好的,能夠把自己的編譯的程序在這兒款軟件中更好的實踐,他是通過高低電平去控制數(shù)碼管兒的陰陽兩極。能夠更好的分析數(shù)字進行加減乘除方便,運算編程的程序,也是非常的高的,所以受到了廣大程序人員的喜歡。七段譯碼器的基本結(jié)構(gòu)如圖3.2所示。 圖3.2 七段譯碼器的結(jié)構(gòu) 通過查閱大量的數(shù)據(jù)我
32、們可以得出以下的代碼,并且能夠更好的去實現(xiàn)功能,WITH indata SELECT outdata<="0111111"WHEN"0000", --0的顯示; "0000110"WHEN"0001", --1的顯示; "1011011"WHEN"0010", --2的顯示; "1001111"WHEN"0011", --3的顯示; "1100110"WHEN"0100", --4的顯示; "1101101"WHEN"0101",
33、--5的顯示; "1111101"WHEN"0110", --6的顯示; "0000111"WHEN"0111", --7的顯示; "1111111"WHEN"1000", --8的顯示; "1101111"WHEN"1001", --9的顯示; "0000000"WHEN OTHERS; --其它的輸入按鍵均不顯示。 計算器顯示部分的設(shè)計和實現(xiàn),實際上就是七段譯碼器的設(shè)計和實現(xiàn),三個七段譯碼器分別顯示的是個位、十位和百位。輸入第一個數(shù)字后至再一
34、次按下數(shù)字按鍵輸入第二個數(shù)字前,三個七段譯碼器顯示的都是第一個數(shù)字。當(dāng)開始輸入第二個數(shù)字的時候顯示第二個數(shù)字,再次按下運算按鍵到輸入第三個數(shù)字前,顯示的是前兩個數(shù)字的運算結(jié)果,以此類推,當(dāng)最后按下等號鍵的時候,顯示最終的運算結(jié)果。 3.4 計算器的輸入部分 在我們很小的時候就已經(jīng)接觸了計算器了,我們都知道計算器上的數(shù)字的一般都是都是10個數(shù)字,通過這十個數(shù)字不斷的阻隔進行累加或者累,除了都能可以計算如何我們想要的結(jié)果通過我們?nèi)藶榈乃枷肴タ刂频?,他?yīng)該怎么去進行計算,并延最終的。結(jié)果會顯示到我們想要的屏幕上,具體的代碼就是。 PROCESS(inclk,reset)
35、 BEGIN IF reset='1'THEN --異步復(fù)位信號為高電平的時候 outnum<="0000"; --把“0000”賦值給數(shù)字的輸出端口 ELSIF inclk'EVENT AND inclk='1'THEN CASE innum IS WHEN"0000000001"=>outnum<="0000";outflag<='1'; --按下一個鍵表示輸入為0 WHEN"000000001
36、0"=>outnum<="0001";outflag<='1'; --按下第二個鍵表示輸入為1 WHEN"0000000100"=>outnum<="0010";outflag<='1'; --按下第三個鍵表示輸入為2 WHEN"0000001000"=>outnum<="0011";outflag<='1'; --按下第四個鍵表示輸入為3 WHEN"0000010000"=>outnum<="0100";outflag<='1';
37、 --按下第五個鍵表示輸入為4 WHEN"0000100000"=>outnum<="0101";outflag<='1'; --按下第六個鍵表示輸入為5 WHEN"0001000000"=>outnum<="0110";outflag<='1'; --按下第七個鍵表示輸入為6 WHEN"0010000000"=>outnum<="0111";outflag<='1'; --按下第八個鍵表示輸入為7 WHEN"0100000000"=>outnum<="1000";outflag<='1';
38、 --按下第九個鍵表示輸入為8 WHEN"1000000000"=>outnum<="1001";outflag<='1'; --按下第十個鍵表示輸入為9 WHEN OTHERS=>outnum<=outnum;outflag<='0'; --不按鍵時保持 END CASE; END IF; END PROCESS; 我們都知道,在這次設(shè)計中,程序是非常的重要的我們就只應(yīng)該讓他怎么去判斷怎么輸入我們想要的時候最一般都是零到九這幾個數(shù)字,我們可以通過高低電平需要更好的去控制,并且怎么進行下降,成熟后也應(yīng)該用高級電瓶騎更
39、好的控制,這樣才能更好的去實現(xiàn)這個電路這個程序的功能的實現(xiàn),所以。這個任務(wù)是非常的艱巨的我們應(yīng)該詳細(xì)的去分析和了解。輸入和輸出之間的關(guān)系。 第四章 計算器的VHDL設(shè)計 4.1加法器的設(shè)計與仿真 我們都知道,同學(xué)已經(jīng)設(shè)計好了,就應(yīng)該還這樣拖過好深的形式能夠更好的分析如何,這個程序是什么地方發(fā)生了錯誤,并且能夠及時的讓程序員是及時的改正出來。本文設(shè)計的這個預(yù)算系行他就是能實現(xiàn)加法的運籌,并且能夠讓很多時候進行解相加,相加之后能夠更多的顯示在屏幕上,并且這個怨氣的。運行的速度是非常的快的能夠占有很多資源,本文所涉及的環(huán)節(jié)也是非常的少的非常的簡單和職別嗯,
40、能讓很多的人能夠看明白這件事情是怎么運行的。我通過了改革,還和改正啊,提高了運算速率的效率,并且占有的資源是非常的少的,能夠更好的提高運輸運算的速度能夠很快的讓程序運行起來。這個效果是非常的好的,所以這個設(shè)計是非常的成功的。接下來我就要詳細(xì)地介紹這個家法機械的原理是什么原理,他就是加數(shù)和被加數(shù)啊,要相加,然后并且顯示出來的結(jié)果,運算到我們所需要的屏幕上能夠讓使用過的客戶更好地知道他的加法的結(jié)果是多少,只要更好的去分析了加法的運算的過程能夠更好的讓我們把基礎(chǔ)。如果報道時加的應(yīng)用過程中用去非常的好。加法器的原理框圖如圖4.1所示。 圖4.1 加法器的原理框圖 接下來,讓我詳細(xì)的去分析這個程
41、序運行的過程,他是加數(shù)和被加數(shù)進行相加,并且個位和十位,百位,千位都是相對應(yīng)的他們進行相加之后嗯進行四舍五入的方法進行總結(jié)出來的結(jié)果,并且把結(jié)果。想知道我們所要需要看到的顯示的屏幕上去,這樣更加的直觀而和現(xiàn)實的讓我們了解加法的結(jié)果。詳細(xì)的預(yù)算的程序假,我們論文的目錄。巨體的法陣的效果如何?下圖所示他能夠更好的讓我們分析十六進制和八進制的區(qū)別,他們是金怎么進行運算出來的,通過這種形式能夠讓我們通過仿真的方式進行分析和驗證最重要,我們可以得出仿真的結(jié)果是正確的,我們終于成功的設(shè)計出了加法運算器非常的成功。 圖4.2 加法器仿真16+176=192 4.2減法器的
42、設(shè)計與仿真 上文我們已經(jīng)介紹了加法的運算器的運行的原理。接下來我們就介紹減法的運算器的原理,其實加法的運算器的原理和減法運算器的原理都是相通的,它們都是一樣的,都是通過數(shù)字與數(shù)字進行相減個位和個位小姐十位和十位小姐,千位和千位相間,直接將運算的結(jié)構(gòu)顯示到我們想要。這是非常的簡單的也是非常的靠譜的,具體的流程圖,原理圖,如下圖所示。 圖4.3 四位全減器的原理框圖 圖4.4 減法器仿真15-9=6 4.3乘法器的設(shè)計與仿真 乘法的運算器是非常的難以解決的他所需要的步驟也是非常的多的,他需要左移一位右移一位通過移位的方式去實現(xiàn)相關(guān)的單位的運算這種原理是非常高度,并而且在我我設(shè)
43、計的時候出現(xiàn)而來很多的問題,在我設(shè)計的過程中遇到了很多的問題,并且進行對問題的總結(jié),最終得出了乘法運算器的原理的框圖如圖所示。 圖4.5 乘法器的原理框圖 圖4.6 乘法器仿真 13*10=130 4.4 除法器的設(shè)計與仿真 除法的運算器是非常的難以解決的他所需要的步驟也是非常的多的,他需要左移一位右移一位通過移位的方式去實現(xiàn)相關(guān)的單位的運算這種原理是非常高度,并而且在我我設(shè)計的時候出現(xiàn)而來很多的問題,在我設(shè)計的過程中遇到了很多的問題,并且進行對問題的總結(jié),最終得出了乘法運算器的原理的框圖如圖所示。 圖4.7 除法器的原理框圖 通過我上我們上面知道了
44、,除法運算器的工作原理,通過這樣我們能夠更好的去分析和驗證,反正他們并且對我們驗證的仿真結(jié)果進行了實力的驗證,發(fā)現(xiàn)沒有任何的問題,他是非常的正確的,所以這次的實驗是非常的成功的。最低的,仿真的結(jié)果如下圖所示。 圖4.8 除法器仿真 148÷13=11……5,22÷13=1……9 第5章 結(jié)束語 通過這次論文的設(shè)計和研究,我從剛開始是不知道怎么去做,我剛開始做這個題目的時候頭是暈暈的慢慢的通過我問同學(xué)問老師慢慢的有了一點的思路,知道自己應(yīng)該怎么去做。首先我通過在網(wǎng)絡(luò)搜索的過程中找到了我的論文設(shè)計的基本的框架,然后在一點一點的進行摸索,再通過在網(wǎng)絡(luò)上查閱大量的資料,進
45、行豐富框架里邊的內(nèi)容,有不懂得再進行通過問同學(xué)和老師的方式進行找到解決的方案,最終我成功的完成了我的論文的設(shè)計,當(dāng)我真正的完成這個論文我真正感覺到了人生中什么是成功,我只能對我的老師和同學(xué)說一句話,真的很感謝你們,我也非常感謝我的導(dǎo)師是他在我的背后默默的支持,再給我打進鼓勵我才能把這個論文設(shè)計做了出來。從做這個論文設(shè)計的過程中我經(jīng)歷了很多的困難。我真正的認(rèn)識的基礎(chǔ)知識是非常的重要的,我們必須應(yīng)該把自己的理論融合到實踐的過程中去,這樣才能使實現(xiàn)和理論更好的去結(jié)合,才能更好的把自己的基礎(chǔ)知識打牢。 通過我這一次能夠順利地完成論文,我非常要感謝的一個人,是我的導(dǎo)師。在這個論文的設(shè)計的過程中,是他耐
46、心的為我講解。在我不懂的時候也是他在為我講解。他沒有任何的反感對我非常細(xì)心的給我講解,我應(yīng)該怎么去做。與此同時,我還應(yīng)該感謝我們學(xué)院的各位領(lǐng)導(dǎo),是他們在我的大學(xué)四年對我的無微不至的關(guān)懷,我才能有今天的成就。非常的感謝他們,也是,他們給了我這一次難得的機會,讓我真正的踏入了社會,真正的用自己所學(xué)的理論,根據(jù)自己大學(xué)四年所學(xué)的理論知識完成了一篇具有理論意義的學(xué)術(shù)論文。在其中的過程中,我也學(xué)會了很多的事情,面對困難,我不應(yīng)該退縮,應(yīng)該勇往直前,因為一旦退出,就注定失敗,只有堅持不懈的去努力,才能夠成功。 參考文獻 [1]崔葛瑾,沈利芳,李偉民.基于FPGA
47、的數(shù)字電路系統(tǒng)設(shè)計[M].西安:西安電子科技大學(xué)出版社,2008年. [2]王彥.基于FPGA的工程設(shè)計與應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2007年. [3]黃智偉.FPGA系統(tǒng)設(shè)計與實踐[M].北京:電子工業(yè)出版社,2005年. [3]江思敏.VHDL數(shù)字電路及系統(tǒng)設(shè)計[M].北京:機械工業(yè)出版社,2006年. [5]盧毅,賴杰.VHDL與數(shù)字電路設(shè)計[M].北京:北京科學(xué)出版社,2001年. [6]潘松,黃繼業(yè).EDA技術(shù)實用教程[M].第二版.北京:科學(xué)出版社,2005年. [7]徐志軍,徐光輝.CPLD/FPGA的開發(fā)與應(yīng)用[M].北京:電子工業(yè)出版社,2002年
48、. [8]陳育人.8 位計算器的指令系統(tǒng)與硬件結(jié)構(gòu)[J].微電子技術(shù),2000年,第28卷第3期. [9]王冬冬.基于FPGA的浮點運算器設(shè)計.萬方數(shù)據(jù), HTTP://d.g.WANGFANGDATA.com.CN/Thesis_Y1548067.ASPX. [10]王樹國.科學(xué)計算器的大規(guī)模集成電路芯片設(shè)計.萬方數(shù)據(jù), HTTP://d.g.WANGFANGDATA.com.CN/Thesis_Y722644.ASPX. 附 錄 附錄A:源程序 4位二進制并行進位加法器的源程序ADDER4B.VHD如下: LIBRARY IEEE;
49、 USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ADDER4B IS PORT(ci:IN STD_LOGIC; a:IN STD_LOGIC_VECTOR(3 DOWNTO 0); b:IN STD_LOGIC_VECTOR(3 DOWNTO 0); s:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
50、 co:OUT STD_LOGIC ); END ADDER4B; ARCHITECTURE behave OF ADDER4B IS SIGNAL SINT:STD_LOGIC_VECTOR(4 DOWNTO 0); --類似于在芯片 --部定義的一個數(shù)據(jù) SIGNAL aa,bb:STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN aa<='0' & a; --拓展位數(shù),使其成為最高位 bb<='0' & b;
51、 SINT<=aa+bb+ci; --相加 s<=SINT(3 DOWNTO 0); co<=SINT(4); --最高位為輸出進位位 END behave; 頂層模塊:8位二進制并行進位加法器的部分程序ADDER4B.VHD如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ADDER8B IS PORT(ci:IN STD
52、_LOGIC; a:IN STD_LOGIC_VECTOR(7 DOWNTO 0); b:IN STD_LOGIC_VECTOR(7 DOWNTO 0); s:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); co:OUT STD_LOGIC ); END ADDER8B; ARCHITECTURE a OF ADDER8B IS COMPONENT A
53、DDER4B --引用4位二進制并行進位加法器 PORT(ci:IN STD_LOGIC; a:IN STD_LOGIC_VECTOR(3 DOWNTO 0); b:IN STD_LOGIC_VECTOR(3 DOWNTO 0); s:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); co:OUT STD_LOGIC ); END COMPONENT; SIGNAL CARRY_OUT:STD_LOGIC; BEGIN U1:ADDER
54、4B PORT MAP(ci=>ci,a=>a(3 DOWNTO 0),b=>b(3 DOWNTO 0),s=>s(3 DOWNTO 0),co=>CARRY_OUT); U2:ADDER4B PORT MAP(ci=>CARRY_OUT,a=>a(7 DOWNTO 4),b=>b(7 DOWNTO 4),s=>s(7 DOWNTO 4),co=>co); END a; 4位二進制并行進位減法器的源程序suber.VHD如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGI
55、C_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY suber IS PORT(a:IN STD_LOGIC_VECTOR(3 DOWNTO 0); b:IN STD_LOGIC_VECTOR(3 DOWNTO 0); ci:IN STD_LOGIC; s:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
56、co:OUT STD_LOGIC ); END suber; ARCHITECTURE behave OF suber IS COMPONENT adder IS --引用加法器的模塊 PORT(a:IN STD_LOGIC; b:IN STD_LOGIC; ci:IN STD_LOGIC; s:OUT STD_LOGIC; co:OUT STD_LOGIC ); END COMPONENT; SIGNAL btem:STD_LOGIC_VECTOR(3
57、 DOWNTO 0); --減數(shù)寄存 SIGNAL ctem:STD_LOGIC_VECTOR(4 DOWNTO 0); --進位寄存 SIGNAL stem:STD_LOGIC_VECTOR(3 DOWNTO 0); --結(jié)果寄存 BEGIN btem(3 DOWNTO 0)<=NOT b (3 DOWNTO 0); --先把減數(shù)求反 ctem(0)<=NOT ci; --輸出進位也求反,從而對減數(shù)求補碼 g1:FOR i IN 0 TO 3 GENERATE --連用
58、4位全加器 add:adder PORT MAP (a(i),btem(i),ctem(i),stem(i),ctem(i+1)); END GENERATE; s(3 downto 0)<=stem(3 downto 0); --結(jié)果輸出 co<=NOT ctem(4); --求反輸出進位 END behave; 8位二進制并行進位減法器的原理圖: 乘法器的源程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; U
59、SE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY mul IS PORT ( a,b : IN STD_LOGIC_VECTOR(3 DOWNTO 0); y : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );END mul; ARCHITECTURE arch OF mul IS BEGIN y(7 DOWNTO 0) <= a(3 DOWNTO 0)*b(3 DOWNTO 0); END arch; 除
60、法器的源程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY diver IS PORT(a:IN STD_LOGIC_VECTOR(7 DOWNTO 0); b:IN STD_LOGIC_VECTOR(3 DOWNTO 0); clk:IN STD_LOGIC;
61、 str:IN STD_LOGIC; s:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); y:OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); END ; ARCHITECTURE behave OF diver IS COMPONENT suber IS --引用減法器 PORT(a:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
62、 b:IN STD_LOGIC_VECTOR(3 DOWNTO 0); ci:IN STD_LOGIC; s:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); co:OUT STD_LOGIC ); END COMPONENT; TYPE state_type IS (start,one,two,three,eror); --狀態(tài)定義 SIGNAL state:state_type; SIGNAL ain:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL bin:STD_LOGIC_VEC
63、TOR(3 DOWNTO 0); SIGNAL atem:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL btem:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL stem:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL citem:STD_LOGIC; SIGNAL cotem:std_logic; BEGIN p2:PROCESS(clk) VARIABLE n: INTEGER range 0 to 3; --移位次數(shù)計數(shù)值 BEGIN IF clk'EVENT AND
64、clk='1' THEN CASE state IS WHEN start=> --開始狀態(tài) IF str='1' THEN state<=one; atem(3 DOWNTO 0)<=a(7 DOWNTO 4); --把高4位放到減法器被減數(shù)端 btem(3 DOWNTO 0)<=b(3 DOWNTO 0); --把除數(shù)放到減法器減數(shù)端 ain(7 DOWNTO 0)<=a(7 DOWNTO 0); --寄存被除數(shù) bin(3 DOWNTO 0
65、)<=b(3 DOWNTO 0); --寄存除數(shù) END IF; WHEN one=> --第一次移位 IF cotem='0' THEN state<=eror; ELSE ain(3 downto 1)<=ain(2 downto 0); --被除數(shù)做移位 ain(0)<=not cotem; --在最低位接受該位商值 atem(3 downto 0)<=ain(6 downto 3); --除數(shù)寄存器高4位輸
66、到減法器,作為被減數(shù) state<=two; END IF; WHEN two=> --第二次移位 IF n=2 THEN state<=three; n:=0; ELSE state<=two; n:=n+1; END IF; IF cotem='0' THEN atem(3 DOWNTO 1)<=stem(2 DOWNTO 0); ELSE atem(3 DOWNTO 1)<=atem(2 DOWNTO 0); END IF; ain(3 DOWNTO 1)<=ain(2 DOWNTO 0); ain(0)<=NOT cotem; atem(0)<=ain(3); WHEN three=> --第三次移位 s(3
- 溫馨提示:
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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 國際商法第五講國際貨物買賣法課件
- 金牌客服投訴調(diào)解員課件
- 過敏性紫癜病案討論課件
- 《英語》(新標(biāo)準(zhǔn))(供三年級起始用)第四模塊第九模塊第二單元Samhadchocolatebiscuits
- 1原子吸收光譜分析A
- 幼兒園區(qū)角環(huán)境的創(chuàng)設(shè)1
- 數(shù)據(jù)挖掘技術(shù)十課Bayes分類方法
- 精神科進修總結(jié)
- 最新隧道施工技術(shù)指南培訓(xùn)課件
- HAPPYBIRTHDAY課件之一
- 免疫組化的原理與操作
- 詩海拾貝與詩同行課件
- 落花生徐書婷
- 第5課_“和同為一家”PPT(教育精品)
- 電力網(wǎng)無功補償節(jié)能技術(shù)改造及維護