版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 課 程 設(shè) 計(jì)</p><p> 2009年 7 月 10 日</p><p><b> 課程設(shè)計(jì)任務(wù)書(shū)</b></p><p> 課程 硬件課程設(shè)計(jì)</p><p> 題目 數(shù)字電壓表設(shè)計(jì)
2、</p><p> 主要內(nèi)容、基本要求等</p><p><b> 一、主要內(nèi)容:</b></p><p> 利用EL教學(xué)實(shí)驗(yàn)箱、微機(jī)和QuartusⅡ軟件系統(tǒng),使用VHDL語(yǔ)言輸入方法設(shè)計(jì)數(shù)字鐘??梢岳脤哟卧O(shè)計(jì)方法和VHDL語(yǔ)言,完成硬件設(shè)計(jì)設(shè)計(jì)和仿真。最后在EL教學(xué)實(shí)驗(yàn)箱中實(shí)現(xiàn)。</p><p><b&
3、gt; 二、基本要求:</b></p><p> 1、A/D轉(zhuǎn)換接口電路的設(shè)計(jì),負(fù)責(zé)對(duì)ADC0809的控制。</p><p> 2、編碼轉(zhuǎn)換電路設(shè)計(jì),負(fù)責(zé)把從ADC0809數(shù)據(jù)總線中讀出的電壓轉(zhuǎn)換成BCD碼。</p><p> 3、輸出七段顯示電路的設(shè)計(jì),負(fù)責(zé)將BCD碼用7段顯示器顯示出來(lái)。</p><p><
4、b> 三、擴(kuò)展要求</b></p><p> 1、當(dāng)測(cè)量結(jié)束后,蜂鳴器鳴響10聲。 </p><p><b> 四、參考文獻(xiàn)</b></p><p> [1] 李朝清.單片機(jī)原理及技術(shù)接口[M].出版社:北京航空航天大學(xué)出版社.出版時(shí)間:2011年6月第17次印刷</p><p> [2]
5、康華光,鄒壽彬等.電子技術(shù)基礎(chǔ)數(shù)字部分[M].出版社:高等教育出版社</p><p> [3] 康華光,張林,電子技術(shù)基礎(chǔ)模擬部分[M].出版社:高等教育出版社.</p><p> [4] 吳金戌,郭庭吉.8051單片機(jī)實(shí)踐與應(yīng)用[M].北京:清華大學(xué)出版社,2002</p><p> [5] 張國(guó)勛.縮短ICL7135A/D采樣程序時(shí)間的一種方法[J].電子
6、技術(shù)應(yīng)用.1993.</p><p><b> 摘 要</b></p><p> 本文闡述了EDA技術(shù)的基本特征及關(guān)鍵技術(shù),介紹了EDA工具軟件和硬件描述語(yǔ)言,分析了EDA技術(shù)的現(xiàn)狀及發(fā)展趨勢(shì)。EDA是電子設(shè)計(jì)自動(dòng)化(Electronic Design Automation)的縮寫(xiě)。由于它是一門(mén)剛剛發(fā)展起來(lái)的新技術(shù),涉及面廣,內(nèi)容豐富,理解各異,所以目前尚無(wú)一個(gè)確
7、切的定義。但從EDA技術(shù)的幾個(gè)主要方面的內(nèi)容來(lái)看,可以理解為:EDA技術(shù)是以大規(guī)模可編程邏輯器件為設(shè)計(jì)載體,以硬件描述語(yǔ)言為系統(tǒng)邏輯描述的主要表達(dá)方式,以計(jì)算機(jī)、大規(guī)模可編程邏輯器件的開(kāi)發(fā)軟件及實(shí)驗(yàn)開(kāi)發(fā)系統(tǒng)為設(shè)計(jì)工具,通過(guò)有關(guān)的開(kāi)發(fā)軟件,自動(dòng)完成用軟件的方式設(shè)計(jì)電子系統(tǒng)到硬件系統(tǒng)的一門(mén)新技術(shù)。</p><p> 本文設(shè)計(jì)主要利用VHDL語(yǔ)言在EDA平臺(tái)上設(shè)計(jì)一個(gè)數(shù)字電壓表,本實(shí)驗(yàn)中所要求設(shè)計(jì)的數(shù)字電壓表為4位,
8、由三大部分組成,每一部分又包含了若干子電路,將各電路組合起來(lái),就構(gòu)成了一個(gè)整體。1、A/D轉(zhuǎn)換接口電路的設(shè)計(jì),負(fù)責(zé)對(duì)ADC0809的控制。2、編碼轉(zhuǎn)換電路設(shè)計(jì),負(fù)責(zé)把從ADC0809數(shù)據(jù)總線中讀出的電壓轉(zhuǎn)換成BCD碼。3、輸出七段顯示電路的設(shè)計(jì),負(fù)責(zé)將BCD碼用7段顯示器顯示出來(lái)。數(shù)字電壓表是諸多數(shù)字化儀表的核心與基礎(chǔ)。以數(shù)字電壓表為核心擴(kuò)展成的各種數(shù)字化儀表,幾乎覆蓋了電子電工測(cè)量、工業(yè)測(cè)量、自動(dòng)化系統(tǒng)等各個(gè)領(lǐng)域。并且使用Quartu
9、s7.2-II軟件進(jìn)行電路波形仿真,下載到EDA實(shí)驗(yàn)箱進(jìn)行驗(yàn)證。</p><p> 關(guān)鍵詞: EDA(電子設(shè)計(jì)自動(dòng)化);VHDL(硬件描述語(yǔ)言),數(shù)字鐘。</p><p><b> 目 錄</b></p><p><b> 第1章 概 述1</b></p><p> 1.1EDA的概念
10、1</p><p> 1.2 EDA技術(shù)及應(yīng)用1</p><p> 1.3EDA技術(shù)發(fā)展前景3</p><p> 第2章 設(shè)計(jì)基礎(chǔ)知識(shí)4</p><p> 2.1FPGA知識(shí)介紹4</p><p> 2.2VHDL硬件描述語(yǔ)言6</p><p> 2.3Quartus II
11、及其他第三方開(kāi)發(fā)工具8</p><p> 第3章 數(shù)字電壓表電路設(shè)計(jì)11</p><p> 3.1設(shè)計(jì)規(guī)劃11</p><p> 3.2設(shè)計(jì)內(nèi)容11</p><p> 3.3電路程序13</p><p> 第4章 系統(tǒng)軟件程序的設(shè)計(jì)18</p><p><b>
12、 4.1主程序18</b></p><p> 4.2轉(zhuǎn)換電子程序18</p><p> 4.3中斷顯示程序19</p><p> 第5章 電壓表的調(diào)試及性能分析21</p><p> 5.1調(diào)試與測(cè)試21</p><p> 5.2性能分析22</p><p>&
13、lt;b> 結(jié) 論23</b></p><p><b> 參考文獻(xiàn)24</b></p><p><b> 第1章 概 述</b></p><p> 1.1 EDA的概念</p><p> 20世紀(jì)90年代,國(guó)際上電子和計(jì)算機(jī)技術(shù)較先進(jìn)的國(guó)家,一直在積極探索新的電子電路
14、設(shè)計(jì)方法,并在設(shè)計(jì)方法、工具等方面進(jìn)行了徹底的變革,取得了巨大成功。在電子技術(shù)設(shè)計(jì)領(lǐng)域,可編程邏輯器件(如CPLD、FPGA)的應(yīng)用,已得到廣泛的普及,這些器件為數(shù)字系統(tǒng)的設(shè)計(jì)帶來(lái)了極大的靈活性。這些器件可以通過(guò)軟件編程而對(duì)其硬件結(jié)構(gòu)和工作方式進(jìn)行重構(gòu),從而使得硬件的設(shè)計(jì)可以如同軟件設(shè)計(jì)那樣方便快捷。這一切極大地改變了傳統(tǒng)的數(shù)字系統(tǒng)設(shè)計(jì)方法、設(shè)計(jì)過(guò)程和設(shè)計(jì)觀念,促進(jìn)了EDA技術(shù)的迅速發(fā)展。</p><p> 由
15、于它是一門(mén)剛剛發(fā)展起來(lái)的新技術(shù),涉及面廣,內(nèi)容豐富,理解各異,所以目前尚無(wú)一個(gè)確切的定義。但從EDA技術(shù)的幾個(gè)主要方面的內(nèi)容來(lái)看,可以理解為:EDA技術(shù)是以大規(guī)??删幊踢壿嬈骷樵O(shè)計(jì)載體,以硬件描述語(yǔ)言為系統(tǒng)邏輯描述的主要表達(dá)方式,以計(jì)算機(jī)、大規(guī)模可編程邏輯器件的開(kāi)發(fā)軟件及實(shí)驗(yàn)開(kāi)發(fā)系統(tǒng)為設(shè)計(jì)工具,通過(guò)有關(guān)的開(kāi)發(fā)軟件,自動(dòng)完成用軟件的方式設(shè)計(jì)電子系統(tǒng)到硬件系統(tǒng)的一門(mén)新技術(shù)??梢詫?shí)現(xiàn)邏輯編譯、邏輯化簡(jiǎn)、邏輯分割、邏輯綜合及優(yōu)化,邏輯布局布線
16、、邏輯仿真。完成對(duì)于特定目標(biāo)芯片的適配編譯、邏輯映射、編程下載等工作,最終形成集成電子系統(tǒng)或?qū)S眉尚酒?lt;/p><p> 利用EDA工具,電子設(shè)計(jì)師可以從概念、算法、協(xié)議等開(kāi)始設(shè)計(jì)電子系統(tǒng),大量工作可以通過(guò)計(jì)算機(jī)完成,并可以將電子產(chǎn)品從電路設(shè)計(jì)、性能分析到設(shè)計(jì)出IC版圖或PCB版圖的整個(gè)過(guò)程的計(jì)算機(jī)上自動(dòng)處理完成。</p><p> 現(xiàn)在對(duì)EDA的概念或范疇用得很寬。包括在機(jī)械、電
17、子、通信、航空航天、化工、礦產(chǎn)、生物、醫(yī)學(xué)、軍事等各個(gè)領(lǐng)域,都有EDA的應(yīng)用。目前EDA技術(shù)已在各大公司、企事業(yè)單位和科研教學(xué)部門(mén)廣泛使用。例如在飛機(jī)制造過(guò)程中,從設(shè)計(jì)、性能測(cè)試及特性分析直到飛行模擬,都可能涉及到EDA技術(shù)。</p><p> 硬件描述語(yǔ)言:硬件描述語(yǔ)言(HDL—Hardware Description Language)是一種用于設(shè)計(jì)硬件電子系統(tǒng)的計(jì)算機(jī)語(yǔ)言,它用軟件編程的方式來(lái)描述電子系統(tǒng)
18、的邏輯功能、電路結(jié)構(gòu)和連接形式,與傳統(tǒng)的門(mén)級(jí)描述方式相比,它更適合大規(guī)模系統(tǒng)的設(shè)計(jì)。</p><p> 1.2 EDA技術(shù)及應(yīng)用</p><p> Electronic Document Authorization,指電子文件授權(quán),是工作流軟件系統(tǒng)最常用的一種功能。</p><p> 它超越文電鑒別和數(shù)字簽名來(lái)對(duì)電子表格或信息的接受者提供保證。其發(fā)送者具有特許
19、權(quán)或適當(dāng)?shù)馁M(fèi)用限制來(lái)簽署和發(fā)送文件。EDA技術(shù)是在電子CAD技術(shù)基礎(chǔ)上發(fā)展起來(lái)的計(jì)算機(jī)軟件系統(tǒng),是指以計(jì)算機(jī)為工作平臺(tái),融合了應(yīng)用電子技術(shù)、計(jì)算機(jī)技術(shù)、信息處理及智能化技術(shù)的最新成果,進(jìn)行電子產(chǎn)品的自動(dòng)設(shè)計(jì)。</p><p> 利用EDA工具,電子設(shè)計(jì)師可以從概念、算法、協(xié)議等開(kāi)始設(shè)計(jì)電子系統(tǒng),大量工作可以通過(guò)計(jì)算機(jī)完成,并可以將電子產(chǎn)品從電路設(shè)計(jì)、性能分析到設(shè)計(jì)出IC版圖或PCB版圖的整個(gè)過(guò)程的計(jì)算機(jī)上自動(dòng)處
20、理完成。</p><p> 現(xiàn)在對(duì)EDA的概念或范疇用得很寬。包括在機(jī)械、電子、通信、航空航天、化工、礦產(chǎn)、生物、醫(yī)學(xué)、軍事等各個(gè)領(lǐng)域,都有EDA的應(yīng)用。目前EDA技術(shù)已在各大公司、企事業(yè)單位和科研教學(xué)部門(mén)廣泛使用。例如在飛機(jī)制造過(guò)程中,從設(shè)計(jì)、性能測(cè)試及特性分析直到飛行模擬,都可能涉及到EDA技術(shù)。本文所指的EDA技術(shù),主要針對(duì)電子電路設(shè)計(jì)、PCB設(shè)計(jì)和IC設(shè)計(jì)。</p><p>
21、EDA設(shè)計(jì)可分為系統(tǒng)級(jí)、電路級(jí)和物理實(shí)現(xiàn)級(jí)。EDA常用軟件:EDA工具層出不窮,目前進(jìn)入我國(guó)并具有廣泛影響的EDA軟件有:multiSIM7(原EWB的最新版本)、PSPICE、OrCAD、PCAD、Protel、Viewlogic、Mentor、Graphics、Synopsys、LSIIogic、Cadence、MicroSim,ISE,modelsim等等。這些工具都有較強(qiáng)的功能,一般可用于幾個(gè)方面,例如很多軟件都可以進(jìn)行電路設(shè)計(jì)
22、與仿真,同進(jìn)還可以進(jìn)行PCB自動(dòng)布局布線,可輸出多種網(wǎng)表文件與第三方軟件接口。</p><p> 從目前的EDA技術(shù)來(lái)看,其發(fā)展趨勢(shì)是政府重視、使用普及、應(yīng)用文泛、工具多樣、軟件功能強(qiáng)大。在信息通信領(lǐng)域,要優(yōu)先發(fā)展高速寬帶信息網(wǎng)、深亞微米集成電路、新型元器件、計(jì)算機(jī)及軟件技術(shù)、第三代移動(dòng)通信技術(shù)、信息管理、信息安全技術(shù),積極開(kāi)拓以數(shù)字技術(shù)、網(wǎng)絡(luò)技術(shù)為基礎(chǔ)的新一代信息產(chǎn)品,發(fā)展新興產(chǎn)業(yè),培育新的經(jīng)濟(jì)增長(zhǎng)點(diǎn)。要大力
23、推進(jìn)制造業(yè)信息化,積極開(kāi)展計(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è)可開(kāi)展“網(wǎng)絡(luò)制造”,便于合作設(shè)計(jì)、合作制造,參與國(guó)內(nèi)和國(guó)際競(jìng)爭(zhēng)。開(kāi)展“數(shù)控化”工程和“數(shù)字化”工程。自動(dòng)化儀表的技術(shù)發(fā)展趨勢(shì)的測(cè)試技術(shù)、控制技術(shù)與計(jì)算機(jī)技術(shù)、通信技術(shù)進(jìn)一步融合,形成測(cè)量、控制、通信與計(jì)算機(jī)(M3C)
24、結(jié)構(gòu)。在ASIC和PLD設(shè)計(jì)方面,向超高速、高密度、低功耗、低電壓方向發(fā)展。</p><p> 1.3EDA技術(shù)發(fā)展前景</p><p> 進(jìn)入二十一世紀(jì)以來(lái),電子科技對(duì)于我們的生活越來(lái)越重要,我們的生活無(wú)時(shí)無(wú)刻不與電子科技相聯(lián)系,而我們對(duì)于電子產(chǎn)品的國(guó)內(nèi)功能與速度的要求越來(lái)越高。這就促進(jìn)了不知是軟件工程的發(fā)展,我們同時(shí)更加注重硬件工程的發(fā)展,EDA作為其中一門(mén)學(xué)科有著很好的發(fā)展前景。
25、</p><p> 一門(mén)學(xué)科永遠(yuǎn)不可能有研究皆知的時(shí)候,每當(dāng)人類(lèi)有新的發(fā)現(xiàn)是科技總會(huì)給我們新的驚喜。EDA同樣是一門(mén)有趣而有意義的科學(xué),所以我們有理由相信他會(huì)有很好的發(fā)展前景,而當(dāng)下的時(shí)代中,我們所應(yīng)用的外部設(shè)備也越來(lái)越先進(jìn)。外設(shè)技術(shù)與EDA工程相結(jié)合的市場(chǎng)前景看好,如組合超大屏幕的相關(guān)連接,多屏幕技術(shù)也有所發(fā)展。</p><p> 第2章 設(shè)計(jì)基礎(chǔ)知識(shí)</p><
26、p> 2.1FPGA知識(shí)介紹</p><p> 現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA, Field Programmable Gate Array)的出現(xiàn)是超大規(guī)模集成電路(VLSL)技術(shù)和計(jì)算機(jī)扶助設(shè)計(jì)(CAD)技術(shù)發(fā)展的結(jié)果。它一般都采用SRAM工藝,也有一些專(zhuān)用器件采用Flash 7-藝或反熔絲(Anti.Fuse)工藝等。FPGA器件集成度很高、其器件密度從數(shù)萬(wàn)系統(tǒng)門(mén)到數(shù)千萬(wàn)系統(tǒng)門(mén)不等,可以完成極其復(fù)雜的
27、時(shí)序與組合邏輯電路功能,適用于高速、高密度的高端數(shù)字邏輯電路設(shè)計(jì)領(lǐng)域。具有通過(guò)用戶(hù)編程實(shí)現(xiàn)專(zhuān)門(mén)應(yīng)用的功能。它允許電路設(shè)計(jì)者利用基于計(jì)算機(jī)的開(kāi)發(fā)平臺(tái),經(jīng)過(guò)設(shè)計(jì)輸入、仿真、測(cè)試和校驗(yàn),直至達(dá)到預(yù)期的結(jié)果。使用FPGA器件可以大大縮短系統(tǒng)的研制周期,減少資金的投入。更吸引人的是,采用FPGA器件可以將原來(lái)的電路板級(jí)產(chǎn)品集成為芯片級(jí)產(chǎn)品,從而降低了功耗,提高了可靠性,同時(shí)還可以很方便地對(duì)設(shè)計(jì)進(jìn)行在線修改。FPGA器件成為研制開(kāi)發(fā)的理想器件,特別
28、適用于產(chǎn)品的樣機(jī)開(kāi)發(fā)和小批量的生產(chǎn),因此有人也把FPGA稱(chēng)為可編程的ASIC。如今,F(xiàn)PGA器件廣泛應(yīng)用于通信、自動(dòng)控制、信息處理等諸多領(lǐng)域,越來(lái)越多的電子設(shè)計(jì)人員在使用FPGA,熟練掌握FPGA設(shè)計(jì)技</p><p> FPGA的邏輯門(mén)數(shù)己達(dá)1千萬(wàn),內(nèi)核速度達(dá)到400MHz,能提供高達(dá)11Gbps的芯片間通信速度,隨著工藝微縮,當(dāng)前的FPGA已經(jīng)能夠內(nèi)嵌DSP核心的方式在諸多高端應(yīng)用中實(shí)現(xiàn)傳統(tǒng)DSP的工作,且
29、可編程特性將大幅壓低成本,并加快設(shè)計(jì)周期?,F(xiàn)在的FPGA芯片中不只是包含可編程邏輯功能模塊、可編程輸入輸出模塊和可編程內(nèi)部互連資源等基本的資源,還集成了存儲(chǔ)器(Block RAM和Disturbed RAM)、數(shù)字時(shí)鐘管理但愿(完成分頻/倍頻、數(shù)字鎖相和延遲功能的DLL和DCM)、算術(shù)運(yùn)算單元(生發(fā)起、加法器)以及特殊功能模塊(MAC、微處理器等硬IP核)等更豐富的資源,與過(guò)去FPGA僅僅用作膠合邏輯不同,現(xiàn)在FPGA已經(jīng)被用來(lái)實(shí)現(xiàn)主要
30、系統(tǒng)功能。而與此同時(shí),它仍然保持著非常合理的成本,因此,與ASIC和定制IC相比,F(xiàn)PGA是一種更具有吸引力的選擇。FPGA設(shè)計(jì)具有以下優(yōu)點(diǎn):</p><p> (1)硬件設(shè)計(jì)軟件化</p><p> 這是FPGA開(kāi)發(fā)的最大優(yōu)勢(shì)。傳統(tǒng)硬件電路設(shè)計(jì)先要進(jìn)行功能設(shè)計(jì),然后進(jìn)行電路板級(jí)設(shè)計(jì)并做稱(chēng)電路板后進(jìn)行調(diào)試,如果電路中有什么錯(cuò)誤,整個(gè)電路板都將作廢,這是很不經(jīng)濟(jì)的。FPGA的開(kāi)發(fā)在功能層
31、面上可以完全脫離硬件而在EDA軟件上做軟仿真。當(dāng)功能確定無(wú)誤后可以進(jìn)行硬件電路板的設(shè)計(jì)。最后將設(shè)計(jì)好的,由EDA軟件生成的燒寫(xiě)文件下載到配置設(shè)備中去,進(jìn)行在線調(diào)試,如果這時(shí)的結(jié)果與要求不一致,可以立即更改設(shè)計(jì)軟件,并再次燒寫(xiě)到配置芯片中而不必改動(dòng)外接硬件電路。</p><p> (2)高度集成化,高工作頻率</p><p> 一般的FPGA內(nèi)部都集成有上百萬(wàn)的邏輯門(mén),可以在其內(nèi)部規(guī)劃出
32、多個(gè)與傳統(tǒng)小規(guī)模集成器件功能相當(dāng)?shù)哪K。這樣將多個(gè)傳統(tǒng)器件集成在同一芯片內(nèi)部的方法不但可以改進(jìn)電路板的規(guī)模,還可以減少PCB布線的工作。由于各個(gè)模塊都是集成在FPGA芯片內(nèi)部,這就很大程度地解決了信號(hào)的干擾問(wèn)題,使得FPGA的工作頻率可以大幅度的提高。另外,一般的FPGA內(nèi)部都有PLL倍頻的時(shí)鐘,這進(jìn)一步解決了電磁干擾和電磁兼容問(wèn)題。</p><p> 可編程邏輯器件的設(shè)計(jì)是利用EDA開(kāi)發(fā)軟件和編程土具對(duì)器件開(kāi)
33、發(fā)的過(guò)程。高密度復(fù)雜可編程邏輯器件的設(shè)計(jì)流程如圖2-1所示。它包括設(shè)計(jì)準(zhǔn)備、設(shè)計(jì)輸入、功能仿真、設(shè)計(jì)處理、時(shí)序仿真和器件編程及測(cè)試等七個(gè)步驟。</p><p><b> 1.設(shè)計(jì)準(zhǔn)備</b></p><p> 在系統(tǒng)設(shè)計(jì)之前,首先要進(jìn)行方案論證、系統(tǒng)設(shè)計(jì)和器件選擇等準(zhǔn)備工作。</p><p> 一般采用自上而下的設(shè)計(jì)方法,也可采用傳統(tǒng)的自
34、下而上的設(shè)計(jì)方法。</p><p> 圖2-1可編程邏輯器件設(shè)計(jì)流程</p><p><b> 2.設(shè)計(jì)輸入</b></p><p> 設(shè)計(jì)輸入將所設(shè)計(jì)的系統(tǒng)或電路以開(kāi)發(fā)軟件要求的某種形式表示出來(lái),并送入計(jì)算機(jī)的過(guò)程稱(chēng)為設(shè)計(jì)輸入。設(shè)計(jì)輸入通常有以下集中形式:</p><p><b> 1)原理圖輸入方式
35、</b></p><p> 2)硬件描述語(yǔ)言輸入方式</p><p><b> 3)波形輸入方式</b></p><p><b> 3.功能仿真</b></p><p> 功能仿真也叫做前仿真。用戶(hù)所設(shè)計(jì)的電路必須在編譯之前進(jìn)行邏輯功能驗(yàn)證,此時(shí)的仿真沒(méi)有延時(shí)信息,對(duì)于初步的功能
36、檢測(cè)非常方便。仿真中如發(fā)現(xiàn)錯(cuò)誤,則返回設(shè)計(jì)輸入中修改邏輯設(shè)計(jì)。</p><p><b> 4.設(shè)計(jì)處理</b></p><p> 設(shè)計(jì)處理是器件設(shè)計(jì)中的核心環(huán)節(jié)。在設(shè)計(jì)處理過(guò)程中,編譯軟件將對(duì)設(shè)計(jì)輸入文件進(jìn)行邏輯化簡(jiǎn)、綜合優(yōu)化和適配,最后產(chǎn)生編程用的編程文件。主要有:</p><p> 1)語(yǔ)法檢查和設(shè)計(jì)規(guī)則檢查</p>&
37、lt;p><b> 2)邏輯優(yōu)化和綜合</b></p><p><b> 3)適配和分割</b></p><p><b> 4)布局和布線</b></p><p><b> 5.時(shí)序仿真</b></p><p> 時(shí)序仿真又稱(chēng)后仿真或延時(shí)仿
38、真。由于不同器件的內(nèi)部延時(shí)不一樣,不同的布局布線方案也給延時(shí)造成不同的影響,因此在設(shè)計(jì)處理以后,對(duì)系統(tǒng)和各模塊進(jìn)行時(shí)序仿真,分析其時(shí)序關(guān)系,估計(jì)設(shè)計(jì)的性能,以及檢查和消除竟?fàn)幟半U(xiǎn)等是非常有必要的。</p><p><b> 6.器件編程測(cè)試</b></p><p> 時(shí)序仿真完成后,軟件就可產(chǎn)生供器件編程使用的數(shù)據(jù)文件。 </p><p>
39、 2.2VHDL硬件描述語(yǔ)言</p><p> 2.2.1 VHDL語(yǔ)言簡(jiǎn)介</p><p> 硬件描述語(yǔ)言(hardware description language,HDL)是電子系統(tǒng)硬件行為描述,結(jié)構(gòu)描述,數(shù)據(jù)流描述的語(yǔ)言。目前,利用硬件描述語(yǔ)言可以進(jìn)行數(shù)字電子系統(tǒng)的設(shè)計(jì).隨著研究的深入,利用硬件描述語(yǔ)言進(jìn)行模擬電子系統(tǒng)設(shè)計(jì)或混合電子系統(tǒng)設(shè)計(jì)也正在探索中。</p>
40、<p> 國(guó)外硬件描述語(yǔ)言種類(lèi)很多,有的從Pascal發(fā)展而來(lái),也有一些從C語(yǔ)言發(fā)展而來(lái)。有些HDL成為IEEE標(biāo)準(zhǔn),但大部分是企業(yè)標(biāo)準(zhǔn)。VHDL來(lái)源于美國(guó)軍方,其他的硬件描述語(yǔ)言則多來(lái)源于民間公司??芍^百家爭(zhēng)鳴,百花齊放,這些不同的語(yǔ)言傳播到國(guó)內(nèi),同樣也引起了不同的影響在我國(guó)比較有影響的有兩種硬件描述語(yǔ)言:VHDL語(yǔ)言和Verilog HDL語(yǔ)言,這兩種語(yǔ)言已成為IEEE標(biāo)準(zhǔn)語(yǔ)言。</p><p>
41、; 2.2.2 VHDL語(yǔ)言的主要優(yōu)勢(shì)</p><p> VHDL語(yǔ)言能夠成為標(biāo)準(zhǔn)并且獲得廣泛的應(yīng)用,一定有它自身的主要優(yōu)勢(shì),或者說(shuō)是與眾不同的特點(diǎn)。①?gòu)?qiáng)大的功能和靈活性:VHDL語(yǔ)言具有功能強(qiáng)大的語(yǔ)言結(jié)構(gòu),可以用簡(jiǎn)潔明確的程序來(lái)描述復(fù)雜的邏輯控制。②獨(dú)立于器件的設(shè)計(jì):設(shè)計(jì)人員采用VHDL語(yǔ)言進(jìn)行硬件電路的設(shè)計(jì)時(shí),并不需要首先選擇完成此項(xiàng)設(shè)計(jì)的邏輯器件。這樣,設(shè)計(jì)人員就可以集中精力來(lái)進(jìn)行設(shè)計(jì)的構(gòu)思。③可進(jìn)行
42、程序移植:VHDL語(yǔ)言的移植能力是允許設(shè)計(jì)人員對(duì)需要綜合設(shè)計(jì)描述進(jìn)行模擬,在綜合前對(duì)一個(gè)數(shù)千門(mén)的設(shè)計(jì)描述進(jìn)行模擬可以節(jié)約大量的時(shí)間。</p><p> 由于VHDL語(yǔ)言是一種標(biāo)準(zhǔn)化的硬件描述語(yǔ)言,因此同一個(gè)設(shè)計(jì)的VHDL語(yǔ)言描述可以被不同的EDA工具支持,從而使得VHDL語(yǔ)言程序的移植成為可能。④性能評(píng)估能力:獨(dú)立于器件的設(shè)計(jì)和可進(jìn)行程序移植允許設(shè)計(jì)人員可以采用不同的器件結(jié)構(gòu)和綜合工具來(lái)對(duì)自己的設(shè)計(jì)進(jìn)行評(píng)估。⑤
43、易于ASIC移植:VHDL語(yǔ)言效率高的重要體現(xiàn)之一就是如果設(shè)計(jì)人員的設(shè)計(jì)是被綜合到一個(gè)CPLD器件或FPGA器件,那么就可以使設(shè)計(jì)的產(chǎn)品以最快的的速度上市。當(dāng)產(chǎn)品的數(shù)量達(dá)到相當(dāng)?shù)囊?guī)模時(shí),采用VHDL語(yǔ)言能夠很容易地幫助設(shè)計(jì)人員實(shí)現(xiàn)轉(zhuǎn)成ASIC的設(shè)計(jì)。⑥VHDL語(yǔ)言標(biāo)準(zhǔn)、規(guī)范,易于共享和復(fù)用:VHDL語(yǔ)言的語(yǔ)法規(guī)范、標(biāo)準(zhǔn),可讀性強(qiáng)。由于VHDL語(yǔ)言是一種IEEE的工業(yè)標(biāo)準(zhǔn)硬件描述語(yǔ)言,具有嚴(yán)格的語(yǔ)法規(guī)范和統(tǒng)一的標(biāo)準(zhǔn),因此它可以使設(shè)計(jì)人員之
44、間進(jìn)行交流和共享。</p><p> 2.2.3 VHDL語(yǔ)言的設(shè)計(jì)流程</p><p> 采用VHDL語(yǔ)言設(shè)計(jì)硬件電路系統(tǒng)的設(shè)計(jì)流程一般可以分為以下幾個(gè)步驟。①硬件電路系統(tǒng)設(shè)計(jì)要求的定義。②編寫(xiě)描述硬件電路系統(tǒng)功能的VHDL語(yǔ)言程序。③VHDL語(yǔ)言程序的模擬。④VHDL語(yǔ)言的綜合、優(yōu)化和布局布線。⑤布局布線后的設(shè)計(jì)模擬。⑥器件的編程。設(shè)計(jì)人員在從事硬件電路系統(tǒng)的合計(jì)過(guò)程中,編寫(xiě)VHD
45、L語(yǔ)言程序之前必須對(duì)硬件電路系統(tǒng)的設(shè)計(jì)目的有一個(gè)非常明確的認(rèn)識(shí)才行。</p><p> 2.3Quartus II及其他第三方開(kāi)發(fā)工具</p><p> 2.3.1 Quartus II開(kāi)發(fā)平臺(tái)簡(jiǎn)介 </p><p> Quartus II是Altera提供的FPGA/CPLD開(kāi)發(fā)集成環(huán)境,Altera是世界最大可編程邏輯器件供應(yīng)商之一。Quartus I
46、I在21世紀(jì)初推出,是Altera前一代FPGA/CPLD集成開(kāi)發(fā)環(huán)境MAX+plus II的更新?lián)Q代產(chǎn)品,其界面友好,使用便捷。在Quartus II上可以完成設(shè)計(jì)輸入、HDL綜合、布線布局(適配)、仿真和下載和硬件測(cè)試等流程,它提供了一種與結(jié)構(gòu)無(wú)關(guān)的設(shè)計(jì)環(huán)境,使設(shè)計(jì)者能方便地進(jìn)行設(shè)計(jì)輸入、快速處理和器件編程。</p><p> Altera的Quartus II 提供了完整的多平臺(tái)設(shè)計(jì)環(huán)境,能滿(mǎn)足各種特定設(shè)
47、計(jì)的需要,也是單芯片可編程系統(tǒng)(SOPC)設(shè)計(jì)的綜合性環(huán)境和SOPC開(kāi)發(fā)的基本設(shè)計(jì)工具,并為Altera DSP開(kāi)發(fā)包進(jìn)行系統(tǒng)模型設(shè)計(jì)提供了集成綜合環(huán)境。Quartus II設(shè)計(jì)工具完全支持VHDL、Verilog的設(shè)計(jì)流程,其內(nèi)部嵌有VHDL、Verilog邏輯綜合器。Quartus II也可以利用第三方的綜合工具,如Leonardo Spectrum、Synplify Pro、FPGA Complier II,并能直接調(diào)用這些工具。
48、同樣,Quartus II具備仿真功能,同時(shí)也支持第三方的仿真工具,如ModelSim。此外,Quartus II與MATLAB和DSP Builder結(jié)合,可以進(jìn)行基于FPGA的DSP系統(tǒng)開(kāi)發(fā),是DSP硬件系統(tǒng)實(shí)現(xiàn)的關(guān)鍵EDA工具。</p><p> Quartus II包括模塊化的編譯器。編譯器包括的功能模塊有分析/綜合器(Analysis & Synthesis)、適配器(Filter)、裝配器(
49、Assembler)、時(shí)序分析器(Timing Analyzer)、設(shè)計(jì)輔助模塊(Design Assistant)、EDA網(wǎng)表文件生成器(EDA Netlist Writer)和編輯數(shù)據(jù)接口(Complier Database Interface)等。可以通過(guò)選擇Start Complication來(lái)運(yùn)行所有的編譯器模塊,也可以通過(guò)選擇Start單獨(dú)運(yùn)行各個(gè)模塊。還可以通過(guò)選擇Complier Tool(Tools 菜單),在Com
50、plier Tool 窗口中運(yùn)行該模塊來(lái)啟動(dòng)編輯器模塊。在Complier Tool 窗口中,可以打開(kāi)該模塊的設(shè)置文件或報(bào)告文件,或打開(kāi)其他相關(guān)窗口。</p><p> 此外,Quartus II還包含許多十分有用的LPM(Library of Parameterized Modules)模塊,它們是復(fù)雜或高級(jí)系統(tǒng)構(gòu)建的重要組成部分,在SOPC設(shè)計(jì)中被大量使用,也可在Quartus II普通設(shè)計(jì)文件一起使用。A
51、ltera提供的LPM函數(shù)均基于Altera器件的結(jié)構(gòu)做了優(yōu)化設(shè)計(jì)。在許多實(shí)用情況中,必須使用宏功能模塊才可以使用一些Altera特定器件的硬件功能。例如各類(lèi)片上存儲(chǔ)器、DSP模塊、LVDS驅(qū)動(dòng)器、PLL以及SERDES和DDIO電路模塊等。</p><p> 圖3-1中所示的上排是Quartus II編譯設(shè)計(jì)主控界面,它顯示了Quartus II自動(dòng)設(shè)計(jì)的各主要處理環(huán)節(jié)和設(shè)計(jì)流程,包括設(shè)計(jì)輸入編輯、設(shè)計(jì)分析與
52、綜合、適配、編程文件匯編(裝配)、時(shí)序參數(shù)提取以及編程下載幾個(gè)步驟。在圖1-1下排的流程框圖,是與上面的Quartus II設(shè)計(jì)流程相對(duì)照的標(biāo)準(zhǔn)的EDA開(kāi)發(fā)流程。</p><p> Quartus II編譯器支持的硬件描述語(yǔ)言有VHDL(支持VHDL’87及VHDL’97標(biāo)準(zhǔn))、Verilog HDL及AHDL(Altera HDL),AHDL是Altera公司自己設(shè)計(jì)、制定的硬件描述語(yǔ)言,是一種以結(jié)構(gòu)描述方式
53、為主硬件描述語(yǔ)言,只有企業(yè)標(biāo)準(zhǔn)。</p><p> Quartus II允許來(lái)自第三方的EDIF文件輸入,并提供了很多EDA軟件的接口,Quartus II支持層次化設(shè)計(jì),可以在一個(gè)新的編輯輸入環(huán)境中對(duì)使用不同輸入設(shè)計(jì)方式完成的模塊(元件)進(jìn)行調(diào)用,從而解決了原理圖與HDL混合輸入設(shè)計(jì)問(wèn)題。在設(shè)計(jì)輸入之后,Quartus II的編譯器將給出設(shè)計(jì)輸入的錯(cuò)誤報(bào)告。Quartus II 擁有良好的設(shè)計(jì)輸入定位器,用于
54、確定文本或圖形設(shè)計(jì)中的錯(cuò)誤。對(duì)于使用HDL的設(shè)計(jì),可以使用Quartus II帶有的RTL Viewer觀察綜合后的RTL圖。在進(jìn)行編譯后,可對(duì)設(shè)計(jì)進(jìn)行時(shí)序仿真。在作仿真前,需要利用波形編輯器編輯一個(gè)波形激勵(lì)文件,用于仿真驗(yàn)證時(shí)的激勵(lì)。編譯和仿真經(jīng)檢測(cè)無(wú)誤后,便可以將下載信息通過(guò)Quartus II提供的編程器下載入目標(biāo)器件中了。</p><p> 圖3-1 Quartus II設(shè)計(jì)流程</p>
55、<p> 2.3.2 第三方EDA工具 </p><p> 目前EDA/FPGA的設(shè)計(jì)趨于復(fù)雜化,設(shè)計(jì)的仿真驗(yàn)證顯得比以前更為重要。據(jù)有關(guān)資料統(tǒng)計(jì)顯示,在一個(gè)使用IP核的百萬(wàn)門(mén)級(jí)SOC設(shè)計(jì)中,花費(fèi)在仿真驗(yàn)證上的時(shí)間將占整個(gè)設(shè)計(jì)周期的70%。為了保證CPLD/FPGA仿真驗(yàn)證的精確性,很多公司都開(kāi)發(fā)出了第三方專(zhuān)用EDA工具。Quartus II支持的第三方開(kāi)發(fā)工具很多,應(yīng)用比較廣泛的如專(zhuān)用綜合工具S
56、ynplify,它在綜合策略和優(yōu)化手段上有了較大幅度的提高,使其面積較好,速度較快;Modelsim是較常用的第三方仿真工具,目前的最新版本已到5.7版。它可以對(duì)Xilinx公司的全部CPLD/FPGA產(chǎn)品進(jìn)行高精度的仿真驗(yàn)證;可以對(duì)CPLD/FPGA進(jìn)行功能仿真和時(shí)序仿真。Modelsim適用于多種操作系統(tǒng)和設(shè)計(jì)平臺(tái),主要有SE\EE\XE等版本類(lèi)型。其中Modelsim是針對(duì)Xilinx公司系列器件的專(zhuān)用仿真工具;Modelsim
57、SE\EE則是通用的EDA仿真工具,使用這兩種對(duì)Xilinx公司系列器件進(jìn)行仿真,需要預(yù)先加載Xilinx本地庫(kù)。在應(yīng)用過(guò)程中,主要包括創(chuàng)建仿真庫(kù)、邏輯庫(kù)映射、編譯設(shè)計(jì)文件、仿真驗(yàn)證等步驟,其中仿真庫(kù)包括工作庫(kù)和資源庫(kù),</p><p> 第3章 數(shù)字電壓表電路設(shè)計(jì)</p><p><b> 3.1設(shè)計(jì)規(guī)劃</b></p><p> 本實(shí)
58、驗(yàn)中所要求設(shè)計(jì)的數(shù)字電壓表為4位,由三大部分組成,每一部分又包含了若干子電路,將各電路組合起來(lái),就構(gòu)成了一個(gè)整體。</p><p> 1、A/D轉(zhuǎn)換接口電路的設(shè)計(jì),負(fù)責(zé)對(duì)ADC0809的控制。</p><p> 2、編碼轉(zhuǎn)換電路設(shè)計(jì),負(fù)責(zé)把從ADC0809數(shù)據(jù)總線中讀出的電壓轉(zhuǎn)換成BCD碼。</p><p> 3、輸出七段顯示電路的設(shè)計(jì),負(fù)責(zé)將BCD碼用
59、7段顯示器顯示出來(lái)。</p><p> 硬件說(shuō)明:本設(shè)計(jì)所需的硬件主要有:可變直流電平輸出電路、ADC0809、七段顯示器、EPF10K10LC84-4適配器</p><p><b> 3.2設(shè)計(jì)內(nèi)容</b></p><p><b> 產(chǎn)生控制信號(hào):</b></p><p> 對(duì)于ADC08
60、09芯片的各種介紹請(qǐng)參閱其數(shù)據(jù)手冊(cè)。芯片ADC0809的控制時(shí)序圖如圖52-3所示。實(shí)驗(yàn)儀器中ADC0809接口電路原理圖如圖3-1所示。</p><p> 圖3-1 ADC0809接口電路原理圖</p><p> 當(dāng)CS 和WR同時(shí)為高電平時(shí),ADC0809開(kāi)始轉(zhuǎn)換,當(dāng)轉(zhuǎn)換完成后,在INT腳輸出高電平,等待讀數(shù)據(jù);當(dāng)CS和RD同時(shí)為電平時(shí),通過(guò)數(shù)據(jù)總線D[7..0]從ADC0809
61、是讀出數(shù)據(jù)。</p><p> 圖3-2 控制器控制信號(hào)時(shí)序圖</p><p> 從圖3-2我們可以將整個(gè)控制器分成4個(gè)步驟狀態(tài):S0、S1、S2、S3,第個(gè)狀態(tài)的動(dòng)作方式如下:</p><p> 1狀態(tài)S0:CS=1、WR=1、RD=0(由控制器發(fā)出信號(hào)要求ADC0809開(kāi)始進(jìn)行模/數(shù)信號(hào)的轉(zhuǎn)換)。</p><p> 計(jì)算轉(zhuǎn)換后的
62、數(shù)字電壓信號(hào),最終以BCD碼表示,當(dāng)參考電壓(Vref)為2.56V時(shí),模擬輸入電壓與輸出電壓的對(duì)應(yīng)關(guān)系如表3-3所示。</p><p> 表3-3:模擬輸入電壓與輸出電壓的對(duì)應(yīng)關(guān)系</p><p> 這樣由ADC0809收到的信號(hào)是01110110(76H),則對(duì)照表3-3時(shí),高4位0111的電壓為2.24V,而低4位0110是0.12V,所以最后的電壓輸出結(jié)果為2.24+0.12=
63、2.36V。</p><p> 對(duì)于數(shù)據(jù)轉(zhuǎn)換成BCD碼,我們必須設(shè)計(jì)一個(gè)12位的BCD碼加法器,如上述的2.24V的二進(jìn)制表示為:001000100100、0.12V是000000010010,所以其相加結(jié)果為001000110110,為2.36V。</p><p> 提示:在讀取到轉(zhuǎn)換數(shù)據(jù)后,先用查表的指令算出高、低4位的兩個(gè)電壓值,并分別用12位的BCD碼表示。接著設(shè)計(jì)12位的BC
64、D碼加法。相加從最低4位開(kāi)始,且每4位相加結(jié)果超過(guò)10時(shí)需作進(jìn)位動(dòng)作。</p><p> 圖3-4 芯片ADC0809的控制時(shí)序圖</p><p> 控制引腳框圖如圖3-5所示。</p><p> 圖3-5 AD控制器引腳圖</p><p><b> 3.3電路程序</b></p><p&g
65、t; library IEEE;</p><p> use IEEE.STD_LOGIC_1164.ALL;</p><p> use IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> entity voltmeter is</p><p> port (D: in std_logic_vector(7 d
66、ownto 0);</p><p> CLK,INT,RESET: in std_logic;</p><p> CS,RD,WR: out std_logic;</p><p> DATOUT: out std_logic_vector(11 downto 0)</p><p><b> );</b></
67、p><p> end voltmeter;</p><p> architecture doit of voltmeter is</p><p> signal datain : std_logic_vector(7 downto 0);</p><p> signal data1,data2 : std_logic_vector(15
68、downto 0);</p><p> signal dout1,dout2,dout3,dout4 : std_logic_vector(11 downto 0);</p><p> signal do1,do2,do3,do4,c1,c2,c3,doo1,doo2,doo3,doo4 :std_logic_vector(4 downto 0);</p><p&g
69、t; type statetype is(idle,write,swait,read,disp1,disp2,disp3,disp4);</p><p> signal present_state,next_state: statetype;</p><p><b> begin</b></p><p> P1: process(pre
70、sent_state,next_state,INT)</p><p><b> begin</b></p><p> case present_state is</p><p> when idle => CS<='1'; WR<='0'; RD<='0';</
71、p><p> next_state<=write;</p><p> when write => CS<='1'; WR<='1'; RD<='0';</p><p> next_state<=swait;</p><p> when swait =>
72、; CS<='0'; WR<='0'; RD<='0';</p><p> if ( INT='1') then</p><p> next_state<=read;</p><p><b> else</b></p><p>
73、 next_state<=swait;</p><p><b> end if;</b></p><p> when read => CS<='1'; WR<='0'; RD<='1';</p><p> next_state<=disp1;</p
74、><p> when disp1 => CS<='0'; WR<='0'; RD<='0';</p><p> DATOUT<=dout1;</p><p> next_state<=disp2;</p><p> when disp2 => CS&
75、lt;='0'; WR<='0'; RD<='0';</p><p> DATOUT<=dout2;</p><p> next_state<=disp3;</p><p> when disp3 => CS<='0'; WR<='0';
76、RD<='0';</p><p> DATOUT<=dout3;</p><p> next_state<=disp4;</p><p> when disp4 => CS<='0'; WR<='0'; RD<='0';</p><p&
77、gt; DATOUT<=dout4;</p><p> next_state<=write;</p><p><b> end case;</b></p><p> end process P1;</p><p> P2: process(CLK, RESET)</p><p&g
78、t;<b> begin</b></p><p> if(RESET='0') then</p><p> present_state<=idle;</p><p> datain<="00000000";</p><p> elsif(CLK'event
79、 and CLK='1') then</p><p> present_state<=next_state;</p><p> if(present_state=read) then</p><p> datain<=D;</p><p><b> end if;</b></p&
80、gt;<p><b> end if;</b></p><p> end process P2;</p><p> data1<="0000000000000000" when datain(7 downto 4)="0000" else</p><p> "0000
81、001100010011" when datain(7 downto 4)="0001" else</p><p> "0000011000100101" when datain(7 downto 4)="0010" else</p><p> "0000100100111000" when da
82、tain(7 downto 4)="0011" else</p><p> "0001001001010000" when datain(7 downto 4)="0100" else</p><p> "0001010101100011" when datain(7 downto 4)="010
83、1" else</p><p> "0001100001110101" when datain(7 downto 4)="0110" else</p><p> "0010000110001000" when datain(7 downto 4)="0111" else</p>&l
84、t;p> "0010010100000000" when datain(7 downto 4)="1000" else</p><p> "0010100000010011" when datain(7 downto 4)="1001" else</p><p> "00110001001
85、00101" when datain(7 downto 4)="1010" else</p><p> "0011010000111000" when datain(7 downto 4)="1011" else</p><p> "0011011101010000" when datain(7
86、downto 4)="1100" else</p><p> "0100000001100011" when datain(7 downto 4)="1101" else</p><p> "0100001101110101" when datain(7 downto 4)="1110"
87、 else</p><p> "0100011010001000" when datain(7 downto 4)="1111" else</p><p> "0000000000000000";</p><p> data2<="0000000000000000" when
88、 datain(3 downto 0)="0000" else</p><p> "0000000000100000" when datain(3 downto 0)="0001" else</p><p> "0000000000111001" when datain(3 downto 0)="
89、0010" else</p><p> "0000000001011001" when datain(3 downto 0)="0011" else</p><p> "0000000001111000" when datain(3 downto 0)="0100" else</p>
90、<p> "0000000010011000" when datain(3 downto 0)="0101" else</p><p> "0000000100010111" when datain(3 downto 0)="0110" else</p><p> "00000001
91、00110111" when datain(3 downto 0)="0111" else</p><p> "0000000101010110" when datain(3 downto 0)="1000" else</p><p> "0000000101110110" when datain
92、(3 downto 0)="1001" else</p><p> "0000000110010101" when datain(3 downto 0)="1010" else</p><p> "0000001000010101" when datain(3 downto 0)="1011&qu
93、ot; else</p><p> "0000001000110100" when datain(3 downto 0)="1100" else</p><p> "0000001001010100" when datain(3 downto 0)="1101" else</p><p&
94、gt; "0000001001110011" when datain(3 downto 0)="1110" else</p><p> "0000001010010011" when datain(3 downto 0)="1111" else</p><p> "000000000000000
95、0";</p><p> do1<=('0' & data1(3 downto 0))+('0' & data2(3 downto 0));</p><p> c1<="00000" when do1<"01010" else</p><p>&l
96、t;b> "00001";</b></p><p> do2<=('0' & data1(7 downto 4))+('0' & data2(7 downto 4))+c1;</p><p> c2<="00000" when do2<"01010&q
97、uot; else</p><p><b> "00001";</b></p><p> do3<=('0' & data1(11 downto 8))+('0' & data2(11 downto 8))+c2;</p><p> c3<="000
98、00" when do3<"01010" else</p><p><b> "00001";</b></p><p> do4<=('0' & data1(15 downto 12))+('0' & data2(15 downto 12))+c3;<
99、;/p><p> doo1<=do1 when do1<"01010" else</p><p> do1-"01010";</p><p> doo2<=do2 when do2<"01010" else</p><p> do2-"01010
100、";</p><p> doo3<=do3 when do3<"01010" else</p><p> do3-"01010";</p><p> doo4<=do4 when do4<"01010" else</p><p> do4-&
101、quot;01010";</p><p> dout1<="111111000100" when doo1="0000" else </p><p> "011000000100" when doo1="0001" else</p><p> &q
102、uot;110110100100" when doo1="0010" else</p><p> "111100100100" when doo1="0011" else</p><p> "011001100100" when doo1="0100" else</p&g
103、t;<p> "101101100100" when doo1="0101" else</p><p> "101111100100" when doo1="0110" else</p><p> "111000000100" when doo1="0111&q
104、uot; else</p><p> "111111100100" when doo1="1000" else</p><p> "111101100100" when doo1="1001" else</p><p> "000000001111";</
105、p><p> dout2<="111111000101" when doo2="0000" else </p><p> "011000000101" when doo2="0001" else</p><p> "110110100101"
106、 when doo2="0010" else</p><p> "111100100101" when doo2="0011" else</p><p> "011001100101" when doo2="0100" else</p><p> "1
107、01101100101" when doo2="0101" else</p><p> "101111100101" when doo2="0110" else</p><p> "111000000101" when doo2="0111" else</p>&
108、lt;p> "111111100101" when doo2="1000" else</p><p> "111101100101" when doo2="1001" else</p><p> "000000001111";</p><p> dout
109、3<="111111000110" when doo3="0000" else </p><p> "011000000110" when doo3="0001" else</p><p> "110110100110" when doo3="0010&
110、quot; else</p><p> "111100100110" when doo3="0011" else</p><p> "011001100110" when doo3="0100" else</p><p> "101101100110" when
111、 doo3="0101" else</p><p> "101111100110" when doo3="0110" else</p><p> "111000000110" when doo3="0111" else</p><p> "111111
112、100110" when doo3="1000" else</p><p> "111101100110" when doo3="1001" else</p><p> "000000001111";</p><p> dout4<="1111110101
113、11" when doo4="0000" else </p><p> "011000010111" when doo4="0001" else</p><p> "110110110111" when doo4="0010" else</p>
114、<p> "111100110111" when doo4="0011" else</p><p> "011001110111" when doo4="0100" else</p><p> "101101110111" when doo4="0101"
115、 else</p><p> "101111110111" when doo4="0110" else</p><p> "111000010111" when doo4="0111" else</p><p> "111111110111" when doo4
116、="1000" else</p><p> "111101110111" when doo4="1001" else</p><p> "000000001111";</p><p><b> end doit;</b></p><p>
117、; 第4章 系統(tǒng)軟件程序的設(shè)計(jì)</p><p> 多路數(shù)字電壓表系統(tǒng)軟件程序主要有主程序、A/D轉(zhuǎn)換子程序和中斷顯示程序組成。</p><p><b> 4.1主程序</b></p><p> 主程序包含初始化部分、調(diào)用A/D轉(zhuǎn)換子程序和相應(yīng)外部0中斷顯示電壓數(shù)值程序,初始化部分包含存放通道的緩沖區(qū)初始化和顯示緩沖區(qū)初始化。另外,對(duì)于單
118、路顯示和循環(huán)顯示,系統(tǒng)設(shè)置了一個(gè)標(biāo)志位00H控制,初始化時(shí)00H位設(shè)置為0,默認(rèn)為循環(huán)顯示,當(dāng)它為1時(shí)改變?yōu)閱温凤@示控制,00H位通過(guò)單路、循環(huán)按鍵控制。流程圖如圖4-1所示。</p><p><b> 4.2轉(zhuǎn)換電子程序</b></p><p> A/D轉(zhuǎn)換子程序用于對(duì)ADC0809的4路輸入模擬電壓進(jìn)行A/D轉(zhuǎn)換,并將轉(zhuǎn)換的數(shù)值存入4個(gè)相應(yīng)的存儲(chǔ)單元中,A/D
119、轉(zhuǎn)換子程序每隔一定時(shí)間調(diào)用一次,即隔一段時(shí)間對(duì)輸入電壓采樣一次,如圖4-2所示。</p><p><b> 判斷是否為0</b></p><p><b> 4.3中斷顯示程序</b></p><p> 設(shè)計(jì)中采用中斷的方式來(lái)讀取轉(zhuǎn)換完成的數(shù)據(jù)能節(jié)省CPU的資源,當(dāng)系統(tǒng)設(shè)置好后,一旦數(shù)據(jù)轉(zhuǎn)換完成,便會(huì)進(jìn)入外部中斷0,然
120、后在中斷中讀取轉(zhuǎn)換的數(shù)值,處理數(shù)據(jù)并送數(shù)碼管顯示輸出。 </p><p> LED 數(shù)碼管采用軟件譯碼動(dòng)態(tài)掃描的方式。在中斷程序中包含多路循環(huán)顯示程序和單路顯示程序,多路循環(huán)顯示程序把4個(gè)存儲(chǔ)單元的數(shù)值依次取出送到4個(gè)數(shù)碼管上顯示,每一路顯示一秒。單路顯示程序只對(duì)當(dāng)前選中的一路數(shù)據(jù)進(jìn)行顯示。每路數(shù)據(jù)顯示時(shí)需經(jīng)過(guò)轉(zhuǎn)換變成十進(jìn)制BCD碼,放于4個(gè)數(shù)碼管顯示緩沖區(qū)中。單路或多路循環(huán)顯示通過(guò)標(biāo)志位00H控制。在顯示控制
121、程序中加入了對(duì)單路或多路循環(huán)按鍵的判斷。</p><p> 第5章 電壓表的調(diào)試及性能分析</p><p><b> 5.1調(diào)試與測(cè)試</b></p><p> 時(shí)鐘CLK接時(shí)鐘模塊輸出,使頻率為4~5MHZ左右;INT接ADC0809中斷輸出INT;D[7..0]接ADC0809數(shù)據(jù)輸出D[7..0];CS、RD、WR分別接ADC080
122、9的控制輸入CS、RD、WR;BCDOUT接12個(gè)發(fā)光二極管。關(guān)于這個(gè)軟件的使用通過(guò)查一些資料和自己的摸索學(xué)習(xí);然后我們對(duì)所編寫(xiě)的程序進(jìn)行編譯、鏈接,如果沒(méi)有錯(cuò)誤和警告便可生成程序的hex文件,將此文件加到電路圖上使軟硬件結(jié)合運(yùn)行,最后進(jìn)行端口引腳進(jìn)行連接,連接如圖5-1中所示。</p><p><b> 圖5-1引腳連線</b></p><p><b>
123、 圖5-2數(shù)字顯示</b></p><p><b> 5.2性能分析</b></p><p> 由于單片機(jī)為8位處理器,當(dāng)輸入電壓為5.00V時(shí),輸出數(shù)據(jù)值為255(FFH)因此單片機(jī)最大的數(shù)值分辨率為0.0196V(5/255)。這就決定了該電壓表的最大分辨率(精度)只能達(dá)到0.0196V。測(cè)試時(shí)電壓數(shù)值的變化一般以0.02V的電壓幅度變化,如要獲
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)字電壓表課程設(shè)計(jì)2
- 數(shù)字電壓表課程設(shè)計(jì)--簡(jiǎn)易數(shù)字電壓表的設(shè)計(jì)
- 數(shù)字電壓表課程設(shè)計(jì)
- 數(shù)字電壓表課程設(shè)計(jì)
- 數(shù)字電壓表課程設(shè)計(jì)
- 數(shù)字電壓表課程設(shè)計(jì)
- 數(shù)字電壓表課程設(shè)計(jì)
- 數(shù)字電壓表課程設(shè)計(jì)
- 數(shù)字電壓表課程設(shè)計(jì)
- 數(shù)字電壓表課程設(shè)計(jì)
- 數(shù)字電壓表課程設(shè)計(jì)
- 數(shù)字電壓表設(shè)計(jì)-課程設(shè)計(jì)
- 課程設(shè)計(jì)---數(shù)字電壓表設(shè)計(jì)
- 數(shù)字電壓表設(shè)計(jì)課程設(shè)計(jì)
- 數(shù)字電壓表設(shè)計(jì)-課程設(shè)計(jì)
- 簡(jiǎn)易數(shù)字電壓表課程設(shè)計(jì)
- 數(shù)字電壓表課程設(shè)計(jì).doc
- 數(shù)字電壓表課程設(shè)計(jì)報(bào)告
- 數(shù)字電壓表的課程設(shè)計(jì)
- 數(shù)字電壓表課程設(shè)計(jì).doc
評(píng)論
0/150
提交評(píng)論