2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩34頁(yè)未讀 繼續(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>  課程設(shè)計(jì)</b></p><p>  名稱 基于FPGA的數(shù)字鐘設(shè)計(jì)</p><p>  姓名 </p><p>  專業(yè)班級(jí) 通信工程(1)班</p><p>  學(xué)院 信息與機(jī)電工程學(xué)院 </p><p>

2、;  完成日期 2017年6月</p><p><b>  摘 要</b></p><p>  VHDL是一種用形式化方法來(lái)描述數(shù)字化電路和設(shè)計(jì)數(shù)字邏輯系統(tǒng)的語(yǔ)言,設(shè)計(jì)者可以利用這種語(yǔ)言來(lái)描述自己的設(shè)計(jì)思想,然后利用電子設(shè)計(jì)自動(dòng)化工具進(jìn)行仿真,再自動(dòng)綜合到門級(jí)電路,最后用PLD實(shí)現(xiàn)其功能。與傳統(tǒng)設(shè)計(jì)方法相比,VHDL描述電路行為的算法設(shè)計(jì)層次較高、用于較復(fù)雜的計(jì)算時(shí)

3、,能盡早發(fā)現(xiàn)存在的問題,縮短設(shè)計(jì)周期,可獨(dú)立實(shí)現(xiàn),修改方便,系統(tǒng)硬件描述能力強(qiáng),語(yǔ)言標(biāo)準(zhǔn)、規(guī)范、移植性強(qiáng),是多層次的硬件描述語(yǔ)言具有很好的實(shí)用。</p><p>  本文是基于VHDL語(yǔ)言的簡(jiǎn)易電子數(shù)字鐘的設(shè)計(jì)。設(shè)計(jì)主要是由數(shù)碼管結(jié)合按鍵來(lái)顯示相應(yīng)的時(shí)間,可以對(duì)時(shí)、分進(jìn)行單獨(dú)校時(shí),使其顯示標(biāo)準(zhǔn)時(shí)間,并且具有設(shè)置鬧鐘以及整點(diǎn)半點(diǎn)報(bào)時(shí)的功能。總的程序由幾個(gè)各具不同功能的單元模塊組,其中包括分頻模塊、時(shí)分秒計(jì)數(shù)和設(shè)置模

4、塊、比較器模塊、譯碼顯示等模塊。</p><p>  關(guān)鍵詞:數(shù)字鐘、VHDL、狀態(tài)機(jī)</p><p><b>  一、緒論</b></p><p><b>  1.1 前言</b></p><p>  隨著生產(chǎn)和科學(xué)技術(shù)發(fā)展的需要,現(xiàn)在電子技術(shù)的應(yīng)用已經(jīng)滲透到了人類生活和生產(chǎn)的各個(gè)方面,有力地推動(dòng)

5、了社會(huì)生產(chǎn)力的發(fā)展和社會(huì)信息化程度的提高,同時(shí)也使現(xiàn)代電子產(chǎn)品性能進(jìn)一步提高,產(chǎn)品更新?lián)Q代的節(jié)奏也越來(lái)越快。</p><p>  在這個(gè)生活節(jié)奏飛快的社會(huì),時(shí)間概念對(duì)人們來(lái)說尤為重要。在我們現(xiàn)代的生活中,早已離不開鐘表的身影。原始的機(jī)械鐘只能實(shí)現(xiàn)走時(shí)報(bào)時(shí)的功能早已不能滿足人們的需求。數(shù)字鐘是一種數(shù)字電路實(shí)現(xiàn)時(shí)、分、秒計(jì)時(shí)的裝置,通過計(jì)時(shí)精度很高的石英晶振,采用相應(yīng)進(jìn)制的計(jì)數(shù)器,轉(zhuǎn)化為二進(jìn)制數(shù),通過譯碼和顯示電路準(zhǔn)

6、確的將時(shí)間“時(shí)”“分”“秒”用數(shù)字的方式顯示出來(lái)。與傳統(tǒng)的機(jī)械時(shí)鐘相比具有更高的準(zhǔn)確性與直觀性,且無(wú)機(jī)械裝置,具有更高的使用壽命。</p><p>  鐘表的數(shù)字化給人們生產(chǎn)生活帶來(lái)了極大的方便,而且大大地?cái)U(kuò)展了鐘表原先的報(bào)時(shí)功能。諸如定時(shí)自動(dòng)報(bào)警、按時(shí)自動(dòng)打鈴、時(shí)間程序自動(dòng)控制、定時(shí)廣播、定時(shí)啟閉電路、定時(shí)開關(guān)烘箱、通斷動(dòng)力設(shè)備,甚至各種定時(shí)電氣的自動(dòng)啟用等,所有這些,都是以鐘表數(shù)字化為基礎(chǔ)的。因此,研究數(shù)字鐘

7、及擴(kuò)大其應(yīng)用,有著非?,F(xiàn)實(shí)的意義。</p><p><b>  FPGA概述</b></p><p><b>  FPGA簡(jiǎn)介</b></p><p>  FPGA是英文Field-Programmable Gate Array的縮寫,即現(xiàn)場(chǎng)可編程門陣列,是由存放在片內(nèi)RAM中的程序來(lái)設(shè)置其工作狀態(tài)的,因此,工作時(shí)需要對(duì)片

8、內(nèi)的RAM進(jìn)行編程。用戶可以根據(jù)不同的配置模式,采用不同的編程方式。加電時(shí),F(xiàn)PGA芯片將EPROM中數(shù)據(jù)讀入片內(nèi)編程RAM中,配置完成后,F(xiàn)PGA進(jìn)入工作狀態(tài)。掉電后,F(xiàn)PGA恢復(fù)成白片,內(nèi)部邏輯關(guān)系消失,因此,F(xiàn)PGA能夠反復(fù)使用。FPGA的編程無(wú)須專用的FPGA編程器,只須用通用的EPROM、PROM編程器即可。當(dāng)需要修改FPGA功能時(shí),只需換一片EPROM即可。這樣,同一片F(xiàn)PGA,不同的編程數(shù)據(jù),可以產(chǎn)生不同的電路功能。因此,

9、FPGA的使用非常靈活。 FPGA有多種配置模式:并行主模式為一片F(xiàn)PGA加一片EPROM的方式;主從模式可以支持一片PROM編程多片F(xiàn)PGA;串行模式可以采用串行PROM編程FPGA;外設(shè)模式可以將FPGA作為微處理器的外設(shè),由微處理器對(duì)其編程。</p><p>  1.2.2用FPGA設(shè)計(jì)數(shù)字鐘的優(yōu)點(diǎn)</p><p>  FPGA的邏輯功能全部用硬件電路實(shí)現(xiàn),內(nèi)部有豐富的觸發(fā)器和I/O

10、引腳,是ASIC電路中設(shè)計(jì)周期最短、開發(fā)費(fèi)用最低、風(fēng)險(xiǎn)最小的器件之一,并且FPGA采用高速CHMOS工藝,功耗低,可以與CMOS、TTL電平兼容。因此,F(xiàn)PGA芯片是小批量系統(tǒng)提高系統(tǒng)集成度、可靠性的最佳選擇之一。使用FPGA 可以實(shí)現(xiàn)你想實(shí)現(xiàn)的任何數(shù)字電路,可以定制各種電路,減少受制于專用芯片的束縛,在設(shè)計(jì)過程中可以靈活的更改設(shè)計(jì)。因此,利用FPGA 設(shè)計(jì)數(shù)字鐘更加靈活方便。</p><p>  1.3硬件描述

11、語(yǔ)言VHDL</p><p>  VHDL,即超高速集成電路硬件描述語(yǔ)言,是最早被接納為IEEE標(biāo)準(zhǔn)的硬件描述語(yǔ)言。它是一種多層次的硬件描述語(yǔ)言,覆蓋面廣,描述能力強(qiáng),具有良好的可讀性,既可以被計(jì)算機(jī)接受,也容易被理解。因?yàn)閂HDL的硬件描述與工藝技術(shù)無(wú)關(guān),因此其本身的生命期長(zhǎng),工藝改變時(shí),只需修改相應(yīng)程序中的屬性參數(shù)即可,VHDL支持大規(guī)模設(shè)計(jì)的分解與已有設(shè)計(jì)的再利用,事實(shí)上已經(jīng)成為通用硬件描述語(yǔ)言。</

12、p><p>  1.4 QuartusⅡ軟件</p><p>  QuartusⅡ是Altera公司推出的新一代FPGA/CPLD開發(fā)軟件,適合于大規(guī)模復(fù)雜的邏輯電路設(shè)計(jì)。它是Altera公司的第四代可編程邏輯器件集成開發(fā)環(huán)境,提供了從設(shè)計(jì)輸入到器件編程的全部功能,同低三代設(shè)計(jì)工具M(jìn)AXPLUS Ⅱ相比,QuartusⅡ設(shè)計(jì)軟件增加了網(wǎng)絡(luò)編輯功能,提升了調(diào)試能力,解決了潛在的設(shè)計(jì)延遲,同時(shí)其強(qiáng)

13、大的設(shè)計(jì)能力和直觀易用的接口,越來(lái)越受到數(shù)字系統(tǒng)設(shè)計(jì)者的歡迎。</p><p>  二、數(shù)字鐘總體設(shè)計(jì)方案</p><p><b>  2.1總體結(jié)構(gòu)</b></p><p><b>  圖 1 系統(tǒng)結(jié)構(gòu)圖</b></p><p><b>  2.2 設(shè)計(jì)思路</b></

14、p><p>  數(shù)字鐘的設(shè)計(jì)模塊包括:分頻器、“時(shí)、分、秒”計(jì)數(shù)器、設(shè)置時(shí)間模塊、設(shè)置鬧鐘、比較模塊、選擇模塊、控制模塊和譯碼顯示電路。每一個(gè)功能模塊作為一個(gè)實(shí)體單獨(dú)進(jìn)行設(shè)計(jì),最后再將各個(gè)模塊的原理圖連接起來(lái)。</p><p> ?。?)開關(guān)EN(SW0)控制數(shù)碼管顯示,SW0關(guān)閉時(shí)顯示學(xué)號(hào),打開后24h計(jì)時(shí)制計(jì)時(shí)并顯示。</p><p> ?。?)校時(shí)以及設(shè)置鬧鐘:按

15、下TIMESET鍵開始設(shè)置時(shí)間,按下SHIFT鍵表示移位,按下ADD鍵對(duì)應(yīng)數(shù)字加一,再次按下TIMESET鍵回到走時(shí)狀態(tài)。分鐘和時(shí)鐘校準(zhǔn)時(shí),下方LED發(fā)光表示提示。</p><p> ?。?)鬧鐘:鬧鐘定時(shí)時(shí)間到,對(duì)應(yīng)LED閃爍,持續(xù)60s。</p><p>  (4)整點(diǎn)、半點(diǎn)報(bào)時(shí):當(dāng)分鐘時(shí)間為00或30 時(shí),對(duì)應(yīng)不同的LED發(fā)光。</p><p>  (5)顯示

16、: 6個(gè)LED數(shù)碼管顯示小時(shí)、分、秒。</p><p><b>  2.4 RTL圖</b></p><p><b>  圖2 系統(tǒng)RTL圖</b></p><p>  三、數(shù)字鐘各功能模塊介紹</p><p><b>  3.1 分頻模塊</b></p>&l

17、t;p>  3.1.1引腳說明及功能介紹</p><p>  圖3 分頻模塊bdf圖 </p><p>  表1 分頻模塊引腳說明</p><p>  3.1.2核心源代碼及解釋</p><p>  PROCESS(CLK,EN)</p><p>  VARIABLE TEMP1 : INTEGER RANGE

18、 24999999 DOWNTO 0;</p><p>  VARIABLE TEMP50 : INTEGER RANGE 499999 DOWNTO 0;</p><p><b>  BEGIN </b></p><p>  IF EN='1' THEN </p><p>  IF CLK'E

19、VENT AND CLK='1'THEN </p><p>  IF TEMP1=24999999 THEN TEMP1:=0;Q1<=NOT Q1;</p><p>  ELSE TEMP1:=TEMP1+1;</p><p><b>  END IF;</b></p><p>  IF TE

20、MP50=499999 THEN TEMP50:=0;Q50<=NOT Q50;</p><p>  ELSE TEMP50:=TEMP50+1; ---通過計(jì)數(shù)將較高頻率的時(shí)鐘分頻,得到得到較低頻率的時(shí)鐘信號(hào)</p><p><b>  END IF;</b></p><p><b>  END IF;</b>

21、</p><p><b>  ELSE </b></p><p>  TEMP1:=0;Q1<='0';</p><p>  TEMP50:=0;Q50<='0';</p><p><b>  END IF;</b></p><p>

22、;  END PROCESS;</p><p>  PROCESS(QUICK)</p><p><b>  BEGIN</b></p><p>  IF QUICK='0' THEN CLK_OUT1OR50<=Q1;---通過按鍵選擇輸出的頻率</p><p>  ELSE CLK_OUT1

23、OR50<=Q50;</p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p><b>  3.2 控制模塊</b></p><p>  3.2.1引腳說明及功能介紹</p><p>  圖4 控制模塊bdf圖&l

24、t;/p><p>  表2 控制模塊引腳說明</p><p>  3.2.2部分源代碼及解釋</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p>

25、<p>  ENTITY COUTROL IS</p><p>  PORT ( ALARM,EN:IN STD_LOGIC;</p><p>  COUT:OUT STD_LOGIC_VECTOR(1 DOWNTO 0)</p><p><b>  );</b></p><p>  END ENTITY;

26、</p><p>  ARCHITECTURE ONE OF COUTROL IS</p><p>  SIGNAL TEMP1:STD_LOGIC:='0'; ——設(shè)置變量TEMP1表示KEY0的狀態(tài)</p><p><b>  BEGIN </b></p><p>  PROCESS(ALARM)

27、</p><p><b>  BEGIN</b></p><p>  IF ALARM'EVENT AND ALARM='1' THEN </p><p>  TEMP1<=NOT TEMP1; </p><p><b>  END IF;</b></p>

28、<p>  END PROCESS;</p><p>  PROCESS(TEMP1) ——TEMP1=0時(shí),輸出狀態(tài)為計(jì)時(shí)(01);TEMP1=1 </p><p>  BEGIN時(shí),輸出狀態(tài)為鬧鐘設(shè)置(10)</p><p>  IF TEMP1<='0' THEN </p><

29、;p>  COUT<="01";</p><p>  ELSE COUT<="10";</p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p>  END ARCHITECTURE ONE;</p&g

30、t;<p>  3.3 時(shí)、分、秒模塊</p><p>  3.3.1 引腳說明及功能介紹</p><p>  圖5 秒模塊bdf圖 圖6 分模塊bdf圖 圖7 時(shí)模塊bdf圖</p><p>  表3 時(shí)/分/秒模塊引腳說明</p><p>  3.3.2部分源代碼及解釋&l

31、t;/p><p><b>  以秒鐘模塊為例:</b></p><p>  ARCHITECTURE ONE OF SEC IS</p><p>  SIGNAL S0,S1:STD_LOGIC_VECTOR(3 DOWNTO 0);--定義兩個(gè)變量表示秒鐘高位和低位</p><p><b>  BEGIN<

32、/b></p><p>  PROCESS(CLK)</p><p><b>  BEGIN</b></p><p>  IF CLK'EVENT AND CLK='1' THEN</p><p><b>  S0<=S0+1;</b></p>&l

33、t;p>  IF S0=9 THEN S0<=(OTHERS=>'0');</p><p><b>  S1<=S1+1;</b></p><p><b>  END IF;</b></p><p>  IF S1=5 AND S0=9 THEN </p><p&

34、gt;  S1<="0000";S0<="0000";COUT<='1';</p><p>  ELSE COUT<='0'; --60進(jìn)制計(jì)數(shù)器,即滿六十則賦0且進(jìn)位信號(hào)加一</p><p><b>  END IF;</b></p><p&

35、gt;<b>  END IF;</b></p><p>  END PROCESS;</p><p>  SEC0<=S0;SEC1<=S1;</p><p><b>  END;</b></p><p>  3.4 設(shè)置時(shí)間模塊</p><p>  3.4.1

36、 引腳說明及功能介紹</p><p>  圖8 設(shè)置時(shí)間模塊bdf圖</p><p>  表4 設(shè)置時(shí)間模塊引腳說明</p><p>  3.4.2部分源代碼及解釋</p><p>  ARCHITECTURE BEHAV OF ST IS</p><p>  SIGNAL TEMP1: STD_LOGIC_VECT

37、OR (1 DOWNTO 0):="00";--表示SHIFT按鍵按下產(chǎn)生的三種不同狀態(tài)</p><p>  SIGNAL TEMP2: STD_LOGIC:='0'; --檢測(cè)TIMESET是否按下的變量</p><p><b>  BEGIN</b></p><p>  PROCESS(SHIFT,ADD

38、)</p><p><b>  BEGIN</b></p><p>  IF EN='1' THEN </p><p>  IF TIMESET'EVENT AND TIMESET='1' THEN </p><p>  TEMP2<=NOT TEMP2;</p>

39、<p><b>  END IF;</b></p><p>  IF TEMP2='1' THEN </p><p>  IF SHIFT'EVENT AND SHIFT='1' THEN </p><p>  TEMP1<=TEMP1+1;</p><p>&

40、lt;b>  END IF;</b></p><p><b>  ELSE </b></p><p>  TEMP1<="00"; </p><p><b>  END IF;</b></p><p><b>  END IF;</b&g

41、t;</p><p>  CASE TEMP1 IS</p><p>  WHEN "00"=>CO1<=SEC;CO2<=MIN; --shift鍵沒有按下,屬于走時(shí)狀態(tài) </p><p>  LED13<='0';LED16<='0';</p><p> 

42、 WHEN "01"=>CO1<=ADD;CO2<='0'; --shift按下一次,分鐘可設(shè)置</p><p>  LED13<='1';LED16<='0';</p><p>  WHEN "10"=>CO1<='0';CO2<=

43、ADD; -- shift按下兩次,時(shí)鐘可設(shè)置 </p><p>  LED13<='0';LED16<='1'; </p><p>  WHEN OTHERS=>NULL;</p><p><b>  END CASE;</b></p><p>  E

44、ND PROCESS;</p><p><b>  END;</b></p><p>  3.5 設(shè)置鬧鐘模塊</p><p>  3.5.1 引腳說明及功能介紹</p><p>  圖9 設(shè)置鬧鐘模塊bdf圖</p><p>  表5 時(shí)/分/秒模塊引腳說明</p><p&

45、gt;  3.5.2部分源代碼及解釋</p><p>  ARCHITECTURE BEHAV OF SA IS</p><p>  SIGNAL TEMP1: STD_LOGIC:='0'; --表示SHIFT鍵是否按下的變量</p><p>  SIGNAL TEMP2: STD_LOGIC:='0';--表示CLOCKSET鍵是

46、否按下的變量</p><p><b>  BEGIN</b></p><p>  PROCESS(SHIFT,ADD)</p><p><b>  BEGIN</b></p><p>  IF EN='1' THEN </p><p>  IF CLOCKSE

47、T'EVENT AND CLOCKSET='1' THEN </p><p>  TEMP2<=NOT TEMP2;</p><p><b>  END IF;</b></p><p>  IF TEMP2='1' THEN </p><p>  IF SHIFT'E

48、VENT AND SHIFT='1' THEN </p><p>  TEMP1<=NOT TEMP1;</p><p><b>  END IF;</b></p><p><b>  ELSE </b></p><p>  TEMP1<='0'; &l

49、t;/p><p><b>  END IF;</b></p><p><b>  END IF;</b></p><p>  IF TEMP2='1' THEN </p><p>  CASE TEMP1 IS</p><p>  WHEN '0'

50、=>CO1<=ADD;CO2<='0'; --分鐘可設(shè)置</p><p>  LED14<='1';LED17<='0';</p><p>  WHEN '1'=>CO1<='0';CO2<=ADD; --時(shí)鐘可設(shè)置</p><p>  

51、LED14<='0';LED17<='1'; </p><p>  WHEN OTHERS=>NULL;</p><p><b>  END CASE;</b></p><p><b>  END IF;</b></p><p>  END

52、 PROCESS;</p><p><b>  END;</b></p><p>  3.6 比較鬧鐘模塊</p><p>  3.6.1 引腳說明及功能介紹</p><p>  圖10 鬧鐘比較模塊</p><p>  表6 比較鬧鐘模塊引腳說明</p><p>  3.

53、6.2部分源代碼及解釋</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY COMPARE IS</p><p>  PORT

54、 ( TH1,TH0,TM1,TM0,SAH1,SAH0,SAM1,SAM0:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  LED:OUT STD_LOGIC</p><p><b>  );</b></p><p>  END ENTITY;</p><p>  ARCHITEC

55、TURE BAHAV OF COMPARE IS</p><p><b>  BEGIN</b></p><p>  PROCESS(TH1,TH0,TM1,TM0,SAH1,SAH0,SAM1,SAM0)</p><p>  BEGIN——時(shí)間顯示與設(shè)置的鬧鐘時(shí)間相等時(shí),LED燈亮</p><p>  IF TH

56、1=SAH1 AND TH0=SAH0 AND TM1=SAM1 AND TM0=SAM0 THEN </p><p><b>  LED<='1';</b></p><p>  ELSE LED<='0';</p><p><b>  END IF;</b></p>

57、<p>  END PROCESS;</p><p>  END ARCHITECTURE;</p><p><b>  3.7 選擇模塊</b></p><p>  3.7.1 引腳說明及功能介紹</p><p>  圖11選擇模塊bdf圖</p><p>  表7 選擇模塊引腳

58、說明</p><p>  3.7.2部分源代碼及解釋</p><p>  ARCHITECTURE BAHAV OF CHOOSE IS</p><p><b>  BEGIN</b></p><p>  PROCESS(CONTROL)</p><p><b>  BEGIN</

59、b></p><p>  CASE CONTROL IS </p><p>  WHEN "01"=>HOUR1<=TH1;HOUR0<=TH0;MIN1<=TM1;MIN0<=TM0;SEC1<=TS1;SEC0<=TS0; --當(dāng)control為01時(shí),顯示正常走時(shí)以及設(shè)置時(shí)鐘的時(shí)間</p><p&

60、gt;  WHEN "10"=>HOUR1<=SAH1;HOUR0<=SAH0;MIN1<=SAM1;MIN0<=SAM0;SEC1<="1111";SEC0<="1111";--當(dāng)control為10時(shí),時(shí)、分顯示設(shè)置鬧鐘的時(shí)間,秒鐘不顯示</p><p>  WHEN OTHERS=>HOUR1<

61、=TH1;HOUR0<=TH0;MIN1<=TM1;MIN0<=TM0;SEC1<=TS1;SEC0<=TS0; </p><p><b>  END CASE;</b></p><p>  END PROCESS;</p><p>  END ARCHITECTURE;</p><p>&

62、lt;b>  3.8 譯碼模塊</b></p><p>  3.8.1 引腳說明及功能介紹</p><p><b>  圖12 譯碼模塊</b></p><p>  表8 譯碼模塊引腳說明</p><p>  3.8.2部分源代碼及解釋</p><p>  ARCHITECTUR

63、E BAHAV OF DISPLAY IS</p><p>  SIGNAL REG7_0: STD_LOGIC_VECTOR(6 DOWNTO 0);</p><p>  SIGNAL REG7_1: STD_LOGIC_VECTOR(6 DOWNTO 0);</p><p>  SIGNAL REG7_2: STD_LOGIC_VECTOR(6 DOWNTO

64、 0);</p><p>  SIGNAL REG7_3: STD_LOGIC_VECTOR(6 DOWNTO 0);</p><p>  SIGNAL REG7_4: STD_LOGIC_VECTOR(6 DOWNTO 0);</p><p>  SIGNAL REG7_5: STD_LOGIC_VECTOR(6 DOWNTO 0);</p><

65、;p>  SIGNAL REG7_6: STD_LOGIC_VECTOR(6 DOWNTO 0);</p><p>  SIGNAL REG7_7: STD_LOGIC_VECTOR(6 DOWNTO 0);</p><p>  SIGNAL REG7_8: STD_LOGIC_VECTOR(6 DOWNTO 0);</p><p>  SIGNAL REG7

66、_9: STD_LOGIC_VECTOR(6 DOWNTO 0);</p><p>  SIGNAL REG7_NULL: STD_LOGIC_VECTOR(6 DOWNTO 0);-- --定義10個(gè)信號(hào)表示數(shù)字0~9</p><p>  SIGNAL LEDX:STD_LOGIC;</p><p><b>  BEGIN</b></p

67、><p>  REG7_0<="1000000";</p><p>  REG7_1<="1111001";</p><p>  REG7_2<="0100100";</p><p>  REG7_3<="0110000";</p>

68、<p>  REG7_4<="0011001";</p><p>  REG7_5<="0010010";</p><p>  REG7_6<="0000010";</p><p>  REG7_7<="1111000";</p>&l

69、t;p>  REG7_8<="0000000";</p><p>  REG7_9<="0010000";</p><p>  REG7_NULL<="1111111";</p><p>  PROCESS(H1,EN)--小時(shí)高位譯碼,初始為1</p><

70、p><b>  BEGIN</b></p><p>  IF EN='1' THEN</p><p>  CASE H1 IS</p><p>  WHEN "0000"=>HOUR1<=REG7_0;</p><p>  WHEN "0001"=

71、>HOUR1<=REG7_1;</p><p>  WHEN "0010"=>HOUR1<=REG7_2;</p><p>  WHEN "0011"=>HOUR1<=REG7_3;</p><p>  WHEN "0100"=>HOUR1<=REG7_4;&

72、lt;/p><p>  WHEN "0101"=>HOUR1<=REG7_5;</p><p>  WHEN "0110"=>HOUR1<=REG7_6;</p><p>  WHEN "0111"=>HOUR1<=REG7_7;</p><p>  

73、WHEN "1000"=>HOUR1<=REG7_8;</p><p>  WHEN "1001"=>HOUR1<=REG7_9;</p><p>  WHEN OTHERS=>HOUR1<=REG7_NULL;</p><p><b>  END CASE;</b>&

74、lt;/p><p><b>  ELSE </b></p><p>  HOUR1<=REG7_1;</p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p>  PROCESS(H0,EN)--小時(shí)低位譯碼,初始

75、為5</p><p><b>  BEGIN</b></p><p>  IF EN='1' THEN</p><p>  CASE H0 IS</p><p>  WHEN "0000"=>HOUR0<=REG7_0;</p><p>  WHEN

76、 "0001"=>HOUR0<=REG7_1;</p><p>  WHEN "0010"=>HOUR0<=REG7_2;</p><p>  WHEN "0011"=>HOUR0<=REG7_3;</p><p>  WHEN "0100"=>

77、HOUR0<=REG7_4;</p><p>  WHEN "0101"=>HOUR0<=REG7_5;</p><p>  WHEN "0110"=>HOUR0<=REG7_6;</p><p>  WHEN "0111"=>HOUR0<=REG7_7;</

78、p><p>  WHEN "1000"=>HOUR0<=REG7_8;</p><p>  WHEN "1001"=>HOUR0<=REG7_9;</p><p>  WHEN OTHERS=>HOUR0<=REG7_NULL;</p><p><b>  EN

79、D CASE;</b></p><p><b>  ELSE </b></p><p>  HOUR0<=REG7_5;</p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p>  PROCESS(M

80、1,EN)--分鐘高位譯碼,初始為3</p><p><b>  BEGIN</b></p><p>  IF EN='1' THEN </p><p>  CASE M1 IS</p><p>  WHEN "0000"=>MIN1<=REG7_0;</p&g

81、t;<p>  WHEN "0001"=>MIN1<=REG7_1;</p><p>  WHEN "0010"=>MIN1<=REG7_2;</p><p>  WHEN "0011"=>MIN1<=REG7_3;</p><p>  WHEN "

82、;0100"=>MIN1<=REG7_4;</p><p>  WHEN "0101"=>MIN1<=REG7_5;</p><p>  WHEN "0110"=>MIN1<=REG7_6;</p><p>  WHEN "0111"=>MIN1<=

83、REG7_7;</p><p>  WHEN "1000"=>MIN1<=REG7_8;</p><p>  WHEN "1001"=>MIN1<=REG7_9;</p><p>  WHEN OTHERS=>MIN1<=REG7_NULL;</p><p><

84、b>  END CASE;</b></p><p><b>  ELSE</b></p><p>  MIN1<=REG7_3;</p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p>  PR

85、OCESS(M0,EN)--分鐘低位譯碼,初始為8</p><p><b>  BEGIN</b></p><p>  IF EN='1' THEN </p><p>  CASE M0 IS</p><p>  WHEN "0000"=>MIN0<=REG7_0;&

86、lt;/p><p>  WHEN "0001"=>MIN0<=REG7_1;</p><p>  WHEN "0010"=>MIN0<=REG7_2;</p><p>  WHEN "0011"=>MIN0<=REG7_3;</p><p>  WHE

87、N "0100"=>MIN0<=REG7_4;</p><p>  WHEN "0101"=>MIN0<=REG7_5;</p><p>  WHEN "0110"=>MIN0<=REG7_6;</p><p>  WHEN "0111"=>MI

88、N0<=REG7_7;</p><p>  WHEN "1000"=>MIN0<=REG7_8;</p><p>  WHEN "1001"=>MIN0<=REG7_9;</p><p>  WHEN OTHERS=>MIN0<=REG7_NULL;</p><p&

89、gt;<b>  END CASE;</b></p><p><b>  ELSE</b></p><p>  MIN0<=REG7_8;</p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p&

90、gt;  PROCESS(S1,EN)--秒鐘高位譯碼,初始為4</p><p><b>  BEGIN</b></p><p>  IF EN='1' THEN </p><p>  CASE S1 IS</p><p>  WHEN "0000"=>SEC1<=R

91、EG7_0;</p><p>  WHEN "0001"=>SEC1<=REG7_1;</p><p>  WHEN "0010"=>SEC1<=REG7_2;</p><p>  WHEN "0011"=>SEC1<=REG7_3;</p><p&g

92、t;  WHEN "0100"=>SEC1<=REG7_4;</p><p>  WHEN "0101"=>SEC1<=REG7_5;</p><p>  WHEN "0110"=>SEC1<=REG7_6;</p><p>  WHEN "0111"

93、=>SEC1<=REG7_7;</p><p>  WHEN "1000"=>SEC1<=REG7_8;</p><p>  WHEN "1001"=>SEC1<=REG7_9;</p><p>  WHEN OTHERS=> SEC1<=REG7_NULL;</p>

94、<p><b>  END CASE;</b></p><p><b>  ELSE </b></p><p>  SEC1<=REG7_4;</p><p><b>  END IF;</b></p><p>  END PROCESS;</p>

95、;<p>  PROCESS(S0,EN)--秒鐘低位譯碼,初始為5</p><p><b>  BEGIN</b></p><p>  IF EN='1' THEN </p><p>  CASE S0 IS</p><p>  WHEN "0000"=>S

96、EC0<=REG7_0;</p><p>  WHEN "0001"=>SEC0<=REG7_1;</p><p>  WHEN "0010"=>SEC0<=REG7_2;</p><p>  WHEN "0011"=>SEC0<=REG7_3;</p>

97、<p>  WHEN "0100"=>SEC0<=REG7_4;</p><p>  WHEN "0101"=>SEC0<=REG7_5;</p><p>  WHEN "0110"=>SEC0<=REG7_6;</p><p>  WHEN "0

98、111"=>SEC0<=REG7_7;</p><p>  WHEN "1000"=>SEC0<=REG7_8;</p><p>  WHEN "1001"=>SEC0<=REG7_9;</p><p>  WHEN OTHERS=> SEC0<=REG7_NULL;&

99、lt;/p><p><b>  END CASE;</b></p><p><b>  ELSE</b></p><p>  SEC0<=REG7_5;</p><p><b>  END IF;</b></p><p>  END PROCESS;&

100、lt;/p><p>  END ARCHITECTURE;</p><p><b>  3.9 報(bào)時(shí)模塊</b></p><p>  3.9.1 引腳說明及功能介紹</p><p>  圖13報(bào)時(shí)模塊bdf圖</p><p>  表7 報(bào)時(shí)模塊引腳說明</p><p>  3.

101、9.2部分源代碼及解釋</p><p>  ARCHITECTURE BEHAV OF TIMER IS</p><p><b>  BEGIN</b></p><p>  PROCESS(M0,M1)</p><p><b>  BEGIN</b></p><p>  IF

102、 M0="0000" AND M1="0000" THEN --分鐘為00即整點(diǎn)時(shí),燈LEDR1 </p><p>  LEDR1<=CLK;閃爍提示</p><p>  ELSE LEDR1<='0';</p><p><b>  END IF;</b>&

103、lt;/p><p>  IF M0="0000" AND M1="0011" THEN ----分鐘為30即半點(diǎn)時(shí),燈LEDR0</p><p>  LEDR0<=CLK;閃爍提示</p><p>  ELSE LEDR0<='0';</p><p><

104、b>  END IF;</b></p><p>  END PROCESS;</p><p><b>  END;</b></p><p><b>  四、設(shè)計(jì)結(jié)果圖示</b></p><p><b>  EN=0,顯示學(xué)號(hào)</b></p>&l

105、t;p>  圖13 顯示學(xué)號(hào)153845</p><p>  EN=1,初始狀態(tài),開始計(jì)時(shí)。</p><p>  圖14 初始狀態(tài),開始計(jì)時(shí)</p><p>  按下TIMESET鍵(kye3), 開始設(shè)置時(shí)間,再次按下表示設(shè)置結(jié)束;按下SHIFT鍵(key2),進(jìn)行小時(shí)和分鐘的移位,從高向低,同時(shí)指示燈亮;按下ADD鍵(key1),對(duì)應(yīng)數(shù)字加一。<

106、/p><p>  圖15 設(shè)置分鐘,ledr13燈亮</p><p>  圖16 設(shè)置小時(shí),ledr16燈亮</p><p>  按下ALARMSET鍵(KEY3),開始設(shè)置鬧鐘,再次按下表示設(shè)置結(jié)束;按下SHIFT鍵(KEY2),進(jìn)行小時(shí)和分鐘的移位,從高向低;按下ADD鍵(KEY1),設(shè)置鬧鐘的每一位數(shù)字:0~9</p><p>  圖1

107、7 設(shè)置鬧鐘時(shí)間</p><p>  圖18 鬧鐘提醒,ledg2燈亮</p><p>  整點(diǎn)報(bào)時(shí)、半點(diǎn)報(bào)時(shí),LED燈閃爍。</p><p>  圖19 整點(diǎn)報(bào)時(shí),ledr2燈亮</p><p>  圖20 半點(diǎn)報(bào)時(shí),ledr1燈亮</p><p><b>  五、結(jié)論</b></

108、p><p>  5.1遇到的問題和改進(jìn)</p><p><b>  (1)問題1:</b></p><p>  在設(shè)置時(shí)間的時(shí)候,按下TIMESET鍵之后開始設(shè)置時(shí)間,再次按下TIMESET 鍵回到走時(shí)狀態(tài),顯示的時(shí)間仍為未設(shè)置前的時(shí)間,即設(shè)置的時(shí)間并不會(huì)反饋到走時(shí)狀態(tài)。</p><p>  解決辦法:在設(shè)置時(shí)間模塊以及走時(shí)

109、模塊之間增加聯(lián)系,即將走時(shí)模塊的進(jìn)位輸出作為設(shè)置時(shí)間的輸入,設(shè)置時(shí)間模塊輸出信號(hào)作為時(shí)、分模塊的clk。</p><p>  (2)問題2: 已經(jīng)設(shè)置完時(shí)間之后再設(shè)置鬧鐘時(shí)間的時(shí)候,按下ADD鍵,對(duì)鬧鐘時(shí)間的小時(shí)和分鐘位進(jìn)行調(diào)整后,發(fā)現(xiàn)計(jì)時(shí)狀態(tài)下的小時(shí)和分鐘位也被進(jìn)行了相應(yīng)的調(diào)整,不能完成設(shè)置鬧鐘時(shí)間和正常計(jì)時(shí)的功能。</p><p>  解決辦法:增加設(shè)置時(shí)的限制條件,如只有在TIMES

110、ET按鍵按下的情況下才能更改走時(shí)時(shí)間。 </p><p><b>  5.2工作分配比例</b></p><p><b>  六、附錄</b></p><p><b>  6.1分頻模塊</b></p><p>  LIBRARY IEEE;</p><p&

111、gt;  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY FD IS</p><p>  PORT (CLK,EN,QUICK:IN STD_LOGIC;</p><p>  CLK_OUT1OR50:OUT ST

112、D_LOGIC);</p><p>  END ENTITY FD;</p><p>  ARCHITECTURE BAHAV OF FD IS</p><p>  SIGNAL Q1,Q50:STD_LOGIC;</p><p><b>  BEGIN</b></p><p>  PROCESS

113、(CLK,EN)</p><p>  VARIABLE TEMP1 : INTEGER RANGE 24999999 DOWNTO 0;</p><p>  VARIABLE TEMP50 : INTEGER RANGE 499999 DOWNTO 0;</p><p>  --VARIABLE TEMP2: INTEGER RANGE 12499999 DOWNT

114、O 0;</p><p><b>  BEGIN </b></p><p>  IF EN='1' THEN </p><p>  IF CLK'EVENT AND CLK='1'THEN </p><p>  IF TEMP1=24999999 THEN TEMP1:=0;Q

115、1<=NOT Q1;</p><p>  ELSE TEMP1:=TEMP1+1;</p><p><b>  END IF;</b></p><p>  IF TEMP50=499999 THEN TEMP50:=0;Q50<=NOT Q50;</p><p>  ELSE TEMP50:=TEMP50

116、+1;</p><p><b>  END IF;</b></p><p>  --IF TEMP2=12499999 THEN TEMP2:=0;Q2<=NOT Q2;</p><p>  --ELSE TEMP2:=TEMP2+1;</p><p>  --END IF;</p&g

117、t;<p><b>  END IF;</b></p><p><b>  ELSE </b></p><p>  TEMP1:=0;Q1<='0';</p><p>  TEMP50:=0;Q50<='0';</p><p>  --T

118、EMP2:=0;Q2<='0';</p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p>  PROCESS(QUICK)</p><p><b>  BEGIN</b></p><p>  IF

119、 QUICK='0' THEN CLK_OUT1OR50<=Q1;</p><p>  ELSE CLK_OUT1OR50<=Q50;</p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p>  --CLK_OUT2<=Q2;

120、</p><p>  END ARCHITECTURE;</p><p><b>  6.2控制模塊</b></p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UN

121、SIGNED.ALL;</p><p>  ENTITY COUTROL IS</p><p>  PORT ( ALARM,EN:IN STD_LOGIC;</p><p>  COUT:OUT STD_LOGIC_VECTOR(1 DOWNTO 0)</p><p><b>  );</b></p>&

122、lt;p>  END ENTITY;</p><p>  ARCHITECTURE ONE OF COUTROL IS</p><p>  SIGNAL TEMP1:STD_LOGIC:='0';</p><p><b>  BEGIN </b></p><p>  PROCESS(ALARM)&

123、lt;/p><p><b>  BEGIN</b></p><p>  IF ALARM'EVENT AND ALARM='1' THEN </p><p>  TEMP1<=NOT TEMP1; </p><p><b>  END IF;</b></p>

124、<p>  END PROCESS;</p><p>  PROCESS(TEMP1)</p><p><b>  BEGIN</b></p><p>  IF TEMP1<='0' THEN </p><p>  COUT<="01";</p>&

125、lt;p>  ELSE COUT<="10";</p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p>  END ARCHITECTURE ONE;</p><p><b>  6.3秒模塊</b></

126、p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY SEC IS</p><p>  PORT(CLK:IN STD_LOGIC;&l

127、t;/p><p>  SEC0,SEC1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  COUT:OUT STD_LOGIC);</p><p><b>  END SEC;</b></p><p>  ARCHITECTURE ONE OF SEC IS</p>&l

128、t;p>  SIGNAL S0,S1:STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p><b>  BEGIN</b></p><p>  PROCESS(CLK)</p><p><b>  BEGIN</b></p><p>  IF CLK'EVENT

129、AND CLK='1' THEN</p><p><b>  S0<=S0+1;</b></p><p>  IF S0=9 THEN S0<=(OTHERS=>'0');</p><p><b>  S1<=S1+1;</b></p><p>

130、;<b>  END IF;</b></p><p>  IF S1=5 AND S0=9 THEN </p><p>  S1<="0000";S0<="0000";COUT<='1';</p><p>  ELSE COUT<='0';</

131、p><p><b>  END IF;</b></p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p>  SEC0<=S0;SEC1<=S1;</p><p><b>  END;</b>

132、;</p><p><b>  6.4分模塊</b></p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY

133、 MIN IS</p><p>  PORT(CLK:IN STD_LOGIC;</p><p>  MIN0,MIN1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  COUT:OUT STD_LOGIC);</p><p><b>  END MIN;</b></p>

134、;<p>  ARCHITECTURE ONE OF MIN IS</p><p>  SIGNAL M0,M1:STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p><b>  BEGIN</b></p><p>  PROCESS(CLK)</p><p><b>  B

135、EGIN</b></p><p>  IF CLK'EVENT AND CLK='1' THEN</p><p><b>  M0<=M0+1;</b></p><p>  IF M0=9 THEN M0<=(OTHERS=>'0');</p><p>

136、;<b>  M1<=M1+1;</b></p><p><b>  END IF;</b></p><p>  IF M1=5 AND M0=9 THEN </p><p>  M1<="0000";M0<="0000";COUT<='1';

137、</p><p>  ELSE COUT<='0';</p><p><b>  END IF;</b></p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p>  MIN0<=M0;MIN

138、1<=M1;</p><p><b>  END;</b></p><p><b>  6.5時(shí)模塊</b></p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEE

139、E.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY HOUR IS</p><p>  PORT(CLK:IN STD_LOGIC;</p><p>  HOUR0,HOUR1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p>  COUT:OUT STD_LOGIC);&l

140、t;/p><p><b>  END HOUR;</b></p><p>  ARCHITECTURE ONE OF HOUR IS</p><p>  SIGNAL H0,H1:STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p><b>  BEGIN</b></p>

141、;<p>  PROCESS(CLK)</p><p><b>  BEGIN</b></p><p>  IF CLK'EVENT AND CLK='1' THEN</p><p><b>  H0<=H0+1;</b></p><p>  IF H0=

142、9 THEN H0<=(OTHERS=>'0');</p><p><b>  H1<=H1+1;</b></p><p><b>  END IF;</b></p><p>  IF H1=2 AND H0=3 THEN </p><p>  H1<=&qu

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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)論