




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、目 錄第一章緒論21.1 課題來源及意義21.2 國內(nèi)外發(fā)展?fàn)顩r2第二章VHDL語言42.1 VHDL語言42.2 VHDL語言的特點(diǎn)42.3 VHDL語言設(shè)計(jì)實(shí)體的基本結(jié)構(gòu)52.4 VHDL語言的實(shí)體52.5 VHDL語言的結(jié)構(gòu)體62.6 VHDL程序設(shè)計(jì)約定7第三章基于EDA技術(shù)的計(jì)算器的設(shè)計(jì)83.1 計(jì)算器的設(shè)計(jì)思路83.2 系統(tǒng)組成框圖83.3計(jì)算部分的設(shè)計(jì)和實(shí)現(xiàn)93.3.1 加法器的設(shè)計(jì)93.3.2 減法器的設(shè)計(jì)123.3.3 乘法器的設(shè)計(jì)143.3.4 除法器的設(shè)計(jì)163.4 計(jì)算器輸入部分的設(shè)計(jì)和實(shí)現(xiàn)213.5 計(jì)算器顯示部分的設(shè)計(jì)和實(shí)現(xiàn)243.6位二進(jìn)制數(shù)轉(zhuǎn)換成個(gè)位、十位、百位
2、的模塊263.7計(jì)算器的綜合設(shè)計(jì)293.7.1 整體的程序設(shè)計(jì)293.7.2 計(jì)算器的仿真波形31結(jié) 論37謝 辭38參 考 文 獻(xiàn)39第一章 緒論1.1 課題來源及意義 在當(dāng)今以數(shù)字化和網(wǎng)絡(luò)化為特征的信息技術(shù)革命大潮中,電子技術(shù)獲得了飛速發(fā)展,現(xiàn)代電子產(chǎn)品滲透了社會(huì)的各個(gè)領(lǐng)域?,F(xiàn)代電子產(chǎn)品的性能進(jìn)一步提高,功能越來越復(fù)雜,集成化智能化的復(fù)雜程度越來越高,更新?lián)Q代的節(jié)奏越來越快,開發(fā)風(fēng)險(xiǎn)也越來越大,而且正向著功能多樣化、體積小型化、功耗最低化的趨勢(shì)發(fā)展。所有這些,都給電子系統(tǒng)設(shè)計(jì)者帶來了前所未有的壓力,面對(duì)這種壓力,唯一的出路就是熟練掌握EDA技術(shù),并獲得了其有力的支持。EDA的出現(xiàn),極大地提
3、高了電路設(shè)計(jì)的效率和可靠性,減輕了設(shè)計(jì)者的勞動(dòng)強(qiáng)度,EDA是電子產(chǎn)品開發(fā)研制的動(dòng)力和加速器,是現(xiàn)代電子設(shè)計(jì)的核心?,F(xiàn)在生活中計(jì)算器的應(yīng)用基本上可以說是無處不在,小到做買賣的商人的加減乘除的簡(jiǎn)易計(jì)算器,還有學(xué)生群體中使用能夠進(jìn)行復(fù)雜運(yùn)算的多功能計(jì)算器。可謂是和生活息息相關(guān)。EDA的設(shè)計(jì)觀念是按照"自頂 向下"的設(shè)計(jì)方法,對(duì)整個(gè)系統(tǒng)進(jìn)行方案設(shè)計(jì)和功能劃分,系統(tǒng)的關(guān)鍵電路用一片或幾片專用集成 電路(ASIC)實(shí)現(xiàn),然后采用硬件描述語言(VHDL)完成系統(tǒng)行為級(jí)設(shè)計(jì),最后通過綜合器和適配 器生成最終的目標(biāo)器件。用EDA 來設(shè)計(jì)計(jì)算器,分別做加減乘除的底層文件、存儲(chǔ)文件、顯示文件以及
4、輸入文件。然后對(duì)其進(jìn)行整合,層次分明,可以分別對(duì)底層文件進(jìn)行測(cè)試,和傳統(tǒng)計(jì)算器的設(shè)計(jì)相比,在測(cè)試方面有很大的優(yōu)勢(shì)。在EDA技術(shù)蓬勃的發(fā)展下,本次畢業(yè)設(shè)計(jì)選了EDA技術(shù)關(guān)于計(jì)算器的設(shè)計(jì),不僅僅在原來EDA基礎(chǔ)編程的情況下,進(jìn)行更深一步的研究,為了以后從事EDA方面的研究,有更深層次應(yīng)用,所以通過EDA對(duì)計(jì)算器的設(shè)計(jì),對(duì)EDA技術(shù)的語言程序、運(yùn)用電路圖設(shè)計(jì)方法、以及各種不同底層程序的編輯對(duì)Quartus II軟件的運(yùn)用更為自如。1.2 國內(nèi)外發(fā)展?fàn)顩r回顧近30年電子設(shè)計(jì)技術(shù)的發(fā)展歷程,可將EDA技術(shù)1分為三個(gè)階段。 (1) 七十年代為CAD階段,這一階段人們開始用計(jì)算機(jī)輔助進(jìn)行IC版圖編輯和PCB
5、布局布 線,取代了手工操作,產(chǎn)生了計(jì)算機(jī)輔助設(shè)計(jì)的概念。 (2)八十年代為CAE階段,與CAD相比,除了純粹的圖形繪制功能外,又增加了電路功能設(shè) 計(jì)和結(jié)構(gòu)設(shè)計(jì),并且通過電氣連接網(wǎng)絡(luò)表將兩者結(jié)合在一起,以實(shí)現(xiàn)工程設(shè)計(jì),這就是計(jì)算機(jī)輔助 工程的概念。CAE的主要功能是:原理圖輸入,邏輯仿真,電路分析,自動(dòng)布局布線,PCB后分 析。 (3)九十年代為ESDA階段。盡管CAD/CAE技術(shù)取得了巨大的成功,但并沒有把人從繁重的 設(shè)計(jì)工作中徹底解放出來。在整個(gè)設(shè)計(jì)過程中,自動(dòng)化和智能化程度還不高,各種EDA軟件界面千 差萬別,學(xué)習(xí)使用困難,并且互不兼容,直接影響到設(shè)計(jì)環(huán)節(jié)間的銜接?;谝陨喜蛔悖藗冮_始
6、追求貫徹整個(gè)設(shè)計(jì)過程的自動(dòng)化,這就是ESDA即電子系統(tǒng)設(shè)計(jì)自動(dòng)化。 從目前的EDA技術(shù)來看,其發(fā)展趨勢(shì)是政府重視、使用普及、應(yīng)用文泛、工具多樣、軟件功能強(qiáng)大。中國EDA市場(chǎng)已漸趨成熟,不過大部分設(shè)計(jì)工程師面向的是PC主板和小型ASIC領(lǐng)域,僅有小部分(約11%)的設(shè)計(jì)人員工發(fā)復(fù)雜的片上系統(tǒng)器件。為了與臺(tái)灣和美國的設(shè)計(jì)工程師形成更有力的競(jìng)爭(zhēng),中國的設(shè)計(jì)隊(duì)伍有必要購入一些最新的EDA技術(shù)。在信息通信領(lǐng)域,要優(yōu)先發(fā)展高速寬帶信息網(wǎng)、深亞微米集成電路、新型元器件、計(jì)算機(jī)及軟件技術(shù)、第三代移動(dòng)通信技術(shù)、信息管理、信息安全技術(shù),積極開拓以數(shù)字技術(shù)、網(wǎng)絡(luò)技術(shù)為基礎(chǔ)的新一代信息產(chǎn)品,發(fā)展新興產(chǎn)業(yè),培育新的經(jīng)濟(jì)
7、增長點(diǎn)。要大力推進(jìn)制造業(yè)信息化,積極開展計(jì)算機(jī)輔助設(shè)計(jì)(CAD)、計(jì)算機(jī)輔助工程(CAE)、計(jì)算機(jī)輔助工藝(CAPP)、計(jì)算機(jī)機(jī)輔助制造(CAM)、產(chǎn)品數(shù)據(jù)管理(PDM)、制造資源計(jì)劃(MRPII)及企業(yè)資源管理(ERP)等。有條件的企業(yè)可開展“網(wǎng)絡(luò)制造”,便于合作設(shè)計(jì)、合作制造,參與國內(nèi)和國際競(jìng)爭(zhēng)。開展“數(shù)控化”工程和“數(shù)字化”工程。自動(dòng)化儀表的技術(shù)發(fā)展趨勢(shì)的測(cè)試技術(shù)、控制技術(shù)與計(jì)算機(jī)技術(shù)、通信技術(shù)進(jìn)一步融合,形成測(cè)量、控制、通信與計(jì)算機(jī)(M3C)結(jié)構(gòu)。在ASIC和PLD設(shè)計(jì)方面,向超高速、高密度、低功耗、低電壓方向發(fā)展。外設(shè)技術(shù)與EDA工程相結(jié)合的市場(chǎng)前景看好,如組合超大屏幕的相關(guān)連接,多
8、屏幕技術(shù)也有所發(fā)展。中國自1995年以來加速開發(fā)半導(dǎo)體產(chǎn)業(yè),先后建立了幾所設(shè)計(jì)中心,推動(dòng)系列設(shè)計(jì)活動(dòng)以應(yīng)對(duì)亞太地區(qū)其它EDA市場(chǎng)的競(jìng)爭(zhēng)。在EDA軟件開發(fā)方面,目前主要集中在美國。但各國也正在努力開發(fā)相應(yīng)的工具。日本、韓國都有ASIC設(shè)計(jì)工具,但不對(duì)外開放 。中國華大集成電路設(shè)計(jì)中心,也提供IC設(shè)計(jì)軟件,但性能不是很強(qiáng)。相信在不久的將來會(huì)有更多更好的設(shè)計(jì)工具有各地開花并結(jié)果。據(jù)最新統(tǒng)計(jì)顯示,中國和印度正在成為電子設(shè)計(jì)自動(dòng)化領(lǐng)域發(fā)展最快的兩個(gè)市場(chǎng),年復(fù)合增長率分別達(dá)到了50%和30%。EDA技術(shù)發(fā)展迅猛,完全可以用日新月異來描述。EDA技術(shù)的應(yīng)用廣泛,現(xiàn)在已涉及到各行各業(yè)。EDA水平不斷提高,設(shè)計(jì)
9、工具趨于完美的地步。EDA市場(chǎng)日趨成熟,但我國的研發(fā)水平沿很有限,需迎頭趕上。第二章 VHDL語言2.1VHDL語言VHDL語言全稱是“超高速集成電路硬件描述語言(Very High Speed Intergated Circuit Hardwre Description Lnguage)”,它是隨著集成電路系統(tǒng)化和高度集成化的發(fā)展而逐步發(fā)展起來的,是一種用于數(shù)字系統(tǒng)的設(shè)計(jì)和測(cè)試的硬件描述語言。對(duì)于小規(guī)模的數(shù)字集成電路,通??梢杂脗鹘y(tǒng)的設(shè)計(jì)輸入方法(如原理圖輸入)來完成,并進(jìn)行模擬仿真。但純?cè)韴D輸入方式對(duì)于大型、復(fù)雜的系統(tǒng),由于種種條件和環(huán)境的制約,其工作效率低,而且容易出錯(cuò),暴露出多種弊端
10、。在信息技術(shù)高速發(fā)展的今天,對(duì)集成電路提出了高集成度、系統(tǒng)化、微尺寸、微功耗的要求,因此,高密度可編程邏輯器件和VHDL便應(yīng)運(yùn)而生。2.2 VHDL語言的特點(diǎn)VHDL語言作為一種標(biāo)準(zhǔn)的硬件描述語言,具有結(jié)構(gòu)嚴(yán)謹(jǐn)、描述能力強(qiáng)的特點(diǎn)2,支持從系統(tǒng)級(jí)到邏輯門級(jí)電路所有層次的設(shè)計(jì),適合于復(fù)雜邏輯電路和系統(tǒng)的設(shè)計(jì)。作為一種高級(jí)硬件描述語言,VHDL語言有如下特點(diǎn)。(1)與其他的硬件描述語言相比,VHDL具有更強(qiáng)的行為描述能力。強(qiáng)大的行為描述能力是避開具體的器件結(jié)構(gòu)、從邏輯行為上描述和設(shè)計(jì)大規(guī)模電子系統(tǒng)的重要保證。(2)VHDL具有豐富的仿真語句和庫函數(shù),使得在任何大系統(tǒng)的設(shè)計(jì)早期,就能檢查系統(tǒng)的功能可行
11、性,隨時(shí)可對(duì)系統(tǒng)進(jìn)行仿真模擬,使設(shè)計(jì)者對(duì)整個(gè)工程的結(jié)構(gòu)和功能的可行性做出判斷。(3)用VHDL完成一個(gè)確定的設(shè)計(jì),可以利用EDA工具進(jìn)行邏輯綜合和優(yōu)化,并自動(dòng)把VHDL描述設(shè)計(jì)轉(zhuǎn)變成門級(jí)網(wǎng)表(根據(jù)不同的實(shí)現(xiàn)芯片)3。這種方式突破了門級(jí)設(shè)計(jì)的瓶頸,極大地減少了電路設(shè)計(jì)的時(shí)間和可能發(fā)生地錯(cuò)誤,降低了開發(fā)成本。利用EDA工具的邏輯優(yōu)化功能,可以自動(dòng)地把一個(gè)綜合后的設(shè)計(jì)變成一個(gè)更小、更高速的電路系統(tǒng)。反過來,設(shè)計(jì)者還可以容易地從綜合和優(yōu)化的電路中獲得設(shè)計(jì)信息,返回去更新修改VHDL設(shè)計(jì)描述,使之更加完善。(4)VHDL對(duì)設(shè)計(jì)的描述具有相對(duì)獨(dú)立性。設(shè)計(jì)者可以不懂硬件的結(jié)構(gòu),也不必顧及最終設(shè)計(jì)的目標(biāo)器件是
12、什么,而進(jìn)行獨(dú)立的設(shè)計(jì)。正因?yàn)閂HDL得硬件描述與具體的工藝技術(shù)和硬件結(jié)構(gòu)無關(guān),所以VHDL設(shè)計(jì)程序的硬件實(shí)現(xiàn)目標(biāo)器件有廣闊的選擇范圍。(5)由于VHDL具有類屬描述語句和子程序調(diào)用等功能,對(duì)于完成的設(shè)計(jì),在不改變?cè)闯绦虻臈l件下,只需改變類屬參量或函數(shù),就能輕而易舉地改變?cè)O(shè)計(jì)的規(guī)模和結(jié)構(gòu)4。(6)VHDL本身的生命周期長。因?yàn)閂HDL得硬件描述與工藝無關(guān),不會(huì)因工藝變化而使描述過時(shí)。而與工藝技術(shù)有關(guān)的參數(shù)可通過VHDL提供的屬性加以描述,當(dāng)生產(chǎn)工藝改變時(shí),只需要修改相應(yīng)程序中的屬性參數(shù)即可。2.3 VHDL語言設(shè)計(jì)實(shí)體的基本結(jié)構(gòu)VHDL語言是一種強(qiáng)數(shù)據(jù)類型語言,它有三種數(shù)據(jù)對(duì)象,即常數(shù)、信號(hào)和
13、變量,每一種數(shù)據(jù)對(duì)象都要指定數(shù)據(jù)類型。VHDL的數(shù)據(jù)類型豐富5,既有數(shù)值數(shù)據(jù)類型和邏輯數(shù)據(jù)類型,又有位型和位向量型。既支持預(yù)定義的數(shù)據(jù)類型,又支持自定義的數(shù)據(jù)類型。這樣就給硬件描述帶來較大的自由度,使設(shè)計(jì)人員能夠方便地使用VHDL創(chuàng)建高層次的系統(tǒng)模型。VHDL語言將所設(shè)計(jì)的電路系統(tǒng)均看作一個(gè)設(shè)計(jì)實(shí)體,它可以是任意復(fù)雜的系統(tǒng),也可以是一塊電路板、一個(gè)芯片、一個(gè)電路單元甚至一個(gè)門電路。如果將一個(gè)系統(tǒng)自上而下分層,劃分模塊,則各層的設(shè)計(jì)模塊都可以作為一個(gè)設(shè)計(jì)實(shí)體。不論是簡(jiǎn)單的數(shù)字電路,還是復(fù)雜的數(shù)字系統(tǒng),其基本構(gòu)成是一致的,它們都是由實(shí)體說明(Entity)和結(jié)構(gòu)體(Architecture)兩個(gè)最
14、基本的部分組成。實(shí)體說明部分用來描述該模塊或系統(tǒng)的接口信息,包括端口的數(shù)目、方向和類型,其作用相當(dāng)于傳統(tǒng)設(shè)計(jì)方法中所使用的元件符號(hào)。結(jié)構(gòu)體部分則描述該模塊的內(nèi)部電路,對(duì)應(yīng)于原理圖、邏輯方程6和模塊的輸入/輸出特性。兩者相結(jié)合就可以組成VHDL設(shè)計(jì)文件。一個(gè)設(shè)計(jì)試題可以包括一個(gè)或多個(gè)結(jié)構(gòu)體,用于描述其邏輯結(jié)構(gòu)和邏輯功能。2.4 VHDL語言的實(shí)體實(shí)體說明語句的格式如下:ENITTY 實(shí)體名ISPORT(端口表);END ENTITY 實(shí)體名;實(shí)體說明是VHDL程序設(shè)計(jì)中最基本的組成部分,主要用來描述設(shè)計(jì)實(shí)體7的外部接口信號(hào),定義設(shè)計(jì)單元的輸入/輸出端口,是設(shè)計(jì)實(shí)體對(duì)外的一個(gè)通信界面,為可視部分。
15、但它并不描述設(shè)計(jì)的具體功能。端口名是賦予每個(gè)外部引腳的名稱,通常用一個(gè)或幾個(gè)英文字母,或者用英文字母加數(shù)字命名。端口模式(或端口方向)用來定義外部引腳的信號(hào)方向。在端口說明中,共有五種模式,分別為IN(輸入端口)、OUT(輸出端口)、INOUT(雙向端口)、BUFFER(緩沖端口)和LINKAGE(鏈接端口)。2.5 VHDL語言的結(jié)構(gòu)體結(jié)構(gòu)體8是設(shè)計(jì)實(shí)體的核心,它具有指明了設(shè)計(jì)實(shí)體的行為、元件及內(nèi)部連接關(guān)系。如果將實(shí)體說明看成一個(gè)元件或電路的外部符號(hào),則結(jié)構(gòu)體就是這個(gè)元件或電路的內(nèi)部原理圖。通過結(jié)構(gòu)體構(gòu)造設(shè)計(jì)實(shí)體的硬件結(jié)構(gòu)、元件之間的連接,實(shí)現(xiàn)數(shù)據(jù)傳輸和變換,完成設(shè)計(jì)實(shí)體功能的具體實(shí)施。結(jié)構(gòu)
16、體的格式如下:ARCHITECTURE 結(jié)構(gòu)體名 OF 實(shí)體名 IS 結(jié)構(gòu)體說明語句;BEGIN 功能描述語句;END ARCHITECTURE 結(jié)構(gòu)體名;結(jié)構(gòu)體名是給予結(jié)構(gòu)體的名稱,它是該結(jié)構(gòu)體唯一的名字,位于引導(dǎo)語句和OF語句之間。OF后面緊隨實(shí)體名,表明該結(jié)構(gòu)體隸屬于哪個(gè)實(shí)體,并用IS來結(jié)束結(jié)構(gòu)體的命名。結(jié)構(gòu)體名原則上可以是任意合法的標(biāo)識(shí)符,但為了便于程序的閱讀,通常都是根據(jù)該結(jié)構(gòu)體所采用的描述方式對(duì)其命名,如Behavior(行為描述)、Dataflow(數(shù)據(jù)流描述)、Structure(結(jié)構(gòu)描述)等。結(jié)構(gòu)體說明語句位于ARCHITCTURE和BEGIN之間,用于定義結(jié)構(gòu)體中所用的數(shù)據(jù)
17、對(duì)象和子程序,并對(duì)所引用的元件加以說明,即對(duì)結(jié)構(gòu)體的功能描述語句中所用到的信號(hào)(SIGNAL)、類型(TAPY)、常數(shù)(CONSTANT)、元件(COMPONENT)、函數(shù)(FUNCTION)和過程(PROCEDURE)等加以說明和定義,但不能定義變量。應(yīng)當(dāng)注意,這些定義只能用于這個(gè)結(jié)構(gòu)體中,如果要將這些定義用于其他實(shí)體或結(jié)構(gòu)體,則需要將其作為程序包處理。2.6 VHDL程序設(shè)計(jì)約定為了便于程序的閱讀,此設(shè)計(jì)對(duì)VHDL程序設(shè)計(jì)特作如下約定:(1)語句結(jié)構(gòu)描述中方括號(hào)“ ”內(nèi)的內(nèi)容為可選內(nèi)容。(2)對(duì)于VHDL的編譯器和綜合器來說,程序文字的大小寫是不加區(qū)分的。本文中,VHDL中使用的關(guān)鍵詞用大
18、寫,對(duì)于由用戶自己定義的名稱等用小寫。(3)程序中的注釋使用橫線“”,橫線“”后的文字都不參加編譯和綜合。(4)為了便于程序的閱讀與調(diào)試,書寫和輸入程序時(shí),使用層次縮進(jìn)格式,同一層次的對(duì)齊,低層次的描述較高層次的描述縮進(jìn)兩個(gè)字符。(5)考慮到MAX+PLUS要求源程序文件的名字與實(shí)體名必須一致,因此為了使同一個(gè)VHDL源程序文件能適應(yīng)各個(gè)EDA開發(fā)軟件上的使用要求,各個(gè)源程序文件的命名均與其實(shí)體名一致。第三章 基于EDA技術(shù)的計(jì)算器的設(shè)計(jì)3.1 計(jì)算器的設(shè)計(jì)思路將計(jì)算器分為四個(gè)部分:計(jì)算部分、存儲(chǔ)部分、顯示部分和輸入部分。合理設(shè)計(jì)這四部分將有利于資源的合理應(yīng)用。其中計(jì)算部分分為加減乘除法器,分
19、別設(shè)計(jì)底層程序。顯示部分為設(shè)計(jì)一個(gè)四位二進(jìn)制數(shù)與七段譯碼相互轉(zhuǎn)換的程序。輸入部分為設(shè)計(jì)有0到9數(shù)字按鍵與加減乘除運(yùn)算符號(hào),以及等于號(hào)及清零鍵。3.2 系統(tǒng)組成框圖數(shù)字按鍵存儲(chǔ)部分顯示第一個(gè)數(shù)字顯示第二個(gè)數(shù)字運(yùn)算符計(jì)算部分運(yùn)算符或等號(hào)鍵運(yùn)算結(jié)果顯示圖3-13.3計(jì)算部分的設(shè)計(jì)和實(shí)現(xiàn)計(jì)算部分就是運(yùn)算的過程,此設(shè)計(jì)中主要包含的運(yùn)算有加減乘除法。3.3.1 加法器的設(shè)計(jì)先構(gòu)思一下加法器的流程圖,如圖3-2所示。根據(jù)流程圖,可以確定一個(gè)加法器要有被加數(shù)、加數(shù)和進(jìn)位位的輸入端口。故設(shè)a端口為被加數(shù),b端口為加數(shù),ci為輸入進(jìn)位。此加法器還有兩個(gè)輸出端口,分別是加法運(yùn)算的最終結(jié)果輸出和進(jìn)位位的輸出,故設(shè)s為
20、結(jié)果的輸出端口,co為進(jìn)位的輸出端口。 被加數(shù)輸出進(jìn)位位輸入進(jìn)位位加數(shù)相加運(yùn)算的最終結(jié)果輸出圖3-2 加法器的流程圖根據(jù)流程圖可以看出,當(dāng)輸入被加數(shù)與加數(shù)后,兩個(gè)8位二進(jìn)制數(shù)開始相加,之后,再與輸入進(jìn)位位相加,這樣得到的最終結(jié)果就是加法器加法運(yùn)算的最終結(jié)果。加法器9是基于EDA的計(jì)算器的設(shè)計(jì)中的基本邏輯器件,這里設(shè)計(jì)的8位二進(jìn)制數(shù)的加法器,它是屬于多位加法器的范疇的。多位加法器按其進(jìn)位方式的不同可以分為兩類:串行進(jìn)位加法器和并行進(jìn)位進(jìn)位加法器。串行進(jìn)位加法器是將多個(gè)一位全加級(jí)聯(lián),低位全加器的進(jìn)位輸出送給相鄰高位全加器作為進(jìn)位輸入,以此構(gòu)
21、成多位加法器。這種設(shè)計(jì)思路簡(jiǎn)單明了且占用資源少,但運(yùn)算速度較慢。并行進(jìn)位方式則是在各位的加法環(huán)節(jié)之外,另外設(shè)有進(jìn)位產(chǎn)生邏輯電路,各位的進(jìn)位輸入信號(hào)同時(shí)產(chǎn)生,從而各位可以同時(shí)完成全加運(yùn)算,輸出最后結(jié)果。并行進(jìn)位方式具有較快的運(yùn)算速度,但是相對(duì)于串行進(jìn)位方式來說,卻往往占用更多的資源。尤其是當(dāng)運(yùn)算位數(shù)增加的時(shí)候,相同位數(shù)的并行進(jìn)位和串行進(jìn)位加法器的資源占用差距也越來越大。因此,常常需要設(shè)計(jì)者在運(yùn)算速度和資源占用量之間做出折中平衡。實(shí)踐證明,4位二進(jìn)制并行進(jìn)位加法器和串行級(jí)聯(lián)加法器占用的資源幾乎相同。因此,可以用兩個(gè)4位二進(jìn)制并行加法器級(jí)聯(lián)以構(gòu)成8位二進(jìn)制加法器,這是一種較為合理的選擇。4位二進(jìn)制并
22、行進(jìn)位加法器的源程序ADDER4B.VHD如下:LIBRARY IEEE; 庫以上這部分是設(shè)計(jì)中的全加器的VHDL語言的第一部分庫。一種用來存放預(yù)先已設(shè)計(jì)好的程序包10、數(shù)據(jù)集合體、元件的倉庫。庫存放的信息供用戶進(jìn)行VHDL設(shè)計(jì)時(shí)調(diào)用,以提高設(shè)計(jì)效率。USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;以上這些是此加法器所要調(diào)用的程序包,是VHDL語言的第二部分。用VHDL語言編寫的共享文件11,定義了在設(shè)計(jì)結(jié)構(gòu)體和實(shí)體說明中將要使用的常數(shù)、數(shù)據(jù)類型、子程序和設(shè)計(jì)好的電路單元等。ENTITY ADDER4B IS 4位二進(jìn)制數(shù)
23、的加法器的實(shí)體 PORT(ci:IN STD_LOGIC; 進(jìn)位位的輸入端口 a:IN STD_LOGIC_VECTOR(3 DOWNTO 0); 一個(gè)4位二進(jìn)制數(shù)的輸入端口(被加數(shù)) b:IN STD_LOGIC_VECTOR(3 DOWNTO 0); 一個(gè)4位二進(jìn)制數(shù)的輸入端口(加數(shù)) s:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); 加法運(yùn)算的結(jié)果輸出端口 co:OUT STD_LOGIC 進(jìn)位位的輸出端口 );END ADDER4B;這部分是此加法器的VHDL語言的第三部分實(shí)體說明。定義電路單元的輸入、輸出引腳信號(hào)。程序的實(shí)體名稱可任意取名12(這里我取的是ADD
24、ER4B),但必須與VHDL程序的文件名稱相同(保存時(shí)的文件名)。實(shí)體說明以標(biāo)示符ENTITY開始,以END結(jié)束。ARCHITECTURE behave OF ADDER4B IS 4位二進(jìn)制數(shù)的加法器的結(jié)構(gòu)體SIGNAL SINT:STD_LOGIC_VECTOR(4 DOWNTO 0); 類似于在芯片15內(nèi)部定義的一個(gè)數(shù)據(jù)SIGNAL aa,bb:STD_LOGIC_VECTOR(4 DOWNTO 0);BEGIN aa<='0' & a; 拓展位數(shù),使其成為最高位 bb<='0' & b; SINT<=aa+bb+ci;
25、相加 s<=SINT(3 DOWNTO 0); co<=SINT(4); 最高位為輸出進(jìn)位位END behave;這是加法器的VHDL語言的第四部分結(jié)構(gòu)體。用來描述電路內(nèi)部和邏輯功能。結(jié)構(gòu)體的名稱可任意取名(這里取的是behave),并以標(biāo)示符ARCHITECTURE開頭,以END結(jié)尾。(注.以下的程序是部分的VHDL語言)根據(jù)以上設(shè)計(jì)的兩個(gè)4位二進(jìn)制數(shù)的加法器,來設(shè)計(jì)兩個(gè)8位二進(jìn)制數(shù)的加法器。頂層模塊:8位二進(jìn)制并行進(jìn)位加法器的部分程序ADDER4B.VHD如下:SIGNAL CARRY_OUT:STD_LOGIC;BEGIN U1:ADDER4B PORT MAP(ci=>
26、;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);調(diào)用兩個(gè)4位二進(jìn)制數(shù)加法的模塊。引腳分布圖如下圖3-3所示:圖3-3 8位加法器電路的引腳分布圖仿真波形圖(圖3-4):圖3-4 8位加法器的仿真波形從以上仿真波形中可以作出總結(jié)(“0”為低電平,“1”為高電平):若a
27、為“8”,b為“9”時(shí),a+b=“17”,這時(shí)的ci為高電平,所以在此基礎(chǔ)之上還要再加“1”,得到s=“18”,這時(shí)最終的結(jié)果。因?yàn)樽罡呶粵]有進(jìn)位,所以co為“0”即為低電平。3.3.2 減法器的設(shè)計(jì)首先設(shè)計(jì)一個(gè)兩個(gè)4位二進(jìn)制數(shù)的減法器。根據(jù)以下圖3-5的4位全減器的流程圖可以看出,此減法器共需要兩個(gè)輸入端口和一個(gè)輸出端口。減法器的設(shè)計(jì)可以引用加法器,即通過對(duì)減數(shù)的求補(bǔ)16,再與被減數(shù)相加得到最終的 ,所以還要增設(shè)一個(gè)進(jìn)位位輸入端口和進(jìn)位位的輸出端口。所以可以設(shè)a端口為被減數(shù),b端口為減數(shù),ci為輸入借位位,s為結(jié)果的輸出端口,co為借位的輸出端口。減法器的運(yùn)算過程中首先要引用加法器(上面的加
28、法器的程序中很詳細(xì)地介紹了加法器的設(shè)計(jì),故減法器中加法器的描述部分在這里就省略了)。被減數(shù)減數(shù)求補(bǔ)4位全加器減法的運(yùn)算結(jié)果顯示輸入進(jìn)位求反對(duì)進(jìn)位位求反進(jìn)位位輸出結(jié)果圖3-5 4位全減器的流程圖減法器的部分VHDL語言描述:BEGINbtem(3 DOWNTO 0)<=NOT b(3 DOWNTO 0); 先把減數(shù)求反ctem(0)<=NOT ci; 輸入進(jìn)位也求反,從而對(duì)減數(shù)求補(bǔ)碼g1:FOR i IN 0 TO 3 GENERATE 連用四位全加器17add:adder PORT MAP(a(i),btem(i),ctem(i),stem(i),ctem(i+1);END GEN
29、ERATE;s(3 downto 0)<=stem(3 downto 0); 把中間變量所得到的值賦給s,因?yàn)閟是減法器運(yùn)算出來的結(jié)果的輸出端口,通過s把計(jì)算結(jié)果輸出co<=NOT ctem(4); 求反輸出進(jìn)位END behave;然后將4位全減器級(jí)聯(lián)起來,就可得到兩個(gè)8位二進(jìn)制數(shù)的減法器。圖3-5是其原理圖:圖3-6 減法器的原理圖減法器的仿真波形:圖3-7 減法器的仿真波形圖從以上仿真波形圖3-7中可以作出總結(jié)(“0”為低電平,“1”為高電平):兩個(gè)數(shù)做減法,采用的是4位4位一減,若a為“00111000”,b為“00100010”時(shí),首先將它們各自的低4位先做運(yùn)算,先將b的
30、第四位求補(bǔ),之后與a的第四位相加后得到第四位的運(yùn)算結(jié)果“0110”,最高位有進(jìn)位,但輸出時(shí)取反就 為“0”,再用同樣的方法計(jì)算出高四位的運(yùn)算結(jié)果,得“0001”,之后還得加上一個(gè)低4位向高4位的進(jìn)位“0”,所以最終結(jié)果s為“00010110”。3.3.3 乘法器的設(shè)計(jì)乘法器是數(shù)字系統(tǒng)中的基本邏輯器件,在很多應(yīng)用中都會(huì)出現(xiàn)如各種濾波器的設(shè)計(jì)、矩陣的運(yùn)算等。這里設(shè)計(jì)的是一個(gè)4×4的乘法器。根據(jù)乘法器的原理,可以繪出其流程圖(圖3-8),從流程圖中又可以看出可設(shè)a端口為被乘數(shù)(一個(gè)4位二進(jìn)制數(shù)),b端口為乘數(shù)(一個(gè)4位二進(jìn)制數(shù)),y為乘法運(yùn)算的結(jié)果的輸出端口。被乘數(shù)乘數(shù)乘數(shù)的最低位每位二進(jìn)
31、制數(shù)相與得到4次結(jié)果位對(duì)齊乘數(shù)從最低位左移一位二進(jìn)制數(shù)相加最終結(jié)果3次圖3-8 乘法器的流程圖乘法器的部分VHDL語言描述:ENTITY mul IS PORT (a,b : IN STD_LOGIC_VECTOR(3 DOWNTO 0); 被乘數(shù)與乘數(shù)的輸入y : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) 乘積的輸出端口);END mul;ARCHITECTURE arch OF mul ISBEGINy(7 DOWNTO 0) <= a(3 DOWNTO 0)*b(3 DOWNTO 0); y=a×bEND arch;乘法器的引腳圖:圖3-9 乘法器
32、的引腳圖從乘法器的引腳圖中也可以看出,乘法器有兩個(gè)輸入引腳,分別來輸入乘數(shù)和被乘數(shù),一個(gè)用來輸出運(yùn)算結(jié)果的輸出端口,在封裝好的乘法器的器件中,就是來實(shí)現(xiàn)乘法運(yùn)算的算法的。乘法器的仿真波形:圖3-10 乘法器的仿真波形從乘法器的仿真圖3-10中可以看出,y的輸出就是a與b的相乘后的結(jié)果。例如:若a為“0001”,b為“0010”,則根據(jù)左移原理可得出最終結(jié)果s,為“00000010”。結(jié)果完全正確。這里也可以證實(shí)兩個(gè)4位二進(jìn)制數(shù)的乘積為一個(gè)8位二進(jìn)制數(shù)。3.3.4 除法器的設(shè)計(jì)整個(gè)除法器是基于連減和移位操作的,連減實(shí)際上就是基于數(shù)學(xué)上除法的基本原理。例如,a÷b=c余數(shù)是d,就等價(jià)于a
33、c個(gè)b后得到d而且d<b;之所以可以使用移位操作,是因?yàn)樗羞\(yùn)算的數(shù)都用二進(jìn)制表示。所設(shè)計(jì)的除法器主要部分為一個(gè)控制移位的控制器,另有一個(gè)由全加器組成的4位減法器(可引用上面的減法器的設(shè)計(jì))。又因?yàn)橐?guī)定了結(jié)果為4位,控制器首先比較被除數(shù)的高4位與除數(shù)的大小,判斷是否溢出,溢出則退出,否則就做4位移位和減法得到結(jié)果。在每次做完減法以后都要判斷是否夠減,即判斷是否有借位,不夠得話,就恢復(fù)被減數(shù),移一位再減。除法器的流程圖如下圖3-11所示:被除數(shù)除數(shù)高四位clk=1str=1相除在最低位上的到商位相與得到結(jié)果減法器余數(shù)溢出狀態(tài)被除數(shù)右移一位作為減數(shù)作為被減數(shù)有借位無借位03次左移圖3-11
34、除法器的流程圖設(shè)a端口為被除數(shù),b端口為除數(shù),clk為時(shí)鐘信號(hào)的輸入端口,str為啟動(dòng)信號(hào)的輸入端口,此端口的作用是當(dāng)啟動(dòng)信號(hào)為高電平的時(shí)候有效,表示啟動(dòng)了除法器開始作除法運(yùn)算。s為除法運(yùn)算所得到的商的輸出端口,y為除法運(yùn)算中所得到的余數(shù)的輸出端口。該除法器的設(shè)計(jì)中使用了狀態(tài)機(jī),它有5個(gè)狀態(tài):start為開始狀態(tài),one為第一次移位狀態(tài),two為第二次移位狀態(tài),three為第三次移位狀態(tài)(正常運(yùn)算結(jié)果的輸出狀態(tài)),error為溢出出錯(cuò)狀態(tài)。在除法器的設(shè)計(jì)中引用了減法器。ain用來寄存被除數(shù),bin用來寄存除數(shù),atem為減法器的被減數(shù)輸入,btem為減法器的減數(shù)輸入,stem用來計(jì)算內(nèi)存結(jié)果,
35、citem為減法器的借位輸入,cotem為減法器的借位輸出。除法器的VHDL語言描述的部分程序:BEGINp2:PROCESS(clk)VARIABLE n:INTEGER range 0 to 3; 移位次數(shù)計(jì)數(shù)值BEGINIF clk'EVENT AND clk='1'THEN 時(shí)鐘脈沖為高電平時(shí),狀態(tài)開始轉(zhuǎn)換CASE state IS 有限狀態(tài)機(jī)的使用WHEN start=> 開始狀態(tài)IF str='1'THEN 啟動(dòng)信號(hào)為高電平的時(shí)候有效 state<=one; 進(jìn)入第一次移位狀態(tài) atem(3 DOWNTO 0)<=a(7 D
36、OWNTO 4); 把被除數(shù)的高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)<=b(3 DOWNTO 0); 寄存除數(shù)END IF; WHEN one=> 第一次移位 IF cotem='0'THEN state<=error; 進(jìn)入溢出出錯(cuò)狀態(tài) ELSE ain(3 downto 1)<=ain(2 downto 0); ain(0)<=not cote
37、m; 在最低位接受該位商值 atem(3 downto 0)<=ain(6 downto 3); 除數(shù)寄存器高4位輸入到減法器,作為被減數(shù) state<=two; 進(jìn)入第二次移位的狀態(tài) END IF; WHEN two=> 第二次移位 IF n=2 THEN state<=three; 進(jìn)入第三次移位狀態(tài) n:=0; ELSE state<=two; n:=n+1; END IF; IF cotem='1'THEN atem(3 DOWNTO 1)<=stem(2 DOWNTO 0); ELSE atem(3 DOWNTO 1)<=at
38、em(2 DOWNTO 0); END IF; ain(3 DOWNTO 1)<=ain(2 DOWNTO 0); ain(0)<=ain(3); atem(0)<=ain(3);WHEN three=> 第三次移位 s(3 DOWNTO 1)<=ain(2 DOWNTO 0); s(0)<=NOT cotem; IF cotem='0'THEN y(3 DOWNTO 0)<=atem(3 DOWNTO 0); ELSE y(3 DOWNTO 0)<=atem(3 DOWNTO 0); END IF; atem(3 DOWNTO
39、0)<="0" btem(3 DOWNTO 0)<="0" state<=start; WHEN error=> 溢出狀態(tài) state<=start; 回到開始狀態(tài) atem(3 DOWNTO 0)<="0" btem(3 DOWNTO 0)<="0"END CASE;END IF;END PROCESS p2;citem<='0' 借位位輸入端為0U1:suber PORT MAP(atem,btem,citem,stem,cotem);END be
40、have;除法器的引腳圖:圖3-12 除法器的引腳圖除法器的仿真波形圖之一:圖3-13 除法器的仿真波形之一除法器的仿真波形圖之二:圖3-14 除法器的仿真波形之二在以上兩幅除法器的仿真圖中,我舉了好多的例子的除法運(yùn)算。在啟動(dòng)信號(hào)為低電平的時(shí)候,整個(gè)除法器清零。在啟動(dòng)信號(hào)str為高電平時(shí),除法器開始了運(yùn)算。仿真圖3.12是整除的運(yùn)算,沒有余數(shù)。如在02H÷1H的除法運(yùn)算中,得到的商為2H,余數(shù)為0H,說明02H能被1H整除。在仿真圖3.13中也舉了不能被整除的除法。如04H÷8,商為0H,余數(shù)4H。3.4 計(jì)算器輸入部分的設(shè)計(jì)和實(shí)現(xiàn)計(jì)算器輸入部分的設(shè)計(jì)最要是按鍵譯碼電路的設(shè)
41、計(jì)和實(shí)現(xiàn)。流程圖如圖3-12所示:reset=1=0清零無按鍵動(dòng)作按鍵顯示所按下的鍵對(duì)應(yīng)的數(shù)字(第一個(gè)按鍵對(duì)應(yīng)的是0的顯示,以此類推,到按下第十個(gè)鍵的時(shí)候?qū)?yīng)的是9)有按鍵動(dòng)作clk時(shí)鐘脈沖圖3-15 數(shù)字按鍵譯碼電路的流程圖下面的程序是數(shù)字按鍵譯碼電路的VHDL語言描述。在該程序中,可以設(shè)reset是異步復(fù)位信號(hào)的輸入端口,inclk是時(shí)鐘信號(hào)的輸入端口,innum端口用來表示輸入的按鍵向量,outnum端口用來表示輸入的按鍵動(dòng)作對(duì)應(yīng)的輸出數(shù)字,outflag端口用來輸出是否有按鍵動(dòng)作。數(shù)字按鍵譯碼電路的部分VHDL語言描述:BEGIN PROCESS(inclk,reset) BEGIN
42、IF reset='1'THEN 異步復(fù)位信號(hào)為高電平的時(shí)候 outnum<="0000" 把“0000”賦值給數(shù)字的輸出端口 ELSIF inclk'EVENT AND inclk='1'THEN 在異步復(fù)位信號(hào)reset為低電平時(shí),而時(shí)鐘信號(hào)為上升沿(有效電平)的時(shí)候 CASE innum IS WHEN"0000000001"=>outnum<="0000"outflag<='1' 按下一個(gè)鍵表示輸入為0 WHEN"0000000010&q
43、uot;=>outnum<="0001"outflag<='1' 按下第二個(gè)鍵表示輸入為1 WHEN"0000000100"=>outnum<="0010"outflag<='1' 按下第三個(gè)鍵表示輸入為2 WHEN"0000001000"=>outnum<="0011"outflag<='1' 按下第四個(gè)鍵表示輸入為3 WHEN"0000010000"=>outnum
44、<="0100"outflag<='1' 按下第五個(gè)鍵表示輸入為4 WHEN"0000100000"=>outnum<="0101"outflag<='1' 按下第六個(gè)鍵表示輸入為5 WHEN"0001000000"=>outnum<="0110"outflag<='1' 按下第七個(gè)鍵表示輸入為6 WHEN"0010000000"=>outnum<="0111
45、"outflag<='1' 按下第八個(gè)鍵表示輸入為7 WHEN"0100000000"=>outnum<="1000"outflag<='1' 按下第九個(gè)鍵表示輸入為8 WHEN"1000000000"=>outnum<="1001"outflag<='1' 按下第十個(gè)鍵表示輸入為9 WHEN OTHERS=>outnum<=outnum;outflag<='0' 不按鍵時(shí)保持 數(shù)字
46、按鍵譯碼電路的引腳圖圖:圖3-16 數(shù)字按鍵譯碼電路的引腳圖從下圖3-17數(shù)字按鍵譯碼電路的仿真波形中可以看到要得到的結(jié)果,也證實(shí)了程序的正確性,如輸入按鍵為“0000010000”時(shí),所對(duì)應(yīng)的是第五個(gè)按鍵為高電平,所以應(yīng)該顯示數(shù)字再看輸出端口輸出的數(shù)字確實(shí)為4,所以此程序正確。其實(shí),這個(gè)程序主要實(shí)現(xiàn)的是按下什么就輸出什么。一共有十個(gè)位,初始值都為低電平“0”,當(dāng)按下哪個(gè)位時(shí)哪個(gè)位上的電平就跳為高電平(有且僅有一個(gè)為高電平),這時(shí)就有相應(yīng)的輸出。那十個(gè)位分別對(duì)應(yīng)的是09這十個(gè)數(shù)字,所以當(dāng)?shù)谝粋€(gè)位(從左往右位數(shù)依次增高)為高電平時(shí)顯示0,第十個(gè)位上位高電平時(shí),相應(yīng)的顯示為9。如果按下的鍵是加號(hào)、
47、減號(hào)、乘號(hào)、減號(hào)或者是等于號(hào)時(shí),也是不顯示的,所以此程序稱為數(shù)字按鍵譯碼電路。圖3-17 數(shù)字按鍵譯碼電路的仿真波形3.5 計(jì)算器顯示部分的設(shè)計(jì)和實(shí)現(xiàn)計(jì)算器顯示部分的設(shè)計(jì)和實(shí)現(xiàn),實(shí)際上就是7段譯碼器的設(shè)計(jì)和實(shí)現(xiàn),其VHDL語言描述如下所示。在這段程序中,indata是輸入4位二進(jìn)制數(shù)的端口,outdata是輸出7位譯碼的端口,用WITH語句來實(shí)現(xiàn)譯碼。7段譯碼器的部分VHDL語言描述BEGINWITH indata SELECToutdata<="1111110"WHEN"0000", 0的顯示,十六進(jìn)制數(shù)顯示為7E "0110000&q
48、uot;WHEN"0001", 1的顯示,十六進(jìn)制數(shù)顯示為30 "1101101"WHEN"0010", 2的顯示,十六進(jìn)制數(shù)顯示為6D "1111001"WHEN"0011", 3的顯示,十六進(jìn)制數(shù)顯示為79 "0110011"WHEN"0100", 4的顯示,十六進(jìn)制數(shù)顯示為33 "1011011"WHEN"0101", 5的顯示,十六進(jìn)制數(shù)顯示為5B "1011111"WHEN"0
49、110", 6的顯示,十六進(jìn)制數(shù)顯示為5F "1110000"WHEN"0111", 7的顯示,十六進(jìn)制數(shù)顯示為70 "1111111"WHEN"1000", 8的顯示,十六進(jìn)制數(shù)顯示為7E "1111011"WHEN"1001", 9的顯示,十六進(jìn)制數(shù)顯示為7B "0000000"WHEN OTHERS; 其它的輸入按鍵均不顯示7段譯碼器的引腳圖:圖3-18 7段譯碼器的引腳圖7段譯碼器的仿真波形:圖3-19 7段譯碼器的仿真波形輸入什么數(shù),就
50、對(duì)應(yīng)地輸出什么數(shù)。利用7段譯碼管來顯示。7段譯碼管的基本結(jié)構(gòu):agbefcd圖3-20 7段譯碼管的基本結(jié)構(gòu)從以上結(jié)構(gòu)圖3-19中可以看出,十六進(jìn)制數(shù)7E的二進(jìn)制數(shù)為1111110,也就是說a、b、c、d、e、f的顯示管亮起來(“1為燈亮”,“0”為燈不亮),而g顯示不亮,即所得數(shù)字在數(shù)碼管(7段譯碼管)上的顯示就是0。以此類推,“0110000”顯示的是1,“1101101”顯示的是2,“1111001”顯示的是3,“0110011”顯示的是4,“1011011”顯示的是5,“1011111”顯示的是6,“1110000”顯示的是7,“1111111”顯示的是8,“1111011”顯示的是9
51、。3.6位二進(jìn)制數(shù)轉(zhuǎn)換成個(gè)位、十位、百位的模塊這個(gè)設(shè)計(jì)中,使用一個(gè)8位二進(jìn)制寄存器來存放運(yùn)算結(jié)果,因此要將它們顯示出來,就得將8位二進(jìn)制數(shù)轉(zhuǎn)換成個(gè)位、十位和百位。流程圖如下:清零位(c)c=1c=0全部清零取數(shù)產(chǎn)生個(gè)位上的數(shù)產(chǎn)生十位上的數(shù)產(chǎn)生百位上的數(shù)做相應(yīng)地減法圖3-21 8位二進(jìn)制數(shù)轉(zhuǎn)換成個(gè)位、十位、百位的模塊的流程圖這里使用一個(gè)有限狀態(tài)機(jī)來將8位二進(jìn)制數(shù)轉(zhuǎn)換成各位數(shù),每一位數(shù)位都使用一個(gè)4位二進(jìn)制數(shù)寄存器,百位使用view1,十位使用view2,個(gè)位使用view3,00001001分別代表十進(jìn)制數(shù)的09。狀態(tài)機(jī)有4個(gè)狀態(tài),即:取數(shù)狀態(tài)、產(chǎn)生百位數(shù)狀態(tài)、產(chǎn)生十位數(shù)狀態(tài)和產(chǎn)生個(gè)位數(shù)狀態(tài)。以下
52、程序是8位二進(jìn)制數(shù)轉(zhuǎn)換成個(gè)位、十位、百位的過程作為一個(gè)進(jìn)程的VHDL語言描述。8位二進(jìn)制數(shù)轉(zhuǎn)換成個(gè)位、十位、百位的進(jìn)程:BEGIN IF c='1'THEN view1<="0000" view2<="0000" view3<="0000" viewstep<=takenum; ELSIF clk'EVENT AND clk='1'THEN CASE viewstep IS WHEN takenum=> ktemp<=keep; viewstep<=hu
53、ndred; WHEN hundred=> IF ktemp>="11001000"THEN 如果ktemp大于200 view1<="0010"ktemp<=ktemp-"11001000"百位為2,ktemp200 ELSIF ktemp>="01100100"THEN 如果ktemp大于100 view1<="0001"ktemp<=ktemp-"01100100"百位為1,ktemp100 ELSE view1<=&qu
54、ot;0000" 百位為0 END IF; viewstep<=ten; WHEN ten=> 產(chǎn)生十位數(shù)字 IF ktemp>="01011010"THEN 當(dāng)ktemp大于90的時(shí)候 view2<="1001"ktemp<=ktemp-"01011010" 十位上賦值為9,ktemp90 ELSIF ktemp>="01010000"THEN 當(dāng)ktemp大于80時(shí) view2<="1000"ktemp<=ktemp-"01010000" 十位為8,ktemp80 ELSIF ktemp>="01000110"THEN 當(dāng)ktemp大于70時(shí) view2<="0111"ktemp<=ktemp-"01000110"十位為7,ktemp70 ELSIF ktemp>="00111100"
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 游艇俱樂部運(yùn)營經(jīng)理崗位面試問題及答案
- 箱包結(jié)構(gòu)設(shè)計(jì)師崗位面試問題及答案
- 2025屆山西省忻州一中、臨汾一中、精英中學(xué)、鄂爾多斯一中高二下化學(xué)期末質(zhì)量跟蹤監(jiān)視試題含解析
- 湖北省襄陽市重點(diǎn)中學(xué)2025年高二下化學(xué)期末復(fù)習(xí)檢測(cè)模擬試題含解析
- 醫(yī)藥研發(fā)激勵(lì)管理辦法
- 景區(qū)游客垃圾管理辦法
- 法人帳戶透支管理辦法
- 醫(yī)院集中采購管理辦法
- 公司危機(jī)事件管理辦法
- 農(nóng)村集體經(jīng)濟(jì)發(fā)展的基本問題研究
- 2025年云南普洱市墨江天下一雙文旅體育集團(tuán)有限公司招聘筆試參考題庫附帶答案詳解
- 澠池鋁礦礦產(chǎn)資源開采與生態(tài)修復(fù)方案
- 創(chuàng)傷嚴(yán)重程度(ISS)評(píng)分表(完整版)
- 茶葉中茶多酚檢測(cè)方法的改進(jìn)
- GB/T 2423.102-2008電工電子產(chǎn)品環(huán)境試驗(yàn)第2部分:試驗(yàn)方法試驗(yàn):溫度(低溫、高溫)/低氣壓/振動(dòng)(正弦)綜合
- GB/T 18391.5-2009信息技術(shù)元數(shù)據(jù)注冊(cè)系統(tǒng)(MDR)第5部分:命名和標(biāo)識(shí)原則
- 第二季度護(hù)理紅黃警示及核心制度試題含答案
- 有機(jī)廢棄物資源化利用課件
- 住院患者身份確認(rèn)表
- 2023年度萬科集團(tuán)合格供應(yīng)商名錄
- 水合肼項(xiàng)目安全評(píng)價(jià)報(bào)告
評(píng)論
0/150
提交評(píng)論