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

下載本文檔

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

文檔簡介

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

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

3、,使用VHDL語言輸入方法設(shè)計數(shù)字鐘??梢岳脤哟卧O(shè)計方法和VHDL語言,完成硬件設(shè)計設(shè)計和仿真。最后在EL教學(xué)實驗箱中實現(xiàn)。</p><p><b>  二、基本要求:</b></p><p>  1、A/D轉(zhuǎn)換接口電路的設(shè)計,負(fù)責(zé)對ADC0809的控制。</p><p>  2、編碼轉(zhuǎn)換電路設(shè)計,負(fù)責(zé)把從ADC0809數(shù)據(jù)總線中讀出的電壓轉(zhuǎn)

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

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

6、;  專業(yè)負(fù)責(zé)人 </p><p>  年 月 日東北石油大學(xué)課程設(shè)計成績評價表</p><p>  指導(dǎo)教師: 年 月 日</p><p><b>  摘 要</b></p><p>  Quartus II 是Altera

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

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

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

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

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

12、  3.2設(shè)計說明5</b></p><p><b>  3.3電路程序5</b></p><p>  第4章 數(shù)字電壓表的測試與運行13</p><p>  4.1數(shù)字電壓表的編譯與仿真13</p><p>  4.2數(shù)字電壓表的適配與測試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è)(電信)里的另一個解釋是企業(yè)數(shù)據(jù)架構(gòu),EDA給出了一個企業(yè)級的數(shù)據(jù)架構(gòu)的總

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

30、模塊:</p><p>  1.控制ADC0809對模擬電壓的轉(zhuǎn)換。</p><p>  2.通過編碼設(shè)計電路,將ADC0809中的電壓轉(zhuǎn)換為BCD碼。</p><p>  3.通過對7段顯示電路的設(shè)計,將讀出的電壓通過7段顯示器顯示出來。</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è)計</p><p><b>

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

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

34、<p><b>  3.3電路程序</b></p><p>  3.3.1 實體部分(VHDL語言編譯)</p><p>  其代碼如下:(VHDL語言):</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語言聲明實體voltmeter并定義其信號。</p><p>  3.3.2產(chǎn)生控制信號</p><p>  對于ADC0809芯片的各種介紹請參閱其數(shù)據(jù)手冊。芯片ADC0809的控制時序圖如圖3-3所示。實驗儀器中ADC0

40、809接口電路原理圖如圖3-1所示。</p><p>  圖3-1 ADC0809接口電路原理圖</p><p>  由圖3-1和圖3-2可知,當(dāng)CS 和WR同時為高電平時,ADC0809開始轉(zhuǎn)換,當(dāng)轉(zhuǎn)換完成后,在INT腳輸出高電平,等待讀數(shù)據(jù);當(dāng)CS和RD同時為電平時,通過數(shù)據(jù)總線D[7..0]從ADC0809是讀出數(shù)據(jù),如圖51-2所示。</p><p>  

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

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

43、責(zé)在每個步驟送出所需的CS、WR、RD控制信號。</p><p>  在狀態(tài)S1時,監(jiān)控INT信號是否由低變高,如此以便了解轉(zhuǎn)換動作結(jié)束與否。</p><p>  在狀態(tài)S3,讀取轉(zhuǎn)換的數(shù)字資料。</p><p>  其代碼如下:(VHDL語言):</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>  這段代碼實現(xiàn)了狀態(tài)S1,S2,S3的控制。</p><p>  3.3.3 BCD碼表示數(shù)字電壓信號(

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

53、時,高4位0111的電壓為2.24V,而低4位0110是0.12V,所以最后的電壓輸出結(jié)果為2.24+0.12=2.36V。</p><p>  對于數(shù)據(jù)轉(zhuǎn)換成BCD碼,我們必須設(shè)計一個12位的BCD碼加法器,如上述的2.24V的二進(jìn)制表示為:001000100100、0.12V是000000010010,所以其相加結(jié)果為001000110110,為2.36V。</p><p>  其代碼

54、如下:(VHDL語言):</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語言)</p><p>  在讀取到轉(zhuǎn)換數(shù)據(jù)后,先用查表的指令算出高、低4位的兩個電壓值,并分別用12位的BCD碼表示。接著設(shè)計12位的BCD碼加法。相加從最低4位開

72、始,且每4位相加結(jié)果超過10時需作進(jìn)位動作。</p><p>  其代碼如下(VHDL語言):</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語言編譯)</p><p>  其代碼如下:(VHDL語言):</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>  以上代碼實現(xiàn)了BCD碼的加法。</p><p>  第4章 數(shù)字電壓表的測試與運行</p><p>  4.1數(shù)字電壓表的編譯與仿真</p><p>  4.1.1數(shù)字電壓表的編譯</p><p>  數(shù)字電壓表編譯完成后,所顯示

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

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

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

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

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論