2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩28頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、<p>  課 程 設(shè) 計(jì)</p><p>  2009年 7 月 10 日</p><p><b>  課程設(shè)計(jì)任務(wù)書</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語言輸入方法設(shè)計(jì)數(shù)字鐘??梢岳脤哟卧O(shè)計(jì)方法和VHDL語言,完成硬件設(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é)對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段顯示器顯示出來。</p><p><

4、b>  三、擴(kuò)展要求</b></p><p>  1、當(dāng)測量結(jié)束后,蜂鳴器鳴響10聲。 </p><p><b>  四、參考文獻(xiàn)</b></p><p>  [1] 李朝清.單片機(jī)原理及技術(shù)接口[M].出版社:北京航空航天大學(xué)出版社.出版時間: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] 張國勛.縮短ICL7135A/D采樣程序時間的一種方法[J].電子

6、技術(shù)應(yīng)用.1993.</p><p><b>  摘 要</b></p><p>  本文闡述了EDA技術(shù)的基本特征及關(guān)鍵技術(shù),介紹了EDA工具軟件和硬件描述語言,分析了EDA技術(shù)的現(xiàn)狀及發(fā)展趨勢。EDA是電子設(shè)計(jì)自動化(Electronic Design Automation)的縮寫。由于它是一門剛剛發(fā)展起來的新技術(shù),涉及面廣,內(nèi)容豐富,理解各異,所以目前尚無一個確

7、切的定義。但從EDA技術(shù)的幾個主要方面的內(nèi)容來看,可以理解為:EDA技術(shù)是以大規(guī)??删幊踢壿嬈骷樵O(shè)計(jì)載體,以硬件描述語言為系統(tǒng)邏輯描述的主要表達(dá)方式,以計(jì)算機(jī)、大規(guī)??删幊踢壿嬈骷拈_發(fā)軟件及實(shí)驗(yàn)開發(fā)系統(tǒng)為設(shè)計(jì)工具,通過有關(guān)的開發(fā)軟件,自動完成用軟件的方式設(shè)計(jì)電子系統(tǒng)到硬件系統(tǒng)的一門新技術(shù)。</p><p>  本文設(shè)計(jì)主要利用VHDL語言在EDA平臺上設(shè)計(jì)一個數(shù)字電壓表,本實(shí)驗(yàn)中所要求設(shè)計(jì)的數(shù)字電壓表為4位,

8、由三大部分組成,每一部分又包含了若干子電路,將各電路組合起來,就構(gòu)成了一個整體。1、A/D轉(zhuǎn)換接口電路的設(shè)計(jì),負(fù)責(zé)對ADC0809的控制。2、編碼轉(zhuǎn)換電路設(shè)計(jì),負(fù)責(zé)把從ADC0809數(shù)據(jù)總線中讀出的電壓轉(zhuǎn)換成BCD碼。3、輸出七段顯示電路的設(shè)計(jì),負(fù)責(zé)將BCD碼用7段顯示器顯示出來。數(shù)字電壓表是諸多數(shù)字化儀表的核心與基礎(chǔ)。以數(shù)字電壓表為核心擴(kuò)展成的各種數(shù)字化儀表,幾乎覆蓋了電子電工測量、工業(yè)測量、自動化系統(tǒng)等各個領(lǐng)域。并且使用Quartu

9、s7.2-II軟件進(jìn)行電路波形仿真,下載到EDA實(shí)驗(yàn)箱進(jìn)行驗(yàn)證。</p><p>  關(guān)鍵詞: EDA(電子設(shè)計(jì)自動化);VHDL(硬件描述語言),數(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ǔ)知識4</p><p>  2.1FPGA知識介紹4</p><p>  2.2VHDL硬件描述語言6</p><p>  2.3Quartus II

11、及其他第三方開發(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)試與測試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年代,國際上電子和計(jì)算機(jī)技術(shù)較先進(jìn)的國家,一直在積極探索新的電子電路

14、設(shè)計(jì)方法,并在設(shè)計(jì)方法、工具等方面進(jìn)行了徹底的變革,取得了巨大成功。在電子技術(shù)設(shè)計(jì)領(lǐng)域,可編程邏輯器件(如CPLD、FPGA)的應(yīng)用,已得到廣泛的普及,這些器件為數(shù)字系統(tǒng)的設(shè)計(jì)帶來了極大的靈活性。這些器件可以通過軟件編程而對其硬件結(jié)構(gòu)和工作方式進(jìn)行重構(gòu),從而使得硬件的設(shè)計(jì)可以如同軟件設(shè)計(jì)那樣方便快捷。這一切極大地改變了傳統(tǒng)的數(shù)字系統(tǒng)設(shè)計(jì)方法、設(shè)計(jì)過程和設(shè)計(jì)觀念,促進(jìn)了EDA技術(shù)的迅速發(fā)展。</p><p>  由

15、于它是一門剛剛發(fā)展起來的新技術(shù),涉及面廣,內(nèi)容豐富,理解各異,所以目前尚無一個確切的定義。但從EDA技術(shù)的幾個主要方面的內(nèi)容來看,可以理解為:EDA技術(shù)是以大規(guī)??删幊踢壿嬈骷樵O(shè)計(jì)載體,以硬件描述語言為系統(tǒng)邏輯描述的主要表達(dá)方式,以計(jì)算機(jī)、大規(guī)模可編程邏輯器件的開發(fā)軟件及實(shí)驗(yàn)開發(fā)系統(tǒng)為設(shè)計(jì)工具,通過有關(guān)的開發(fā)軟件,自動完成用軟件的方式設(shè)計(jì)電子系統(tǒng)到硬件系統(tǒng)的一門新技術(shù)??梢詫?shí)現(xiàn)邏輯編譯、邏輯化簡、邏輯分割、邏輯綜合及優(yōu)化,邏輯布局布線

16、、邏輯仿真。完成對于特定目標(biāo)芯片的適配編譯、邏輯映射、編程下載等工作,最終形成集成電子系統(tǒng)或?qū)S眉尚酒?lt;/p><p>  利用EDA工具,電子設(shè)計(jì)師可以從概念、算法、協(xié)議等開始設(shè)計(jì)電子系統(tǒng),大量工作可以通過計(jì)算機(jī)完成,并可以將電子產(chǎn)品從電路設(shè)計(jì)、性能分析到設(shè)計(jì)出IC版圖或PCB版圖的整個過程的計(jì)算機(jī)上自動處理完成。</p><p>  現(xiàn)在對EDA的概念或范疇用得很寬。包括在機(jī)械、電

17、子、通信、航空航天、化工、礦產(chǎn)、生物、醫(yī)學(xué)、軍事等各個領(lǐng)域,都有EDA的應(yīng)用。目前EDA技術(shù)已在各大公司、企事業(yè)單位和科研教學(xué)部門廣泛使用。例如在飛機(jī)制造過程中,從設(shè)計(jì)、性能測試及特性分析直到飛行模擬,都可能涉及到EDA技術(shù)。</p><p>  硬件描述語言:硬件描述語言(HDL—Hardware Description Language)是一種用于設(shè)計(jì)硬件電子系統(tǒng)的計(jì)算機(jī)語言,它用軟件編程的方式來描述電子系統(tǒng)

18、的邏輯功能、電路結(jié)構(gòu)和連接形式,與傳統(tǒng)的門級描述方式相比,它更適合大規(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ù)字簽名來對電子表格或信息的接受者提供保證。其發(fā)送者具有特許

19、權(quán)或適當(dāng)?shù)馁M(fèi)用限制來簽署和發(fā)送文件。EDA技術(shù)是在電子CAD技術(shù)基礎(chǔ)上發(fā)展起來的計(jì)算機(jī)軟件系統(tǒng),是指以計(jì)算機(jī)為工作平臺,融合了應(yīng)用電子技術(shù)、計(jì)算機(jī)技術(shù)、信息處理及智能化技術(shù)的最新成果,進(jìn)行電子產(chǎn)品的自動設(shè)計(jì)。</p><p>  利用EDA工具,電子設(shè)計(jì)師可以從概念、算法、協(xié)議等開始設(shè)計(jì)電子系統(tǒng),大量工作可以通過計(jì)算機(jī)完成,并可以將電子產(chǎn)品從電路設(shè)計(jì)、性能分析到設(shè)計(jì)出IC版圖或PCB版圖的整個過程的計(jì)算機(jī)上自動處

20、理完成。</p><p>  現(xiàn)在對EDA的概念或范疇用得很寬。包括在機(jī)械、電子、通信、航空航天、化工、礦產(chǎn)、生物、醫(yī)學(xué)、軍事等各個領(lǐng)域,都有EDA的應(yīng)用。目前EDA技術(shù)已在各大公司、企事業(yè)單位和科研教學(xué)部門廣泛使用。例如在飛機(jī)制造過程中,從設(shè)計(jì)、性能測試及特性分析直到飛行模擬,都可能涉及到EDA技術(shù)。本文所指的EDA技術(shù),主要針對電子電路設(shè)計(jì)、PCB設(shè)計(jì)和IC設(shè)計(jì)。</p><p>  

21、EDA設(shè)計(jì)可分為系統(tǒng)級、電路級和物理實(shí)現(xiàn)級。EDA常用軟件:EDA工具層出不窮,目前進(jìn)入我國并具有廣泛影響的EDA軟件有:multiSIM7(原EWB的最新版本)、PSPICE、OrCAD、PCAD、Protel、Viewlogic、Mentor、Graphics、Synopsys、LSIIogic、Cadence、MicroSim,ISE,modelsim等等。這些工具都有較強(qiáng)的功能,一般可用于幾個方面,例如很多軟件都可以進(jìn)行電路設(shè)計(jì)

22、與仿真,同進(jìn)還可以進(jìn)行PCB自動布局布線,可輸出多種網(wǎng)表文件與第三方軟件接口。</p><p>  從目前的EDA技術(shù)來看,其發(fā)展趨勢是政府重視、使用普及、應(yīng)用文泛、工具多樣、軟件功能強(qiáng)大。在信息通信領(lǐng)域,要優(yōu)先發(fā)展高速寬帶信息網(wǎng)、深亞微米集成電路、新型元器件、計(jì)算機(jī)及軟件技術(shù)、第三代移動通信技術(shù)、信息管理、信息安全技術(shù),積極開拓以數(shù)字技術(shù)、網(wǎng)絡(luò)技術(shù)為基礎(chǔ)的新一代信息產(chǎn)品,發(fā)展新興產(chǎn)業(yè),培育新的經(jīng)濟(jì)增長點(diǎn)。要大力

23、推進(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)和國際競爭。開展“數(shù)控化”工程和“數(shù)字化”工程。自動化儀表的技術(shù)發(fā)展趨勢的測試技術(shù)、控制技術(shù)與計(jì)算機(jī)技術(shù)、通信技術(shù)進(jìn)一步融合,形成測量、控制、通信與計(jì)算機(jī)(M3C)

24、結(jié)構(gòu)。在ASIC和PLD設(shè)計(jì)方面,向超高速、高密度、低功耗、低電壓方向發(fā)展。</p><p>  1.3EDA技術(shù)發(fā)展前景</p><p>  進(jìn)入二十一世紀(jì)以來,電子科技對于我們的生活越來越重要,我們的生活無時無刻不與電子科技相聯(lián)系,而我們對于電子產(chǎn)品的國內(nèi)功能與速度的要求越來越高。這就促進(jìn)了不知是軟件工程的發(fā)展,我們同時更加注重硬件工程的發(fā)展,EDA作為其中一門學(xué)科有著很好的發(fā)展前景。

25、</p><p>  一門學(xué)科永遠(yuǎn)不可能有研究皆知的時候,每當(dāng)人類有新的發(fā)現(xiàn)是科技總會給我們新的驚喜。EDA同樣是一門有趣而有意義的科學(xué),所以我們有理由相信他會有很好的發(fā)展前景,而當(dāng)下的時代中,我們所應(yīng)用的外部設(shè)備也越來越先進(jìn)。外設(shè)技術(shù)與EDA工程相結(jié)合的市場前景看好,如組合超大屏幕的相關(guān)連接,多屏幕技術(shù)也有所發(fā)展。</p><p>  第2章 設(shè)計(jì)基礎(chǔ)知識</p><

26、p>  2.1FPGA知識介紹</p><p>  現(xiàn)場可編程門陣列(FPGA, Field Programmable Gate Array)的出現(xiàn)是超大規(guī)模集成電路(VLSL)技術(shù)和計(jì)算機(jī)扶助設(shè)計(jì)(CAD)技術(shù)發(fā)展的結(jié)果。它一般都采用SRAM工藝,也有一些專用器件采用Flash 7-藝或反熔絲(Anti.Fuse)工藝等。FPGA器件集成度很高、其器件密度從數(shù)萬系統(tǒng)門到數(shù)千萬系統(tǒng)門不等,可以完成極其復(fù)雜的

27、時序與組合邏輯電路功能,適用于高速、高密度的高端數(shù)字邏輯電路設(shè)計(jì)領(lǐng)域。具有通過用戶編程實(shí)現(xiàn)專門應(yīng)用的功能。它允許電路設(shè)計(jì)者利用基于計(jì)算機(jī)的開發(fā)平臺,經(jīng)過設(shè)計(jì)輸入、仿真、測試和校驗(yàn),直至達(dá)到預(yù)期的結(jié)果。使用FPGA器件可以大大縮短系統(tǒng)的研制周期,減少資金的投入。更吸引人的是,采用FPGA器件可以將原來的電路板級產(chǎn)品集成為芯片級產(chǎn)品,從而降低了功耗,提高了可靠性,同時還可以很方便地對設(shè)計(jì)進(jìn)行在線修改。FPGA器件成為研制開發(fā)的理想器件,特別

28、適用于產(chǎn)品的樣機(jī)開發(fā)和小批量的生產(chǎn),因此有人也把FPGA稱為可編程的ASIC。如今,F(xiàn)PGA器件廣泛應(yīng)用于通信、自動控制、信息處理等諸多領(lǐng)域,越來越多的電子設(shè)計(jì)人員在使用FPGA,熟練掌握FPGA設(shè)計(jì)技</p><p>  FPGA的邏輯門數(shù)己達(dá)1千萬,內(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)部互連資源等基本的資源,還集成了存儲器(Block RAM和Disturbed RAM)、數(shù)字時鐘管理但愿(完成分頻/倍頻、數(shù)字鎖相和延遲功能的DLL和DCM)、算術(shù)運(yùn)算單元(生發(fā)起、加法器)以及特殊功能模塊(MAC、微處理器等硬IP核)等更豐富的資源,與過去FPGA僅僅用作膠合邏輯不同,現(xiàn)在FPGA已經(jīng)被用來實(shí)現(xiàn)主要

30、系統(tǒng)功能。而與此同時,它仍然保持著非常合理的成本,因此,與ASIC和定制IC相比,F(xiàn)PGA是一種更具有吸引力的選擇。FPGA設(shè)計(jì)具有以下優(yōu)點(diǎn):</p><p>  (1)硬件設(shè)計(jì)軟件化</p><p>  這是FPGA開發(fā)的最大優(yōu)勢。傳統(tǒng)硬件電路設(shè)計(jì)先要進(jìn)行功能設(shè)計(jì),然后進(jìn)行電路板級設(shè)計(jì)并做稱電路板后進(jìn)行調(diào)試,如果電路中有什么錯誤,整個電路板都將作廢,這是很不經(jīng)濟(jì)的。FPGA的開發(fā)在功能層

31、面上可以完全脫離硬件而在EDA軟件上做軟仿真。當(dāng)功能確定無誤后可以進(jìn)行硬件電路板的設(shè)計(jì)。最后將設(shè)計(jì)好的,由EDA軟件生成的燒寫文件下載到配置設(shè)備中去,進(jìn)行在線調(diào)試,如果這時的結(jié)果與要求不一致,可以立即更改設(shè)計(jì)軟件,并再次燒寫到配置芯片中而不必改動外接硬件電路。</p><p>  (2)高度集成化,高工作頻率</p><p>  一般的FPGA內(nèi)部都集成有上百萬的邏輯門,可以在其內(nèi)部規(guī)劃出

32、多個與傳統(tǒng)小規(guī)模集成器件功能相當(dāng)?shù)哪K。這樣將多個傳統(tǒng)器件集成在同一芯片內(nèi)部的方法不但可以改進(jìn)電路板的規(guī)模,還可以減少PCB布線的工作。由于各個模塊都是集成在FPGA芯片內(nèi)部,這就很大程度地解決了信號的干擾問題,使得FPGA的工作頻率可以大幅度的提高。另外,一般的FPGA內(nèi)部都有PLL倍頻的時鐘,這進(jìn)一步解決了電磁干擾和電磁兼容問題。</p><p>  可編程邏輯器件的設(shè)計(jì)是利用EDA開發(fā)軟件和編程土具對器件開

33、發(fā)的過程。高密度復(fù)雜可編程邏輯器件的設(shè)計(jì)流程如圖2-1所示。它包括設(shè)計(jì)準(zhǔn)備、設(shè)計(jì)輸入、功能仿真、設(shè)計(jì)處理、時序仿真和器件編程及測試等七個步驟。</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)或電路以開發(fā)軟件要求的某種形式表示出來,并送入計(jì)算機(jī)的過程稱為設(shè)計(jì)輸入。設(shè)計(jì)輸入通常有以下集中形式:</p><p><b>  1)原理圖輸入方式

35、</b></p><p>  2)硬件描述語言輸入方式</p><p><b>  3)波形輸入方式</b></p><p><b>  3.功能仿真</b></p><p>  功能仿真也叫做前仿真。用戶所設(shè)計(jì)的電路必須在編譯之前進(jìn)行邏輯功能驗(yàn)證,此時的仿真沒有延時信息,對于初步的功能

36、檢測非常方便。仿真中如發(fā)現(xiàn)錯誤,則返回設(shè)計(jì)輸入中修改邏輯設(shè)計(jì)。</p><p><b>  4.設(shè)計(jì)處理</b></p><p>  設(shè)計(jì)處理是器件設(shè)計(jì)中的核心環(huán)節(jié)。在設(shè)計(jì)處理過程中,編譯軟件將對設(shè)計(jì)輸入文件進(jìn)行邏輯化簡、綜合優(yōu)化和適配,最后產(chǎn)生編程用的編程文件。主要有:</p><p>  1)語法檢查和設(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.時序仿真</b></p><p>  時序仿真又稱后仿真或延時仿

38、真。由于不同器件的內(nèi)部延時不一樣,不同的布局布線方案也給延時造成不同的影響,因此在設(shè)計(jì)處理以后,對系統(tǒng)和各模塊進(jìn)行時序仿真,分析其時序關(guān)系,估計(jì)設(shè)計(jì)的性能,以及檢查和消除竟?fàn)幟半U(xiǎn)等是非常有必要的。</p><p><b>  6.器件編程測試</b></p><p>  時序仿真完成后,軟件就可產(chǎn)生供器件編程使用的數(shù)據(jù)文件。 </p><p>

39、  2.2VHDL硬件描述語言</p><p>  2.2.1 VHDL語言簡介</p><p>  硬件描述語言(hardware description language,HDL)是電子系統(tǒng)硬件行為描述,結(jié)構(gòu)描述,數(shù)據(jù)流描述的語言。目前,利用硬件描述語言可以進(jìn)行數(shù)字電子系統(tǒng)的設(shè)計(jì).隨著研究的深入,利用硬件描述語言進(jìn)行模擬電子系統(tǒng)設(shè)計(jì)或混合電子系統(tǒng)設(shè)計(jì)也正在探索中。</p>

40、<p>  國外硬件描述語言種類很多,有的從Pascal發(fā)展而來,也有一些從C語言發(fā)展而來。有些HDL成為IEEE標(biāo)準(zhǔn),但大部分是企業(yè)標(biāo)準(zhǔn)。VHDL來源于美國軍方,其他的硬件描述語言則多來源于民間公司??芍^百家爭鳴,百花齊放,這些不同的語言傳播到國內(nèi),同樣也引起了不同的影響在我國比較有影響的有兩種硬件描述語言:VHDL語言和Verilog HDL語言,這兩種語言已成為IEEE標(biāo)準(zhǔn)語言。</p><p>

41、;  2.2.2 VHDL語言的主要優(yōu)勢</p><p>  VHDL語言能夠成為標(biāo)準(zhǔn)并且獲得廣泛的應(yīng)用,一定有它自身的主要優(yōu)勢,或者說是與眾不同的特點(diǎn)。①強(qiáng)大的功能和靈活性:VHDL語言具有功能強(qiáng)大的語言結(jié)構(gòu),可以用簡潔明確的程序來描述復(fù)雜的邏輯控制。②獨(dú)立于器件的設(shè)計(jì):設(shè)計(jì)人員采用VHDL語言進(jìn)行硬件電路的設(shè)計(jì)時,并不需要首先選擇完成此項(xiàng)設(shè)計(jì)的邏輯器件。這樣,設(shè)計(jì)人員就可以集中精力來進(jìn)行設(shè)計(jì)的構(gòu)思。③可進(jìn)行

42、程序移植:VHDL語言的移植能力是允許設(shè)計(jì)人員對需要綜合設(shè)計(jì)描述進(jìn)行模擬,在綜合前對一個數(shù)千門的設(shè)計(jì)描述進(jìn)行模擬可以節(jié)約大量的時間。</p><p>  由于VHDL語言是一種標(biāo)準(zhǔn)化的硬件描述語言,因此同一個設(shè)計(jì)的VHDL語言描述可以被不同的EDA工具支持,從而使得VHDL語言程序的移植成為可能。④性能評估能力:獨(dú)立于器件的設(shè)計(jì)和可進(jìn)行程序移植允許設(shè)計(jì)人員可以采用不同的器件結(jié)構(gòu)和綜合工具來對自己的設(shè)計(jì)進(jìn)行評估。⑤

43、易于ASIC移植:VHDL語言效率高的重要體現(xiàn)之一就是如果設(shè)計(jì)人員的設(shè)計(jì)是被綜合到一個CPLD器件或FPGA器件,那么就可以使設(shè)計(jì)的產(chǎn)品以最快的的速度上市。當(dāng)產(chǎn)品的數(shù)量達(dá)到相當(dāng)?shù)囊?guī)模時,采用VHDL語言能夠很容易地幫助設(shè)計(jì)人員實(shí)現(xiàn)轉(zhuǎn)成ASIC的設(shè)計(jì)。⑥VHDL語言標(biāo)準(zhǔn)、規(guī)范,易于共享和復(fù)用:VHDL語言的語法規(guī)范、標(biāo)準(zhǔn),可讀性強(qiáng)。由于VHDL語言是一種IEEE的工業(yè)標(biāo)準(zhǔn)硬件描述語言,具有嚴(yán)格的語法規(guī)范和統(tǒng)一的標(biāo)準(zhǔn),因此它可以使設(shè)計(jì)人員之

44、間進(jìn)行交流和共享。</p><p>  2.2.3 VHDL語言的設(shè)計(jì)流程</p><p>  采用VHDL語言設(shè)計(jì)硬件電路系統(tǒng)的設(shè)計(jì)流程一般可以分為以下幾個步驟。①硬件電路系統(tǒng)設(shè)計(jì)要求的定義。②編寫描述硬件電路系統(tǒng)功能的VHDL語言程序。③VHDL語言程序的模擬。④VHDL語言的綜合、優(yōu)化和布局布線。⑤布局布線后的設(shè)計(jì)模擬。⑥器件的編程。設(shè)計(jì)人員在從事硬件電路系統(tǒng)的合計(jì)過程中,編寫VHD

45、L語言程序之前必須對硬件電路系統(tǒng)的設(shè)計(jì)目的有一個非常明確的認(rèn)識才行。</p><p>  2.3Quartus II及其他第三方開發(fā)工具</p><p>  2.3.1 Quartus II開發(fā)平臺簡介 </p><p>  Quartus II是Altera提供的FPGA/CPLD開發(fā)集成環(huán)境,Altera是世界最大可編程邏輯器件供應(yīng)商之一。Quartus I

46、I在21世紀(jì)初推出,是Altera前一代FPGA/CPLD集成開發(fā)環(huán)境MAX+plus II的更新?lián)Q代產(chǎn)品,其界面友好,使用便捷。在Quartus II上可以完成設(shè)計(jì)輸入、HDL綜合、布線布局(適配)、仿真和下載和硬件測試等流程,它提供了一種與結(jié)構(gòu)無關(guān)的設(shè)計(jì)環(huán)境,使設(shè)計(jì)者能方便地進(jìn)行設(shè)計(jì)輸入、快速處理和器件編程。</p><p>  Altera的Quartus II 提供了完整的多平臺設(shè)計(jì)環(huán)境,能滿足各種特定設(shè)

47、計(jì)的需要,也是單芯片可編程系統(tǒng)(SOPC)設(shè)計(jì)的綜合性環(huán)境和SOPC開發(fā)的基本設(shè)計(jì)工具,并為Altera DSP開發(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具備仿真功能,同時也支持第三方的仿真工具,如ModelSim。此外,Quartus II與MATLAB和DSP Builder結(jié)合,可以進(jìn)行基于FPGA的DSP系統(tǒng)開發(fā),是DSP硬件系統(tǒng)實(shí)現(xiàn)的關(guān)鍵EDA工具。</p><p>  Quartus II包括模塊化的編譯器。編譯器包括的功能模塊有分析/綜合器(Analysis & Synthesis)、適配器(Filter)、裝配器(

49、Assembler)、時序分析器(Timing Analyzer)、設(shè)計(jì)輔助模塊(Design Assistant)、EDA網(wǎng)表文件生成器(EDA Netlist Writer)和編輯數(shù)據(jù)接口(Complier Database Interface)等??梢酝ㄟ^選擇Start Complication來運(yùn)行所有的編譯器模塊,也可以通過選擇Start單獨(dú)運(yùn)行各個模塊。還可以通過選擇Complier Tool(Tools 菜單),在Com

50、plier Tool 窗口中運(yùn)行該模塊來啟動編輯器模塊。在Complier Tool 窗口中,可以打開該模塊的設(shè)置文件或報(bào)告文件,或打開其他相關(guān)窗口。</p><p>  此外,Quartus II還包含許多十分有用的LPM(Library of Parameterized Modules)模塊,它們是復(fù)雜或高級系統(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特定器件的硬件功能。例如各類片上存儲器、DSP模塊、LVDS驅(qū)動器、PLL以及SERDES和DDIO電路模塊等。</p><p>  圖3-1中所示的上排是Quartus II編譯設(shè)計(jì)主控界面,它顯示了Quartus II自動設(shè)計(jì)的各主要處理環(huán)節(jié)和設(shè)計(jì)流程,包括設(shè)計(jì)輸入編輯、設(shè)計(jì)分析與

52、綜合、適配、編程文件匯編(裝配)、時序參數(shù)提取以及編程下載幾個步驟。在圖1-1下排的流程框圖,是與上面的Quartus II設(shè)計(jì)流程相對照的標(biāo)準(zhǔn)的EDA開發(fā)流程。</p><p>  Quartus II編譯器支持的硬件描述語言有VHDL(支持VHDL’87及VHDL’97標(biāo)準(zhǔn))、Verilog HDL及AHDL(Altera HDL),AHDL是Altera公司自己設(shè)計(jì)、制定的硬件描述語言,是一種以結(jié)構(gòu)描述方式

53、為主硬件描述語言,只有企業(yè)標(biāo)準(zhǔn)。</p><p>  Quartus II允許來自第三方的EDIF文件輸入,并提供了很多EDA軟件的接口,Quartus II支持層次化設(shè)計(jì),可以在一個新的編輯輸入環(huán)境中對使用不同輸入設(shè)計(jì)方式完成的模塊(元件)進(jìn)行調(diào)用,從而解決了原理圖與HDL混合輸入設(shè)計(jì)問題。在設(shè)計(jì)輸入之后,Quartus II的編譯器將給出設(shè)計(jì)輸入的錯誤報(bào)告。Quartus II 擁有良好的設(shè)計(jì)輸入定位器,用于

54、確定文本或圖形設(shè)計(jì)中的錯誤。對于使用HDL的設(shè)計(jì),可以使用Quartus II帶有的RTL Viewer觀察綜合后的RTL圖。在進(jìn)行編譯后,可對設(shè)計(jì)進(jìn)行時序仿真。在作仿真前,需要利用波形編輯器編輯一個波形激勵文件,用于仿真驗(yàn)證時的激勵。編譯和仿真經(jīng)檢測無誤后,便可以將下載信息通過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ì)顯示,在一個使用IP核的百萬門級SOC設(shè)計(jì)中,花費(fèi)在仿真驗(yàn)證上的時間將占整個設(shè)計(jì)周期的70%。為了保證CPLD/FPGA仿真驗(yàn)證的精確性,很多公司都開發(fā)出了第三方專用EDA工具。Quartus II支持的第三方開發(fā)工具很多,應(yīng)用比較廣泛的如專用綜合工具S

56、ynplify,它在綜合策略和優(yōu)化手段上有了較大幅度的提高,使其面積較好,速度較快;Modelsim是較常用的第三方仿真工具,目前的最新版本已到5.7版。它可以對Xilinx公司的全部CPLD/FPGA產(chǎn)品進(jìn)行高精度的仿真驗(yàn)證;可以對CPLD/FPGA進(jìn)行功能仿真和時序仿真。Modelsim適用于多種操作系統(tǒng)和設(shè)計(jì)平臺,主要有SE\EE\XE等版本類型。其中Modelsim是針對Xilinx公司系列器件的專用仿真工具;Modelsim

57、SE\EE則是通用的EDA仿真工具,使用這兩種對Xilinx公司系列器件進(jìn)行仿真,需要預(yù)先加載Xilinx本地庫。在應(yīng)用過程中,主要包括創(chuàng)建仿真庫、邏輯庫映射、編譯設(shè)計(jì)文件、仿真驗(yàn)證等步驟,其中仿真庫包括工作庫和資源庫,</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位,由三大部分組成,每一部分又包含了若干子電路,將各電路組合起來,就構(gòu)成了一個整體。</p><p>  1、A/D轉(zhuǎn)換接口電路的設(shè)計(jì),負(fù)責(zé)對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段顯示器顯示出來。</p><p>  硬件說明:本設(shè)計(jì)所需的硬件主要有:可變直流電平輸出電路、ADC0809、七段顯示器、EPF10K10LC84-4適配器</p><p><b>  3.2設(shè)計(jì)內(nèi)容</b></p><p><b>  產(chǎn)生控制信號:</b></p><p>  對于ADC08

60、09芯片的各種介紹請參閱其數(shù)據(jù)手冊。芯片ADC0809的控制時序圖如圖52-3所示。實(shí)驗(yàn)儀器中ADC0809接口電路原理圖如圖3-1所示。</p><p>  圖3-1 ADC0809接口電路原理圖</p><p>  當(dāng)CS 和WR同時為高電平時,ADC0809開始轉(zhuǎn)換,當(dāng)轉(zhuǎn)換完成后,在INT腳輸出高電平,等待讀數(shù)據(jù);當(dāng)CS和RD同時為電平時,通過數(shù)據(jù)總線D[7..0]從ADC0809

61、是讀出數(shù)據(jù)。</p><p>  圖3-2 控制器控制信號時序圖</p><p>  從圖3-2我們可以將整個控制器分成4個步驟狀態(tài):S0、S1、S2、S3,第個狀態(tài)的動作方式如下:</p><p>  1狀態(tài)S0:CS=1、WR=1、RD=0(由控制器發(fā)出信號要求ADC0809開始進(jìn)行模/數(shù)信號的轉(zhuǎn)換)。</p><p>  計(jì)算轉(zhuǎn)換后的

62、數(shù)字電壓信號,最終以BCD碼表示,當(dāng)參考電壓(Vref)為2.56V時,模擬輸入電壓與輸出電壓的對應(yīng)關(guān)系如表3-3所示。</p><p>  表3-3:模擬輸入電壓與輸出電壓的對應(yīng)關(guān)系</p><p>  這樣由ADC0809收到的信號是01110110(76H),則對照表3-3時,高4位0111的電壓為2.24V,而低4位0110是0.12V,所以最后的電壓輸出結(jié)果為2.24+0.12=

63、2.36V。</p><p>  對于數(shù)據(jù)轉(zhuǎn)換成BCD碼,我們必須設(shè)計(jì)一個12位的BCD碼加法器,如上述的2.24V的二進(jìn)制表示為:001000100100、0.12V是000000010010,所以其相加結(jié)果為001000110110,為2.36V。</p><p>  提示:在讀取到轉(zhuǎn)換數(shù)據(jù)后,先用查表的指令算出高、低4位的兩個電壓值,并分別用12位的BCD碼表示。接著設(shè)計(jì)12位的BC

64、D碼加法。相加從最低4位開始,且每4位相加結(jié)果超過10時需作進(jìn)位動作。</p><p>  圖3-4 芯片ADC0809的控制時序圖</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ū)初始化。另外,對于單

118、路顯示和循環(huán)顯示,系統(tǒng)設(shè)置了一個標(biāo)志位00H控制,初始化時00H位設(shè)置為0,默認(rèn)為循環(huán)顯示,當(dāng)它為1時改變?yōu)閱温凤@示控制,00H位通過單路、循環(huán)按鍵控制。流程圖如圖4-1所示。</p><p><b>  4.2轉(zhuǎn)換電子程序</b></p><p>  A/D轉(zhuǎn)換子程序用于對ADC0809的4路輸入模擬電壓進(jìn)行A/D轉(zhuǎn)換,并將轉(zhuǎn)換的數(shù)值存入4個相應(yīng)的存儲單元中,A/D

119、轉(zhuǎn)換子程序每隔一定時間調(diào)用一次,即隔一段時間對輸入電壓采樣一次,如圖4-2所示。</p><p><b>  判斷是否為0</b></p><p><b>  4.3中斷顯示程序</b></p><p>  設(shè)計(jì)中采用中斷的方式來讀取轉(zhuǎn)換完成的數(shù)據(jù)能節(jié)省CPU的資源,當(dāng)系統(tǒng)設(shè)置好后,一旦數(shù)據(jù)轉(zhuǎn)換完成,便會進(jìn)入外部中斷0,然

120、后在中斷中讀取轉(zhuǎn)換的數(shù)值,處理數(shù)據(jù)并送數(shù)碼管顯示輸出。 </p><p>  LED 數(shù)碼管采用軟件譯碼動態(tài)掃描的方式。在中斷程序中包含多路循環(huán)顯示程序和單路顯示程序,多路循環(huán)顯示程序把4個存儲單元的數(shù)值依次取出送到4個數(shù)碼管上顯示,每一路顯示一秒。單路顯示程序只對當(dāng)前選中的一路數(shù)據(jù)進(jìn)行顯示。每路數(shù)據(jù)顯示時需經(jīng)過轉(zhuǎn)換變成十進(jìn)制BCD碼,放于4個數(shù)碼管顯示緩沖區(qū)中。單路或多路循環(huán)顯示通過標(biāo)志位00H控制。在顯示控制

121、程序中加入了對單路或多路循環(huán)按鍵的判斷。</p><p>  第5章 電壓表的調(diào)試及性能分析</p><p><b>  5.1調(diào)試與測試</b></p><p>  時鐘CLK接時鐘模塊輸出,使頻率為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個發(fā)光二極管。關(guān)于這個軟件的使用通過查一些資料和自己的摸索學(xué)習(xí);然后我們對所編寫的程序進(jìn)行編譯、鏈接,如果沒有錯誤和警告便可生成程序的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ù)據(jù)值為255(FFH)因此單片機(jī)最大的數(shù)值分辨率為0.0196V(5/255)。這就決定了該電壓表的最大分辨率(精度)只能達(dá)到0.0196V。測試時電壓數(shù)值的變化一般以0.02V的電壓幅度變化,如要獲

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論