畢業(yè)設(shè)計(jì)---基于硬件描述語言vhdl的電子鐘設(shè)計(jì)_第1頁
已閱讀1頁,還剩38頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  畢業(yè)設(shè)計(jì)選題報(bào)告</b></p><p><b>  畢業(yè)設(shè)計(jì)任務(wù)下達(dá)書</b></p><p>  現(xiàn)將畢業(yè)設(shè)計(jì)任務(wù)下達(dá)書發(fā)給你。畢業(yè)設(shè)計(jì)任務(wù)下達(dá)書內(nèi)容如下:</p><p><b>  畢業(yè)設(shè)計(jì)題目</b></p><p>  基于硬件描述語言

2、VHDL的電子鐘設(shè)計(jì) </p><p><b>  主要內(nèi)容</b></p><p>  對(duì)此電子鐘系統(tǒng)進(jìn)行合理的功能分析后,確定系統(tǒng)功能模塊。系統(tǒng)設(shè)計(jì)采用自頂向下的設(shè)計(jì)方法,用VHDL進(jìn)行分模塊設(shè)計(jì),完成系統(tǒng)的功能。 </p&g

3、t;<p><b>  具體要求</b></p><p>  本次設(shè)計(jì)是應(yīng)用硬件描述語言VHDL進(jìn)行編程,仿真并硬件實(shí)現(xiàn)電子鐘系統(tǒng)。利用開發(fā)平臺(tái)Quartus Ⅱ,并在CPLD上實(shí)現(xiàn)該系統(tǒng)。電子鐘系統(tǒng)包括正常計(jì)時(shí),鬧鐘,定時(shí)器等模塊。 </p><p&

4、gt;<b>  主要參考文獻(xiàn)</b></p><p>  [1] 林明權(quán).VHDL數(shù)字控制系統(tǒng)設(shè)計(jì)范例[M]. 北京;電子工業(yè)出版社, 2003</p><p>  [2] 雷伏容.VHDL電路設(shè)計(jì)[M]. 北京;清華大學(xué)出版社,2006</p><p>  [3] 陳榮,陳華.VHDL芯片設(shè)計(jì)[M]. 北京;機(jī)械工業(yè)出版社,2006<

5、/p><p>  [4] 楊恒,李愛國等. FPGA/CPLD最新實(shí)用技術(shù)指南[M]. 北京;清華大學(xué)出版社, 2005</p><p><b>  五、進(jìn)程安排</b></p><p>  六、本畢業(yè)設(shè)計(jì)任務(wù)下達(dá)書于 2008 年1 月28 日發(fā)出。畢業(yè)設(shè)計(jì)應(yīng)于 2008 年 6月 10 日前完成后交指導(dǎo)教師,由指導(dǎo)教師評(píng)閱后提交畢業(yè)論文

6、(設(shè)計(jì))答辯委員會(huì)。</p><p>  七、畢業(yè)設(shè)計(jì)任務(wù)下達(dá)書一式兩份,一份給學(xué)生,一份留學(xué)院存檔。</p><p>  指導(dǎo)教師:   簽發(fā)于200 年 月 日</p><p>  分管院長:    簽發(fā)于200 年 月 日</p><p><b&g

7、t;  畢業(yè)設(shè)計(jì)開題報(bào)告</b></p><p><b>  畢業(yè)設(shè)計(jì)結(jié)題報(bào)告</b></p><p><b>  畢業(yè)設(shè)計(jì)成績(jī)?cè)u(píng)定表</b></p><p>  學(xué)院:計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 學(xué)號(hào):</p><p>  注:1、論文(設(shè)計(jì))

8、總成績(jī)=指導(dǎo)教師評(píng)定成績(jī)(50%)+評(píng)閱人評(píng)定成績(jī)(20%)</p><p>  +答辯成績(jī)(30%)</p><p>  2、將總成績(jī)由百分制轉(zhuǎn)換為五級(jí)制,填入本表相應(yīng)位置。</p><p><b>  目 錄</b></p><p><b>  1 引言1</b></p><

9、;p>  2 相關(guān)知識(shí)介紹1</p><p>  2.1 VHDL介紹2</p><p>  2.2 自頂向下設(shè)計(jì)方法3</p><p>  2.3 Quartus Ⅱ開發(fā)平臺(tái)3</p><p>  2.4 CPLD簡(jiǎn)介4</p><p>  3 電子鐘系統(tǒng)設(shè)計(jì)方案4</p><p

10、>  3.1 電子鐘系統(tǒng)設(shè)計(jì)要求4</p><p>  3.2 系統(tǒng)設(shè)計(jì)方案概述及工作原理4</p><p>  4 電子鐘頂層設(shè)計(jì)5</p><p>  4.1 頂層設(shè)計(jì)分析5</p><p>  4.2 頂層電路圖6</p><p>  5 各模塊電路的設(shè)計(jì)6</p><p&g

11、t;  5.1 正常計(jì)數(shù)時(shí)間功能模塊6</p><p>  5.1.1 分頻組件設(shè)計(jì)7</p><p>  5.1.2 60進(jìn)制計(jì)數(shù)器設(shè)計(jì)7</p><p>  5.1.3 24進(jìn)制計(jì)數(shù)器設(shè)計(jì)8</p><p>  5.2 定時(shí)器設(shè)定于計(jì)時(shí)功能模塊9</p><p>  5.2.1 定時(shí)器組件設(shè)計(jì)思路及原理圖

12、9</p><p>  5.2.2 定時(shí)器仿真波形10</p><p>  5.3 鬧鐘模塊設(shè)計(jì)11</p><p>  5.3.1 鬧鐘組件的設(shè)計(jì)思路及原理圖11</p><p>  5.3.2 仿真波形11</p><p>  5.4 輸出選擇與數(shù)碼轉(zhuǎn)換模塊設(shè)計(jì)12</p><p&g

13、t;  5.4.1 秒/分查表組件設(shè)計(jì)12</p><p>  5.4.2 小時(shí)查表組件設(shè)計(jì)13</p><p>  5.5 掃描多路輸出模塊14</p><p>  5.5.1 bin2led 組件設(shè)計(jì)14</p><p>  5.5.2 scan4 組件設(shè)計(jì)15</p><p>  5.5.3 scan2

14、 組件設(shè)計(jì)16</p><p>  6 各模塊硬件實(shí)現(xiàn)結(jié)果17</p><p>  6.1 正常計(jì)數(shù)模塊的硬件實(shí)現(xiàn)結(jié)果18</p><p>  6.2 定時(shí)模塊的硬件實(shí)現(xiàn)結(jié)果19</p><p>  6.3 鬧鐘模塊硬件實(shí)現(xiàn)結(jié)果20</p><p><b>  7 小結(jié)20</b>&l

15、t;/p><p><b>  參考文獻(xiàn):20</b></p><p><b>  致 謝21</b></p><p>  附錄:部分模塊代碼21</p><p>  基于硬件描述語言VHDL的電子鐘設(shè)計(jì)</p><p>  摘 要:VHDL(Very High Speed

16、 Integrated Circuit Hardware Description Language 即超高速集成電路硬件描述語言)在當(dāng)今電子工程領(lǐng)域已經(jīng)成為通用的硬件描述語言。本文使用VHDL硬件描述語言設(shè)計(jì)了一個(gè)電子鐘系統(tǒng)。該系統(tǒng)在開發(fā)軟件Quartus Ⅱ環(huán)境中設(shè)計(jì)完成,本文給出了設(shè)計(jì)該數(shù)字系統(tǒng)的流程和方法,最后通過CPLD實(shí)現(xiàn)預(yù)定功能。</p><p>  關(guān)鍵詞:硬件描述語言;VHDL;Quartus Ⅱ

17、;電子鐘;CPLD</p><p>  Design of Electronic clock Based On Hardware Description Language VHDL</p><p>  (School of Computer Science & Technology,Information Engineering, Class 2 Grade 2004, 04221

18、0212)</p><p>  Abstract: VHDL(Very High Speed Integrated Circuit Hardware Description Language)has become the common hardware description language in today’s electronic engineering field. This article introd

19、uces by using VHDL how to design an electronic clock system, which is finished under the Quartus Ⅱenvironment. This article introduces the process and method of the digital system design and left the CPLD to realize the

20、predetermined function.</p><p>  Key words:hardware description language; VHDL; Quartus Ⅱ;electronic clock;CPLD</p><p><b>  1 引言</b></p><p>  隨著電子技術(shù)的飛速發(fā)展,各種電子設(shè)備及數(shù)字系統(tǒng)的復(fù)雜度

21、、集成度越來越高,現(xiàn)代電子產(chǎn)品性能進(jìn)一步提高,產(chǎn)品更新?lián)Q代的節(jié)奏越來越快,要求產(chǎn)品開發(fā)周期短、開發(fā)成本低、保密性和可修改及可擴(kuò)展性好,因此對(duì)集成電路的設(shè)計(jì)方法不斷提出了新的要求,因此EDA技術(shù)應(yīng)運(yùn)而生。所謂EDA(Electronic Design Automation)技術(shù),是依賴目前功能已十分強(qiáng)大的計(jì)算機(jī)為工具,代替人完成數(shù)字系統(tǒng)設(shè)計(jì)、邏輯綜合、布局布線和仿真工作的技術(shù)。</p><p>  目前,EDA技術(shù)

22、已經(jīng)成為支撐現(xiàn)代電子設(shè)計(jì)的通用平臺(tái),并逐步向支持系統(tǒng)級(jí)設(shè)計(jì)的方向發(fā)展。只有以硬件描述語言和邏輯綜合為基礎(chǔ)的自頂向下的設(shè)計(jì)方法才能滿足日趨復(fù)雜的數(shù)字系統(tǒng)設(shè)計(jì)要求。硬件描述語言有很多種,本文應(yīng)用具有強(qiáng)大的電路描述和建模能力的VHDL語言進(jìn)行電子鐘系統(tǒng)設(shè)計(jì),為以后深入學(xué)習(xí)和應(yīng)用電子系統(tǒng)現(xiàn)代設(shè)計(jì)方法打好基礎(chǔ),并具有工程實(shí)用性。</p><p><b>  2 相關(guān)知識(shí)介紹</b></p>

23、<p>  本文所設(shè)計(jì)的電子鐘系統(tǒng)是運(yùn)行在QuartusⅡ環(huán)境下的一個(gè)小型的數(shù)字系統(tǒng)。我采用了自頂向下的設(shè)計(jì)方法,應(yīng)用功能強(qiáng)大的硬件描述語言VHDL完成系統(tǒng)的設(shè)計(jì)仿真。下面就本設(shè)計(jì)所用到的技術(shù)作一下簡(jiǎn)單的介紹。</p><p>  2.1 VHDL介紹</p><p>  VHDL是Very High Speed Integrated Circuit Hardware Des

24、cription Language的縮寫,是在ADA語言的基礎(chǔ)上發(fā)展起來的硬件描述語言。</p><p>  VHDL誕生于1983年,1987年12月,VHDL被接納為標(biāo)準(zhǔn)硬件描述語言,即IEEE1076標(biāo)準(zhǔn)。經(jīng)過不斷更改和改善,1993年,VHDL重新修訂并增加了一些功能,即IEEE 1076-93標(biāo)準(zhǔn)。目前在電子工程領(lǐng)域,作為IEEE的工業(yè)標(biāo)準(zhǔn)硬件描述語言,VHDL已成為事實(shí)上的通用硬件描述語言。</

25、p><p>  電路設(shè)計(jì)的描述層次可分為系統(tǒng)級(jí)、算法級(jí)、寄存器傳輸級(jí)、門級(jí)和晶體管級(jí),VHDL的建模范圍可以從最抽象的系統(tǒng)級(jí)一直到門級(jí),從多個(gè)層次對(duì)電路進(jìn)行模擬仿真。它除了具有硬件特征的語句外,其語言形式和描述風(fēng)格以及句法和一般的計(jì)算機(jī)高級(jí)語言相當(dāng)類似,然而它又有同軟件語言完全不同的性質(zhì)。</p><p>  以下是一個(gè)VHDL的實(shí)例:</p><p>  LIBRAR

26、Y IEEE;--IEEE庫使用說明語句</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  ENTITY mux21 IS--實(shí)體說明部分</p><p><b>  PORT(</b></p><p>  a,b:IN STD_LOGIC;&

27、lt;/p><p>  s:IN STD_LOGIC;</p><p>  y:OUT STD_LOGIC</p><p><b>  );</b></p><p>  END ENTITY mux21;</p><p>  ARCHITECTURE mux21a OF mux21 IS--結(jié)構(gòu)體

28、說明部分</p><p><b>  BEGIN</b></p><p>  PROCESS(a,b,s)</p><p><b>  BEGIN</b></p><p>  IF s=’0' THEN y<=a;</p><p>  ELSE y<=b;

29、</p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p>  END ARCHITECTURE mux21a;</p><p>  這個(gè)程序是一個(gè)簡(jiǎn)單的2選1多路選擇器的VHDL完整描述。它體現(xiàn)出了VHDL程序的一般結(jié)構(gòu):使用庫(Use)定義區(qū)——實(shí)體(Entit

30、y)定義區(qū)——結(jié)構(gòu)(Architecture)定義區(qū)。其中Use定義區(qū)描述的是這個(gè)程序使用的定義庫,類似于C語言的頭文件包括;</p><p>  Entity 定義區(qū)描述的電子的外部結(jié)構(gòu),就是指元件的輸入和輸出接口,它用以定義一個(gè)芯片的管腳狀態(tài);Architecture定義區(qū)里面是這個(gè)程序的關(guān)鍵部分,包括算法,功能,硬件的行為等都是在Architecture區(qū)里面描述的。</p><p>

31、;  一個(gè)完整的VHDL程序是對(duì)一個(gè)功能元件從外部和內(nèi)部?jī)蓚€(gè)方面來進(jìn)行描述,由于元件本身具有層次性,因此它既可以作為完成某一功能的邏輯電路單元而獨(dú)立存在,也可以作為一個(gè)部件,和其他功能元件一起構(gòu)成更復(fù)雜的功能元件或數(shù)字系統(tǒng),因此其單元的概念很清晰,可以靈活地應(yīng)用于自頂向下的數(shù)字系統(tǒng)設(shè)計(jì)流程。</p><p>  2.2 自頂向下設(shè)計(jì)方法</p><p>  本設(shè)計(jì)采用自頂向下的設(shè)計(jì)方法來完

32、成電子鐘系統(tǒng)。所謂自頂向下的設(shè)計(jì)方法,是指在設(shè)計(jì)過程中,從數(shù)字系統(tǒng)的最高層次出發(fā),進(jìn)行仿真驗(yàn)證,再將系統(tǒng)劃分成各個(gè)子模塊。然后再對(duì)各個(gè)子模塊進(jìn)行仿真驗(yàn)證,合格之后經(jīng)EDA開發(fā)平臺(tái)由計(jì)算機(jī)自動(dòng)綜合成門級(jí)電路,進(jìn)行門級(jí)仿真驗(yàn)證。自頂向下的方法強(qiáng)調(diào)在每個(gè)層次進(jìn)行仿真驗(yàn)證,以保證系統(tǒng)性能指標(biāo)的實(shí)現(xiàn),以便于在早期發(fā)現(xiàn)和糾正設(shè)計(jì)中出現(xiàn)的錯(cuò)誤。</p><p>  自頂向下設(shè)計(jì)方法有一些突出的優(yōu)點(diǎn):</p>&l

33、t;p> ?。?)適應(yīng)于復(fù)雜和大規(guī)模的數(shù)字系統(tǒng)的開發(fā),便于層次式、結(jié)構(gòu)化的設(shè)計(jì)思想。</p><p> ?。?)各個(gè)子系統(tǒng)可以同時(shí)并發(fā),縮短設(shè)計(jì)周期。</p><p>  (3)對(duì)于設(shè)計(jì)的系統(tǒng)進(jìn)行層層分解,且在每一層次進(jìn)行仿真驗(yàn)證,設(shè)計(jì)錯(cuò)誤可以在早期發(fā)現(xiàn),提高了設(shè)計(jì)的正確性。</p><p> ?。?)邏輯綜合之前的設(shè)計(jì)工作與具體的實(shí)現(xiàn)工藝、器件等無關(guān),因此,

34、設(shè)計(jì)的可移植性良好。</p><p>  2.3 Quartus Ⅱ開發(fā)平臺(tái)</p><p>  Quartus II是Altera公司的第四代可編程邏輯器件集成開發(fā)環(huán)境,提供從設(shè)計(jì)輸入到器件編程的全部功能。Quartus II可以產(chǎn)生并識(shí)別EDIF網(wǎng)表文件、VHDL網(wǎng)表文件,為其他 EDA 工具提供了方便的接口;可以在Quartus II集成環(huán)境中自動(dòng)運(yùn)行其他 EDA 工具。Quartu

35、s II 軟件的開發(fā)流程可概括為以下幾步:設(shè)計(jì)輸入、設(shè)計(jì)編譯、設(shè)計(jì)時(shí)序分析、設(shè)計(jì)仿真和器件編程,具有FPGA和CPLD芯片設(shè)計(jì)的所有階段的解決方案。</p><p> ?。?)設(shè)計(jì)輸入 Quartus II軟件在File菜單中提供“New Project Wizard...”向?qū)В龑?dǎo)設(shè)計(jì)者完成項(xiàng)目的創(chuàng)建。當(dāng)設(shè)計(jì)者需要向項(xiàng)目中添加新的VHDL文件時(shí),可以通過“New”選項(xiàng)選擇添加。</p><

36、;p>  (2)設(shè)計(jì)編譯 Quartus II編譯器完成的功能有:檢查設(shè)計(jì)錯(cuò)誤、對(duì)邏輯進(jìn)行綜合、提取定時(shí)信息、在指定的Altera系列器件中進(jìn)行適配分割,產(chǎn)生的輸出文件將用于設(shè)計(jì)仿真、定時(shí)分析及器件編程。</p><p> ?。?)設(shè)計(jì)定時(shí)分析 單擊Project菜單下的“Timing Settings...”選項(xiàng),可以方便地完成時(shí)間參數(shù)的設(shè)定。Quartus II軟件的時(shí)序分析功能在編譯過程結(jié)束之后自

37、動(dòng)運(yùn)行,并在編譯報(bào)告的Timing Analyses文件夾中顯示。</p><p> ?。?)設(shè)計(jì)仿真 Quartus II軟件允許設(shè)計(jì)者使用基于文本的向量文件(.vec)作為仿真器的激勵(lì),也可以在Quartus II軟件的波形編輯器中產(chǎn)生向量波形文件(.vwf)作為仿真器的激勵(lì)。</p><p> ?。?)器件編程 設(shè)計(jì)者可以將配置數(shù)據(jù)通過MasterBlaster或ByteBl

38、asterMV通信電纜下載到器件當(dāng)中,通過被動(dòng)串行(Passive Serial)配置模式或JTAG模式對(duì)器件進(jìn)行配置編程,還可以在JTAG模式下給多個(gè)器件進(jìn)行編程。</p><p>  2.4 CPLD簡(jiǎn)介</p><p>  CPLD 是Complex Programmable Logic Device的縮寫,即復(fù)雜可編程邏輯器件,內(nèi)部結(jié)構(gòu)為“與或陣列”。該結(jié)構(gòu)來自于典型的 PAL 、

39、GAL 器件的結(jié)構(gòu)。任意一個(gè)組合邏輯都可以用“與或”表達(dá)式來描述,所以該“與或陣列”結(jié)構(gòu)能實(shí)現(xiàn)大量的組合邏輯功能。</p><p>  CPLD是一種用戶根據(jù)各自需要而自行構(gòu)造邏輯功能的數(shù)字集成電路。其基本設(shè)計(jì)方法是借助集成開發(fā)軟件平臺(tái),用原理圖、硬件描述語言等方法,生成相應(yīng)的目標(biāo)文件,通過下載電纜將代碼傳送到目標(biāo)芯片中,實(shí)現(xiàn)設(shè)計(jì)的數(shù)字系統(tǒng)。</p><p>  CPLD具有編程靈活、集成

40、度高、設(shè)計(jì)開發(fā)周期短、適用范圍寬、開發(fā)工具先進(jìn)、設(shè)計(jì)制造成本低、對(duì)設(shè)計(jì)者的硬件經(jīng)驗(yàn)要求低、標(biāo)準(zhǔn)產(chǎn)品無需測(cè)試、保密性強(qiáng)、價(jià)格大眾化等特點(diǎn),可實(shí)現(xiàn)較大規(guī)模的電路設(shè)計(jì),因此被廣泛應(yīng)用于產(chǎn)品的原型設(shè)計(jì)和產(chǎn)品生產(chǎn)(一般在10,000件以下)之中。幾乎所有應(yīng)用中小規(guī)模通用數(shù)字集成電路的場(chǎng)合均可應(yīng)用CPLD器件。CPLD器件已成為電子產(chǎn)品不可缺少的組成部分。</p><p>  3 電子鐘系統(tǒng)設(shè)計(jì)方案</p>&

41、lt;p>  3.1 電子鐘系統(tǒng)設(shè)計(jì)要求</p><p>  (1)能夠?qū)γ?、分、小時(shí)進(jìn)行計(jì)時(shí),每日按24小時(shí)計(jì)時(shí)制;</p><p>  (2)能夠作為計(jì)時(shí)器使用;</p><p> ?。?)能夠設(shè)定鬧鐘;</p><p>  3.2 系統(tǒng)設(shè)計(jì)方案概述及工作原理</p><p>  根據(jù)系統(tǒng)設(shè)計(jì)要求,系統(tǒng)設(shè)計(jì)采

42、用自頂向下設(shè)計(jì)方法,由正常計(jì)時(shí)模塊、定時(shí)器模塊、鬧鐘模塊、數(shù)碼轉(zhuǎn)換模塊、掃描多路輸出模塊組成。</p><p> ?。?)首先按下復(fù)位開關(guān)rst進(jìn)行復(fù)位清零操作,電子鐘從新計(jì)時(shí)開始。</p><p>  (2)為了便于時(shí)鐘計(jì)數(shù),需要1hz的時(shí)鐘信號(hào)。而實(shí)驗(yàn)箱上提供給系統(tǒng)的頻率大于1hz,這里取22.1184MHZ,所以要對(duì)頻率進(jìn)行分頻,用來實(shí)現(xiàn)系統(tǒng)輸入信號(hào)產(chǎn)生一個(gè)1hz的時(shí)鐘信號(hào)。<

43、/p><p>  (3)為了設(shè)定鬧鐘,本文設(shè)計(jì)了一個(gè)目標(biāo)時(shí)間調(diào)整程序。將alarm的開關(guān)轉(zhuǎn)成on,ok鍵是off時(shí),6個(gè)數(shù)字即顯示00:00:00,以等待輸入。當(dāng)按下調(diào)秒鍵sec_tune時(shí),秒針將從0持續(xù)增加到59后,再返回0,任何時(shí)刻彈出按鍵即顯示當(dāng)時(shí)的值,調(diào)分鍵與調(diào)時(shí)鍵的原理與此相同。當(dāng)ok鍵是on時(shí),則停止設(shè)定,顯示時(shí)間便到正常計(jì)時(shí)。</p><p> ?。?)計(jì)時(shí)器的原理與鬧鐘程序有

44、相似之處。將stop的開關(guān)轉(zhuǎn)成on,ok鍵是off時(shí),6個(gè)數(shù)字即顯示00:00:00,以等待輸入。當(dāng)按下調(diào)秒鍵sec_tune時(shí),秒針將從0持續(xù)增加到59后,再返回0,任何時(shí)刻彈出按鍵即顯示當(dāng)時(shí)的值,調(diào)分鍵與調(diào)時(shí)鍵的原理與此相同。當(dāng)ok鍵是on時(shí),則停止設(shè)定,顯示時(shí)間為所設(shè)定的計(jì)時(shí)起始時(shí)間,并開始進(jìn)行計(jì)時(shí),直到計(jì)時(shí)器顯示00:00:00為止。</p><p>  (5)為了節(jié)省6個(gè)七段顯示器顯示所需的電流消耗,本

45、文利用視覺暫留原理來讓七段顯示器輪流來顯示。</p><p><b>  4 電子鐘頂層設(shè)計(jì)</b></p><p>  4.1 頂層設(shè)計(jì)分析</p><p>  對(duì)于電子鐘的設(shè)計(jì),這里將采用自頂向下的設(shè)計(jì)方法進(jìn)行設(shè)計(jì),因此首先需要進(jìn)行電子鐘的頂層設(shè)計(jì)。本節(jié)將首先介紹電子鐘的系統(tǒng)結(jié)構(gòu)和模塊劃分,然后設(shè)計(jì)出頂層VHDL設(shè)計(jì)程序。</p>

46、;<p>  根據(jù)前邊敘述的電子鐘的設(shè)計(jì)要求、工作原理和設(shè)計(jì)方案,這里給出設(shè)計(jì)系統(tǒng)結(jié)構(gòu)框圖和外部管腳圖分別如圖4.1和圖4.2所示。</p><p>  圖4.1 系統(tǒng)結(jié)構(gòu)框圖</p><p>  圖4.2 系統(tǒng)外部管腳圖</p><p>  由電子鐘的外部管腳圖可知,系統(tǒng)的輸入輸出信號(hào)包括:</p><p> ?。?)復(fù)位

47、開關(guān)信號(hào)rst:輸入信號(hào);</p><p> ?。?)外部輸入的時(shí)鐘信號(hào)clk:輸入信號(hào);</p><p> ?。?)鬧鐘觸發(fā)信號(hào)alarm:輸入信號(hào);</p><p> ?。?)定時(shí)器信號(hào)stop:輸入信號(hào);</p><p> ?。?)定時(shí)器計(jì)時(shí)開始信號(hào)ok:輸入信號(hào);</p><p> ?。?)秒/分/時(shí)調(diào)整信號(hào)

48、sec_tune,min_tune,hour_tune:輸入信號(hào);</p><p> ?。?)鬧鐘/定時(shí)器標(biāo)志信號(hào)led_alarm,led_stop:輸出信號(hào);</p><p>  (8)LED七段譯碼管的輸出信號(hào)seg4[0..6],seg2[0..6]:輸出信號(hào)。</p><p>  由圖4.1知,系統(tǒng)劃分了五個(gè)模塊,劃分的這五個(gè)模塊,每個(gè)模塊都包含若干個(gè)組件

49、,因此首先建立一個(gè)程序包把所有的組件包含在一起,以便于主程序模塊的調(diào)用,然后再對(duì)每個(gè)組件進(jìn)行編程設(shè)計(jì)。</p><p><b>  4.2 頂層電路圖</b></p><p><b>  頂層電路圖見附頁。</b></p><p>  5 各模塊電路的設(shè)計(jì)</p><p>  5.1 正常計(jì)數(shù)時(shí)間功

50、能模塊</p><p>  系統(tǒng)必須維持一個(gè)持續(xù)不斷計(jì)數(shù)的時(shí)鐘,從時(shí)間00:00:00到23:59:59循環(huán)不斷。首先將22.1184MHZ的系統(tǒng)輸入脈沖除以22118400得到1HZ的基本秒輸入,然后除以60得到分?jǐn)?shù),再除以60得到小時(shí)數(shù),再除以24得一個(gè)滿日指針,這些功能的實(shí)現(xiàn)要用到三種組件:分頻組件,60進(jìn)制計(jì)時(shí)組件,24進(jìn)制計(jì)時(shí)組件。</p><p>  5.1.1 分頻組件設(shè)計(jì)&

51、lt;/p><p>  本設(shè)計(jì)采用的是CPLD芯片EP1K100QC208-3,內(nèi)部晶振為22.1184MHz,但是數(shù)碼顯示管位掃描信號(hào)和其他模塊的工作頻率是1Hz。所以要用分頻組件來對(duì)輸入時(shí)鐘進(jìn)行22118400分頻。</p><p>  下面圖5.1是生成的分頻組件元器件圖形。</p><p>  接口:clk——時(shí)鐘輸入,輸入信號(hào)22.1184MHz</p&

52、gt;<p>  f1hz——1Hz輸出信號(hào)</p><p>  圖5.1分頻組件器件圖</p><p>  在QuartusⅡ軟件中進(jìn)行仿真后,得到仿真時(shí)序圖如圖5.2</p><p>  圖5.2 分頻組件仿真波形圖</p><p>  由圖5.2知,輸入信號(hào)的周期是80ns,輸出信號(hào)的周期是1769472118ns,176

53、9472118除以80約等于22118400,證明分頻是正確的。</p><p>  5.1.2 60進(jìn)制計(jì)數(shù)器設(shè)計(jì)</p><p>  為了讓計(jì)算過程容易閱讀,個(gè)位數(shù)信號(hào)one(0~9)與十位數(shù)信號(hào)ten(0~5)先以整數(shù)形式出現(xiàn),計(jì)算完成后再轉(zhuǎn)換成位矢量形式(信號(hào)ones和tens),便于以后轉(zhuǎn)換成七段LED顯示碼。雖然十進(jìn)制僅需2位的位矢量,但為統(tǒng)一以后的七段顯示器輸出顯示的需要,這

54、里是以4位的位矢量表示的。if_then語句與適當(dāng)?shù)臈l件進(jìn)位適合時(shí)鐘計(jì)時(shí),十進(jìn)制的進(jìn)位歸零必須配合個(gè)位數(shù)的進(jìn)位歸零,而個(gè)位數(shù)的進(jìn)位歸零則不必配合十進(jìn)制的進(jìn)位歸零,所以在if_then 語句中,十進(jìn)制的計(jì)數(shù)動(dòng)作應(yīng)放在內(nèi)層。秒數(shù)的計(jì)數(shù)以1Hz的輸入為觸發(fā)信號(hào),分?jǐn)?shù)的計(jì)數(shù)以秒數(shù)的進(jìn)位輸出full_sec作為觸發(fā)。</p><p>  下面圖5.3是60進(jìn)制計(jì)數(shù)器器件圖形。</p><p>  接

55、口: carry:1hz時(shí)鐘信號(hào)或者是秒的進(jìn)位信號(hào)</p><p><b>  rst:復(fù)位信號(hào)</b></p><p>  times:輸出十進(jìn)制的秒數(shù)或分?jǐn)?shù)</p><p><b>  full:進(jìn)位信號(hào)</b></p><p>  圖5.3 60進(jìn)制計(jì)數(shù)器器件圖</p><

56、p>  在QuartusⅡ軟件中進(jìn)行仿真后,得到仿真時(shí)序圖如圖5.4</p><p>  圖5.4 60進(jìn)制計(jì)數(shù)器仿真波形圖</p><p>  由圖5.4知,每來一個(gè)carry上升沿,計(jì)數(shù)器就加1,當(dāng)計(jì)數(shù)器當(dāng)?shù)竭_(dá)第60個(gè)上升沿時(shí),full=1,times由59歸零,仿真符合60進(jìn)制計(jì)數(shù)器的要求。</p><p>  5.1.3 24進(jìn)制計(jì)數(shù)器設(shè)計(jì)</p

57、><p>  24進(jìn)制計(jì)數(shù)器的結(jié)構(gòu)和原理與60進(jìn)制計(jì)數(shù)器相類似,只是將除以60改為除以24,并在接收60分進(jìn)位指針carry時(shí),檢查是否同時(shí)為23小時(shí),再?zèng)Q定進(jìn)位與否。因此個(gè)為數(shù)信號(hào)one與十位數(shù)信號(hào)ten 先以整數(shù)形式出現(xiàn),計(jì)算完成后再轉(zhuǎn)換成位矢量形式,便于以后轉(zhuǎn)成了LED顯示碼。雖然十進(jìn)制僅需2位的位矢量,但為統(tǒng)一以后的七段顯示器輸出顯示的需要,這里是以4位的位矢量表示的。個(gè)位數(shù)的進(jìn)位歸零在十進(jìn)制為2時(shí),必須在o

58、ne等于3時(shí)進(jìn)位,同時(shí)送出進(jìn)位指針full=1,1小時(shí)后將指針歸零。</p><p>  下面圖5.5是生成的24進(jìn)制計(jì)數(shù)器器件圖形。</p><p>  接口:carry:1hz時(shí)鐘信號(hào)或者是分的進(jìn)位信號(hào)</p><p><b>  rst:復(fù)位信號(hào)</b></p><p>  times:輸出十進(jìn)制的小時(shí)數(shù)</

59、p><p><b>  full:進(jìn)位信號(hào)</b></p><p>  圖5.5 24進(jìn)制計(jì)數(shù)器器件圖</p><p>  在QuartusⅡ軟件中進(jìn)行仿真后,得到仿真時(shí)序圖如圖5.6</p><p>  圖5.6 24進(jìn)制計(jì)數(shù)器仿真波形</p><p>  由上圖5.6知,carry信號(hào)的周期是1m

60、s,當(dāng)?shù)竭_(dá)第24個(gè)上升沿時(shí),full=1,times歸零。仿真符合24進(jìn)制計(jì)數(shù)器的要求。</p><p>  5.2 定時(shí)器設(shè)定于計(jì)時(shí)功能模塊</p><p>  在此模塊中,先利用定時(shí)器組件設(shè)定定時(shí)器的計(jì)時(shí)時(shí)間,并執(zhí)行計(jì)時(shí)動(dòng)作,取得計(jì)時(shí)中止指針,然后由計(jì)時(shí)中止指針標(biāo)示出計(jì)時(shí)中止?fàn)顟B(tài)led_stop=’1’。</p><p>  5.2.1 定時(shí)器組件設(shè)計(jì)思路及原理

61、圖</p><p>  將stop的開關(guān)轉(zhuǎn)成on,ok鍵是off時(shí),6個(gè)數(shù)字即顯示00:00:00,以等待輸入。當(dāng)按下調(diào)秒鍵sec_tune時(shí),秒針將從0持續(xù)增加到59后,再返回0,任何時(shí)刻彈出按鍵即顯示當(dāng)時(shí)的值,調(diào)分鍵與調(diào)時(shí)鍵的原理與此相同。當(dāng)ok鍵是on時(shí),則停止設(shè)定,顯示時(shí)間為所設(shè)定的計(jì)時(shí)起始時(shí)間,并開始進(jìn)行計(jì)時(shí),直到計(jì)時(shí)器顯示00:00:00為止。</p><p>  接口:rst

62、:復(fù)位信號(hào)</p><p>  hz1:系統(tǒng)時(shí)鐘1hz</p><p>  stop:輸入停止信號(hào)</p><p><b>  ok:計(jì)時(shí)是否開始</b></p><p>  sec_tune:按下以調(diào)秒</p><p>  min_tune:按下以調(diào)分</p><p> 

63、 hour_tune:按下以調(diào)時(shí)</p><p>  stop_sec:定時(shí)秒數(shù)</p><p>  stop_min:定時(shí)分?jǐn)?shù)</p><p>  stop_hour:定時(shí)小時(shí)數(shù)</p><p>  index:定時(shí)器輸出停止信號(hào)</p><p><b>  disp:顯示信號(hào)</b></

64、p><p>  圖5.7定時(shí)組件器件圖</p><p>  5.2.2 定時(shí)器仿真波形</p><p>  在QuartusⅡ軟件中進(jìn)行仿真后,得到仿真時(shí)序圖如圖5.8</p><p>  圖5.8定時(shí)器仿真波形</p><p>  由圖5.8知,當(dāng)ok=1時(shí),確定定時(shí)時(shí)間為5秒,然后時(shí)間遞減,減到零后完成定時(shí)。此時(shí)ind

65、ex=1,定時(shí)結(jié)束。</p><p>  5.3 鬧鐘模塊設(shè)計(jì)</p><p>  在此模塊中,先利用alarm_set組件確定鬧鐘的設(shè)定時(shí)刻,然后確認(rèn)指針開關(guān)ok處于ok處于on(‘1’)時(shí),開始進(jìn)行目前正常時(shí)間與鬧鐘設(shè)定時(shí)間的對(duì)比動(dòng)作,對(duì)比完成即設(shè)定alarm_index為1,然后再進(jìn)一步標(biāo)示出鬧鐘設(shè)定狀態(tài)led_alarm=’1’。</p><p>  5.3

66、.1 鬧鐘組件的設(shè)計(jì)思路及原理圖</p><p>  鬧鐘的功能就是設(shè)定特定的時(shí)間然后與正常時(shí)間對(duì)比,時(shí)間相同特定的等就會(huì)亮。這個(gè)組件的功能是調(diào)整秒分時(shí)以確定鬧鐘時(shí)間,并配合alarm,ok兩鍵來確定動(dòng)作。</p><p>  接口: rst:復(fù)位信號(hào)</p><p>  hz1:系統(tǒng)時(shí)鐘1hz</p><p>  alarm:輸入鬧鐘信號(hào)&

67、lt;/p><p><b>  ok:鬧鐘是否開始</b></p><p>  sec_tune:按下以調(diào)秒</p><p>  min_tune:按下以調(diào)分</p><p>  hour_tune:按下以調(diào)時(shí)</p><p><b>  sec:鬧鐘的秒數(shù)</b></p&

68、gt;<p><b>  min:鬧鐘的分?jǐn)?shù)</b></p><p>  hour:鬧鐘的小時(shí)數(shù)</p><p>  圖5.9鬧鐘組件器件圖</p><p>  5.3.2 仿真波形</p><p>  在QuartusⅡ軟件中進(jìn)行仿真后,得到仿真時(shí)序圖如圖5.10。</p><p>

69、;  圖5.10 鬧鐘模塊仿真波形</p><p>  由圖5.10,當(dāng)按下alarm鍵,即alarm=1時(shí),可以進(jìn)行調(diào)時(shí)分秒,然后當(dāng)ok=1時(shí),鬧鐘設(shè)定結(jié)束。</p><p>  5.4 輸出選擇與數(shù)碼轉(zhuǎn)換模塊設(shè)計(jì)</p><p>  通常6個(gè)時(shí)分秒數(shù)字所顯示的是正常的計(jì)時(shí)鬧鐘,但在鬧鐘與定時(shí)器時(shí)間設(shè)定過程中,必須顯示正在設(shè)定的鬧鈴時(shí)間或定時(shí)器計(jì)時(shí)時(shí)間。另外,在定

70、時(shí)器計(jì)時(shí)過程中,為了觀察進(jìn)行時(shí)間,必須顯示正在計(jì)時(shí)的剩余時(shí)間。本模塊的功能就是進(jìn)行輸出選擇,并進(jìn)行數(shù)碼轉(zhuǎn)換來完成將輸出時(shí)間由整數(shù)形式轉(zhuǎn)成BCD形式的工作。本模塊用到了秒/分查表組件和小時(shí)查表組件。</p><p>  5.4.1 秒/分查表組件設(shè)計(jì)</p><p>  在此設(shè)計(jì)中,為了計(jì)算方便,前面的都是以整數(shù)來處理時(shí)間,但在電路中,數(shù)值均以二進(jìn)制的形式存儲(chǔ),所以需要設(shè)計(jì)一個(gè)查表程序來將秒

71、數(shù)或分?jǐn)?shù)的0到59共60個(gè)整數(shù)轉(zhuǎn)換成二進(jìn)制編碼的十進(jìn)制(BCD)表示法,以便將來轉(zhuǎn)換成七段顯示器格式輸出。</p><p>  下面圖5.11是生成的秒/分查表器件圖形。</p><p>  接口: interg:輸入0到59的整數(shù)信號(hào)</p><p>  one:輸出個(gè)位的BCD碼</p><p>  ten:輸出十位的BCD碼</p

72、><p>  圖5.11秒/分查表組件器件圖</p><p>  在QuartusⅡ軟件中進(jìn)行仿真后,得到仿真時(shí)序圖如圖5.12</p><p>  圖5.12 秒/分查表組件仿真波形</p><p>  由圖知,十進(jìn)制轉(zhuǎn)化成二進(jìn)制,one代表十進(jìn)制的個(gè)位,ten代表十進(jìn)制的十位。例如18是00011000。仿真結(jié)果證明程序可行。</p&g

73、t;<p>  5.4.2 小時(shí)查表組件設(shè)計(jì)</p><p>  小時(shí)查表組件的思路與秒/分組件相似,只是將小時(shí)數(shù)0到23共24個(gè)整數(shù)轉(zhuǎn)換成二進(jìn)制編碼表示。</p><p>  下面圖5.13是小時(shí)查表器件圖</p><p>  接口:interg:輸入0到23的整數(shù)信號(hào)</p><p>  one:輸出個(gè)位的BCD碼</

74、p><p>  ten:輸出十位的BCD碼</p><p>  圖5.13 小時(shí)查表組件器件圖</p><p>  在QuartusⅡ軟件中進(jìn)行仿真后,得到仿真時(shí)序圖如圖5.14</p><p>  圖5.14小時(shí)查表組件仿真波形圖</p><p>  由圖知,十進(jìn)制轉(zhuǎn)化成二進(jìn)制,one代表十進(jìn)制的個(gè)位,ten代表十進(jìn)制的

75、十位。例如5是00000101。仿真結(jié)果證明程序可行。</p><p>  5.5 掃描多路輸出模塊</p><p>  為了節(jié)省IC的輸出引腳及耗電量,可以將4組數(shù)字輸出或2組數(shù)字輸出作為多路輸出;另外使用四合一型七段顯示器與視覺暫留效應(yīng)可降低顯示耗電量。首先將6個(gè)數(shù)字通過bin2led組件將BCD碼轉(zhuǎn)換成七段顯示器碼,然后分別將分秒的4個(gè)數(shù)字通過scan4組件掃描輸出,而將小時(shí)數(shù)的2個(gè)

76、數(shù)字通過scan2組件掃描輸出,最后完成整個(gè)電子鐘的功能。</p><p>  5.5.1 bin2led 組件設(shè)計(jì)</p><p>  在一般電路中,數(shù)值均以二進(jìn)制的形式存儲(chǔ)與計(jì)算,但是要將其輸出值七段譯碼管顯示時(shí),則必須提供一個(gè)電路模塊專門將二進(jìn)制轉(zhuǎn)換成十進(jìn)制輸出使用。此處我們以查表方式來設(shè)計(jì)轉(zhuǎn)換電路,使用并行語句with_select,列出0到9等10中對(duì)照數(shù)值情況。若為10及其以上

77、的數(shù)字,則顯示錯(cuò)誤信息“E”。本設(shè)計(jì)用的實(shí)驗(yàn)平臺(tái)的七段譯碼管是共陰極的。</p><p>  下面圖5.15是bin2led的器件圖。</p><p>  接口:bin:0到9的二進(jìn)制表示形式,輸入信號(hào)</p><p>  led:七段譯碼管顯示管對(duì)應(yīng)顯示的數(shù)值</p><p>  圖5.15 bin2led組件器件圖</p>

78、<p>  在QuartusⅡ軟件中進(jìn)行仿真后,得到仿真時(shí)序圖如圖5.16</p><p>  圖5.16 bin2led組件仿真波形圖</p><p>  由上圖分析,輸入的是0到9的二進(jìn)制表示形式,輸出的是七段顯示譯碼,本設(shè)計(jì)的七段顯示器是共陰極的,所以,如輸入時(shí)6的二進(jìn)制0110,輸出是1101101。仿真證明程序是可行的。</p><p>  5.

79、5.2 scan4 組件設(shè)計(jì)</p><p>  在本組件中,sel線選擇控制輸出4組數(shù)字a,b,c,d,輪流輸出至多路輸出mux_out;同時(shí),電源控制信號(hào)pa,pb,pc,pd也同步配合多路輸出。</p><p>  下面圖5.17是scan4器件圖。</p><p>  接口:rst:復(fù)位信號(hào)</p><p>  clk:外部時(shí)鐘信號(hào)&

80、lt;/p><p>  a,b,c,d:分秒的各位數(shù)的七段譯碼</p><p>  pa,pb,pc,pd:驅(qū)動(dòng)信號(hào)</p><p>  圖5.17 scan4組件器件圖</p><p>  在QuartusⅡ軟件中進(jìn)行仿真后,得到仿真時(shí)序圖如圖5.18</p><p>  圖5.18 scan4仿真波形圖</p&g

81、t;<p>  從上圖可知,clk每來一個(gè)上升沿,輸出muxout就輸出a,b,c,d中的一組,同時(shí)對(duì)應(yīng)pa,pb,pc,pd分別等于1,如clk來第一個(gè)上升沿,輸出muxout是a組,同時(shí)pa=1。符合多路輸出的原理,此組件的程序可行。</p><p>  5.5.3 scan2 組件設(shè)計(jì)</p><p>  本組件與scan4組件相似,sel線選擇控制輸出2組數(shù)字a,b,

82、輪流輸出至多路輸出mux_out;同時(shí),電源控制信號(hào)pa,pb也同步配合多路輸出。</p><p>  接口:rst:復(fù)位信號(hào)</p><p>  clk:外部時(shí)鐘信號(hào)</p><p>  a,b:小時(shí)的各位數(shù)的七段譯碼</p><p>  pa,pb:驅(qū)動(dòng)信號(hào)</p><p>  圖5.19 scan2器件圖<

83、/p><p>  在QuartusⅡ軟件中進(jìn)行仿真后,得到仿真時(shí)序圖如圖5.20</p><p>  圖5.20 scan2 仿真波形圖</p><p>  從上圖可知,clk每來兩個(gè)上升沿,輸出muxout就輸出a,b中的一組,同時(shí)對(duì)應(yīng)pa,pb分別等于1,如clk來第一個(gè)上升沿,輸出muxout是a組,同時(shí)pa=1,當(dāng)來第三個(gè)上升沿時(shí),輸出b組,同時(shí)pb=1。符合多

84、路輸出的原理,此組件的程序可行。</p><p>  6 各模塊硬件實(shí)現(xiàn)結(jié)果</p><p>  當(dāng)各個(gè)模塊仿真結(jié)束之后,就分配管腳,分配管腳如圖6.1。</p><p><b>  圖6.1分配管腳圖</b></p><p>  分配完管腳之后,再編譯一次,編譯通過之后,就可以下載到CPLD上了,如圖6.2,是編譯結(jié)果

85、,可以看到工程編譯成功。</p><p><b>  圖6.2編譯結(jié)果圖</b></p><p>  6.1 正常計(jì)數(shù)模塊的硬件實(shí)現(xiàn)結(jié)果</p><p>  當(dāng)程序下載到CPLD上時(shí),即顯示正常時(shí)間,從00:00:00開始,圖6.3是其中的一個(gè)時(shí)間點(diǎn)00:00:07。</p><p>  圖6.3正常計(jì)數(shù)模塊硬件實(shí)現(xiàn)結(jié)果

86、</p><p>  6.2 定時(shí)模塊的硬件實(shí)現(xiàn)結(jié)果</p><p>  當(dāng)按下stop鍵,時(shí)間變?yōu)?0:00:00,如圖6.4(a),然后可以調(diào)秒、分、時(shí),設(shè)定定時(shí)器的起始時(shí)間,按下ok鍵,設(shè)定結(jié)束,時(shí)間開始遞減,即定時(shí)開始,如圖6.4(b)。定時(shí)結(jié)束后,led_stop 燈亮。如圖6.4(c),然后顯示正常時(shí)間,如圖6.4(d)。</p><p>  (a)

87、 (b)</p><p>  (c) (d)</p><p>  圖6.3定時(shí)模塊硬件實(shí)現(xiàn)結(jié)果</p><p>  6.3 鬧鐘模塊硬件實(shí)現(xiàn)結(jié)果</p>

88、<p>  當(dāng)按下alarm鍵,時(shí)間變?yōu)?0:00:00,如圖6.5(a),然后可以調(diào)秒、分、時(shí),設(shè)定鬧鐘的起始時(shí)間,按下ok鍵,設(shè)定結(jié)束,如圖6.5(b)。</p><p>  (a) (b)</p><p>  圖6.5鬧鐘模塊硬件實(shí)現(xiàn)結(jié)果</p><p><b>  7 小結(jié)</b&g

89、t;</p><p>  本電子鐘系統(tǒng)采用自頂向下的方法,用硬件描述語言VHDL完成。該系統(tǒng)具有開發(fā)周期短,設(shè)計(jì)靈活度高,模塊分明,易于實(shí)現(xiàn)多功能化等特點(diǎn)。但是本系統(tǒng)也有不足的地方,就是鬧鐘模塊不太完善,有待改進(jìn)??傮w上說,本設(shè)計(jì)系統(tǒng)能夠?qū)崿F(xiàn)電子鐘的基本功能,能夠較好的進(jìn)行功能擴(kuò)展。</p><p><b>  參考文獻(xiàn):</b></p><p&g

90、t;  [1] 林明權(quán).VHDL數(shù)字控制系統(tǒng)設(shè)計(jì)范例[M]. 北京:電子工業(yè)出版社, 2003</p><p>  [2] 雷伏容.VHDL電路設(shè)計(jì)[M]. 北京:清華大學(xué)出版社,2006</p><p>  [3] 陳榮,陳華.VHDL芯片設(shè)計(jì)[M]. 北京:機(jī)械工業(yè)出版社,2006</p><p>  [4] 楊恒,李愛國等. FPGA/CPLD最新實(shí)用技術(shù)指南

91、[M]. 北京:清華大學(xué)出版社, 2005</p><p>  [5] 孫研鵬,張芝賢等.VHDL與可編程邏輯器件應(yīng)用[M]. 北京:航空工業(yè)出版社, 2006</p><p>  [6] 辛春艷.VHDL硬件描述語言[M]. 北京:國防工業(yè)出版社,2002</p><p>  [7] 曾繁泰,陳美金.VHDL程序設(shè)計(jì)[M]. 北京:清華大學(xué)出版社, 2000<

92、;/p><p>  [8] 閻石.數(shù)字電子技術(shù)[M]. 北京:高等教育出版社, 2006</p><p>  [9] Bob Zeidman, 基于FPGA&CPLD的數(shù)字IC設(shè)計(jì)方法 [M]. 趙宏圖譯,北京:北京航空航天大學(xué)出版社,2004</p><p>  [10] http://www.pld.com.cn</p><p>  

93、[11] http://www.altera.com.cn</p><p><b>  致 謝</b></p><p>  本課題在設(shè)計(jì)和論文的寫作過程中,XX老師多次詢問設(shè)計(jì)進(jìn)程,幫助我開拓設(shè)計(jì)思路,給我提供相關(guān)資料,感謝XX老師的悉心指導(dǎo)。還有要感謝在本課題的設(shè)計(jì)過程中給予我硬件方面的指導(dǎo)和幫助的物理與電子工程學(xué)院的XX老師。同時(shí)特別感謝我的班主任XX老師這四年來

94、對(duì)我的關(guān)心和幫助。感謝XX等老師對(duì)我的教育和培養(yǎng),他們對(duì)工作的敬業(yè)精神及踏踏實(shí)實(shí)的作風(fēng),給我產(chǎn)生了積極的影響。最后,感謝我的父親、母親和同學(xué)對(duì)我的理解與支持。</p><p><b>  附錄:部分模塊代碼</b></p><p> ?。?)分頻器關(guān)鍵代碼</p><p>  entity div22118400 is</p>&

95、lt;p>  port(clk:in std_logic;</p><p>  f1hz:out std_logic);</p><p>  end div22118400;</p><p>  architecture behave of div22118400 is</p><p>  signal temp: integer ra

96、nge 0 to 22118399;</p><p><b>  begin</b></p><p>  process(clk)</p><p><b>  begin</b></p><p>  if rising_edge(clk) then</p><p>  tem

97、p<=temp+1;</p><p>  if temp>=22118399 then f1hz<='1';</p><p>  else f1hz<='0';</p><p><b>  end if;</b></p><p><b>  end if;

98、</b></p><p>  end process;</p><p>  end behave;</p><p> ?。?)鬧鐘模塊關(guān)鍵代碼</p><p>  entity alarm_set is</p><p>  port(rst,hz1:in std_logic;</p><

99、p>  alarm,ok:in std_logic;</p><p>  sec_tune:in std_logic;</p><p>  min_tune:in std_logic;</p><p>  hour_tune:in std_logic;</p><p>  sec,min:out integer range 0 to 5

100、9;</p><p>  hour: out integer range 0 to 23);</p><p>  end alarm_set;</p><p>  architecture behave of alarm_set is</p><p>  signal sec_temp,min_temp: integer range 0 to

101、 59;</p><p>  signal hour_temp:integer range 0 to 23;</p><p><b>  begin</b></p><p>  tuning:process(rst,hz1,alarm,ok)</p><p><b>  begin</b></

102、p><p>  if rst='1' then sec_temp<=0;min_temp<=0;hour_temp<=0;</p><p>  elsif rising_edge(hz1) then</p><p>  if alarm='1' and ok='0' then</p><

103、;p>  if sec_tune='1' then </p><p>  if sec_temp=59 then sec_temp<=0;</p><p>  else sec_temp<=sec_temp+1;</p><p><b>  end if;</b></p><p><

104、;b>  end if;</b></p><p>  if min_tune='1' then </p><p>  if min_temp=59 then min_temp<=0;</p><p>  else min_temp<=min_temp+1;</p><p><b>  e

105、nd if;</b></p><p><b>  end if;</b></p><p>  if hour_tune='1' then </p><p>  if hour_temp=23 then hour_temp<=0;</p><p>  else hour_temp<=

106、hour_temp+1;</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  else null;</p><p><b>  end if;</b></p><p><b&g

107、t;  end if;</b></p><p>  end process tuning;</p><p>  sec<=sec_temp;</p><p>  min<=min_temp;</p><p>  hour<=hour_temp;</p><p>  end behave;&

108、lt;/p><p> ?。?)定時(shí)模塊關(guān)鍵代碼</p><p>  entity stop_watch is</p><p>  port(rst,hz1:in std_logic;</p><p>  stop:in std_logic;</p><p>  ok:in std_logic;</p><

109、;p>  sec_tune:in std_logic;</p><p>  min_tune:in std_logic;</p><p>  hour_tune:in std_logic;</p><p>  stop_sec,stop_min:out integer range 0 to 59;</p><p>  stop_hour

110、:out integer range 0 to 23;</p><p>  index:out std_logic;</p><p>  disp:out std_logic);</p><p>  end stop_watch;</p><p>  architecture behave of stop_watch is</p>

111、<p>  signal a_sec,a_min:integer range 0 to 59;</p><p>  signal a_hour:integer range 0 to 23;</p><p><b>  begin</b></p><p>  process(stop,ok,hz1,rst)</p>&

112、lt;p><b>  begin</b></p><p>  if rst='1'then index<='0';disp<='0';</p><p>  elsif rising_edge(hz1) then </p><p>  if stop='1' and

113、 ok='0' then </p><p>  if sec_tune='1' then </p><p>  if a_sec=59 then a_sec<=0;</p><p>  else a_sec<=a_sec+1;</p><p><b>  end if;</b>

114、</p><p><b>  end if;</b></p><p>  if min_tune='1' then</p><p>  if a_min=59 then a_min<=0;</p><p>  else a_min<=a_min+1;</p><p>&

115、lt;b>  end if;</b></p><p><b>  end if;</b></p><p>  if hour_tune='1' then</p><p>  if a_hour=23 then a_hour<=0;</p><p>  else a_hour<

116、=a_hour+1;</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  disp<='1';</p><p>  elsif stop='1' and ok='1' the

117、n </p><p>  if a_sec=0 then </p><p>  if a_min=0 then</p><p>  if a_hour=0 then index<='1';</p><p>  disp<='0';</p><p>  else a_hour&

118、lt;=a_hour-1;</p><p>  a_min<=59;</p><p>  a_sec<=59;</p><p><b>  end if;</b></p><p>  else a_min<=a_min-1;</p><p>  a_sec<=59;<

119、/p><p><b>  end if;</b></p><p>  else a_sec<=a_sec-1;</p><p>  index<='0';</p><p>  disp<='1';</p><p><b>  end if;&

120、lt;/b></p><p>  else disp<='0';</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;</p><p>  stop_s

121、ec<=a_sec;</p><p>  stop_min<=a_min;</p><p>  stop_hour<=a_hour;</p><p>  end behave;</p><p>  一致,故需要在電路上加一個(gè)校時(shí)電路,同時(shí)標(biāo)準(zhǔn)的1HZ時(shí)間信號(hào)必須做到準(zhǔn)確穩(wěn)定.通常使用石英晶體振蕩器電路構(gòu)成數(shù)字鐘.</p

122、><p>  數(shù)字鐘的計(jì)數(shù)電路是用兩個(gè)六十進(jìn)制計(jì)數(shù)電路和24進(jìn)制計(jì)數(shù)電路實(shí)現(xiàn)的。數(shù)字鐘的計(jì)數(shù)電路的設(shè)計(jì)可以用反饋清零法。當(dāng)計(jì)數(shù)器正常計(jì)數(shù)時(shí),反饋門不起作用,只有當(dāng)進(jìn)位脈沖到來時(shí),反饋信號(hào)將計(jì)數(shù)電路清零,實(shí)現(xiàn)相應(yīng)模的循環(huán)計(jì)數(shù)。以60進(jìn)制為例,當(dāng)計(jì)數(shù)器從00,01,02,……,59計(jì)數(shù)時(shí),反饋門不起作用,只有當(dāng)?shù)?0個(gè)秒脈沖到來時(shí),反饋信號(hào)隨即將計(jì)數(shù)電路清零,實(shí)現(xiàn)模為60的循環(huán)計(jì)數(shù)。</p><p&g

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論