版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 課 程 設 計</p><p> 2009年 7 月 10 日</p><p><b> 課程設計任務書</b></p><p> 課程 硬件課程設計</p><p> 題目 數字電壓表設計
2、</p><p> 主要內容、基本要求等</p><p><b> 一、主要內容:</b></p><p> 利用EL教學實驗箱、微機和QuartusⅡ軟件系統(tǒng),使用VHDL語言輸入方法設計數字鐘。可以利用層次設計方法和VHDL語言,完成硬件設計設計和仿真。最后在EL教學實驗箱中實現。</p><p><b&
3、gt; 二、基本要求:</b></p><p> 1、A/D轉換接口電路的設計,負責對ADC0809的控制。</p><p> 2、編碼轉換電路設計,負責把從ADC0809數據總線中讀出的電壓轉換成BCD碼。</p><p> 3、輸出七段顯示電路的設計,負責將BCD碼用7段顯示器顯示出來。</p><p><
4、b> 三、擴展要求</b></p><p> 1、當測量結束后,蜂鳴器鳴響10聲。 </p><p><b> 四、參考文獻</b></p><p> [1] 李朝清.單片機原理及技術接口[M].出版社:北京航空航天大學出版社.出版時間:2011年6月第17次印刷</p><p> [2]
5、康華光,鄒壽彬等.電子技術基礎數字部分[M].出版社:高等教育出版社</p><p> [3] 康華光,張林,電子技術基礎模擬部分[M].出版社:高等教育出版社.</p><p> [4] 吳金戌,郭庭吉.8051單片機實踐與應用[M].北京:清華大學出版社,2002</p><p> [5] 張國勛.縮短ICL7135A/D采樣程序時間的一種方法[J].電子
6、技術應用.1993.</p><p><b> 摘 要</b></p><p> 本文闡述了EDA技術的基本特征及關鍵技術,介紹了EDA工具軟件和硬件描述語言,分析了EDA技術的現狀及發(fā)展趨勢。EDA是電子設計自動化(Electronic Design Automation)的縮寫。由于它是一門剛剛發(fā)展起來的新技術,涉及面廣,內容豐富,理解各異,所以目前尚無一個確
7、切的定義。但從EDA技術的幾個主要方面的內容來看,可以理解為:EDA技術是以大規(guī)??删幊踢壿嬈骷樵O計載體,以硬件描述語言為系統(tǒng)邏輯描述的主要表達方式,以計算機、大規(guī)??删幊踢壿嬈骷拈_發(fā)軟件及實驗開發(fā)系統(tǒng)為設計工具,通過有關的開發(fā)軟件,自動完成用軟件的方式設計電子系統(tǒng)到硬件系統(tǒng)的一門新技術。</p><p> 本文設計主要利用VHDL語言在EDA平臺上設計一個數字電壓表,本實驗中所要求設計的數字電壓表為4位,
8、由三大部分組成,每一部分又包含了若干子電路,將各電路組合起來,就構成了一個整體。1、A/D轉換接口電路的設計,負責對ADC0809的控制。2、編碼轉換電路設計,負責把從ADC0809數據總線中讀出的電壓轉換成BCD碼。3、輸出七段顯示電路的設計,負責將BCD碼用7段顯示器顯示出來。數字電壓表是諸多數字化儀表的核心與基礎。以數字電壓表為核心擴展成的各種數字化儀表,幾乎覆蓋了電子電工測量、工業(yè)測量、自動化系統(tǒng)等各個領域。并且使用Quartu
9、s7.2-II軟件進行電路波形仿真,下載到EDA實驗箱進行驗證。</p><p> 關鍵詞: EDA(電子設計自動化);VHDL(硬件描述語言),數字鐘。</p><p><b> 目 錄</b></p><p><b> 第1章 概 述1</b></p><p> 1.1EDA的概念
10、1</p><p> 1.2 EDA技術及應用1</p><p> 1.3EDA技術發(fā)展前景3</p><p> 第2章 設計基礎知識4</p><p> 2.1FPGA知識介紹4</p><p> 2.2VHDL硬件描述語言6</p><p> 2.3Quartus II
11、及其他第三方開發(fā)工具8</p><p> 第3章 數字電壓表電路設計11</p><p> 3.1設計規(guī)劃11</p><p> 3.2設計內容11</p><p> 3.3電路程序13</p><p> 第4章 系統(tǒng)軟件程序的設計18</p><p><b>
12、 4.1主程序18</b></p><p> 4.2轉換電子程序18</p><p> 4.3中斷顯示程序19</p><p> 第5章 電壓表的調試及性能分析21</p><p> 5.1調試與測試21</p><p> 5.2性能分析22</p><p>&
13、lt;b> 結 論23</b></p><p><b> 參考文獻24</b></p><p><b> 第1章 概 述</b></p><p> 1.1 EDA的概念</p><p> 20世紀90年代,國際上電子和計算機技術較先進的國家,一直在積極探索新的電子電路
14、設計方法,并在設計方法、工具等方面進行了徹底的變革,取得了巨大成功。在電子技術設計領域,可編程邏輯器件(如CPLD、FPGA)的應用,已得到廣泛的普及,這些器件為數字系統(tǒng)的設計帶來了極大的靈活性。這些器件可以通過軟件編程而對其硬件結構和工作方式進行重構,從而使得硬件的設計可以如同軟件設計那樣方便快捷。這一切極大地改變了傳統(tǒng)的數字系統(tǒng)設計方法、設計過程和設計觀念,促進了EDA技術的迅速發(fā)展。</p><p> 由
15、于它是一門剛剛發(fā)展起來的新技術,涉及面廣,內容豐富,理解各異,所以目前尚無一個確切的定義。但從EDA技術的幾個主要方面的內容來看,可以理解為:EDA技術是以大規(guī)??删幊踢壿嬈骷樵O計載體,以硬件描述語言為系統(tǒng)邏輯描述的主要表達方式,以計算機、大規(guī)??删幊踢壿嬈骷拈_發(fā)軟件及實驗開發(fā)系統(tǒng)為設計工具,通過有關的開發(fā)軟件,自動完成用軟件的方式設計電子系統(tǒng)到硬件系統(tǒng)的一門新技術。可以實現邏輯編譯、邏輯化簡、邏輯分割、邏輯綜合及優(yōu)化,邏輯布局布線
16、、邏輯仿真。完成對于特定目標芯片的適配編譯、邏輯映射、編程下載等工作,最終形成集成電子系統(tǒng)或專用集成芯片。</p><p> 利用EDA工具,電子設計師可以從概念、算法、協(xié)議等開始設計電子系統(tǒng),大量工作可以通過計算機完成,并可以將電子產品從電路設計、性能分析到設計出IC版圖或PCB版圖的整個過程的計算機上自動處理完成。</p><p> 現在對EDA的概念或范疇用得很寬。包括在機械、電
17、子、通信、航空航天、化工、礦產、生物、醫(yī)學、軍事等各個領域,都有EDA的應用。目前EDA技術已在各大公司、企事業(yè)單位和科研教學部門廣泛使用。例如在飛機制造過程中,從設計、性能測試及特性分析直到飛行模擬,都可能涉及到EDA技術。</p><p> 硬件描述語言:硬件描述語言(HDL—Hardware Description Language)是一種用于設計硬件電子系統(tǒng)的計算機語言,它用軟件編程的方式來描述電子系統(tǒng)
18、的邏輯功能、電路結構和連接形式,與傳統(tǒng)的門級描述方式相比,它更適合大規(guī)模系統(tǒng)的設計。</p><p> 1.2 EDA技術及應用</p><p> Electronic Document Authorization,指電子文件授權,是工作流軟件系統(tǒng)最常用的一種功能。</p><p> 它超越文電鑒別和數字簽名來對電子表格或信息的接受者提供保證。其發(fā)送者具有特許
19、權或適當的費用限制來簽署和發(fā)送文件。EDA技術是在電子CAD技術基礎上發(fā)展起來的計算機軟件系統(tǒng),是指以計算機為工作平臺,融合了應用電子技術、計算機技術、信息處理及智能化技術的最新成果,進行電子產品的自動設計。</p><p> 利用EDA工具,電子設計師可以從概念、算法、協(xié)議等開始設計電子系統(tǒng),大量工作可以通過計算機完成,并可以將電子產品從電路設計、性能分析到設計出IC版圖或PCB版圖的整個過程的計算機上自動處
20、理完成。</p><p> 現在對EDA的概念或范疇用得很寬。包括在機械、電子、通信、航空航天、化工、礦產、生物、醫(yī)學、軍事等各個領域,都有EDA的應用。目前EDA技術已在各大公司、企事業(yè)單位和科研教學部門廣泛使用。例如在飛機制造過程中,從設計、性能測試及特性分析直到飛行模擬,都可能涉及到EDA技術。本文所指的EDA技術,主要針對電子電路設計、PCB設計和IC設計。</p><p>
21、EDA設計可分為系統(tǒng)級、電路級和物理實現級。EDA常用軟件:EDA工具層出不窮,目前進入我國并具有廣泛影響的EDA軟件有:multiSIM7(原EWB的最新版本)、PSPICE、OrCAD、PCAD、Protel、Viewlogic、Mentor、Graphics、Synopsys、LSIIogic、Cadence、MicroSim,ISE,modelsim等等。這些工具都有較強的功能,一般可用于幾個方面,例如很多軟件都可以進行電路設計
22、與仿真,同進還可以進行PCB自動布局布線,可輸出多種網表文件與第三方軟件接口。</p><p> 從目前的EDA技術來看,其發(fā)展趨勢是政府重視、使用普及、應用文泛、工具多樣、軟件功能強大。在信息通信領域,要優(yōu)先發(fā)展高速寬帶信息網、深亞微米集成電路、新型元器件、計算機及軟件技術、第三代移動通信技術、信息管理、信息安全技術,積極開拓以數字技術、網絡技術為基礎的新一代信息產品,發(fā)展新興產業(yè),培育新的經濟增長點。要大力
23、推進制造業(yè)信息化,積極開展計算機輔助設計(CAD)、計算機輔助工程(CAE)、計算機輔助工藝(CAPP)、計算機機輔助制造(CAM)、產品數據管理(PDM)、制造資源計劃(MRPII)及企業(yè)資源管理(ERP)等。有條件的企業(yè)可開展“網絡制造”,便于合作設計、合作制造,參與國內和國際競爭。開展“數控化”工程和“數字化”工程。自動化儀表的技術發(fā)展趨勢的測試技術、控制技術與計算機技術、通信技術進一步融合,形成測量、控制、通信與計算機(M3C)
24、結構。在ASIC和PLD設計方面,向超高速、高密度、低功耗、低電壓方向發(fā)展。</p><p> 1.3EDA技術發(fā)展前景</p><p> 進入二十一世紀以來,電子科技對于我們的生活越來越重要,我們的生活無時無刻不與電子科技相聯系,而我們對于電子產品的國內功能與速度的要求越來越高。這就促進了不知是軟件工程的發(fā)展,我們同時更加注重硬件工程的發(fā)展,EDA作為其中一門學科有著很好的發(fā)展前景。
25、</p><p> 一門學科永遠不可能有研究皆知的時候,每當人類有新的發(fā)現是科技總會給我們新的驚喜。EDA同樣是一門有趣而有意義的科學,所以我們有理由相信他會有很好的發(fā)展前景,而當下的時代中,我們所應用的外部設備也越來越先進。外設技術與EDA工程相結合的市場前景看好,如組合超大屏幕的相關連接,多屏幕技術也有所發(fā)展。</p><p> 第2章 設計基礎知識</p><
26、p> 2.1FPGA知識介紹</p><p> 現場可編程門陣列(FPGA, Field Programmable Gate Array)的出現是超大規(guī)模集成電路(VLSL)技術和計算機扶助設計(CAD)技術發(fā)展的結果。它一般都采用SRAM工藝,也有一些專用器件采用Flash 7-藝或反熔絲(Anti.Fuse)工藝等。FPGA器件集成度很高、其器件密度從數萬系統(tǒng)門到數千萬系統(tǒng)門不等,可以完成極其復雜的
27、時序與組合邏輯電路功能,適用于高速、高密度的高端數字邏輯電路設計領域。具有通過用戶編程實現專門應用的功能。它允許電路設計者利用基于計算機的開發(fā)平臺,經過設計輸入、仿真、測試和校驗,直至達到預期的結果。使用FPGA器件可以大大縮短系統(tǒng)的研制周期,減少資金的投入。更吸引人的是,采用FPGA器件可以將原來的電路板級產品集成為芯片級產品,從而降低了功耗,提高了可靠性,同時還可以很方便地對設計進行在線修改。FPGA器件成為研制開發(fā)的理想器件,特別
28、適用于產品的樣機開發(fā)和小批量的生產,因此有人也把FPGA稱為可編程的ASIC。如今,FPGA器件廣泛應用于通信、自動控制、信息處理等諸多領域,越來越多的電子設計人員在使用FPGA,熟練掌握FPGA設計技</p><p> FPGA的邏輯門數己達1千萬,內核速度達到400MHz,能提供高達11Gbps的芯片間通信速度,隨著工藝微縮,當前的FPGA已經能夠內嵌DSP核心的方式在諸多高端應用中實現傳統(tǒng)DSP的工作,且
29、可編程特性將大幅壓低成本,并加快設計周期。現在的FPGA芯片中不只是包含可編程邏輯功能模塊、可編程輸入輸出模塊和可編程內部互連資源等基本的資源,還集成了存儲器(Block RAM和Disturbed RAM)、數字時鐘管理但愿(完成分頻/倍頻、數字鎖相和延遲功能的DLL和DCM)、算術運算單元(生發(fā)起、加法器)以及特殊功能模塊(MAC、微處理器等硬IP核)等更豐富的資源,與過去FPGA僅僅用作膠合邏輯不同,現在FPGA已經被用來實現主要
30、系統(tǒng)功能。而與此同時,它仍然保持著非常合理的成本,因此,與ASIC和定制IC相比,FPGA是一種更具有吸引力的選擇。FPGA設計具有以下優(yōu)點:</p><p> (1)硬件設計軟件化</p><p> 這是FPGA開發(fā)的最大優(yōu)勢。傳統(tǒng)硬件電路設計先要進行功能設計,然后進行電路板級設計并做稱電路板后進行調試,如果電路中有什么錯誤,整個電路板都將作廢,這是很不經濟的。FPGA的開發(fā)在功能層
31、面上可以完全脫離硬件而在EDA軟件上做軟仿真。當功能確定無誤后可以進行硬件電路板的設計。最后將設計好的,由EDA軟件生成的燒寫文件下載到配置設備中去,進行在線調試,如果這時的結果與要求不一致,可以立即更改設計軟件,并再次燒寫到配置芯片中而不必改動外接硬件電路。</p><p> (2)高度集成化,高工作頻率</p><p> 一般的FPGA內部都集成有上百萬的邏輯門,可以在其內部規(guī)劃出
32、多個與傳統(tǒng)小規(guī)模集成器件功能相當的模塊。這樣將多個傳統(tǒng)器件集成在同一芯片內部的方法不但可以改進電路板的規(guī)模,還可以減少PCB布線的工作。由于各個模塊都是集成在FPGA芯片內部,這就很大程度地解決了信號的干擾問題,使得FPGA的工作頻率可以大幅度的提高。另外,一般的FPGA內部都有PLL倍頻的時鐘,這進一步解決了電磁干擾和電磁兼容問題。</p><p> 可編程邏輯器件的設計是利用EDA開發(fā)軟件和編程土具對器件開
33、發(fā)的過程。高密度復雜可編程邏輯器件的設計流程如圖2-1所示。它包括設計準備、設計輸入、功能仿真、設計處理、時序仿真和器件編程及測試等七個步驟。</p><p><b> 1.設計準備</b></p><p> 在系統(tǒng)設計之前,首先要進行方案論證、系統(tǒng)設計和器件選擇等準備工作。</p><p> 一般采用自上而下的設計方法,也可采用傳統(tǒng)的自
34、下而上的設計方法。</p><p> 圖2-1可編程邏輯器件設計流程</p><p><b> 2.設計輸入</b></p><p> 設計輸入將所設計的系統(tǒng)或電路以開發(fā)軟件要求的某種形式表示出來,并送入計算機的過程稱為設計輸入。設計輸入通常有以下集中形式:</p><p><b> 1)原理圖輸入方式
35、</b></p><p> 2)硬件描述語言輸入方式</p><p><b> 3)波形輸入方式</b></p><p><b> 3.功能仿真</b></p><p> 功能仿真也叫做前仿真。用戶所設計的電路必須在編譯之前進行邏輯功能驗證,此時的仿真沒有延時信息,對于初步的功能
36、檢測非常方便。仿真中如發(fā)現錯誤,則返回設計輸入中修改邏輯設計。</p><p><b> 4.設計處理</b></p><p> 設計處理是器件設計中的核心環(huán)節(jié)。在設計處理過程中,編譯軟件將對設計輸入文件進行邏輯化簡、綜合優(yōu)化和適配,最后產生編程用的編程文件。主要有:</p><p> 1)語法檢查和設計規(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、真。由于不同器件的內部延時不一樣,不同的布局布線方案也給延時造成不同的影響,因此在設計處理以后,對系統(tǒng)和各模塊進行時序仿真,分析其時序關系,估計設計的性能,以及檢查和消除竟爭冒險等是非常有必要的。</p><p><b> 6.器件編程測試</b></p><p> 時序仿真完成后,軟件就可產生供器件編程使用的數據文件。 </p><p>
39、 2.2VHDL硬件描述語言</p><p> 2.2.1 VHDL語言簡介</p><p> 硬件描述語言(hardware description language,HDL)是電子系統(tǒng)硬件行為描述,結構描述,數據流描述的語言。目前,利用硬件描述語言可以進行數字電子系統(tǒng)的設計.隨著研究的深入,利用硬件描述語言進行模擬電子系統(tǒng)設計或混合電子系統(tǒng)設計也正在探索中。</p>
40、<p> 國外硬件描述語言種類很多,有的從Pascal發(fā)展而來,也有一些從C語言發(fā)展而來。有些HDL成為IEEE標準,但大部分是企業(yè)標準。VHDL來源于美國軍方,其他的硬件描述語言則多來源于民間公司??芍^百家爭鳴,百花齊放,這些不同的語言傳播到國內,同樣也引起了不同的影響在我國比較有影響的有兩種硬件描述語言:VHDL語言和Verilog HDL語言,這兩種語言已成為IEEE標準語言。</p><p>
41、; 2.2.2 VHDL語言的主要優(yōu)勢</p><p> VHDL語言能夠成為標準并且獲得廣泛的應用,一定有它自身的主要優(yōu)勢,或者說是與眾不同的特點。①強大的功能和靈活性:VHDL語言具有功能強大的語言結構,可以用簡潔明確的程序來描述復雜的邏輯控制。②獨立于器件的設計:設計人員采用VHDL語言進行硬件電路的設計時,并不需要首先選擇完成此項設計的邏輯器件。這樣,設計人員就可以集中精力來進行設計的構思。③可進行
42、程序移植:VHDL語言的移植能力是允許設計人員對需要綜合設計描述進行模擬,在綜合前對一個數千門的設計描述進行模擬可以節(jié)約大量的時間。</p><p> 由于VHDL語言是一種標準化的硬件描述語言,因此同一個設計的VHDL語言描述可以被不同的EDA工具支持,從而使得VHDL語言程序的移植成為可能。④性能評估能力:獨立于器件的設計和可進行程序移植允許設計人員可以采用不同的器件結構和綜合工具來對自己的設計進行評估。⑤
43、易于ASIC移植:VHDL語言效率高的重要體現之一就是如果設計人員的設計是被綜合到一個CPLD器件或FPGA器件,那么就可以使設計的產品以最快的的速度上市。當產品的數量達到相當的規(guī)模時,采用VHDL語言能夠很容易地幫助設計人員實現轉成ASIC的設計。⑥VHDL語言標準、規(guī)范,易于共享和復用:VHDL語言的語法規(guī)范、標準,可讀性強。由于VHDL語言是一種IEEE的工業(yè)標準硬件描述語言,具有嚴格的語法規(guī)范和統(tǒng)一的標準,因此它可以使設計人員之
44、間進行交流和共享。</p><p> 2.2.3 VHDL語言的設計流程</p><p> 采用VHDL語言設計硬件電路系統(tǒng)的設計流程一般可以分為以下幾個步驟。①硬件電路系統(tǒng)設計要求的定義。②編寫描述硬件電路系統(tǒng)功能的VHDL語言程序。③VHDL語言程序的模擬。④VHDL語言的綜合、優(yōu)化和布局布線。⑤布局布線后的設計模擬。⑥器件的編程。設計人員在從事硬件電路系統(tǒng)的合計過程中,編寫VHD
45、L語言程序之前必須對硬件電路系統(tǒng)的設計目的有一個非常明確的認識才行。</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是世界最大可編程邏輯器件供應商之一。Quartus I
46、I在21世紀初推出,是Altera前一代FPGA/CPLD集成開發(fā)環(huán)境MAX+plus II的更新換代產品,其界面友好,使用便捷。在Quartus II上可以完成設計輸入、HDL綜合、布線布局(適配)、仿真和下載和硬件測試等流程,它提供了一種與結構無關的設計環(huán)境,使設計者能方便地進行設計輸入、快速處理和器件編程。</p><p> Altera的Quartus II 提供了完整的多平臺設計環(huán)境,能滿足各種特定設
47、計的需要,也是單芯片可編程系統(tǒng)(SOPC)設計的綜合性環(huán)境和SOPC開發(fā)的基本設計工具,并為Altera DSP開發(fā)包進行系統(tǒng)模型設計提供了集成綜合環(huán)境。Quartus II設計工具完全支持VHDL、Verilog的設計流程,其內部嵌有VHDL、Verilog邏輯綜合器。Quartus II也可以利用第三方的綜合工具,如Leonardo Spectrum、Synplify Pro、FPGA Complier II,并能直接調用這些工具。
48、同樣,Quartus II具備仿真功能,同時也支持第三方的仿真工具,如ModelSim。此外,Quartus II與MATLAB和DSP Builder結合,可以進行基于FPGA的DSP系統(tǒng)開發(fā),是DSP硬件系統(tǒng)實現的關鍵EDA工具。</p><p> Quartus II包括模塊化的編譯器。編譯器包括的功能模塊有分析/綜合器(Analysis & Synthesis)、適配器(Filter)、裝配器(
49、Assembler)、時序分析器(Timing Analyzer)、設計輔助模塊(Design Assistant)、EDA網表文件生成器(EDA Netlist Writer)和編輯數據接口(Complier Database Interface)等??梢酝ㄟ^選擇Start Complication來運行所有的編譯器模塊,也可以通過選擇Start單獨運行各個模塊。還可以通過選擇Complier Tool(Tools 菜單),在Com
50、plier Tool 窗口中運行該模塊來啟動編輯器模塊。在Complier Tool 窗口中,可以打開該模塊的設置文件或報告文件,或打開其他相關窗口。</p><p> 此外,Quartus II還包含許多十分有用的LPM(Library of Parameterized Modules)模塊,它們是復雜或高級系統(tǒng)構建的重要組成部分,在SOPC設計中被大量使用,也可在Quartus II普通設計文件一起使用。A
51、ltera提供的LPM函數均基于Altera器件的結構做了優(yōu)化設計。在許多實用情況中,必須使用宏功能模塊才可以使用一些Altera特定器件的硬件功能。例如各類片上存儲器、DSP模塊、LVDS驅動器、PLL以及SERDES和DDIO電路模塊等。</p><p> 圖3-1中所示的上排是Quartus II編譯設計主控界面,它顯示了Quartus II自動設計的各主要處理環(huán)節(jié)和設計流程,包括設計輸入編輯、設計分析與
52、綜合、適配、編程文件匯編(裝配)、時序參數提取以及編程下載幾個步驟。在圖1-1下排的流程框圖,是與上面的Quartus II設計流程相對照的標準的EDA開發(fā)流程。</p><p> Quartus II編譯器支持的硬件描述語言有VHDL(支持VHDL’87及VHDL’97標準)、Verilog HDL及AHDL(Altera HDL),AHDL是Altera公司自己設計、制定的硬件描述語言,是一種以結構描述方式
53、為主硬件描述語言,只有企業(yè)標準。</p><p> Quartus II允許來自第三方的EDIF文件輸入,并提供了很多EDA軟件的接口,Quartus II支持層次化設計,可以在一個新的編輯輸入環(huán)境中對使用不同輸入設計方式完成的模塊(元件)進行調用,從而解決了原理圖與HDL混合輸入設計問題。在設計輸入之后,Quartus II的編譯器將給出設計輸入的錯誤報告。Quartus II 擁有良好的設計輸入定位器,用于
54、確定文本或圖形設計中的錯誤。對于使用HDL的設計,可以使用Quartus II帶有的RTL Viewer觀察綜合后的RTL圖。在進行編譯后,可對設計進行時序仿真。在作仿真前,需要利用波形編輯器編輯一個波形激勵文件,用于仿真驗證時的激勵。編譯和仿真經檢測無誤后,便可以將下載信息通過Quartus II提供的編程器下載入目標器件中了。</p><p> 圖3-1 Quartus II設計流程</p>
55、<p> 2.3.2 第三方EDA工具 </p><p> 目前EDA/FPGA的設計趨于復雜化,設計的仿真驗證顯得比以前更為重要。據有關資料統(tǒng)計顯示,在一個使用IP核的百萬門級SOC設計中,花費在仿真驗證上的時間將占整個設計周期的70%。為了保證CPLD/FPGA仿真驗證的精確性,很多公司都開發(fā)出了第三方專用EDA工具。Quartus II支持的第三方開發(fā)工具很多,應用比較廣泛的如專用綜合工具S
56、ynplify,它在綜合策略和優(yōu)化手段上有了較大幅度的提高,使其面積較好,速度較快;Modelsim是較常用的第三方仿真工具,目前的最新版本已到5.7版。它可以對Xilinx公司的全部CPLD/FPGA產品進行高精度的仿真驗證;可以對CPLD/FPGA進行功能仿真和時序仿真。Modelsim適用于多種操作系統(tǒng)和設計平臺,主要有SE\EE\XE等版本類型。其中Modelsim是針對Xilinx公司系列器件的專用仿真工具;Modelsim
57、SE\EE則是通用的EDA仿真工具,使用這兩種對Xilinx公司系列器件進行仿真,需要預先加載Xilinx本地庫。在應用過程中,主要包括創(chuàng)建仿真庫、邏輯庫映射、編譯設計文件、仿真驗證等步驟,其中仿真庫包括工作庫和資源庫,</p><p> 第3章 數字電壓表電路設計</p><p><b> 3.1設計規(guī)劃</b></p><p> 本實
58、驗中所要求設計的數字電壓表為4位,由三大部分組成,每一部分又包含了若干子電路,將各電路組合起來,就構成了一個整體。</p><p> 1、A/D轉換接口電路的設計,負責對ADC0809的控制。</p><p> 2、編碼轉換電路設計,負責把從ADC0809數據總線中讀出的電壓轉換成BCD碼。</p><p> 3、輸出七段顯示電路的設計,負責將BCD碼用
59、7段顯示器顯示出來。</p><p> 硬件說明:本設計所需的硬件主要有:可變直流電平輸出電路、ADC0809、七段顯示器、EPF10K10LC84-4適配器</p><p><b> 3.2設計內容</b></p><p><b> 產生控制信號:</b></p><p> 對于ADC08
60、09芯片的各種介紹請參閱其數據手冊。芯片ADC0809的控制時序圖如圖52-3所示。實驗儀器中ADC0809接口電路原理圖如圖3-1所示。</p><p> 圖3-1 ADC0809接口電路原理圖</p><p> 當CS 和WR同時為高電平時,ADC0809開始轉換,當轉換完成后,在INT腳輸出高電平,等待讀數據;當CS和RD同時為電平時,通過數據總線D[7..0]從ADC0809
61、是讀出數據。</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開始進行模/數信號的轉換)。</p><p> 計算轉換后的
62、數字電壓信號,最終以BCD碼表示,當參考電壓(Vref)為2.56V時,模擬輸入電壓與輸出電壓的對應關系如表3-3所示。</p><p> 表3-3:模擬輸入電壓與輸出電壓的對應關系</p><p> 這樣由ADC0809收到的信號是01110110(76H),則對照表3-3時,高4位0111的電壓為2.24V,而低4位0110是0.12V,所以最后的電壓輸出結果為2.24+0.12=
63、2.36V。</p><p> 對于數據轉換成BCD碼,我們必須設計一個12位的BCD碼加法器,如上述的2.24V的二進制表示為:001000100100、0.12V是000000010010,所以其相加結果為001000110110,為2.36V。</p><p> 提示:在讀取到轉換數據后,先用查表的指令算出高、低4位的兩個電壓值,并分別用12位的BCD碼表示。接著設計12位的BC
64、D碼加法。相加從最低4位開始,且每4位相加結果超過10時需作進位動作。</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)軟件程序的設計</p><p> 多路數字電壓表系統(tǒng)軟件程序主要有主程序、A/D轉換子程序和中斷顯示程序組成。</p><p><b> 4.1主程序</b></p><p> 主程序包含初始化部分、調用A/D轉換子程序和相應外部0中斷顯示電壓數值程序,初始化部分包含存放通道的緩沖區(qū)初始化和顯示緩沖區(qū)初始化。另外,對于單
118、路顯示和循環(huán)顯示,系統(tǒng)設置了一個標志位00H控制,初始化時00H位設置為0,默認為循環(huán)顯示,當它為1時改變?yōu)閱温凤@示控制,00H位通過單路、循環(huán)按鍵控制。流程圖如圖4-1所示。</p><p><b> 4.2轉換電子程序</b></p><p> A/D轉換子程序用于對ADC0809的4路輸入模擬電壓進行A/D轉換,并將轉換的數值存入4個相應的存儲單元中,A/D
119、轉換子程序每隔一定時間調用一次,即隔一段時間對輸入電壓采樣一次,如圖4-2所示。</p><p><b> 判斷是否為0</b></p><p><b> 4.3中斷顯示程序</b></p><p> 設計中采用中斷的方式來讀取轉換完成的數據能節(jié)省CPU的資源,當系統(tǒng)設置好后,一旦數據轉換完成,便會進入外部中斷0,然
120、后在中斷中讀取轉換的數值,處理數據并送數碼管顯示輸出。 </p><p> LED 數碼管采用軟件譯碼動態(tài)掃描的方式。在中斷程序中包含多路循環(huán)顯示程序和單路顯示程序,多路循環(huán)顯示程序把4個存儲單元的數值依次取出送到4個數碼管上顯示,每一路顯示一秒。單路顯示程序只對當前選中的一路數據進行顯示。每路數據顯示時需經過轉換變成十進制BCD碼,放于4個數碼管顯示緩沖區(qū)中。單路或多路循環(huán)顯示通過標志位00H控制。在顯示控制
121、程序中加入了對單路或多路循環(huán)按鍵的判斷。</p><p> 第5章 電壓表的調試及性能分析</p><p><b> 5.1調試與測試</b></p><p> 時鐘CLK接時鐘模塊輸出,使頻率為4~5MHZ左右;INT接ADC0809中斷輸出INT;D[7..0]接ADC0809數據輸出D[7..0];CS、RD、WR分別接ADC080
122、9的控制輸入CS、RD、WR;BCDOUT接12個發(fā)光二極管。關于這個軟件的使用通過查一些資料和自己的摸索學習;然后我們對所編寫的程序進行編譯、鏈接,如果沒有錯誤和警告便可生成程序的hex文件,將此文件加到電路圖上使軟硬件結合運行,最后進行端口引腳進行連接,連接如圖5-1中所示。</p><p><b> 圖5-1引腳連線</b></p><p><b>
123、 圖5-2數字顯示</b></p><p><b> 5.2性能分析</b></p><p> 由于單片機為8位處理器,當輸入電壓為5.00V時,輸出數據值為255(FFH)因此單片機最大的數值分辨率為0.0196V(5/255)。這就決定了該電壓表的最大分辨率(精度)只能達到0.0196V。測試時電壓數值的變化一般以0.02V的電壓幅度變化,如要獲
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論