




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、基于FPGA的MCS-51單片機(jī)的算術(shù)運(yùn)算模塊設(shè)計(jì)摘要MCS-51是Intel公司生產(chǎn)的其中一個(gè)單片機(jī)系列的名稱。該系列單片機(jī)誕生于1980年,功能強(qiáng)大、應(yīng)用方便,已成為單片機(jī)領(lǐng)域的實(shí)際標(biāo)準(zhǔn)。MCS-51單片機(jī)小巧靈活,成本低,易于產(chǎn)品化,方便地組成各種智能測試設(shè)備及各種智能儀器儀表。其指令系統(tǒng)有各種控制功能用指令,很容易構(gòu)成各種規(guī)模的應(yīng)用系統(tǒng),易擴(kuò)展,可以很方便地實(shí)現(xiàn)多機(jī)和分布式控制。而VHDL語言則是應(yīng)用廣泛的一種硬件描述語言,目前越來越多的廠商、科研機(jī)構(gòu)在使用VHDL語言進(jìn)行系統(tǒng)開發(fā)。本文將采用具有學(xué)習(xí)能力強(qiáng)、兼容性能好及采用并行處理優(yōu)點(diǎn)等的FPGA/CPLD為載體,應(yīng)用靈活高效的VHD
2、L語言對(duì)MCS51兼容單片機(jī)進(jìn)行編程、以EDA開發(fā)軟件Quartus II 為設(shè)計(jì)平臺(tái),經(jīng)過編譯、調(diào)試、修改、仿真測試,實(shí)現(xiàn)MCS-51單片機(jī)的算術(shù)模塊功能。 關(guān)鍵詞:MCS-51單片機(jī),VHDL,EDA,F(xiàn)PGAAbstractMCS-51 is an among those that the Intel company produce list slice the name of the machine series.Should series list slice the machine was born in 1980, the function be strong, applicat
3、ion convenience, have become list slice machine realm of actual standard.The MCS-51 list slice the machine be cleverly made and vivid, the cost be low, be easy to a product to turn and expediently constitute various intelligence to measure, equipments and various intelligence instrument appearance.I
4、ts instruction system have various control the function use instruction, very easy constitute various scale of application system, easy expand, can very expediently realization many machine and distribute type control.But VHDL language then application extensive of the description language of a kind
5、 of hardware, currently more and more of manufacturer, research organization at usage the VHDL language carry on system development.This text has study ability the adoption strong, and permit function good and adoption proceed together processing advantage etc. of FPGA/CPLD in order to carry a body,
6、 application vivid efficiently of VHDL language to MCS 51 and permit list slice the machine carry on plait distance, with EDA development software Quartus II is design terrace, has been editted and translate, adjusted to try, modification, imitate true test, realization MCS-51 list slice the arithme
7、tic mold of the machine piece function. Keyword:The machine, VHDL, EDA of the MCS-51 list slice, FPGA目錄第一章 緒論11.1 課程設(shè)計(jì)背景知識(shí)11.1.1 單片機(jī)的概述11.1.2 單片機(jī)的發(fā)展歷程11.1.3 單片機(jī)的發(fā)展趨勢21.1.4 單片機(jī)的特點(diǎn)及應(yīng)用21.1.5 單片機(jī)面臨的問題31.1.6 單片機(jī)與FPGA/CPLD的對(duì)比41.1.7 EDA技術(shù)設(shè)計(jì)方法系統(tǒng)級(jí)設(shè)計(jì)5第二章 單片機(jī)的結(jié)構(gòu)原理82.1 單片機(jī)的內(nèi)部模塊功能82.2 MCS-51單片機(jī)的指令系統(tǒng)的實(shí)現(xiàn)原理11第三章 AL
8、U的原理分析與實(shí)現(xiàn)工具123.1 ALU的原理分析123.2 用FPGA實(shí)現(xiàn)ALU的設(shè)計(jì)123.3 ALU的實(shí)現(xiàn)工具VHDL語言13第四章 MCS-51單片機(jī)的算術(shù)模塊設(shè)計(jì)144.1 加/減法器設(shè)計(jì)154.2 乘法器設(shè)計(jì)194.3 除法器設(shè)計(jì)214.4 十進(jìn)制調(diào)整器設(shè)計(jì)24第五章 總結(jié)與展望28致謝29參考文獻(xiàn)30III 基于FPGA的MCS-51單片機(jī)的算術(shù)運(yùn)算模塊設(shè)計(jì)第一章 緒論1.1 課程設(shè)計(jì)背景知識(shí)1.1.1 單片機(jī)的概述單片機(jī)是大規(guī)模集成電路技術(shù)發(fā)展的產(chǎn)物,它將中央處理器(CPU)、存儲(chǔ)器(ROM/RAM)、輸入輸出接口、定時(shí)器/計(jì)數(shù)器等主要計(jì)算機(jī)部件集成在一片芯片上,因此單片機(jī)被稱
9、為單片微型計(jì)算機(jī)(Single Chip Microcomputer)。目前單片機(jī)是計(jì)算機(jī)家族中重要的一員。單片機(jī)配上適當(dāng)?shù)耐鈬O(shè)備和軟件,便可構(gòu)成一個(gè)單片機(jī)應(yīng)用系統(tǒng)。單片機(jī)具有功能強(qiáng)、體積小、價(jià)格低和抗干擾能力強(qiáng)等特點(diǎn),被廣泛應(yīng)用于工農(nóng)業(yè)生產(chǎn)、國防、科研及日常生活等各個(gè)領(lǐng)域。1.1.2 單片機(jī)的發(fā)展歷程單片機(jī)1974年,美國Fairchild公司研制出世界上第一臺(tái)由兩塊集成電路芯片組成的單片微型計(jì)算機(jī)F8,從此單片機(jī)開始迅速發(fā)展。從4位機(jī)和8位機(jī)到現(xiàn)在的16位機(jī)和32位機(jī),單片機(jī)的功能越來越強(qiáng)大,應(yīng)用范圍也越來越廣泛。單片機(jī)的發(fā)展歷程通??梢苑譃橐韵聨讉€(gè)階段:(1) 第一代單片機(jī)(19741
10、976年)這是單片機(jī)發(fā)展的起步階段。在這個(gè)時(shí)期生產(chǎn)的單片機(jī)屬4位機(jī)型,集成度低。典型的代表產(chǎn)品有Intel公司的4004四位單片機(jī),主要應(yīng)用于家用電器領(lǐng)域中。(2) 第二代單片機(jī)(19761978年)這是單片機(jī)的發(fā)展階段。這個(gè)時(shí)代生產(chǎn)的單片機(jī)屬低、中檔8位機(jī)型,片內(nèi)集成有CPU、輸入輸出接口、定時(shí)器和ROM等功能部件,是8位機(jī)的早期產(chǎn)品,存儲(chǔ)器容量小,性能低,目前已很少應(yīng)用。典型的產(chǎn)品有Intel公司的MCS-48系列單片機(jī)。(3) 第三代單片機(jī)(19791982年)這一代單片機(jī)的存儲(chǔ)容量和尋址范圍都有擴(kuò)大,而且增加了中斷源、并行I/O和定時(shí)器/計(jì)數(shù)器個(gè)數(shù),集成了全雙工串行通信接口電路。代表產(chǎn)
11、品有Intel公司的MCS-51系列機(jī)。(4) 第四代單片機(jī)(1982年以后)這是16位單片機(jī)和8位高性能單片機(jī)并行發(fā)展的時(shí)代。16位單片機(jī)的特點(diǎn)是工藝先進(jìn)、集成度高和內(nèi)部功能強(qiáng),代表產(chǎn)品有Intel公司的MCS-96系列等。1.1.3 單片機(jī)的發(fā)展趨勢隨著大規(guī)模集成電路及超大規(guī)模集成電路的發(fā)展,單片機(jī)將向著更深層次發(fā)展,主要體現(xiàn)在以下幾個(gè)方面:(1) 高集成度一片單片機(jī)內(nèi)部集成的ROM/RAM容量增大,增加了電閃存儲(chǔ)器,具有掉電保護(hù)功能,并且集成了A/D、D/A轉(zhuǎn)換器、定時(shí)器/計(jì)數(shù)器、系統(tǒng)故障監(jiān)測和DMA電路等。(2) 引腳多功能化,隨著芯片內(nèi)部功能的增強(qiáng)和資源的豐富,一腳多用的設(shè)計(jì)方案日益
12、顯示出其重要地位。(3) 高性能這是單片機(jī)發(fā)展所追求的一個(gè)目標(biāo),更高的性能將會(huì)使單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)變得更加簡單、可靠。(4) 低功耗這將是未來單片機(jī)發(fā)展所追求的一個(gè)目標(biāo),隨著單片機(jī)集成度的不斷提高,由單片機(jī)構(gòu)成的系統(tǒng)體積越來越小,低功耗將是設(shè)計(jì)單片機(jī)產(chǎn)品時(shí)首先考慮的指標(biāo)。1.1.4 單片機(jī)的特點(diǎn)及應(yīng)用1. 單片機(jī)的特點(diǎn):(1) 可靠性高單片機(jī)采用三總線結(jié)構(gòu),抗干擾能力強(qiáng),可靠性高。(2) 功能強(qiáng)單片機(jī)具有判斷和處理能力,可以直接對(duì)I/O口進(jìn)行各種操作(輸入輸出、位操作以及算術(shù)邏輯操作等),運(yùn)算速度高,實(shí)時(shí)控制功能強(qiáng)。(3) 體積小、功耗低 由于單片機(jī)包含了運(yùn)算器等基本功能部件,具有較高的集成度
13、,因此由單片機(jī)組成的應(yīng)用系統(tǒng)結(jié)構(gòu)簡單、體積小、功能全。電源單一,功耗低。(4) 使用方便 由于單片機(jī)內(nèi)部功能強(qiáng),系統(tǒng)擴(kuò)展方便,因此應(yīng)用系統(tǒng)的硬件設(shè)計(jì)非常簡單。(5) 性能價(jià)格比較高,易于產(chǎn)品化 單片機(jī)具有功能強(qiáng)、價(jià)格便宜、體積小、插接件少、安裝調(diào)試簡單等特點(diǎn),使單片機(jī)應(yīng)用系統(tǒng)的性能價(jià)格比較高。同時(shí)單片機(jī)開發(fā)工具很多,這些開發(fā)工具都具有很強(qiáng)的軟硬件調(diào)試功能,使單片機(jī)的應(yīng)用開發(fā)極為方便,大大縮短了產(chǎn)品研制的周期,并使單片機(jī)應(yīng)用系統(tǒng)易于產(chǎn)品化。2. 單片機(jī)的應(yīng)用單片機(jī)的應(yīng)用概括起來,主要有以下幾方面:(1) 單片機(jī)在智能儀表中的應(yīng)用單片機(jī)廣泛地應(yīng)用于各種智能儀器儀表中,簡化了儀器儀表的硬件結(jié)構(gòu),增強(qiáng)
14、了控制功能,提高了測量速度和測量精度。(2) 單片機(jī)在機(jī)電一體化中的應(yīng)用機(jī)電一體化產(chǎn)品集機(jī)械技術(shù)、電子技術(shù)、自動(dòng)化技術(shù)和計(jì)算機(jī)技術(shù)于一身,是機(jī)械工業(yè)發(fā)展的方向。將單片機(jī)應(yīng)用于機(jī)械行業(yè),發(fā)揮它的體積小、可靠性高、功能強(qiáng)和安裝方便等優(yōu)點(diǎn),提高了機(jī)器的自動(dòng)化和智能化程度,促進(jìn)了機(jī)電一體化的發(fā)展。(3) 單片機(jī)在實(shí)時(shí)控制中的應(yīng)用單片機(jī)被廣泛地應(yīng)用于各種實(shí)時(shí)控制系統(tǒng)中。例如對(duì)工業(yè)生產(chǎn)過程中溫度、濕度、流量和壓力等參數(shù)的測量和控制等。(4) 單片機(jī)在分布式測控系統(tǒng)中的應(yīng)用分布式測控系統(tǒng)的主要特點(diǎn)是系統(tǒng)中有多個(gè)處理單元,各自完成特定的任務(wù),可通過網(wǎng)絡(luò)通信相互聯(lián)系、協(xié)調(diào)工作,具有功能強(qiáng)、可靠性高的特點(diǎn)。單片機(jī)
15、可作為一個(gè)處理單元應(yīng)用于分布式測控系統(tǒng)中。(5) 單片機(jī)在工業(yè)過程控制中的應(yīng)用單片機(jī)的I/O口線多,并具有位操作能力,特別適用于工業(yè)過程控制。(6) 單片機(jī)在日常生活中的應(yīng)用由于單片機(jī)價(jià)格低廉、體積小、邏輯判斷及控制功能強(qiáng),因此被廣泛地應(yīng)用于日常生活的各個(gè)方面,如洗衣機(jī)、電冰箱、電子玩具、立體聲音響和家用防盜系統(tǒng)等。1.1.5 單片機(jī)面臨的問題(1)低速由于單片機(jī)的工作方式是通過內(nèi)部的cpu逐條執(zhí)行的軟件指令來完成各種運(yùn)算和邏輯功能的,因而無論多么高的工作時(shí)鐘頻率和多么好的指令時(shí)序方式,在串行指令執(zhí)行方式面前,其工作速度和效率必將大打折扣。因此,單片機(jī)在實(shí)時(shí)仿真、高速工控或高速數(shù)據(jù)采樣等許多領(lǐng)
16、域尤顯力不從心。(2)PC“跑飛”在強(qiáng)干擾或某種偶然的因素下,任何單片機(jī)的程序計(jì)數(shù)器都極可能超出正常的程序流程“跑飛”,事實(shí)證明,無論多么優(yōu)秀的單片機(jī),在強(qiáng)電磁干擾情況下,單片機(jī)都無法保證其仍能正常工作而不進(jìn)入不可挽回的“死機(jī)”狀態(tài)。(3)開發(fā)周期長單片機(jī)是執(zhí)行軟件指令的方式實(shí)現(xiàn)邏輯功能的,不同的單片機(jī)通常具有不同的匯編語言,使得程序的可移植性差,此外,在開發(fā)單片機(jī)的軟件程序中需要隨時(shí)顧及特定的單片機(jī)的應(yīng)簡潔共和外圍設(shè)備接口。所以這一切導(dǎo)致了單片機(jī)應(yīng)用系統(tǒng)開發(fā)效率低,開發(fā)周期時(shí)間長。1.1.6 單片機(jī)與FPGA/CPLD的對(duì)比在傳統(tǒng)的控制系統(tǒng)中,人們常常采用單片機(jī)作為控制核心。但這種方法硬件連
17、線復(fù)雜,可靠性差,且單片機(jī)的端口數(shù)目,內(nèi)部定時(shí)器和中斷源的個(gè)數(shù)都有限,在實(shí)際應(yīng)用中往往需要外加擴(kuò)展芯片,這無疑對(duì)系統(tǒng)的設(shè)計(jì)帶來諸多不便,現(xiàn)在有很多系統(tǒng)采用可編程邏輯器件FPGA/CPLD(現(xiàn)場可編程門陣列/復(fù)雜可編程邏輯器件)作為控制核心,它與傳統(tǒng)設(shè)計(jì)相比較,不僅簡化了接口和控制,提高了系統(tǒng)的整體性能及工作可靠性,也為系統(tǒng)集成創(chuàng)造了條件。下面我們來看單片機(jī)和FPGA/CPLD的對(duì)比:(1)單片機(jī)的學(xué)習(xí)效率較低。單片機(jī)直接面對(duì)硬件,大多數(shù)都使用匯編語言不同廠家生產(chǎn)的單片機(jī)其匯編語言也不同,并且,單片機(jī)編程還與硬件的連接方式有關(guān),而FPGA/CPLD可使用標(biāo)準(zhǔn)硬件描述語言VHDL(Very hig
18、h Speed integrated Circuit Hardware Deseription Language)對(duì)所有型號(hào)的FPGA/CPLD編程。同時(shí),VHDL是一種行為描述語言,可以遠(yuǎn)離硬件編程,打破了軟硬件之間的屏障,使學(xué)習(xí)和設(shè)計(jì)的效率大大提高。(2)單片機(jī)本身的速度相對(duì)FPGA/CPLD來顯得太慢。單片機(jī)是用指令排隊(duì)形式來執(zhí)行指令的,影響了速度的提高。而FPGA/CPLD在實(shí)時(shí)處理時(shí)均為并行工作,速度快。(3)單片機(jī)各引腳的功能是確定的,而FPGA/CPLD可以根據(jù)需要用軟件改變各引腳的功能。與MCS-51單片機(jī)相比FPGA/CPLD的優(yōu)勢是多方面的,以下是他們的優(yōu)點(diǎn)與優(yōu)勢。(1)編
19、程方式簡便、先進(jìn)。FPGA/CPLD產(chǎn)品越來越多地采用了先進(jìn)的在系統(tǒng)配置編程方式。(2)高速。FPGA/CPLD的時(shí)鐘延遲可達(dá)納秒級(jí),結(jié)合其并行工作方式在超高速應(yīng)用領(lǐng)域和實(shí)時(shí)測控方面有非常廣闊的應(yīng)用前景。(3)高可靠性。除了不存在SCM所特有的復(fù)位不可靠與PC可能跑飛等固有缺陷外,F(xiàn)PGA/CPLD的高可靠性還表現(xiàn)在幾乎可將整個(gè)系統(tǒng)下載于同一芯片中,從而大大縮小了體積,易于管理和屏蔽。(4)開發(fā)工具和設(shè)計(jì)語言標(biāo)準(zhǔn)化,開發(fā)周期短。由于開發(fā)工具的通用性,設(shè)計(jì)語言的標(biāo)準(zhǔn)化以及設(shè)計(jì)過程幾乎與所用的FPGA/CPLD器件的硬件結(jié)構(gòu)沒有關(guān)系,使得設(shè)計(jì)成功的各類邏輯功能塊有很好的兼容性和可移植性,它幾乎可用
20、于任何型號(hào)的FPGA/CPLD從而使得片上系統(tǒng)的產(chǎn)品設(shè)計(jì)效率大幅度提高。(5)功能強(qiáng)大,應(yīng)用廣闊。目前FPGA/CPLD可供選擇范圍很大,可根據(jù)不同的應(yīng)用選用不同容量的芯片,利用它們可實(shí)現(xiàn)幾乎任何形式的數(shù)字電路或數(shù)字系統(tǒng)的設(shè)計(jì)。(6)易學(xué)易用,開發(fā)便捷。FPGA/CPLD應(yīng)用的學(xué)習(xí)不需太多的預(yù)備知識(shí),只要具有通常的數(shù)字電路和計(jì)算機(jī)編程基礎(chǔ)知識(shí),就足以在短期內(nèi)掌握基本的設(shè)計(jì)方法和開發(fā)技巧。1.1.7 EDA技術(shù)設(shè)計(jì)方法系統(tǒng)級(jí)設(shè)計(jì)EDA是一種高層次的電子設(shè)計(jì)方法,也即系統(tǒng)級(jí)設(shè)計(jì)方法。高層次設(shè)計(jì)是一種“概念驅(qū)動(dòng)式”設(shè)計(jì),設(shè)計(jì)人員無須通過門級(jí)原理圖描述電路,而是針對(duì)設(shè)計(jì)目標(biāo)進(jìn)行功能描述,由于擺脫了電路
21、細(xì)節(jié)的束縛,設(shè)計(jì)人員可以把精力集中于創(chuàng)造性的方案與概念構(gòu)思上,一旦這些概念構(gòu)思以高層次描述的形式輸入計(jì)算機(jī)后,EDA系統(tǒng)就能以規(guī)則驅(qū)動(dòng)的方式自動(dòng)完成整個(gè)設(shè)計(jì)。這樣,新的概念得以迅速有效的成為產(chǎn)品,大大縮短了產(chǎn)品的研制周期。不僅如此,高層次設(shè)計(jì)只是定義系統(tǒng)的行為特性,可以不涉及實(shí)現(xiàn)工藝,在廠家綜合庫的支持下,利用綜合優(yōu)化工具可以將高層次描述轉(zhuǎn)換成針對(duì)某種工藝優(yōu)化的網(wǎng)表,工藝轉(zhuǎn)化變得輕松容易。具體的設(shè)計(jì)流程如圖1-1所示。系統(tǒng)劃分VHDL代碼或圖形方式輸入編譯器代碼級(jí)功能仿真綜合器適配前時(shí)序仿真適配器適配后仿真模型器件編輯文件適配報(bào)告適配后時(shí)序仿真CPLD/FPGA實(shí)現(xiàn)ASIC實(shí)現(xiàn)廠家綜合庫圖1-
22、1 EDA設(shè)計(jì)流程圖FPGACPLD是一種新興的高密度的可編程邏輯器件,它具有門陣列的高密度和PLD器件的靈活性和易用性,目前已成為一類主要的可編程器件。可編程器件的最大特點(diǎn)是可通過軟件編程對(duì)其器件的結(jié)構(gòu)和工作方式進(jìn)行重構(gòu),能隨時(shí)進(jìn)行設(shè)計(jì)調(diào)整而滿足產(chǎn)品升級(jí)。使得硬件的設(shè)計(jì)可以如軟件設(shè)計(jì)一樣方便快捷,從而改變了傳統(tǒng)數(shù)字系統(tǒng)及用單片機(jī)構(gòu)成的數(shù)字系統(tǒng)的設(shè)計(jì)方法、設(shè)計(jì)過程及設(shè)計(jì)觀念,使電子設(shè)計(jì)的技術(shù)操作和系統(tǒng)構(gòu)成在整體上發(fā)生了質(zhì)的飛躍。采用FPGACPLD可編程器件,可利用計(jì)算機(jī)軟件的方式對(duì)目標(biāo)器件進(jìn)行設(shè)計(jì),而以硬件的形式實(shí)現(xiàn)。既定的系統(tǒng)功能,在設(shè)計(jì)過程中,可根據(jù)需要隨時(shí)改變器件的內(nèi)部邏輯功能和管腳的
23、信號(hào)方式,借助于大規(guī)模集成的FPGACPLD和高效的設(shè)計(jì)軟件,用戶不僅可通過直接對(duì)芯片結(jié)構(gòu)的設(shè)計(jì)實(shí)行多種數(shù)字邏輯系統(tǒng)功能,而且由于管腳定義的靈活性,大大減輕了電路圖設(shè)計(jì)和電路板設(shè)計(jì)的工作量的難度,同時(shí),這種基于可編程芯片的設(shè)計(jì)大大減少了系統(tǒng)芯片的數(shù)量,縮小了系統(tǒng)的體積,提高了系統(tǒng)的可靠性。EDA技術(shù)就是以計(jì)算機(jī)為工具,在EDA軟件平臺(tái)上,對(duì)以硬件描述語言HDL為系統(tǒng)邏輯描述手段,完成的設(shè)計(jì)文件自動(dòng)完成邏輯編譯、邏輯化簡、邏輯綜合及優(yōu)化、邏輯仿真,直至對(duì)特定目標(biāo)芯片的適配編譯、邏輯映射和編程下載等工作。EDA的仿真測試技術(shù)只需要通過計(jì)算機(jī)就能對(duì)所設(shè)計(jì)的電子系統(tǒng)從各種不同層次的系統(tǒng)性能特點(diǎn)完成一系
24、列準(zhǔn)確的測試與仿真操作,大大提高了大規(guī)模系統(tǒng)電子設(shè)計(jì)的自動(dòng)化程度。設(shè)計(jì)者的工作僅限于利用軟件方式,即利用硬件描述語言(如VHDL)來完成對(duì)系統(tǒng)硬件功能的描述,在EDA工具的幫助下就可以得到最后的設(shè)計(jì)結(jié)果,這使得對(duì)整個(gè)硬件系統(tǒng)的設(shè)計(jì)和修改過程如同完成軟件設(shè)計(jì)一樣方便、高效。 第二章 單片機(jī)的結(jié)構(gòu)原理2.1 單片機(jī)的內(nèi)部模塊功能MCS-51的內(nèi)部結(jié)構(gòu)框圖如圖21所示,其內(nèi)部各部分的功能簡述如下:圖2-1單片機(jī)的內(nèi)部結(jié)構(gòu)框圖1運(yùn)算器運(yùn)算器包括算術(shù)邏輯部件ALU、位處理器、累加器A、寄存器B、暫存器、以及程序狀態(tài)寄存器PSW等。該模塊的功能是實(shí)現(xiàn)數(shù)據(jù)的算術(shù)運(yùn)算、邏輯運(yùn)算、位變量處理和數(shù)據(jù)傳送等操作。A
25、LU的功能十分強(qiáng)大,它不僅可以對(duì)8位變量進(jìn)行邏輯“與”、“或”、“非”、“異或”、移位和清零等基本操作,還可以進(jìn)行加、減、乘、除和十進(jìn)制調(diào)整等基本運(yùn)算。ALU還具有一般微機(jī)的ALU所不具備的功能,即位處理操作,它可以對(duì)位(bit)變量進(jìn)行處理,如置位、清零、測試轉(zhuǎn)移以及邏輯“與”、“或”、“非”等操作。由此可見,ALU在算術(shù)運(yùn)算以及控制處理方面的能力是很強(qiáng)的。累加器A是一個(gè)8位的累加器。從功能上看它與一般微機(jī)的累加器相比沒有什么特別之處,但需要說明的是A的進(jìn)位標(biāo)志Cy是特殊的,因?yàn)樗瑫r(shí)又是位處理器的一位累加器。寄存器B是為執(zhí)行乘法和除法操作設(shè)置的,在不執(zhí)行乘、除法操作的一般情況下,可以把它當(dāng)
26、一個(gè)普通的寄存器使用。程序狀態(tài)寄存器PSW,是一個(gè)8位的可讀寫寄存器,它的不同位包含了程序狀態(tài)的不同信息。其中進(jìn)位標(biāo)志位Cy輔助進(jìn)位標(biāo)志位AC)和OV在執(zhí)行算術(shù)和邏輯指令時(shí),可以由硬件或者軟件(Cy可以有軟件置位或清零)改變,因此運(yùn)算器應(yīng)該有上述三位狀態(tài)改變的輸出信息。本課題設(shè)計(jì)的運(yùn)算器將完全以組合邏輯電路的形式出現(xiàn),其內(nèi)部將不包括累加器A、寄存器B、以及程序狀態(tài)字寄存器PSW。它只是根據(jù)所接收的指令,將來自累加器、程序或者數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)進(jìn)行相應(yīng)的算術(shù)或者邏輯運(yùn)算,然后將運(yùn)算結(jié)果以及程序狀態(tài)字寄存器PSW的相關(guān)位以結(jié)果的形式輸出。2控制器控制部件是單片機(jī)的中樞神經(jīng),以主振頻率為基準(zhǔn),控制器控
27、制CPU的時(shí)序,對(duì)指令進(jìn)行譯碼,然后發(fā)出各種控制信號(hào),將各個(gè)硬件環(huán)節(jié)組織在一起。控制器電路包括程序計(jì)數(shù)器PC、PC加1寄存器、指令寄存器、指令譯碼器、數(shù)據(jù)指針DPTR、堆棧指針SP、緩沖器以及定時(shí)與控制電路等。控制電路完成指揮控制工作,協(xié)調(diào)單片機(jī)各部分正常工作。程序計(jì)數(shù)器PC用來存放即將要執(zhí)行的指令地址,它可以完成64K的外部存儲(chǔ)器尋址,執(zhí)行指令時(shí),PC內(nèi)容的高8位經(jīng)P2口輸出,低8位經(jīng)P0口輸出。數(shù)據(jù)指針DPTR為16位數(shù)據(jù)指針,它可以對(duì)64K的外部數(shù)據(jù)存儲(chǔ)器和I/O口進(jìn)行尋址,它的低8位為DPL(地址82H),高8位為DPH(地址為83H)。堆棧指針SP在片內(nèi)RAM(128字節(jié))中開辟棧區(qū)
28、,并隨時(shí)跟蹤棧頂?shù)刂?,它按先進(jìn)后出的原則存取數(shù)據(jù),上電復(fù)位后,SP指向07H。3存儲(chǔ)器MCS51系列單片機(jī)的存儲(chǔ)器包括數(shù)據(jù)存儲(chǔ)器和程序存儲(chǔ)器,其主要特點(diǎn)是程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器的尋址空間是相互獨(dú)立的,物理結(jié)構(gòu)也不相同。對(duì)MCS51系列(8031除外)而言,有4個(gè)物理上相互獨(dú)立的存儲(chǔ)器空間:即內(nèi)、外程序存儲(chǔ)器和內(nèi)、外數(shù)據(jù)存儲(chǔ)器。對(duì)于8051其芯片中共有256個(gè)RAM單元,其中后128個(gè)單元被專用寄存器占用,只有前128個(gè)單元供用戶使用。4定時(shí)器/計(jì)數(shù)器MCS51系列單片機(jī)有兩個(gè)可編程定時(shí)器/計(jì)數(shù)器,即定時(shí)器/計(jì)數(shù)器0和1。它們各具有兩種工作模式(定時(shí)器模式和計(jì)數(shù)器模式)和4種工作方式(方式0,方
29、式1、方式2、方式3)。4種工作方式中,前三種方式對(duì)兩個(gè)定時(shí)器/計(jì)數(shù)器都是一樣的,方式3對(duì)兩者時(shí)不同的,這一點(diǎn)在設(shè)計(jì)時(shí)要注意。特殊功能寄存器TMOD(定時(shí)器/計(jì)數(shù)器方式控制寄存器)用于控制定時(shí)器/計(jì)數(shù)器的工作模式和過方式。另一個(gè)特殊功能寄存器TCON(定時(shí)器/計(jì)數(shù)器控制寄存器)用于T0和T1的啟動(dòng)和停止計(jì)數(shù),同時(shí)還包含了T0和T1的狀態(tài)。有關(guān)定時(shí)器/計(jì)數(shù)器的各個(gè)工作方式將在具體設(shè)計(jì)中詳細(xì)敘述。5串行口MCS51系列單片機(jī)內(nèi)部有一個(gè)功能很強(qiáng)的全雙工的串行口,該串行口有四種工作方式,波特率可以由軟件設(shè)置,由片內(nèi)的定時(shí)器/計(jì)數(shù)器產(chǎn)生。串行口有兩個(gè)物理上獨(dú)立地接收、發(fā)送緩沖器SBUF,可以同時(shí)發(fā)送、接
30、收數(shù)據(jù),發(fā)送緩沖器只能寫入不能讀出,接收緩沖器只能讀出不能寫入,兩個(gè)緩沖器公用一個(gè)字節(jié)地址(99H)。串行口的接收、發(fā)送數(shù)據(jù)均可觸發(fā)中斷系統(tǒng)。同時(shí),還有兩個(gè)控制寄存器來控制MCS51單片機(jī)地串行口,它們是特殊功能寄存器SCON和PCON。6并行口MCS51單片機(jī)共有4個(gè)8位的I/O口(P0、P1、P2和P3),每一條I/O線都能獨(dú)立地用作輸入或輸出。P0口為三態(tài)雙向口,能帶8個(gè)TTL門電路,P1、P2和P3口為準(zhǔn)雙向口,負(fù)載能力為4個(gè)TTL門電路。7中斷控制系統(tǒng)MCS51單片機(jī)的中斷功能較強(qiáng),以滿足控制應(yīng)用的需要。8051共有5個(gè)中斷源,即外中斷2個(gè),定時(shí)/計(jì)數(shù)中斷2個(gè),串行中斷1個(gè)。所有中斷
31、分為高級(jí)和低級(jí)兩個(gè)中斷優(yōu)先級(jí)。8時(shí)鐘電路MCS51芯片內(nèi)部有時(shí)鐘電路,但晶體振蕩器和微調(diào)電容必須外接。時(shí)鐘電路為單片機(jī)產(chǎn)生時(shí)鐘脈沖序列,振蕩器的頻率范圍為1.2MHz12MHz,典型取值為6MHZ。9總線以上所有組成部分都是通過總線連接起來,從而構(gòu)成一個(gè)完整的單片機(jī)。系統(tǒng)的地址信號(hào)、數(shù)據(jù)信號(hào)和控制信號(hào)都是通過總線傳送的,總線結(jié)構(gòu)減少了單片機(jī)的連線和引腳,提高了集成度和可靠性。2.2 MCS-51單片機(jī)的指令系統(tǒng)的實(shí)現(xiàn)原理MCS51系列單片機(jī)的指令系統(tǒng)采用匯編語言,它的指令系統(tǒng)是一種簡明高效的指令系統(tǒng),由42種助記符和7種尋址方式組合而成。其基本指令共有111條,其中單字節(jié)指令49條,雙字節(jié)指令
32、45條,三字節(jié)指令17條。如果按功能可以講這些指令分為五類:數(shù)據(jù)傳送類(29條)、算術(shù)操作類(24條)、邏輯操作類(24條)、控制轉(zhuǎn)移類(17條)以及位變量操作類(17條)。對(duì)于反向設(shè)計(jì)而言,我們關(guān)心的不是它的各種具體指令的多少而是指令的尋址方式。所謂的尋址方式就是尋找確定參與操作的數(shù)的真正地址。MCS51系列單片機(jī)的111條指令一共只采用了7種尋址方式。它們分別為:立即尋址、直接尋找、寄存器尋址、寄存器間接尋址、變址尋址、相對(duì)尋址、位尋址。第三章 ALU的原理分析與實(shí)現(xiàn)工具3.1 ALU的原理分析8051單片機(jī)的ALU是一個(gè)性能極強(qiáng)的運(yùn)算器,它的功能為:(1)加、減、乘、除四則運(yùn)算。(2)與
33、、或、非、異或等邏輯運(yùn)算。(3)數(shù)據(jù)傳送、移位、判斷和程序轉(zhuǎn)移等功能。8051單片機(jī)的ALU為用戶提供了豐富的指令系統(tǒng)和極快的指令執(zhí)行速度,大部分指令的執(zhí)行時(shí)間為1s,乘法指令可達(dá)4s。8051時(shí)鐘頻率可達(dá)12MHZ。3.2 用FPGA實(shí)現(xiàn)ALU的設(shè)計(jì)在現(xiàn)代電子系統(tǒng)中,數(shù)字系統(tǒng)所占的比例越來越大。現(xiàn)代電子系統(tǒng)發(fā)展的趨勢是數(shù)字化和集成化,CPLD/FPGA作為可編程ASIC器件,在數(shù)字系統(tǒng)設(shè)計(jì)中發(fā)揮著重要的作用。與傳統(tǒng)的可編程器件相比,F(xiàn)PGA采用了類似門陣列的通用結(jié)構(gòu),規(guī)??梢宰龅妮^大,可實(shí)現(xiàn)的功能更強(qiáng),設(shè)計(jì)的靈活性更大。且FPGA的容量越來越大,它所提供的門數(shù)從幾百門到上百萬門,可以滿足不同
34、的需要。因此用FPGA來實(shí)現(xiàn)ALU的功能不會(huì)受到FPGA門數(shù)的限制。用FPGA實(shí)現(xiàn)的ALU有很多優(yōu)點(diǎn):(1)編程方式簡便先進(jìn)。(2)高速:FPGA的時(shí)鐘延遲可達(dá)納秒級(jí),結(jié)合其并行工作方式在超高速應(yīng)用領(lǐng)域和實(shí)時(shí)測控方面有非常廣闊的應(yīng)用前景。(3)高可靠性:表現(xiàn)在幾乎可將整個(gè)系統(tǒng)下載于同一芯片中從而大大縮小了體積易于管理和屏蔽。(4)開發(fā)工具和設(shè)計(jì)語言標(biāo)準(zhǔn)化開發(fā)周期短。(5)功能強(qiáng)大應(yīng)用廣闊的 FPGA可供選擇范圍很大,可根據(jù)不同的應(yīng)用選用不同容量的芯片。利用它們可實(shí)現(xiàn)幾乎任何形式的數(shù)字電路或數(shù)字系統(tǒng)的設(shè)計(jì)。(6)易學(xué)易用開發(fā)便捷:FPGA應(yīng)用的學(xué)習(xí)不需太多的預(yù)備知識(shí),只要具有通常的數(shù)字電路和計(jì)算
35、機(jī)編程基礎(chǔ)知識(shí),就足以在短期內(nèi)掌握基本的設(shè)計(jì)方法和開發(fā)技巧。3.3 ALU的實(shí)現(xiàn)工具VHDL語言VHDL語言的英文全名是Very High Speed Integrated Circuit Hardware Description Language即超高速集成電路硬件描述語言,是一種用于設(shè)計(jì)硬件電子系統(tǒng)的計(jì)算機(jī)語言,它用軟件編程的方式來描述電子系統(tǒng)的邏輯功能、電路結(jié)合和連接形式。與傳統(tǒng)的門級(jí)描述方式相比,它更適合大規(guī)模系統(tǒng)的設(shè)計(jì)。VHDL的優(yōu)點(diǎn):(1)語言標(biāo)準(zhǔn)、規(guī)范、描述能力強(qiáng)。 (2)可讀性好,易于共享和復(fù)用。 (3)支持?jǐn)?shù)字電路的開發(fā)環(huán)境,設(shè)計(jì)技術(shù)齊全、方法靈活。 (4)可以與工藝無關(guān)編程
36、。 (5)支持層次化(框圖)、出錯(cuò)處理和驗(yàn)證。 第四章 MCS-51單片機(jī)的算術(shù)模塊設(shè)計(jì)算術(shù)運(yùn)算模塊的功能是按照控制單元給出的指令,對(duì)來自數(shù)據(jù)存儲(chǔ)器、程序存儲(chǔ)器、累加器A以及程序狀態(tài)字的相關(guān)位的數(shù)據(jù),進(jìn)行相關(guān)的算術(shù)和邏輯運(yùn)算。本模塊只進(jìn)行字節(jié)運(yùn)算,而不象原始的MCS51那樣,在ALU中還可以進(jìn)行位運(yùn)算(4位運(yùn)算將直接在控制器中處理)。這個(gè)模塊將用純組合邏輯電路來實(shí)現(xiàn)。ALU模塊的實(shí)體結(jié)構(gòu)如圖41所示。圖4-1 ALU模塊實(shí)體圖ALU由6個(gè)模塊組成:分別是譯碼與控制分配模塊alumux、邏輯運(yùn)算模塊alucore、加減模塊addsub、乘法模塊mul、除法模塊div和二十進(jìn)制調(diào)整模塊adjust
37、。ALUALUMUXALUCOREADDSUBCORMULTIPLCDIVIDERADJUSTADDSUB-CYADDSUB-OV-CY圖4-2是ALU模塊設(shè)計(jì)層次圖4.1 加/減法器設(shè)計(jì)addsub加減法模塊主要用來實(shí)現(xiàn)alu模塊算術(shù)運(yùn)算中的加減法運(yùn)算,由于減法運(yùn)算實(shí)現(xiàn)也可以轉(zhuǎn)化成加法運(yùn)算,因此addsub模塊的實(shí)現(xiàn)實(shí)質(zhì)就是加法器的設(shè)計(jì),實(shí)現(xiàn)后的實(shí)體圖如圖4-3所示。其中輸入端口18個(gè),兩個(gè)8位的操作數(shù)端口opa_i和opb_i,用于存放加數(shù)和被加數(shù);一個(gè)狀態(tài)位cy_i,即低位的進(jìn)位輸入;另一個(gè)輸入端為加減法選擇信號(hào)addsub_i,高電平時(shí)為加法操作,低電平時(shí)為減法操作。輸出端口11個(gè),包
38、括8位的運(yùn)算結(jié)果輸出端口rslt_o,兩位的進(jìn)位狀態(tài)標(biāo)志位cy_o和一位溢出狀態(tài)標(biāo)志位ov_o。設(shè)計(jì)采用組合邏輯設(shè)計(jì)方法,所以對(duì)于設(shè)計(jì)的關(guān)鍵部分,并行進(jìn)位的產(chǎn)生相應(yīng)的有一定的要求,即VHDL語言中的進(jìn)位信號(hào)的表示應(yīng)使用變量(variable),而不能使用信號(hào)量(signal)。因此在VHDL語言中,可直接按照公式的要求進(jìn)行編寫代碼,其結(jié)果將由信號(hào)rslt_o代出addsub模塊,返回到alumux中。 圖4-3 加/法器實(shí)體圖 加減法器模塊設(shè)計(jì)的VHDL程序如下:library ieee;use ieee.std_logic_1164.all;entity addsub isport(opa_
39、i:in std_logic_vector(7 downto 0);opb_i:in std_logic_vector(7 downto 0);cy_i:in std_logic;addsub_i:in std_logic;ov_o:out std_logic;rslt_o:out std_logic_vector(7 downto 0);cy_o:out std_logic_vector(1 downto 0);end addsub;architecture rtl of addsub isbegin process(opa_i,opb_i,cy_i,addsub_i)variable s_
40、c:std_logic_vector(7 downto 0);variable p:std_logic_vector(8 downto 1);variable g:std_logic_vector(8 downto 1);variable c:std_logic_vector(8 downto 0);beginif addsub_i='1'then-adderp:=opa_i xor opb_i;g:=opa_i and opb_i;c(0):=cy_i;c(1):=g(1)or(p(1)and c(0);c(2):=g(2)or(p(2)and g(1)or(p(2)and
41、p(1)and c(0);c(3):=g(3)or(p(3)and g(2)or(p(3)and p(2)and g(1)or(p(3)and p(2)and p(1)and c(0);c(4):=g(4)or(p(4)and g(3)or(p(4)and p(3)and g(2)or(p(4)and p(3)and p(2)and g(1)or(p(4)and p(3)and p(2)and p(1)and c(0);c(5):=g(5)or(p(5)and g(4)or(p(5)and p(4)and g(3)or(p(5)and p(4)and p(3)and g(2)or(p(5)an
42、d p(4)and p(3)and p(2)and g(1)or(p(5)and p(4)and p(3)and p(2)and p(1)and c(0);c(6):=g(6)or(p(6)and g(5)or(p(6)and p(5)and g(4)or(p(6)and p(5)and p(4)and g(3)or(p(6)and p(5)and p(4)and p(3)and g(2)or(p(6)and p(5)and p(4)and p(3)and p(2)and g(1)or(p(6)and p(5)and p(4)and p(3)and p(2)and p(1)and c(0);c
43、(7):=g(7)or(p(7)and g(6)or(p(7)and p(6)and g(5)or(p(7)and p(6)and p(5)and g(4)or(p(7)and p(6)and p(5)and p(4)and g(3)or(p(7)and p(6)and p(5)and p(4)and p(3)and g(2)or(p(7)and p(6)and p(5)and p(4)and p(3)and p(2)and g(1)or(p(7)and p(6)and p(5)and p(4)and p(3)and p(2)and p(1)and c(0);c(8):=g(8)or(p(8)
44、and g(7)or(p(8)and p(7)and g(6)or(p(8)and p(7)and p(6)and g(5)or(p(8)and p(7)and p(6)and p(5)and g(4)or(p(8)and p(7)and p(6)and p(5)and p(4)and g(3)or(p(8)and p(7)and p(6)and p(5)and p(4)and p(3)and g(2)or(p(8)and p(7)and p(6)and p(5)and p(4)and p(3)and p(2)and g(1)or(p(8)and p(7)and p(6)and p(5)and
45、 p(4)and p(3)and p(2)and p(1)and c(0);ov_o<=(c(8)xor c(7);cy_o<=c(8)andc(4);s_c:=p xor c(7 downto 0);else p:=opa_i xor(not opb_i);-subtractorg:=opa_i and(not opb_i);c(0):=not cy_i;c(1):=g(1)or(p(1)and c(0);c(2):=g(2)or(p(2)and g(1)or(p(2)and p(1)and c(0);c(3):=g(3)or(p(3)and g(2)or(p(3)and p(2
46、)and g(1)or(p(3)and p(2)and p(1)and c(0);c(4):=g(4)or(p(4)and g(3)or(p(4)and p(3)and g(2)or(p(4)and p(3)and p(2)and g(1)or(p(4)and p(3)and p(2)and p(1)and c(0);c(5):=g(5)or(p(5)and g(4)or(p(5)and p(4)and g(3)or(p(5)and p(4)and p(3)and g(2)or(p(5)and p(4)and p(3)and p(2)and g(1)or(p(5)and p(4)and p(3
47、)and p(2)and p(1)and c(0);c(6):=g(6)or(p(6)and g(5)or(p(6)and p(5)and g(4)or(p(6)and p(5)and p(4)and g(3)or(p(6)and p(5)and p(4)and p(3)and g(2)or(p(6)and p(5)and p(4)and p(3)and p(2)and g(1)or(p(6)and p(5)and p(4)and p(3)and p(2)and p(1)and c(0);c(7):=g(7)or(p(7)and g(6)or(p(7)and p(6)and g(5)or(p(
48、7)and p(6)and p(5)and g(4)or(p(7)and p(6)and p(5)and p(4)and g(3)or(p(7)and p(6)and p(5)and p(4)and p(3)and g(2)or(p(7)and p(6)and p(5)and p(4)and p(3)and p(2)and g(1)or(p(7)and p(6)and p(5)and p(4)and p(3)and p(2)and p(1)and c(0);c(8):=g(8)or(p(8)and g(7)or(p(8)and p(7)and g(6)or(p(8)and p(7)and p(
49、6)and g(5)or(p(8)and p(7)and p(6)and p(5)and g(4)or(p(8)and p(7)and p(6)and p(5)and p(4)and g(3)or(p(8)and p(7)and p(6)and p(5)and p(4)and p(3)and g(2)or(p(8)and p(7)and p(6)and p(5)and p(4)and p(3)and p(2)and g(1)or(p(8)and p(7)and p(6)and p(5)and p(4)and p(3)and p(2)and p(1)and c(0);ov_o<=(not
50、c(8)xor(not c(7);cy_o<=(not c(8)and (not c(4);s_c:=p xor c(7 downto 0);end if;rslt_o<=s_c;end process;end rtl; 圖4-4是對(duì)addsub加/減法器功能進(jìn)行軟件仿真的仿真結(jié)果,圖中可知,加/減法器計(jì)算結(jié)果以及標(biāo)志的輸出均正確。 圖4-4 addsub功能仿真圖4.2 乘法器設(shè)計(jì)mul模塊主要實(shí)現(xiàn)算術(shù)運(yùn)算中的乘法運(yùn)算,該模塊的設(shè)計(jì)非常簡單,直接利用VHDL語言中的乘法運(yùn)算符編寫程序進(jìn)行設(shè)計(jì)即可,其實(shí)體圖如圖4-5所示。mul模塊的輸入為被乘數(shù)mula和乘數(shù)mulb,均為8位輸入
51、,而輸出product_o為16位輸出。在VHDL的實(shí)現(xiàn)中,內(nèi)部運(yùn)算的實(shí)現(xiàn)仍然是通過變量的是用來實(shí)現(xiàn)的,因?yàn)閮?nèi)部的移位相加是通過for循環(huán)語句來實(shí)現(xiàn)的。因?yàn)槭?位的乘法器,所以要循環(huán)8次,且從乘數(shù)的最低位開始循環(huán)至最高位。每次循環(huán)時(shí)都要對(duì)乘數(shù)的對(duì)應(yīng)位進(jìn)行判斷,若乘數(shù)的對(duì)應(yīng)位是1,則把被乘數(shù)與保存中間值的變量值相加,然后再存于變量v_d中;若乘數(shù)的對(duì)應(yīng)位是0,則直接把保存中間值的變量值送入變量v_d中。判斷結(jié)束后,循環(huán)中止前,都要把v_d中的值放到v_c中,并右移一位。依此循環(huán)8次,則可求出最終乘積, 而乘積的結(jié)果由信號(hào)product_o送回到alumux模塊。圖4-5 mul模塊實(shí)體圖mul乘
52、法器模塊設(shè)計(jì)的VHDL程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity mul isport(mula:in std_logic_vector(7 downto 0);mulb:in std_logic_vector(7 downto 0);product_o:out std_logic_vector(15 downto 0);end mul;architecture rtl of mul isbeginprocess(mula,mulb)variable v_dout:st
53、d_logic_vector(8 downto 0);variable v_d:std_logic_vector(8 downto 0);variable v_c:std_logic_vector(16 downto 0);beginv_c:="00000000000000000"v_dout:='0'&mula;multiply:for i in 0 to 7 loopif mulb(i)='1'thenv_d:=v_dout+v_c(16 downto 8);else v_d:=v_c(16 downto 8);end if;v_
54、c(6 downto 0):=v_c(7 downto 1);v_c(16 downto 7):='0'&v_d;end loop;product_o<=v_c(15 downto 0);end process;end rtl;圖4-6是對(duì)mul乘法器功能進(jìn)行軟件仿真的仿真結(jié)果,圖中可知,乘法器計(jì)算結(jié)果以及標(biāo)志的輸出均正確。 圖4-6 mul功能仿真圖4.3 除法器設(shè)計(jì)div模塊主要實(shí)現(xiàn)算術(shù)運(yùn)算中的除法運(yùn)算。本設(shè)計(jì)中的除法器采用了逐位相減的算法來設(shè)計(jì)實(shí)現(xiàn),其實(shí)體圖如圖4-7所示。div模塊的輸入為被除數(shù)diva_i和除數(shù)divb_i,均為8位輸入,而輸出為商qut
55、nt_o和余數(shù)rmndr_o,也為8位輸出。 圖4-7 div模塊實(shí)體圖在用VHDL語言實(shí)現(xiàn)除法器時(shí),采用for循環(huán)語句對(duì)被除數(shù)從高位到低位逐位選取,選取的位數(shù)每循環(huán)一次增加一位,將選取的位值通過高位補(bǔ)0的方法擴(kuò)展成8位數(shù)值,并與除數(shù)divb_i進(jìn)行比較,若擴(kuò)展后數(shù)值大于divb_i,則將商數(shù)暫存變量v_qutnt(8位)的相應(yīng)位置1,并求出兩者的差值,存放在余數(shù)的暫存變量v_dffrnc中,此時(shí)若循環(huán)未結(jié)束,則將余數(shù)放到被除數(shù)暫存變量v_diva中,為下次計(jì)算做準(zhǔn)備,然后取出被除數(shù)的下一位進(jìn)行循環(huán)計(jì)算。如擴(kuò)展后數(shù)值小于divb_i,則將商數(shù)暫存變量v_qutnt(8位)的相應(yīng)位置0,并將v_
56、diva中的數(shù)值直接存入v_dffrnc中,保存余數(shù)。如此循環(huán)8次,則循環(huán)結(jié)束后,v_qutnt中保存了商數(shù),v_dffrnc中保存了余數(shù),兩者分別通過信號(hào)qutnt_o和rmndr_o送到alumux模塊。詳細(xì)的VHDL程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity div isport(diva_i:in std_logic_vector(7 downto 0);divb_i:in std_logic_vecto
57、r(7 downto 0);qutnt_o:out std_logic_vector(7 downto 0);rmndr_o:out std_logic_vector(7 downto 0);end div;architecture rtl of div isbeginp_divide:process(diva_i,divb_i)variable v_diva:unsigned(7 downto 0);variable v_dffrnc:unsigned(7 downto 0);variable v_qutnt:unsigned(7 downto 0);beginv_diva:=unsigned(diva_i);for
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 江西省南昌市新建區(qū)重點(diǎn)達(dá)標(biāo)名校2025屆初三5月教學(xué)質(zhì)量檢測試題語文試題試卷含解析
- 江南省鄲城縣重點(diǎn)中學(xué)2025屆初三3月聯(lián)考(語文試題文)試題含解析
- 山西省呂梁市重點(diǎn)中學(xué)2025年初三綜合模擬考試生物試題含解析
- 2025年腫瘤防治知識(shí)宣講測試試卷及答案
- 《廉潔自律教育》課件
- 濟(jì)源日語教師面試真題及答案
- 吉林法檢面試真題及答案
- 《守護(hù)我們的地球課件》
- 《軟件開發(fā)流程》課件2
- 《金融市場動(dòng)態(tài)》課件
- GB/T 44947-2024機(jī)器狀態(tài)監(jiān)測與診斷性能診斷方法
- 2023年高考真題-物理(福建卷) 含答案
- 《精裝修成品保護(hù)》課件
- 學(xué)校食堂設(shè)備故障應(yīng)急預(yù)案
- 國開(湖北)2024年秋《國學(xué)經(jīng)典選讀》形考作業(yè)1-4答案
- 藥企與醫(yī)療機(jī)構(gòu)合作協(xié)議書范文
- 高空作業(yè)安全技術(shù)交底范本模板
- 道路旅客運(yùn)輸企業(yè)雙重預(yù)防機(jī)制建設(shè)指導(dǎo)手冊
- 幼師畢業(yè)證明書樣本
- 環(huán)衛(wèi)車輛采購?fù)稑?biāo)方案(技術(shù)方案)
- 管材管件采購方案投標(biāo)方案(技術(shù)方案)
評(píng)論
0/150
提交評(píng)論