電子系統(tǒng)設(shè)計(jì)與實(shí)踐論文范例_第1頁(yè)
已閱讀1頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  東 北 石 油 大 學(xué)</p><p>  課 程 設(shè) 計(jì)</p><p>  2009年 7 月 10 日</p><p>  東北石油大學(xué)課程設(shè)計(jì)任務(wù)書(shū)</p><p>  課程 電子系統(tǒng)設(shè)計(jì)與實(shí)踐計(jì)</p><p>  題目

2、 數(shù)字電壓表設(shè)計(jì)</p><p>  專(zhuān)業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) 姓名 學(xué)號(hào) </p><p>  主要內(nèi)容、基本要求等</p><p><b>  一、主要內(nèi)容:</b></p><p>  利用EL教學(xué)實(shí)驗(yàn)箱、微機(jī)和QuartusⅡ軟件系統(tǒng)

3、,使用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>  二、基本要求:</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)

4、換成BCD碼。</p><p>  3、輸出七段顯示電路的設(shè)計(jì),負(fù)責(zé)將BCD碼用7段顯示器顯示出來(lái)。</p><p><b>  三、擴(kuò)展要求</b></p><p>  1. 當(dāng)測(cè)量結(jié)束后,蜂鳴器鳴響10聲。 </p><p>  按照規(guī)范寫(xiě)出論文,要求字?jǐn)?shù)在4000字以上,并進(jìn)行答辯。論文內(nèi)容包括概述(學(xué)習(xí)、調(diào)研、分

5、析、設(shè)計(jì)的內(nèi)容摘要)、EDA技術(shù)的現(xiàn)狀和發(fā)展趨勢(shì)、對(duì)EL教學(xué)實(shí)驗(yàn)箱和QuartusⅡ軟件的掌握程度、數(shù)字鐘的設(shè)計(jì)過(guò)程(包括原理圖或程序設(shè)計(jì)、編譯、仿真分析、硬件測(cè)試的全過(guò)程),論文中含有原理圖、程序、仿真波形圖及其分析報(bào)告。</p><p>  完成期限 2周 </p><p>  指導(dǎo)教師 </p><p>

6、;  專(zhuān)業(yè)負(fù)責(zé)人 </p><p>  年 月 日東北石油大學(xué)課程設(shè)計(jì)成績(jī)?cè)u(píng)價(jià)表</p><p>  指導(dǎo)教師: 年 月 日</p><p><b>  摘 要</b></p><p>  Quartus II 是Altera

7、公司的綜合性PLD開(kāi)發(fā)軟件,支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多種設(shè)計(jì)輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計(jì)輸入到硬件配置的完整PLD設(shè)計(jì)流程。</p><p>  Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl腳本完成設(shè)計(jì)流程外,提供了完善的用戶(hù)圖形界面設(shè)計(jì)方式。具有

8、運(yùn)行速度快,界面統(tǒng)一,功能集中,易學(xué)易用等特點(diǎn)。</p><p>  本文設(shè)計(jì)主要利用VHDL語(yǔ)言在EDA平臺(tái)上設(shè)計(jì)一個(gè)數(shù)字電壓表,它的顯示位數(shù)為4位,由三大部分組成,每一部分又包含了若干子電路,將各電路組合起來(lái),就構(gòu)成了一個(gè)整體。??偟某绦蛴蓭讉€(gè)各具不同功能的部分組成,其中包括循環(huán)控制P1、復(fù)位和狀態(tài)轉(zhuǎn)換P2、編碼轉(zhuǎn)換data、BCD碼加法do、輸出七段顯示dout。并且使用Quartus7.2-II軟件進(jìn)行電

9、路波形仿真,下載到EDA實(shí)驗(yàn)箱進(jìn)行驗(yàn)證。</p><p>  關(guān)鍵詞: EDA(電子設(shè)計(jì)自動(dòng)化);VHDL(硬件描述語(yǔ)言);ADC0809;數(shù)字電壓表。</p><p><b>  目 錄</b></p><p><b>  第1章 概 述1</b></p><p>  1.1 EDA的概念1

10、</p><p>  1.2 VHDL語(yǔ)言的概念2</p><p>  1.3 EDA的開(kāi)發(fā)環(huán)境3</p><p>  第2章 數(shù)字電壓表的系統(tǒng)分析4</p><p><b>  2.1設(shè)計(jì)目的4</b></p><p><b>  2.2功能說(shuō)明4</b><

11、/p><p><b>  2.3實(shí)驗(yàn)原理4</b></p><p><b>  2.4系統(tǒng)硬件4</b></p><p>  第3章 數(shù)字電壓表的底層電路設(shè)計(jì)5</p><p><b>  3.1設(shè)計(jì)規(guī)劃5</b></p><p><b>

12、  3.2設(shè)計(jì)說(shuō)明5</b></p><p><b>  3.3電路程序5</b></p><p>  第4章 數(shù)字電壓表的測(cè)試與運(yùn)行13</p><p>  4.1數(shù)字電壓表的編譯與仿真13</p><p>  4.2數(shù)字電壓表的適配與測(cè)試16</p><p><b&

13、gt;  結(jié) 論17</b></p><p><b>  參考文獻(xiàn)18</b></p><p><b>  第1章 概 述</b></p><p>  1.1 EDA的概念</p><p>  EDA在通信行業(yè)(電信)里的另一個(gè)解釋是企業(yè)數(shù)據(jù)架構(gòu),EDA給出了一個(gè)企業(yè)級(jí)的數(shù)據(jù)架構(gòu)的總

14、體視圖,并按照電信企業(yè)的特征,進(jìn)行了框架和層級(jí)的劃分。 EDA是電子設(shè)計(jì)自動(dòng)化(Electronic Design Automation)的縮寫(xiě),在20世紀(jì)60年代中期從計(jì)算機(jī)輔助設(shè)計(jì)(CAD)、計(jì)算機(jī)輔助制造(CAM)、計(jì)算機(jī)輔助測(cè)試(CAT)和計(jì)算機(jī)輔助工程(CAE)的概念發(fā)展而來(lái)的。</p><p>  20世紀(jì)90年代,國(guó)際上電子和計(jì)算機(jī)技術(shù)較先進(jìn)的國(guó)家,一直在積極探索新的電子電路設(shè)計(jì)方法,并在設(shè)計(jì)方法、

15、工具等方面進(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>  EDA技術(shù)就是以計(jì)算機(jī)為工

16、具,設(shè)計(jì)者在EDA軟件平臺(tái)上,用硬件描述語(yǔ)言VHDL完成設(shè)計(jì)文件,然后由計(jì)算機(jī)自動(dòng)地完成邏輯編譯、化簡(jiǎn)、分割、綜合、優(yōu)化、布局、布線和仿真,直至對(duì)于特定目標(biāo)芯片的適配編譯、邏輯映射和編程下載等工作。EDA技術(shù)的出現(xiàn),極大地提高了電路設(shè)計(jì)的效率和可操作性,減輕了設(shè)計(jì)者的勞動(dòng)強(qiáng)度。</p><p>  利用EDA工具,電子設(shè)計(jì)師可以從概念、算法、協(xié)議等開(kāi)始設(shè)計(jì)電子系統(tǒng),大量工作可以通過(guò)計(jì)算機(jī)完成,并可以將電子產(chǎn)品從電

17、路設(shè)計(jì)、性能分析到設(shè)計(jì)出IC版圖或PCB版圖的整個(gè)過(guò)程的計(jì)算機(jī)上自動(dòng)處理完成。</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ù)。</p><p>

18、  1.2 VHDL語(yǔ)言的概念</p><p>  VHDL 的英文全名是 Very-High-Speed Integrated Circuit Hardware Description Language,誕生于 1982 年。1987 年底,VHDL被 IEEE 和美國(guó)國(guó)防部確認(rèn)為標(biāo)準(zhǔn)硬件描述語(yǔ)言。</p><p>  VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。除了含有許多具

19、有硬件特征的語(yǔ)句外,VHDL的語(yǔ)言形式和描述風(fēng)格與句法是十分類(lèi)似于一般的計(jì)算機(jī)高級(jí)語(yǔ)言。VHDL的程序結(jié)構(gòu)特點(diǎn)是將一項(xiàng)工程設(shè)計(jì),或稱(chēng)設(shè)計(jì)實(shí)體(可以是一個(gè)元件,一個(gè)電路模塊或一個(gè)系統(tǒng))分成外部(或稱(chēng)可視部分,及端口)和內(nèi)部(或稱(chēng)不可視部分),既涉及實(shí)體的內(nèi)部功能和算法完成部分。在對(duì)一個(gè)設(shè)計(jì)實(shí)體定義了外部界面后,一旦其內(nèi)部開(kāi)發(fā)完成后,其他的設(shè)計(jì)就可以直接調(diào)用這個(gè)實(shí)體。這種將設(shè)計(jì)實(shí)體分成內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計(jì)的基本點(diǎn)。</p&

20、gt;<p>  VHDL 語(yǔ)言能夠成為標(biāo)準(zhǔn)化的硬件描述語(yǔ)言并獲得廣泛應(yīng)用 , 它自身必然具有很多其他硬件描述語(yǔ)言所不具備的優(yōu)點(diǎn)。歸納起來(lái) ,VHDL 語(yǔ)言主要具有以下優(yōu)點(diǎn):</p><p>  (1) VHDL 語(yǔ)言功能強(qiáng)大 , 設(shè)計(jì)方式多樣</p><p>  VHDL 語(yǔ)言具有強(qiáng)大的語(yǔ)言結(jié)構(gòu), 只需采用簡(jiǎn)單明確的VHDL語(yǔ)言程序就可以描述十分復(fù)雜的硬件電路。同時(shí), 它還

21、具有多層次的電路設(shè)計(jì)描述功能。此外 ,VHDL 語(yǔ)言能夠同時(shí)支持同步電路、異步電路和隨機(jī)電路的設(shè)計(jì)實(shí)現(xiàn), 這是其他硬件描述語(yǔ)言所不能比擬的。VHDL 語(yǔ)言設(shè)計(jì)方法靈活多樣 , 既支持自頂向下的設(shè)計(jì)方式, 也支持自底向上的設(shè)計(jì)方法; 既支持模塊化設(shè)計(jì)方法, 也支持層次化設(shè)計(jì)方法。</p><p>  (2) VHDL 語(yǔ)言具有強(qiáng)大的硬件描述能力</p><p>  VHDL 語(yǔ)言具有多層次的

22、電路設(shè)計(jì)描述功能,既可描述系統(tǒng)級(jí)電路 , 也可以描述門(mén)級(jí)電路;描述方式既可以采用行為描述、寄存器傳輸描述或者結(jié)構(gòu)描述,也可以采用三者的混合描述方式。同時(shí),VHDL 語(yǔ)言也支持慣性延遲和傳輸延遲,這樣可以準(zhǔn)確地建立硬件電路的模型。VHDL 語(yǔ)言的強(qiáng)大描述能力還體現(xiàn)在它具有豐富的數(shù)據(jù)類(lèi)型。VHDL 語(yǔ)言既支持標(biāo)準(zhǔn)定義的數(shù)據(jù)類(lèi)型,也支持用戶(hù)定義的數(shù)據(jù)類(lèi)型,這樣便會(huì)給硬件描述帶來(lái)較大的自由度。</p><p>  (3)

23、 VHDL 語(yǔ)言具有很強(qiáng)的移植能力</p><p>  VHDL 語(yǔ)言很強(qiáng)的移植能力主要體現(xiàn)在: 對(duì)于同一個(gè)硬件電路的 VHDL 語(yǔ)言描述 , 它可以從一個(gè)模擬器移植到另一個(gè)模擬器上、從一個(gè)綜合器移植到另一個(gè)綜合器上或者從一個(gè)工作平臺(tái)移植到另一個(gè)工作平臺(tái)上去執(zhí)行。</p><p>  (4) VHDL 語(yǔ)言的設(shè)計(jì)描述與器件無(wú)關(guān)</p><p>  采用 VHDL 語(yǔ)

24、言描述硬件電路時(shí), 設(shè)計(jì)人員并不需要首先考慮選擇進(jìn)行設(shè)計(jì)的器件。這樣做的好處是可以使設(shè)計(jì)人員集中精力進(jìn)行電路設(shè)計(jì)的優(yōu)化, 而不需要考慮其他的問(wèn)題。當(dāng)硬件電路的設(shè)計(jì)描述完成以后 ,VHDL 語(yǔ)言允許采用多種不同的器件結(jié)構(gòu)來(lái)實(shí)現(xiàn)?! ?lt;/p><p>  (5) VHDL 語(yǔ)言程序易于共享和復(fù)用</p><p>  VHDL 語(yǔ)言采用基于庫(kù) ( library) 的設(shè)計(jì)方法。在設(shè)計(jì)過(guò)程中 ,

25、設(shè)計(jì)人員可以建立各種可再次利用的模塊 , 一個(gè)大規(guī)模的硬件電路的設(shè)計(jì)不可能從門(mén)級(jí)電路開(kāi)始一步步地進(jìn)行設(shè)計(jì) , 而是一些模塊的累加。這些模塊可以預(yù)先設(shè)計(jì)或者使用以前設(shè)計(jì)中的存檔模塊, 將這些模塊存放在庫(kù)中 , 就可以在以后的設(shè)計(jì)中進(jìn)行復(fù)用。</p><p>  由于 VHDL 語(yǔ)言是一種描述、模擬、綜合、優(yōu)化和布線的標(biāo)準(zhǔn)硬件描述語(yǔ)言 , 因此它可以使設(shè)計(jì)成果在設(shè)計(jì)人員之間方便地進(jìn)行交流和共享, 從而減小硬件電路設(shè)計(jì)

26、的工作量, 縮短開(kāi)發(fā)周期。</p><p>  1.3 EDA的開(kāi)發(fā)環(huán)境</p><p>  EDA工具軟件可大致可分為芯片設(shè)計(jì)輔助軟件、可編程芯片輔助設(shè)計(jì)軟件、系統(tǒng)設(shè)計(jì)輔助軟件等三類(lèi)。</p><p>  目前進(jìn)入我國(guó)并具有廣泛影響的EDA軟件是系統(tǒng)設(shè)計(jì)軟件輔助類(lèi)和可編程芯片輔助設(shè)計(jì)軟件:Protel、Altium Designer、PSPICE、multiSIM

27、10(原EWB的最新版本)、OrCAD、PCAD、LSIIogic、MicroSim、ISE、modelsim、Matlab等等。這些工具都有較強(qiáng)的功能,一般可用于幾個(gè)方面,例如很多軟件都可以進(jìn)行電路設(shè)計(jì)與仿真,同進(jìn)還可以進(jìn)行PCB自動(dòng)布局布線,可輸出多種網(wǎng)表文件與第三方軟件接口。</p><p>  第2章 數(shù)字電壓表的系統(tǒng)分析</p><p><b>  2.1設(shè)計(jì)目的<

28、;/b></p><p>  1.掌握負(fù)責(zé)對(duì)ADC0809進(jìn)行控制的A/D轉(zhuǎn)換接口電路的設(shè)計(jì)。</p><p>  2.掌握負(fù)責(zé)把從ADC0809數(shù)據(jù)總線中讀出的電壓轉(zhuǎn)換成BCD碼的編碼轉(zhuǎn)換電路的設(shè)計(jì)。</p><p>  3.掌握十六進(jìn)制轉(zhuǎn)十進(jìn)制的運(yùn)算方法。</p><p>  4.理解輸出七段顯示電路的設(shè)計(jì)。</p>

29、<p><b>  2.2功能說(shuō)明</b></p><p>  1.具有輸出模擬電壓的功能。</p><p><b>  2.具有復(fù)位。</b></p><p><b>  2.3實(shí)驗(yàn)原理</b></p><p>  在同一EPLD芯片EPF10K10上集成了如下電路

30、模塊:</p><p>  1.控制ADC0809對(duì)模擬電壓的轉(zhuǎn)換。</p><p>  2.通過(guò)編碼設(shè)計(jì)電路,將ADC0809中的電壓轉(zhuǎn)換為BCD碼。</p><p>  3.通過(guò)對(duì)7段顯示電路的設(shè)計(jì),將讀出的電壓通過(guò)7段顯示器顯示出來(lái)。</p><p><b>  2.4系統(tǒng)硬件</b></p><

31、;p>  1.EPF10K10LC84-4適配器。 </p><p>  2. 可變直流電平輸出電路。</p><p>  3. ADC0809。</p><p><b>  4. 7段顯示器。</b></p><p>  第3章 數(shù)字電壓表的底層電路設(shè)計(jì)</p><p><b>

32、  3.1設(shè)計(jì)規(guī)劃</b></p><p>  數(shù)字電壓表因?yàn)橹粚?shí)現(xiàn)一個(gè)功能,附帶一個(gè)重置的控制功能。因此可以將數(shù)字電壓表設(shè)計(jì)分為以下模塊:</p><p>  1.控制信號(hào)模塊:利用狀態(tài)機(jī)來(lái)實(shí)現(xiàn)控制器對(duì)ADC0809進(jìn)行模/數(shù)信號(hào)的轉(zhuǎn)換的控制。</p><p>  2.電壓轉(zhuǎn)換BCD碼模塊:找出模擬輸入電壓與輸出電壓的對(duì)應(yīng)關(guān)系,設(shè)計(jì)一個(gè)12位的BCD碼

33、加法器。</p><p>  3.電壓顯示模塊:對(duì)轉(zhuǎn)換后的電壓數(shù)進(jìn)行顯示,將數(shù)字分為7個(gè)部分,另外還有小數(shù)點(diǎn),通過(guò)vhdl程序?qū)M(jìn)行相應(yīng)電壓數(shù)的轉(zhuǎn)換。</p><p><b>  3.2設(shè)計(jì)說(shuō)明</b></p><p>  首先從整體分析數(shù)字電壓表,然后對(duì)其進(jìn)行細(xì)化,將其大致分為三大模塊,然后專(zhuān)攻一個(gè)部分,再將其融合在一起。</p>

34、<p><b>  3.3電路程序</b></p><p>  3.3.1 實(shí)體部分(VHDL語(yǔ)言編譯)</p><p>  其代碼如下:(VHDL語(yǔ)言):</p><p>  library IEEE;</p><p>  use IEEE.STD_LOGIC_1164.ALL;</p>

35、<p>  use IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  entity voltmeter is</p><p>  port (D: in std_logic_vector(7 downto 0);</p><p>  CLK,INT,RESET: in std_logic;</p><p>

36、;  CS,RD,WR: out std_logic;</p><p>  DATOUT: out std_logic_vector(11 downto 0)</p><p><b>  );</b></p><p>  end voltmeter;</p><p>  architecture doit of volt

37、meter is</p><p>  signal datain : std_logic_vector(7 downto 0);</p><p>  signal data1,data2 : std_logic_vector(15 downto 0);</p><p>  signal dout1,dout2,dout3,dout4 : std_logic_vect

38、or(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>  type statetype is(idle,write,swait,read,disp1,disp2,disp3,disp4);</p>

39、<p>  signal present_state,next_state: statetype;</p><p>  這段VHDL語(yǔ)言聲明實(shí)體voltmeter并定義其信號(hào)。</p><p>  3.3.2產(chǎn)生控制信號(hào)</p><p>  對(duì)于ADC0809芯片的各種介紹請(qǐng)參閱其數(shù)據(jù)手冊(cè)。芯片ADC0809的控制時(shí)序圖如圖3-3所示。實(shí)驗(yàn)儀器中ADC0

40、809接口電路原理圖如圖3-1所示。</p><p>  圖3-1 ADC0809接口電路原理圖</p><p>  由圖3-1和圖3-2可知,當(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是讀出數(shù)據(jù),如圖51-2所示。</p><p>  

41、圖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>  狀態(tài)S0:CS=1、WR=1、RD=0(由控制器發(fā)出信號(hào)要求ADC0809開(kāi)始進(jìn)行模/數(shù)信號(hào)的轉(zhuǎn)換)。</p><p>  狀態(tài)S1:CS=0、WR=0、RD=0(ADC0809進(jìn)行轉(zhuǎn)換動(dòng)作,轉(zhuǎn)換

42、完畢后INT將低電位升至高電位)。</p><p>  狀態(tài)S2:CS=1、WR=0、RD=1(由控制器發(fā)出信號(hào)以讀取ADC0809的轉(zhuǎn)換資料)。</p><p>  狀態(tài)S3:CS=0、WR=0、RD=0(由控制器讀取數(shù)據(jù)總線上的數(shù)字轉(zhuǎn)換資料)。</p><p>  由上述的四個(gè)狀態(tài)可以歸納出整個(gè)控制器的動(dòng)作功能有:</p><p>  負(fù)

43、責(zé)在每個(gè)步驟送出所需的CS、WR、RD控制信號(hào)。</p><p>  在狀態(tài)S1時(shí),監(jiān)控INT信號(hào)是否由低變高,如此以便了解轉(zhuǎn)換動(dòng)作結(jié)束與否。</p><p>  在狀態(tài)S3,讀取轉(zhuǎn)換的數(shù)字資料。</p><p>  其代碼如下:(VHDL語(yǔ)言):</p><p>  P1: process(present_state,next_state,

44、INT)</p><p><b>  begin</b></p><p>  case present_state is</p><p>  when idle => CS<='1'; WR<='0'; RD<='0';</p><p>  next

45、_state<=write;</p><p>  when write => CS<='1'; WR<='1'; RD<='0';</p><p>  next_state<=swait;</p><p>  when swait => CS<='0';

46、WR<='0'; RD<='0';</p><p>  if ( INT='1') then</p><p>  next_state<=read;</p><p><b>  else</b></p><p>  next_state<=swait

47、;</p><p><b>  end if;</b></p><p>  when read => CS<='1'; WR<='0'; RD<='1';</p><p>  next_state<=disp1;</p><p>  when

48、disp1 => CS<='0'; WR<='0'; RD<='0';</p><p>  DATOUT<=dout1;</p><p>  next_state<=disp2;</p><p>  when disp2 => CS<='0'; WR<

49、;='0'; RD<='0';</p><p>  DATOUT<=dout2;</p><p>  next_state<=disp3;</p><p>  when disp3 => CS<='0'; WR<='0'; RD<='0';<

50、;/p><p>  DATOUT<=dout3;</p><p>  next_state<=disp4;</p><p>  when disp4 => CS<='0'; WR<='0'; RD<='0';</p><p>  DATOUT<=dout4;

51、</p><p>  next_state<=write;</p><p><b>  end case;</b></p><p>  end process P1; </p><p>  這段代碼實(shí)現(xiàn)了狀態(tài)S1,S2,S3的控制。</p><p>  3.3.3 BCD碼表示數(shù)字電壓信號(hào)(

52、VHDL語(yǔ)言)</p><p>  計(jì)算轉(zhuǎn)換后的數(shù)字電壓信號(hào),最終以BCD碼表示。</p><p>  當(dāng)參考電壓(Vref)為2.56V時(shí),模擬輸入電壓與輸出電壓的對(duì)應(yīng)關(guān)系如表3-1所示。</p><p>  表3-1 模擬輸入電壓與輸出電壓的</p><p>  這樣由ADC0809收到的信號(hào)是01110110(76H),則對(duì)照表52-1

53、時(shí),高4位0111的電壓為2.24V,而低4位0110是0.12V,所以最后的電壓輸出結(jié)果為2.24+0.12=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>  其代碼

54、如下:(VHDL語(yǔ)言):</p><p>  P2: process(CLK, RESET)</p><p><b>  begin</b></p><p>  if(RESET='0') then</p><p>  present_state<=idle;</p><p>

55、;  datain<="00000000";</p><p>  elsif(CLK'event and CLK='1') then</p><p>  present_state<=next_state;</p><p>  if(present_state=read) then</p><

56、;p>  datain<=D;</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process P2;</p><p>  data1<="0000000000000000" w

57、hen datain(7 downto 4)="0000" else</p><p>  "0000001100010011" when datain(7 downto 4)="0001" else</p><p>  "0000011000100101" when datain(7 downto 4)=&qu

58、ot;0010" else</p><p>  "0000100100111000" when datain(7 downto 4)="0011" else</p><p>  "0001001001010000" when datain(7 downto 4)="0100" else</p&g

59、t;<p>  "0001010101100011" when datain(7 downto 4)="0101" else</p><p>  "0001100001110101" when datain(7 downto 4)="0110" else</p><p>  "00100

60、00110001000" when datain(7 downto 4)="0111" else</p><p>  "0010010100000000" when datain(7 downto 4)="1000" else</p><p>  "0010100000010011" when dat

61、ain(7 downto 4)="1001" else</p><p>  "0011000100100101" when datain(7 downto 4)="1010" else</p><p>  "0011010000111000" when datain(7 downto 4)="1011

62、" else</p><p>  "0011011101010000" when datain(7 downto 4)="1100" else</p><p>  "0100000001100011" when datain(7 downto 4)="1101" else</p><

63、;p>  "0100001101110101" when datain(7 downto 4)="1110" else</p><p>  "0100011010001000" when datain(7 downto 4)="1111" else</p><p>  "000000000000

64、0000";</p><p>  data2<="0000000000000000" when datain(3 downto 0)="0000" else</p><p>  "0000000000100000" when datain(3 downto 0)="0001" else</

65、p><p>  "0000000000111001" when datain(3 downto 0)="0010" else</p><p>  "0000000001011001" when datain(3 downto 0)="0011" else</p><p>  "00

66、00000001111000" when datain(3 downto 0)="0100" else</p><p>  "0000000010011000" when datain(3 downto 0)="0101" else</p><p>  "0000000100010111" when

67、datain(3 downto 0)="0110" else</p><p>  "0000000100110111" when datain(3 downto 0)="0111" else</p><p>  "0000000101010110" when datain(3 downto 0)="1

68、000" else</p><p>  "0000000101110110" when datain(3 downto 0)="1001" else</p><p>  "0000000110010101" when datain(3 downto 0)="1010" else</p>

69、<p>  "0000001000010101" when datain(3 downto 0)="1011" else</p><p>  "0000001000110100" when datain(3 downto 0)="1100" else</p><p>  "000000100

70、1010100" when datain(3 downto 0)="1101" else</p><p>  "0000001001110011" when datain(3 downto 0)="1110" else</p><p>  "0000001010010011" when datain(

71、3 downto 0)="1111" else</p><p>  "0000000000000000";</p><p>  3.3.4 BCD碼進(jìn)位(VHDL語(yǔ)言)</p><p>  在讀取到轉(zhuǎn)換數(shù)據(jù)后,先用查表的指令算出高、低4位的兩個(gè)電壓值,并分別用12位的BCD碼表示。接著設(shè)計(jì)12位的BCD碼加法。相加從最低4位開(kāi)

72、始,且每4位相加結(jié)果超過(guò)10時(shí)需作進(jìn)位動(dòng)作。</p><p>  其代碼如下(VHDL語(yǔ)言):</p><p>  do1<=('0' & data1(3 downto 0))+('0' & data2(3 downto 0));</p><p>  c1<="00000" when d

73、o1<"01010" else</p><p><b>  "00001";</b></p><p>  do2<=('0' & data1(7 downto 4))+('0' & data2(7 downto 4))+c1;</p><p> 

74、 c2<="00000" when do2<"01010" else</p><p><b>  "00001";</b></p><p>  do3<=('0' & data1(11 downto 8))+('0' & data2(11 do

75、wnto 8))+c2;</p><p>  c3<="00000" when do3<"01010" else</p><p><b>  "00001";</b></p><p>  do4<=('0' & data1(15 downto

76、12))+('0' & data2(15 downto 12))+c3;</p><p>  doo1<=do1 when do1<"01010" else</p><p>  do1-"01010";</p><p>  doo2<=do2 when do2<"010

77、10" else</p><p>  do2-"01010";</p><p>  doo3<=do3 when do3<"01010" else</p><p>  do3-"01010";</p><p>  doo4<=do4 when do4<

78、;"01010" else</p><p>  do4-"01010";</p><p>  3.3.5 7段顯示器顯示BCD碼(VHDL語(yǔ)言編譯)</p><p>  其代碼如下:(VHDL語(yǔ)言):</p><p>  dout1<="111111000100" when d

79、oo1="0000" else --a,b,c,d,e,f,g,dp,sel3,sel2,sel1,sel0;</p><p>  "011000000100" when doo1="0001" else</p><p>  "110110100100" when doo1="001

80、0" else</p><p>  "111100100100" when doo1="0011" else</p><p>  "011001100100" when doo1="0100" else</p><p>  "101101100100" wh

81、en doo1="0101" else</p><p>  "101111100100" when doo1="0110" else</p><p>  "111000000100" when doo1="0111" else</p><p>  "1111

82、11100100" when doo1="1000" else</p><p>  "111101100100" when doo1="1001" else</p><p>  "000000001111";</p><p>  dout2<="11111100

83、0101" when doo2="0000" else --a,b,c,d,e,f,g,dp,sel3,sel2,sel1,sel0;</p><p>  "011000000101" when doo2="0001" else</p><p>  "110110100101" wh

84、en doo2="0010" else</p><p>  "111100100101" when doo2="0011" else</p><p>  "011001100101" when doo2="0100" else</p><p>  "1011

85、01100101" when doo2="0101" else</p><p>  "101111100101" when doo2="0110" else</p><p>  "111000000101" when doo2="0111" else</p><

86、p>  "111111100101" when doo2="1000" else</p><p>  "111101100101" when doo2="1001" else</p><p>  "000000001111";</p><p>  dout3&l

87、t;="111111000110" when doo3="0000" else --a,b,c,d,e,f,g,dp,sel3,sel2,sel1,sel0;</p><p>  "011000000110" when doo3="0001" else</p><p>  "1101

88、10100110" when doo3="0010" else</p><p>  "111100100110" when doo3="0011" else</p><p>  "011001100110" when doo3="0100" else</p><

89、p>  "101101100110" when doo3="0101" else</p><p>  "101111100110" when doo3="0110" else</p><p>  "111000000110" when doo3="0111" els

90、e</p><p>  "111111100110" when doo3="1000" else</p><p>  "111101100110" when doo3="1001" else</p><p>  "000000001111";</p>&

91、lt;p>  dout4<="111111010111"whendoo4="0000"else --a,b,c,d,e,f,g,dp,sel3,sel2,sel1,sel0;</p><p>  "011000010111" when doo4="0001" else</p><p&g

92、t;  "110110110111" when doo4="0010" else</p><p>  "111100110111" when doo4="0011" else</p><p>  "011001110111" when doo4="0100" else&l

93、t;/p><p>  "101101110111" when doo4="0101" else</p><p>  "101111110111" when doo4="0110" else</p><p>  "111000010111" when doo4="

94、0111" else</p><p>  "111111110111" when doo4="1000" else</p><p>  "111101110111" when doo4="1001" else</p><p>  "000000001111"

95、;</p><p>  end doit; </p><p>  以上代碼實(shí)現(xiàn)了BCD碼的加法。</p><p>  第4章 數(shù)字電壓表的測(cè)試與運(yùn)行</p><p>  4.1數(shù)字電壓表的編譯與仿真</p><p>  4.1.1數(shù)字電壓表的編譯</p><p>  數(shù)字電壓表編譯完成后,所顯示

96、的設(shè)計(jì)器件,引腳利用率,文件名,工程名等。</p><p><b>  圖4-1 綜合完成</b></p><p>  4.1.2數(shù)字電壓表的邏輯電路圖</p><p>  圖4-2 RTL Viewer</p><p>  通過(guò)RTL Viewer我們可以清楚的看到電路的內(nèi)部構(gòu)造</p><p>

97、;  4.1.3數(shù)字電壓表的功能仿真 </p><p>  仿真前對(duì)各個(gè)引腳進(jìn)行周期設(shè)置。通過(guò)對(duì)電壓表的功能仿真,讓我們清楚的看到實(shí)體的功能及運(yùn)行狀況。便于我們修改程序,及時(shí)作出調(diào)整。</p><p>  圖4-4 仿真結(jié)果</p><p>  4.2數(shù)字電壓表的適配與測(cè)試</p><p>  選擇

98、Assign中 Dvice 選擇FLEX10K中的EPF10K10LC84-4 選擇configure.下載到試驗(yàn)箱,將引腳圖調(diào)出來(lái)。 按引腳連線,如下圖4-6,連線后測(cè)試成功 電壓顯示正常。</p><p>  圖4-5 引腳連線</p><p>  轉(zhuǎn)動(dòng)可調(diào)電阻。可以清晰看到7段數(shù)碼管上顯示電壓的變化。</p><p><b>  結(jié) 論&l

99、t;/b></p><p>  設(shè)計(jì)數(shù)字電壓表,鞏固了使用VHDL語(yǔ)言輸入方法。熟悉了Quartus-II的使用。</p><p>  通過(guò)這次設(shè)計(jì),進(jìn)一步加深了對(duì)EDA的了解,并且了解到日常生活中的小器件都與EDA有著密切的聯(lián)系,讓我對(duì)它有了更加濃厚的興趣。當(dāng)然在這過(guò)程中會(huì)遇到各種各樣的困惑與不解,特別是在讀整個(gè)程序時(shí),頭特別大,不知從何處招手,當(dāng)我靜下心來(lái),一步步的分析它的子模塊

100、時(shí),并編譯出來(lái)時(shí),心里是特別的高興。在編譯A/D轉(zhuǎn)換接口時(shí),遇到了很到的麻煩,因?yàn)椴皇翘貏e清晰它的工作原理,幸好書(shū)上有關(guān)于狀態(tài)機(jī)的詳細(xì)介紹,并且回想起了老師上課時(shí)對(duì)狀態(tài)機(jī)的講解,所以也慢慢的克服了,也認(rèn)識(shí)到上課認(rèn)真聽(tīng)講的重要性,讓我更加了解到平時(shí)的積累是重要的,有了這些小知識(shí)的積累才會(huì)成為一個(gè)合格的計(jì)算機(jī)工作者。在編寫(xiě)編碼轉(zhuǎn)換電路設(shè)計(jì)時(shí),第一次成功并且親自地完成了模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào),并且當(dāng)電壓值在數(shù)碼管上顯示時(shí),感覺(jué)特別的神奇,特別

101、的自豪,原來(lái)很多看起來(lái)秘密以前不可想象的真的是就這么做出來(lái)了,經(jīng)過(guò)不斷的修改,總結(jié)并在成功的完成調(diào)試,編譯,仿真之后,才真正的意識(shí)到程序員工作的辛苦和他們對(duì)社會(huì)的貢獻(xiàn),但同時(shí)也有著一種從未有過(guò)的成就感縈繞在心中。</p><p>  總的來(lái)說(shuō),這次設(shè)計(jì)讓我學(xué)會(huì)了很多,通過(guò)理論與實(shí)際相結(jié)合,不僅增強(qiáng)了自己的邏輯思維能力還增強(qiáng)了自己的動(dòng)手能力,并且通過(guò)與同學(xué)的探討與分析,增強(qiáng)了同學(xué)間的團(tuán)結(jié)合作能力,意識(shí)到合作的重要性

102、。最重要的是,這次設(shè)計(jì)加深了我對(duì)EDA的學(xué)習(xí)興趣,在日后的學(xué)習(xí)中我會(huì)更加努力的。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 潘松,王國(guó)棟,VHDL實(shí)用教程[M].成都:電子科技大學(xué)出版社,2000.(1)</p><p>  [2] VHDL語(yǔ)言及其應(yīng)用,《計(jì)算機(jī)工程》1998年10期</p>&l

103、t;p>  [3] 朱正偉.EDA技術(shù)及應(yīng)用[M].北京:清華大學(xué)出版社,2005</p><p>  [4] 李國(guó)麗,朱維勇.電子技術(shù)實(shí)驗(yàn)指導(dǎo)書(shū).合肥:中國(guó)科技大學(xué)出版社,2000 </p><p>  [5] 于楓,張麗英.ALTERA可編程邏輯器件應(yīng)用技術(shù)[M].北京:科學(xué)出版社,2004</p><p>  [6] 梁祥.基于PC/104總線與CPLD

104、的SPI接口設(shè)計(jì)[J].嵌入式計(jì)算機(jī)應(yīng)用,2006,25(1):532-535</p><p>  [7] 孫富明,李笑盈.基于多種EDA工具的FPGA設(shè)計(jì),電子技術(shù)應(yīng)用,2002年12月,第1期 </p><p>  [8] 盧杰,賴(lài)毅.VHDL與數(shù)字電路設(shè)計(jì).北京:科學(xué)出版社,2001</p><p>  [9] 鄭家龍,王小海,章安元.集成電子技術(shù)基礎(chǔ)教程.北

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論