課程設(shè)計---vhdl秒表計時器_第1頁
已閱讀1頁,還剩23頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  設(shè) 計 報 告</p><p>  課程名稱 在系統(tǒng)編程技術(shù) </p><p>  設(shè)計題目 VHDL秒表計時器 </p><p><b>  目錄</b></p><p><b>  1 引言1</b></p><p

2、>  1.1 課程設(shè)計的目的1</p><p>  1.2 課程設(shè)計的內(nèi)容1</p><p>  2 EDA、VHDL簡介1</p><p>  2.1 EDA技術(shù)1</p><p>  2.2 硬件描述語言——VHDL2</p><p><b>  3設(shè)計過程4</b><

3、;/p><p>  3.1 設(shè)計規(guī)劃4</p><p>  3.2各模塊的原理及其程序4</p><p>  3.2.1控制模塊5</p><p>  3.2.2時基分頻模塊5</p><p>  3.2.3計時模塊6</p><p>  3.2.4顯示模塊7</p>&l

4、t;p><b>  4系統(tǒng)仿真9</b></p><p><b>  結(jié)束語13</b></p><p><b>  致謝14</b></p><p><b>  參考文獻(xiàn)15</b></p><p><b>  附錄16<

5、/b></p><p><b>  1 引言</b></p><p>  在科技高度發(fā)展的今天,集成電路和計算機(jī)應(yīng)用得到了高速發(fā)展。尤其是計算機(jī)應(yīng)用的發(fā)展。它在人們?nèi)粘I钜阎饾u嶄露頭角。大多數(shù)電子產(chǎn)品多是由計算機(jī)電路組成,</p><p>  如:手機(jī)、mp3等。而且將來的不久他們的身影將會更頻繁的出現(xiàn)在我們身邊。各種家用電器多會實現(xiàn)微

6、電腦技術(shù)。電腦各部分在工作時多是一時間為基準(zhǔn)的。本文就是基于計算機(jī)電路的時鐘脈沖信號、狀態(tài)控制等原理設(shè)計出的數(shù)字秒表。秒表在很多領(lǐng)域充當(dāng)一個重要的角色。在各種比賽中對秒表的精確度要求很高,尤其是一些科學(xué)實驗。他們對時間精確度達(dá)到了幾納秒級別。</p><p>  1.1 課程設(shè)計的目的</p><p>  本次設(shè)計的目的就是在掌握EDA實驗開發(fā)系統(tǒng)的初步使用基礎(chǔ)上,了解EDA技術(shù),對計算機(jī)

7、系統(tǒng)中時鐘控制系統(tǒng)進(jìn)一步了解,掌握狀態(tài)機(jī)工作原理,同時了解計算機(jī)時鐘脈沖是怎么產(chǎn)生和工作的。在掌握所學(xué)的計算機(jī)組成與結(jié)構(gòu)課程理論知識時。通過對數(shù)字秒表的設(shè)計,進(jìn)行理論與實際的結(jié)合,提高與計算機(jī)有關(guān)設(shè)計能力,提高分析、解決計算機(jī)技術(shù)實際問題的能力。通過課程設(shè)計深入理解計算機(jī)結(jié)構(gòu)與控制實現(xiàn)的技術(shù),達(dá)到課程設(shè)計的目標(biāo)。</p><p>  1.2 課程設(shè)計的內(nèi)容</p><p>  利用VHDL

8、語言設(shè)計基于計算機(jī)電路中時鐘脈沖原理的數(shù)字秒表。該數(shù)字秒表能對</p><p>  0秒~59分59.99秒范圍進(jìn)行計時,顯示最長時間是59分59秒。計時精度達(dá)到10ms。設(shè)計了復(fù)位開關(guān)和啟停開關(guān)。復(fù)位開關(guān)可以在任何情況下使用,使用以后計時器清零,并做好下一次計時的準(zhǔn)備。</p><p>  2 EDA、VHDL簡介</p><p><b>  2.1

9、EDA技術(shù)</b></p><p>  EDA是指以計算機(jī)為工作平臺,融合了應(yīng)用電子技術(shù)、計算機(jī)技術(shù)、智能化技術(shù)的最新成果而開發(fā)出的電子CAD通用軟件包,它根據(jù)硬件描述語言HDL完成的設(shè)計文件,自動完成邏輯編譯、化簡、分割、綜合、優(yōu)化、布局布線及仿真,直至完成對于特定目標(biāo)芯片的適配編譯、邏輯映射和編程下載等工作。目前EDA主要輔助進(jìn)行三個方面的設(shè)計工作:IC設(shè)計、電子電路設(shè)計和PCB設(shè)計。沒有EDA技

10、術(shù)的支持,想要完成超大規(guī)模集成電路的設(shè)計制造是不可想象的;反過來,生產(chǎn)制造技術(shù)的不斷進(jìn)步又必將對EDA技術(shù)提出新的要求。</p><p>  2.2 硬件描述語言——VHDL</p><p><b>  ★ VHDL的簡介</b></p><p>  VHDL語言是一種用于電路設(shè)計的高級語言。它在80年代的后期出現(xiàn)。最初是由美國國防部開發(fā)出來供

11、美軍用來提高設(shè)計的可靠性和縮減開發(fā)周期的一種使用范圍較小的設(shè)計語言 。但是,由于它在一定程度上滿足了當(dāng)時的設(shè)計需求,于是他在1987年成為A I/IEEE的標(biāo)準(zhǔn)(IEEE STD 1076-1987)。1993年更進(jìn)一步修訂,變得更加完備,成為A I/IEEE的A I/IEEE STD 1076-1993標(biāo)準(zhǔn)。目前,大多數(shù)的CAD廠商出品的EDA軟件都兼容了這種標(biāo)準(zhǔn)。自IEEE公布了VHDL的標(biāo)準(zhǔn)版本,IEEE-1076(簡稱87版)之

12、后,各EDA公司相繼推出了自己的VHDL設(shè)計環(huán)境,或宣布自己的設(shè)計工具可以和VHDL接口。此后VHDL在電子設(shè)計領(lǐng)域得到了廣泛的接受,并逐步取代了原有的非標(biāo)準(zhǔn)的硬件描述語言。1993年,IEEE對VHDL進(jìn)行了修訂,從更高的抽象層次和系統(tǒng)描述能力上擴(kuò)展VHDL的內(nèi)容,公布了新版本的VHDL,即IEEE標(biāo)準(zhǔn)的1076-1993版本,(簡稱93版)?,F(xiàn)在,VHDL和Verilog作為IEEE的工業(yè)標(biāo)準(zhǔn)硬件描述語言,又得到眾多EDA公司的支持

13、,在電子工程領(lǐng)域,已成為事</p><p>  ★ VHDL語言的特點</p><p>  VHDL的程序結(jié)構(gòu)特點是將一項工程設(shè)計,關(guān)于用VHDL和原理圖輸入進(jìn)行CPLD/FPGA設(shè)計的粗略比較:在設(shè)計中,如果采用原理圖輸入的設(shè)計方式是比較直觀的。你要設(shè)計的是什么,你就直接從庫中調(diào)出來用就行了。這樣比較符合人們的習(xí)慣。在對一個設(shè)計實體定義了外部界面后,一旦其內(nèi)部開發(fā)完成后,其他的設(shè)計就可以

14、直接調(diào)用這個實體。這種將設(shè)計實體分成內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計的基本點。應(yīng)用VHDL進(jìn)行工程設(shè)計的優(yōu)點是多方面的。</p><p> ?。?)與其他的硬件描述語言相比,VHDL具有更強(qiáng)的行為描述能力,從而決定了他成為系統(tǒng)設(shè)計領(lǐng)域最佳的硬件描述語言。強(qiáng)大的行為描述能力是避開具體的器件結(jié)構(gòu),從邏輯行為上描述和設(shè)計大規(guī)模電子系統(tǒng)的重要保證。</p><p> ?。?)VHDL豐富的仿真語句

15、和庫函數(shù),使得在任何大系統(tǒng)的設(shè)計早期就能查驗設(shè)計系統(tǒng)的功能可行性,隨時可對設(shè)計進(jìn)行仿真模擬。</p><p> ?。?)VHDL語句的行為描述能力和程序結(jié)構(gòu)決定了他具有支持大規(guī)模設(shè)計的分解和已有設(shè)計的再利用功能。符合市場需求的大規(guī)模系統(tǒng)高效,高速的完成必須有多人甚至多個代發(fā)組共同并行工作才能實現(xiàn)。</p><p>  (4)對于用VHDL完成的一個確定的設(shè)計,可以利用EDA工具進(jìn)行邏輯綜合

16、和優(yōu)化,并自動的把VHDL描述設(shè)計轉(zhuǎn)變成門級網(wǎng)表。</p><p> ?。?)VHDL對設(shè)計的描述具有相對獨立性,設(shè)計者可以不懂硬件的結(jié)構(gòu),也不必管理最終設(shè)計實現(xiàn)的目標(biāo)器件是什么,而進(jìn)行獨立的設(shè)計。</p><p>  ★ VHDL的設(shè)計流程</p><p>  它主要包括以下幾個步驟:</p><p><b>  1.文本編輯:&

17、lt;/b></p><p>  用任何文本編輯器都可以進(jìn)行,也可以用專用的HDL編輯環(huán)境。通常VHDL文件保存為.vhd文件,Verilog文件保存為.v文件</p><p><b>  2.功能仿真:</b></p><p>  將文件調(diào)入HDL仿真軟件進(jìn)行功能仿真,檢查邏輯功能是否正確(也叫前仿真,對簡單的設(shè)計可以跳過這一步,只在布

18、線完成以后,進(jìn)行時序仿真)</p><p><b>  3.邏輯綜合:</b></p><p>  將源文件調(diào)入邏輯綜合軟件進(jìn)行綜合,即把語言綜合成最簡的布爾表達(dá)式。邏輯綜合軟件會生成.edf或.edif 的EDA工業(yè)標(biāo)準(zhǔn)文件。</p><p><b>  4.布局布線:</b></p><p> 

19、 將.edf文件調(diào)入PLD廠家提供的軟件中進(jìn)行布線,即把設(shè)計好的邏輯安放PLD/FPGA內(nèi)。</p><p><b>  5.時序仿真:</b></p><p>  需要利用在布局布線中獲得的精確參數(shù),用仿真軟件驗證電路的時序。(也叫后仿真) 通常以上過程可以都在PLD/FPGA廠家提供的開發(fā)工具。</p><p><b>  6.器

20、件編程</b></p><p><b>  3設(shè)計過程</b></p><p><b>  3.1 設(shè)計規(guī)劃</b></p><p>  本系統(tǒng)設(shè)計采用自頂向下的設(shè)計方案,系統(tǒng)的整體組裝設(shè)計原理圖如圖3-1所示,它主要由控制模塊、時基分頻模塊,計時模塊和顯示模塊四部分組成。各模塊分別完成計時過程的控制功能、計時

21、功能與顯示功能。</p><p>  各模塊的原理及其程序</p><p>  本系統(tǒng)設(shè)計由控制模塊、時基分頻模塊,計時模塊和顯示模塊四部分組成。各模塊實現(xiàn)秒表不同的功能 。圖3-2就是整個系統(tǒng)原理圖。</p><p><b>  3.2.1控制模塊</b></p><p>  計時模塊的作用是針對計時過程進(jìn)行控制。計時

22、控制模塊可用倆個按鈕來完成秒表的啟動、停止和復(fù)位。部分源程序如下:</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY CTRL IS</p&g

23、t;<p>  PORT( CLR,CLK,SP:IN STD_LOGIC;</p><p>  EN :OUT STD_LOGIC);</p><p>  COM:PROCESS(SP,CURRENT_STATE)</p><p><b>  BEGIN</b></p><p><b>  EN

24、D IF;</b></p><p>  END PROCESS;</p><p>  END BEHAVE;</p><p>  3.2.2時基分頻模塊</p><p>  時基分頻模塊的作用把輸入時鐘信號變?yōu)榉诸l輸出信號。源程序:</p><p>  LIBRARY IEEE;</p>&l

25、t;p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY CB10 IS</p><p>  PORT( CLK: IN STD_LOGIC;</p><p>  CO : OUT STD_LOGIC);&

26、lt;/p><p><b>  END CB10;</b></p><p>  ARCHITECTURE ART OF CB10 IS</p><p>  SIGNAL COUNT:STD_LOGIC_VECTOR (3 DOWNTO 0);</p><p><b>  BEGIN</b></p&

27、gt;<p>  PROCESS(CLK)</p><p><b>  BEGIN</b></p><p>  IF RISING_EDGE(CLK)THEN</p><p>  IF COUNT="1001"THEN</p><p>  COUNT<="0000&quo

28、t;;</p><p><b>  CO<='1';</b></p><p><b>  ELSE</b></p><p>  COUNT<=COUNT+1;</p><p><b>  CO<='0';</b></p&g

29、t;<p><b>  END IF;</b></p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p><b>  END ART;</b></p><p><b>  3.2.3計時模塊<

30、/b></p><p>  計時模塊執(zhí)行計時功能,計時方法和計算機(jī)一樣是對標(biāo)準(zhǔn)時鐘脈沖計數(shù)。他是由四</p><p>  個十進(jìn)制計數(shù)器和倆個六進(jìn)制計數(shù)器構(gòu)成,其中毫秒位、十毫秒位、秒位和分位采用十進(jìn)制計數(shù)器,十秒位和十分位采用六進(jìn)制計數(shù)器。源程序:</p><p><b> ?、?十進(jìn)制計數(shù)器</b></p><p&

31、gt;  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY CDU10 IS</p><p>  PORT( CLK:IN STD_LOGIC;</p>

32、<p>  CLR,EN:IN STD_LOGIC;</p><p>  CN :OUT STD_LOGIC;</p><p>  COUNT10:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));</p><p>  END CDU10;</p><p><b>  END IF;</b>&

33、lt;/p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p><b>  END ART;</b></p><p><b> ?、诹M(jìn)制計數(shù)器</b></p><p>  LIBRARY IEEE;&l

34、t;/p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p><b>  END IF;</b></p><p><b>  END IF;</b></p><p&

35、gt;  END PROCESS;</p><p><b>  END ART;</b></p><p><b> ?、塾嫈?shù)器</b></p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>

36、;  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY COUNT IS</p><p><b>  END ART;</b></p><p><b>  3.2.4顯示模塊</b></p><p>  計時顯示電路的作用是將計時值在LED數(shù)碼管上顯

37、示出來。計時電路產(chǎn)生的值經(jīng)過BCD七段譯碼后,驅(qū)動LED數(shù)碼管。計時顯示電路的實現(xiàn)方案采用掃描顯示。部分源程序:</p><p><b>  ①數(shù)據(jù)選擇器</b></p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IE

38、EE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY MULX IS</p><p>  PORT( CLK,CLR,EN:IN STD_LOGIC;</p><p>  S_1MS:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  S_10MS:IN STD_LOGIC_

39、VECTOR(3 DOWNTO 0);</p><p>  S_100MS:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  S_1S:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  S_10S:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p

40、>  M_1MIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  M_10MIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  HOUR:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  OUTBCD:OUT STD_LOGIC_VECTOR(3

41、 DOWNTO 0);</p><p>  SEG:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));</p><p><b>  END MULX;</b></p><p>  ARCHITECTURE ART OF MULX IS</p><p>  SIGNAL COUNT:STD_LOGIC_V

42、ECTOR(3 DOWNTO 0);</p><p><b>  END CASE;</b></p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p><b>  END ART;</b></p><p

43、><b> ?、贐CD七段譯碼器</b></p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY BCD7 IS</p&

44、gt;<p><b>  PORT( </b></p><p>  BCD:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  LED:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));</p><p><b>  END BCD7;</b></p&g

45、t;<p>  ARCHITECTURE ART OF BCD7 IS</p><p><b>  BEGIN</b></p><p>  LED<="1111110"WHEN BCD ="0000" ELSE</p><p>  "0110000"WHEN BCD

46、 ="0001" ELSE</p><p>  "1101101"WHEN BCD ="0010" ELSE</p><p>  "1111001"WHEN BCD ="0011" ELSE</p><p>  "0110011"WHEN BCD

47、="0100" ELSE</p><p>  "1011011"WHEN BCD ="0101" ELSE</p><p>  "1011111"WHEN BCD ="0110" ELSE</p><p>  "1110000"WHEN BCD =

48、"0111" ELSE</p><p>  "1111111"WHEN BCD ="1000" ELSE</p><p>  "1111011"WHEN BCD ="1001" ELSE</p><p>  "0000000";</p>

49、<p><b>  END ART;</b></p><p><b>  系統(tǒng)仿真</b></p><p>  時基分頻模塊的仿真(如圖 4-1所示)</p><p>  分析:CLK為時鐘信號的輸入 ,CO為分頻輸出信號。</p><p>  控制模塊的仿真(如圖 4-2所示)<

50、;/p><p>  分析:CLK、CLR和SP為輸入信號,EN為輸出信號。</p><p>  計時電路模塊的仿真(如圖 4-3~圖4-5所示)</p><p>  十進(jìn)制計數(shù)器的仿真(如圖4-3所示)</p><p>  六進(jìn)制計數(shù)器的仿真(如圖4-4所示)</p><p>  計數(shù)器的仿真(如圖4-5所示)</p

51、><p>  分析:clk為時鐘脈沖脈沖,s_1ms是毫秒計數(shù)值,s_10ms是十毫秒計數(shù)器,s_100ms是百毫秒計數(shù)器,s_1s是秒計數(shù)器,s_10s是十秒計數(shù)器,m_1min是分計數(shù)器,s_10min是十分計數(shù)器,hour是小時計數(shù)器。它們均為輸入信號。每來兩個時鐘脈沖,s_1ms加1,當(dāng)s_1ms滿十時,s_10ms加1,依次類推,s_10ms滿十的時候,s_100ms加1等等作為輸出。</p>

52、<p>  顯示電路模塊的仿真(如圖 4-6~圖4-7所示)</p><p>  數(shù)據(jù)選擇器的仿真(如圖 4-6所示)</p><p>  BCD七段譯碼器驅(qū)動器的仿真(如圖 4-7所示)</p><p>  分析:bcd為時鐘脈沖輸入信號,led是輸出信號,如圖所示:當(dāng)輸出為“1111110”時候,輸入為“0000”;當(dāng)輸出為“0110000”時輸入“

53、0001”,當(dāng)輸入為“0010”時輸出為“1101101”,當(dāng)輸入為“0011”時輸出為“1111001”等等來實現(xiàn)七段譯碼功能。</p><p>  數(shù)字秒表整個系統(tǒng)的仿真(如圖4-8所示)</p><p>  分析:秒表開始從零開始計數(shù),每次增加10ms。工作很正常的進(jìn)行。</p><p><b>  結(jié)束語</b></p>

54、<p>  開始做設(shè)計時總是會犯一些錯誤,只有經(jīng)過不停的改錯不停的編譯得到正確的程序說明了作為軟件編程人員是不能粗心大意的,一個程序的質(zhì)量的高低與你細(xì)心與否有著一定的聯(lián)系。在編程時,我充分使用了結(jié)構(gòu)化的思想,這樣程序檢查起來也比較方便,調(diào)試時也給了我很大方便,只要一個模塊一個模塊的進(jìn)行調(diào)就可以了,充分體現(xiàn)了結(jié)構(gòu)化編程的優(yōu)勢。在設(shè)計中要求我要有耐心和毅力,還要細(xì)心,稍有不慎,一個小小的錯誤就會導(dǎo)致結(jié)果的不正確,而對錯誤的檢查要求

55、我要有足夠的耐心,通過這次設(shè)計和設(shè)計中遇到的問題,也積累了一定的經(jīng)驗,對以后從事集成電路設(shè)計工作會有一定的幫助。</p><p>  在應(yīng)用VHDL的過程中讓我真正領(lǐng)會到了其并行運(yùn)行與其他軟件順序執(zhí)行的差別及其在電路設(shè)計上的優(yōu)越性。用VHDL硬件描述語言的形式來進(jìn)行數(shù)字系統(tǒng)的設(shè)計方便靈活,利用EDA軟件進(jìn)行編譯優(yōu)化仿真極大地減少了電路設(shè)計時間和可能發(fā)生的錯誤,降低了開發(fā)成本,這種設(shè)計方法在數(shù)字系統(tǒng)設(shè)計中發(fā)揮越來越

56、重要的作用。</p><p><b>  致謝</b></p><p>  經(jīng)過快兩個星期的緊張工作,我終于完成了我的設(shè)計任務(wù)——設(shè)計數(shù)字秒表。在這次課程設(shè)計中特別感謝xx老師對我的指導(dǎo),正是由于她的督促和耐心指導(dǎo),我才可以順利完成這次的設(shè)計。鍛煉了動手能力,給以后的學(xué)習(xí)指出了一個方向。</p><p><b>  參考文獻(xiàn)</

57、b></p><p>  [1] 謝華生.VHDL數(shù)字控制系統(tǒng)設(shè)計范例.北京:電子工業(yè)出版社,2006</p><p>  [2] 萬高明.EDA技術(shù)實驗與課程設(shè)計.長沙:湖南大學(xué)出版社,2004</p><p>  [3]黃繼業(yè).EDA技術(shù)實用教程.科學(xué)出版社,2009</p><p><b>  附錄</b>

58、</p><p>  時基分頻模塊的源程序(CB10.VHD)</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY CB10

59、IS</p><p>  PORT( CLK: IN STD_LOGIC;</p><p>  CO : OUT STD_LOGIC);</p><p><b>  END CB10;</b></p><p>  ARCHITECTURE ART OF CB10 IS</p><p>  SIGN

60、AL COUNT:STD_LOGIC_VECTOR (3 DOWNTO 0);</p><p><b>  BEGIN</b></p><p>  PROCESS(CLK)</p><p><b>  BEGIN</b></p><p>  IF RISING_EDGE(CLK)THEN</p

61、><p>  IF COUNT="1001"THEN</p><p>  COUNT<="0000";</p><p><b>  CO<='1';</b></p><p><b>  ELSE</b></p><p

62、>  COUNT<=COUNT+1;</p><p><b>  CO<='0';</b></p><p><b>  END IF;</b></p><p><b>  END IF;</b></p><p>  END PROCESS;&l

63、t;/p><p><b>  END ART;</b></p><p>  控制模塊的源程序(CTRL.VHD)</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UN

64、SIGNED.ALL;</p><p>  ENTITY CTRL IS</p><p>  PORT( CLR,CLK,SP:IN STD_LOGIC;</p><p>  EN :OUT STD_LOGIC);</p><p><b>  END ;</b></p><p>  ARCHITE

65、CTURE BEHAVE OF CTRL IS</p><p>  CONSTANT S0: STD_LOGIC_VECTOR (1 DOWNTO 0):="00";</p><p>  CONSTANT S1: STD_LOGIC_VECTOR (1 DOWNTO 0):="01";</p><p>  CONSTANT S

66、2: STD_LOGIC_VECTOR (1 DOWNTO 0):="11";</p><p>  CONSTANT S3: STD_LOGIC_VECTOR (1 DOWNTO 0):="10";</p><p>  TYPE STATES IS (S0,S1,S2,S3);</p><p>  SIGNAL CURRENT

67、_STATE,NEXT_STATE:STATES;</p><p><b>  BEGIN</b></p><p>  COM:PROCESS(SP,CURRENT_STATE)</p><p><b>  BEGIN</b></p><p>  CASE CURRENT_STATE IS</

68、p><p>  WHEN S0=>EN<='0';</p><p>  IF SP='1'THEN</p><p>  NEXT_STATE<=S1;</p><p><b>  ELSE</b></p><p>  NEXT_STATE<=S0

69、;</p><p><b>  END IF;</b></p><p>  WHEN S1=>EN<='1';</p><p>  IF SP='1'THEN</p><p>  NEXT_STATE<=S1;</p><p><b> 

70、 ELSE</b></p><p>  NEXT_STATE<=S2;</p><p><b>  END IF;</b></p><p>  WHEN S2=>EN<='1';</p><p>  IF SP='1'THEN</p><p

71、>  NEXT_STATE<=S3;</p><p><b>  ELSE</b></p><p>  NEXT_STATE<=S2;</p><p><b>  END IF;</b></p><p>  WHEN S3=>EN<='0';</p

72、><p>  IF SP='1'THEN</p><p>  NEXT_STATE<=S3;</p><p><b>  ELSE</b></p><p>  NEXT_STATE<=S0;</p><p><b>  END IF;</b></

73、p><p><b>  END CASE;</b></p><p>  END PROCESS;</p><p>  SYNCH:PROCESS(clk)</p><p><b>  BEGIN</b></p><p>  IF CLR='1'THEN</p

74、><p>  CURRENT_STATE <=S0;</p><p>  ELSIF CLK'EVENT AND CLK='1'THEN</p><p>  CURRENT_STATE<=NEXT_STATE;</p><p><b>  END IF;</b></p>&l

75、t;p>  END PROCESS;</p><p>  END BEHAVE;</p><p><b>  計時模塊的源程序</b></p><p>  十進(jìn)制計數(shù)器的源程序(CDU10.VHD)</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD

76、_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY CDU10 IS</p><p>  PORT( CLK:IN STD_LOGIC;</p><p>  CLR,EN:IN STD_LOGIC;</p><p> 

77、 CN :OUT STD_LOGIC;</p><p>  COUNT10:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));</p><p>  END CDU10;</p><p>  ARCHITECTURE ART OF CDU10 IS</p><p>  SIGNAL SCOUNT10: STD_LOGIC_VE

78、CTOR(3 DOWNTO 0);</p><p>  BEGIN COUNT10<=SCOUNT10;</p><p>  PROCESS (CLK,CLR,EN)</p><p>  BEGIN IF(CLR='1')THEN</p><p>  SCOUNT10<="0000";CN<

79、;='0';</p><p>  ELSIF RISING_EDGE(CLK)THEN</p><p>  IF(EN='1')THEN</p><p>  IF SCOUNT10="1001"THEN</p><p><b>  CN<='1';</b

80、></p><p>  SCOUNT10<="0000";</p><p><b>  ELSE</b></p><p><b>  CN<='0';</b></p><p>  SCOUNT10<=SCOUNT10+'1'

81、;</p><p><b>  END IF;</b></p><p><b>  END IF;</b></p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p><b>  END A

82、RT;</b></p><p>  六進(jìn)制計數(shù)器的源程序(CDU6.VDH)</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> 

83、 ENTITY CDU6 IS</p><p>  PORT( CLK,CLR,EN:IN STD_LOGIC;</p><p>  CN :OUT STD_LOGIC;</p><p>  COUNT6:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));</p><p><b>  END CDU6;</b

84、></p><p>  ARCHITECTURE ART OF CDU6 IS</p><p>  SIGNAL SCOUNT6: STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p><b>  BEGIN </b></p><p>  COUNT6<=SCOUNT6;</p&g

85、t;<p>  PROCESS (CLK,CLR,EN)</p><p><b>  BEGIN </b></p><p>  IF(CLR='1')THEN</p><p>  SCOUNT6<="0000";CN<='0';</p><p>

86、;  ELSIF RISING_EDGE(CLK) THEN</p><p>  IF(EN='1')THEN</p><p>  IF SCOUNT6="0101"THEN</p><p><b>  CN<='1';</b></p><p>  SCOUNT6

87、<="0000";</p><p><b>  ELSE</b></p><p><b>  CN<='0';</b></p><p>  SCOUNT6<=SCOUNT6+'1';</p><p><b>  END

88、IF;</b></p><p><b>  END IF;</b></p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p><b>  END ART;</b></p><p>  計

89、數(shù)器的源程序(COUNT.VHD)</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY COUNT IS</p><p>  

90、PORT( CLK,CLR,EN:IN STD_LOGIC;</p><p>  S_1MS:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  S_10MS:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  S_100MS:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);&

91、lt;/p><p>  S_1S:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  S_10S:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  S_1MIN:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  S_10MIN:OUT

92、STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  HOUR:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));</p><p>  END COUNT;</p><p>  ARCHITECTURE ART OF COUNT IS</p><p>  COMPONENT CDU10</p&

93、gt;<p>  PORT( CLK,CLR,EN:IN STD_LOGIC;</p><p>  CN :OUT STD_LOGIC;</p><p>  COUNT10:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));</p><p>  END COMPONENT CDU10;</p><p>  

94、COMPONENT CDU6</p><p>  PORT( CLK,CLR,EN:IN STD_LOGIC;</p><p>  CN :OUT STD_LOGIC;</p><p>  COUNT6:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));</p><p>  END COMPONENT CDU6;<

95、/p><p>  SIGNAL A,B,C,D,E,F,G,H:STD_LOGIC;</p><p><b>  BEGIN</b></p><p>  UL:CDU10 PORT MAP (CLK,CLR,EN,A,S_1MS);</p><p>  U2:CDU10 PORT MAP (A,CLR,EN,B,S_

96、10MS);</p><p>  U3:CDU10 PORT MAP (B,CLR,EN,C,S_100MS);</p><p>  U4:CDU10 PORT MAP (C,CLR,EN,D,S_1S);</p><p>  U5:CDU6 PORT MAP (D,CLR,EN,E,S_10S);</p><p>  U6:C

97、DU10 PORT MAP (E,CLR,EN,F,S_1MIN);</p><p>  U7:CDU6 PORT MAP (F,CLR,EN,G,S_10MIN);</p><p>  U8:CDU10 PORT MAP (G,CLR,EN,H,HOUR);</p><p><b>  END ART;</b></p>

98、;<p><b>  顯示模塊的源程序</b></p><p>  數(shù)據(jù)選擇器的源程序(MULX.VDH)</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED

99、.ALL;</p><p>  ENTITY MULX IS</p><p>  PORT( CLK,CLR,EN:IN STD_LOGIC;</p><p>  S_1MS:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  S_10MS:IN STD_LOGIC_VECTOR(3 DOWNTO 0);&l

100、t;/p><p>  S_100MS:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  S_1S:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  S_10S:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  S_1MIN:IN STD_L

101、OGIC_VECTOR(3 DOWNTO 0);</p><p>  S_10MIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  HOUR:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  OUTBCD:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p>

102、<p>  SEG:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));</p><p><b>  END MULX;</b></p><p>  ARCHITECTURE ART OF MULX IS</p><p>  SIGNAL COUNT :STD_LOGIN_VECTOR(3 DOWNTO 0);&l

103、t;/p><p><b>  BEGIN</b></p><p>  PROCESS (CLK)</p><p><b>  BEGIN</b></p><p>  IF CLR='1'THEN</p><p>  COUNT<="1111&quo

104、t;;</p><p>  ELSIF RISING_EDGE(CLK)THEN</p><p>  IF EN ='1' THEN </p><p>  COUNT<="0000";</p><p><b>  ELSE</b></p><p>  CO

105、UNT<=COUNT+'1';</p><p><b>  END IF;</b></p><p><b>  END IF;</b></p><p><b>  END IF;</b></p><p>  END PROCESS;</p>

106、<p>  PROCESS(CLK)</p><p><b>  BEGIN</b></p><p>  IF CLK'EVENT AND CLK='1' THEN</p><p>  CASE COUNT IS</p><p>  WHEN "0000"=>O

107、UTBCD<=S_1MS; SEG<="11111110";</p><p>  WHEN "0001"=>OUTBCD<=S_10MS; SEG<="11111101";</p><p>  WHEN "0010"=>OUTBCD<=S_

108、100MS; SEG<="11111011";</p><p>  WHEN "0011"=>OUTBCD<=S_1S; SEG<="11110111";</p><p>  WHEN "0100"=>OUTBCD<=S_10S;

109、 SEG<="11101111";</p><p>  WHEN "0101"=>OUTBCD<=S_1MIN; SEG<="11011111";</p><p>  WHEN "0110"=>OUTBCD<=S_10MIN; SEG<=&qu

110、ot;10111111";</p><p>  WHEN "0111"=>OUTBCD<=S_HUOR; SEG<="01111111";</p><p>  WHEN "1000"=>OUTBCD<=S_1MS; SEG<="11111110&

111、quot;;</p><p>  WHEN "1001"=>OUTBCD<=S_10MS; SEG<="11111101";</p><p>  WHEN OTHERS=>OUTBCD<="0000"; SEG<="00000000";</p

112、><p><b>  END CASE;</b></p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p><b>  END ART;</b></p><p>  BCD七段譯碼器驅(qū)動器的源程序(BC

113、D7.VDH)</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY BCD7 IS</p><p>  PORT( BCD:I

114、N STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  LED:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));</p><p><b>  END BCD7;</b></p><p>  ARCHITECTURE ART OF BCD7 IS</p><p><b&

115、gt;  BEGIN</b></p><p>  LED<="1111110"WHEN BCD ="0000" ELSE</p><p>  "0110000"WHEN BCD ="0001" ELSE</p><p>  "1101101"WHEN

116、 BCD ="0010" ELSE</p><p>  "1111001"WHEN BCD ="0011" ELSE</p><p>  "0110011"WHEN BCD ="0100" ELSE</p><p>  "1011011"WHEN

117、BCD ="0101" ELSE</p><p>  "1011111"WHEN BCD ="0110" ELSE</p><p>  "1110000"WHEN BCD ="0111" ELSE</p><p>  "1111111"WHEN B

118、CD ="1000" ELSE</p><p>  "1111011"WHEN BCD ="1001" ELSE</p><p>  "0000000";</p><p><b>  END ART;</b></p><p>  頂層設(shè)計的源

119、程序(MB.VHD)</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY MB IS</p><p>  PORT( SP,C

120、LR,CLK:IN STD_LOGIC;</p><p>  CO,EN: OUT STD_LOGIC;</p><p>  LED:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);</p><p>  OUTBCD:OUT STD_LOGIC_VECTOR(3 DOWNTO 0))</p><p>  SEG:OUT ST

121、D_LOGIC_VECTOR(7 DOWNTO 0));</p><p><b>  END MB;</b></p><p>  ARCHITECTURE ART OF MB IS</p><p>  COMPONENT CTRL</p><p>  PORT( CLK,CLR,SP:IN STD_LOGIC;<

122、;/p><p>  EN :OUT STD_LOGIC);</p><p>  END COMPONENT ;</p><p>  COMPONENT CB10</p><p>  PORT( CLK:IN STD_LOGIC;</p><p>  CO :OUT STD_LOGIC);</p><

123、p>  END COMPONENT ;</p><p>  COMPONENT COUNT</p><p>  PORT( CLK,CLR,EN:IN STD_LOGIC;</p><p>  S_1MS: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  S_10MS: OUT ST

124、D_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  S_100MS: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  S_1S: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  S_10S: OUT STD_LOGIC_VECTOR(3 DO

125、WNTO 0);</p><p>  S_1MIN: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  S_10MIN: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  HOUR: OUT STD_LOGIC_VECTOR(3 DOWNTO 0));</p>

126、<p>  END COMPONENT;</p><p>  COMPONENT BCD7</p><p>  PORT( BCD:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  LED :OUT STD_LOGIC_VECTOR(6 DOWNTO 0);</p><p>  END C

127、OMPONENT ;</p><p>  COMPONENT MULX</p><p>  PORT( CLK,CLR,EN:IN STD_LOGIC;</p><p>  S_1MS:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  S_10MS:IN STD_LOGIC_VECTOR(3 DOWNTO

128、0);</p><p>  S_100MS:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  S_1S:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  S_10S:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  S_1MIN:IN

129、STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  S_10MIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  HOUR:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  OUTBCD:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</

130、p><p>  SEG:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));</p><p>  END COMPONENT;</p><p>  SIGNAL C,E:STD_LOGIC;</p><p>  SIGNAL MS1_S,MS10_S,MS100_S:STD_LOGIC_VECTOR(3 DOWNTO 0);<

131、;/p><p>  SIGNAL S1S_S,S10_S:STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  SIGNAL MIN1_S,MIN10_S:STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  SIGNAL H:STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p

132、>  SIGNAL BCD_S,MS10_S,MS100_S:STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p><b>  BEGIN</b></p><p>  U0: CTRL PORT MAP(CLR,CLK,SP,E);</p><p>  U1: CB10 PORT MAP(CLK,C);</p&

133、gt;<p>  U2: COUNT PORT MAP(C,CLR,E,MS1_S,MS10_S,MS100_S,S1S_S,S10_S,MIN1_SMIN10_S,H);</p><p>  U3:MULXPORTMAP(CLR,CLK,E,MS1_S,MS10_S,MS100_S,S1S_S,S10_S,MIN1_SMIN10_S,H,BCD_S,SEG);</p><p&g

溫馨提示

  • 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

提交評論