eda數字時鐘課程設計_第1頁
已閱讀1頁,還剩10頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  摘要: </b></p><p>  EDA(Electronic Design Automation)電子設計自動化,就是以大規(guī)??删幊唐骷樵O計載體,以硬件描述語言為系統(tǒng)邏輯描述的主要表達方式,通過相關的軟件,自動完成用軟件方式設計的電子系統(tǒng)到硬件系統(tǒng), 最終形成集成電子系統(tǒng)或專用集成芯片。本次實習利用QuartusII 為設計軟件、VHDL 為硬件描述語言

2、,結合所學的數字電路的知識設計一個12 時多功能數字鐘,具有正常時、分、秒、1/10秒計時,動態(tài)顯示,清零等功能。利用硬件描述語言VHDL 對設計系統(tǒng)的各個子模塊進行邏輯描述,采用模塊化的設計思想完成頂層模塊的設計,通過軟件編譯、邏輯化簡、邏輯分割、邏輯綜合優(yōu)化、邏輯布線、邏輯仿真,最終將設計的軟件系統(tǒng)下載設計實驗系統(tǒng),對設計的系統(tǒng)進行硬件測試。</p><p>  Abstract: EDA (Electron

3、ic Design Automation), electronic design automation, is based on the design of large-scale programmable devices for carrier, logic for the system with hardware description language describing the main expressions, throug

4、h the relevant software, automating software design of electronic systems, hardware systems, resulting in integrated electronic systems or special-purpose integrated circuits. This practice QuartusII design software, the

5、 VHDL hardware description language, </p><p><b>  課程設計報告</b></p><p><b>  一、任務和設計要求</b></p><p>  1. 熟悉集成電路的引腳安排。</p><p>  2. 掌握各芯片的邏輯功能及使用方法。<

6、/p><p>  3. 了解數字鐘的組成及工作原理。 </p><p>  4. 熟悉數字鐘的設計與制作。</p><p><b>  1.設計指標 </b></p><p> ?。?)時間以 24 小時為一個周期; </p><p> ?。?)顯示時、分、秒; </p><p&g

7、t; ?。?)有校時功能,可以分別對時及分進行單獨校時,使其校正到標準時間; </p><p>  (4)計時過程具有報時功能,當時間到達整點前 5 秒進行蜂鳴報時。</p><p><b>  2.設計要求 </b></p><p> ?。?)畫出電路原理圖(或仿真電路圖); </p><p> ?。?)元器件及參數選

8、擇; </p><p> ?。?)電路仿真與調試</p><p><b>  二、設計原理</b></p><p><b>  設計思路</b></p><p>  根據系統(tǒng)設計要求,系統(tǒng)設計采用自頂向下設計方法,由時鐘分頻部分、計時部分、按鍵部分調時部分和顯示部分五個部分組成。這些模塊都放在一個頂

9、層文件中。</p><p><b>  1)時鐘計數:</b></p><p>  首先下載程序進行復位清零操作,電子鐘從00:00:00計時開始。sethour可以調整時鐘的小時部分, setmin可以調整分鐘,步進為1。</p><p>  由于電子鐘的最小計時單位是1s,因此提供給系統(tǒng)的內部的時鐘頻率應該大于1Hz,這里取100Hz。CL

10、K端連接外部10Hz的時鐘輸入信號clk。對clk進行計數,當clk=10時,秒加1,當秒加到60時,分加1;當分加到60時,時加1;當時加到24時,全部清0,從新計時。</p><p>  用6位數碼管分別顯示“時”、“分”、“秒”,通過OUTPUT( 6 DOWNTO 0 )上的信號來點亮指定的LED七段顯示數碼管。</p><p><b>  時間設置:</b>

11、</p><p>  手動調節(jié)分鐘、小時,可以對所設計的時鐘任意調時間,這樣使數字鐘真正具有使用功能。我們可以通過實驗板上的鍵7和鍵4進行任意的調整,因為我們用的時鐘信號均是1HZ的,所以每LED燈變化一次就來一個脈沖,即計數一次。</p><p><b>  3)清零功能:</b></p><p>  reset為復位鍵,低電平時實現(xiàn)清零功能

12、,高電平時正常計數??梢愿鶕覀冏约喝我鈺r間的復位。</p><p><b>  總體結構圖</b></p><p><b>  三、系統(tǒng)設計</b></p><p>  1)時、分、秒計時器</p><p>  時計時器為一個24進制計數器,分、秒計時器均為60進制計數器。當秒計時器接受到一個秒脈

13、沖時,秒計數器開始從1計數到60,此時秒顯示器將顯示00、01、02、...、59、00;每當秒計數器數到00時,就會產生一個脈沖輸出送至分計時器,此時分計數器數值在原有基礎上加1,其顯示器將顯示00、01、02、...、59、00;每當分計數器數到00時,就會產生一個脈沖輸出送至時計時器,此時時計數器數值在原有基礎上加1,其顯示器將顯示00、01、02、...、23、00。即當數字鐘運行到23點59分59秒時,當秒計時器在接受一個秒脈

14、沖,數字鐘將自動顯示00點00分00秒。</p><p><b>  2)校時電路</b></p><p>  當開關撥至校時檔時,電子鐘秒計時工作,通過時、分校時開關分別對時、分進行校對,開關每按1次,與開關對應的時或分計數器加1,當調至需要的時與分時,撥動reset開關,電子鐘從設置的時間開始往后計時。</p><p><b> 

15、 四、參考程序</b></p><p><b>  Alert模塊</b></p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p>

16、<p>  ENTITY alert IS</p><p>  PORT(clk:IN STD_LOGIC;</p><p>  dain:IN STD_LOGIC_VECTOR(6 DOWNTO 0);</p><p>  speak:OUT STD_LOGIC;</p><p>  lamp:OUT STD_LOGIC_VECT

17、OR(2 DOWNTO 0));</p><p>  END alert;</p><p>  ARCHITECTURE fun OF alert IS </p><p>  SIGNAL count:STD_LOGIC_VECTOR(1 DOWNTO 0);</p><p>  SIGNAL count1:STD_LOGIC_VECTOR(

18、1 DOWNTO 0);</p><p><b>  BEGIN</b></p><p>  speaker:PROCESS(clk)</p><p><b>  BEGIN</b></p><p>  --speak<=count1(1);</p><p>  IF(

19、clk'event and clk='1')THEN</p><p>  IF(dain="0000000")THEN</p><p>  speak<=count1(1);</p><p>  IF(count1>="10")THEN</p><p>  count

20、1<="00";--count1為三進制加法計數器</p><p><b>  ELSE</b></p><p>  count1<=count1+1;</p><p>  --speak<=count1(0);</p><p><b>  END IF ; </b&

21、gt;</p><p><b>  END IF ;</b></p><p><b>  END IF ; </b></p><p>  END PROCESS speaker;</p><p>  lamper:PROCESS(clk)</p><p><b>

22、  BEGIN</b></p><p>  IF(rising_edge(clk))THEN</p><p>  IF(count<="10")THEN</p><p>  IF(count="00")THEN</p><p>  lamp<="001";--

23、循環(huán)點亮三只燈</p><p>  ELSIF(count="01")THEN</p><p>  lamp<="010";</p><p>  ELSIF(count="10")THEN</p><p>  lamp<="100";</p>

24、;<p><b>  END IF;</b></p><p>  count<=count+1;</p><p><b>  ELSE</b></p><p>  count<="00";</p><p><b>  END IF;</b

25、></p><p><b>  END IF;</b></p><p>  END PROCESS lamper;</p><p><b>  END fun;</b></p><p><b>  Hour模塊</b></p><p>  LIBR

26、ARY IEEE;</p><p>  use IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY hour IS</p><p>  PORT(clk,reset:IN STD_LOGIC;</p><p

27、>  daout:out STD_LOGIC_VECTOR(5 DOWNTO 0));</p><p>  END ENTITY hour;</p><p>  ARCHITECTURE fun OF hour IS</p><p>  SIGNAL count:STD_LOGIC_VECTOR(5 DOWNTO 0); </p><p&

28、gt;<b>  BEGIN</b></p><p>  daout<=count;</p><p>  PROCESS(clk,reset)</p><p><b>  BEGIN</b></p><p>  IF(reset='0')THEN count<=&quo

29、t;000000"; --若reset=0,則異步清零</p><p>  ELSIF(clk'event and clk='1')THEN --否則,若clk上升沿到</p><p>  IF(count(3 DOWNTO 0)="1001")THEN --若個位計時恰好到"1001"即9<

30、/p><p>  IF(count<16#23#)THEN --23進制</p><p>  count<=count+7; --若到23D則</p><p><b>  else</b></p><p>  count<="000000&quo

31、t;; --復0</p><p><b>  END IF;</b></p><p>  ELSIF (count<16#23#)THEN --若未到23D,則count進1</p><p>  count<=count+1;</p><p>  ELSE

32、 --否則清零</p><p>  count<="000000";</p><p>  END IF; --END IF(count(3 DOWNTO 0)="1001")</p><p>  END IF; --END IF(reset='0')

33、</p><p>  END PROCESS;</p><p><b>  END fun;</b></p><p><b>  Minute模塊</b></p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.AL

34、L;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY minute IS</p><p>  PORT(clk,clk1,reset,sethour:IN STD_LOGIC; </p><p>  enhour:OUT STD_LOGIC;</p>&l

35、t;p>  daout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));</p><p>  END ENTITY minute ;</p><p>  ARCHITECTURE fun OF minute IS</p><p>  SIGNAL count :STD_LOGIC_VECTOR (6 DOWNTO 0);</p>

36、<p>  SIGNAL enhour_1, enhour_2: STD_LOGIC; --enmin_1為59分時的進位信號</p><p>  BEGIN --enmin_2由clk調制后的手動調時脈沖信號串</p><p>  daout<=count;</p><p>  enhour_2&

37、lt;= (sethour and clk1); --sethour為手動調時控制信號,高電平有效</p><p>  enhour<= (enhour_1 or enhour_2);</p><p>  PROCESS(clk,reset,sethour)</p><p><b>  BEGIN </b></p><

38、p>  IF(reset='0') THEN --若reset為0,則異步清零</p><p>  count<="0000000";</p><p>  ELSIF(clk'event and clk='1')THEN --否則,若clk上升沿到</p><p>  IF(count (3

39、DOWNTO 0) ="1001")THEN--若個位計時恰好到"1001"即9</p><p>  IF(count <16#60#) THEN --又若count小于16#60#,即60 </p><p>  IF(count="1011001") THEN--又若已到59D</p>&l

40、t;p>  enhour_1<='1'; --則置進位為1</p><p>  count<="0000000"; --count復0</p><p>  ELSE </p><p>  count<=count+7; --若count未到59D,則加7,即作"加6校正&

41、quot;</p><p>  END IF; --使前面的16#60#的個位轉變?yōu)?421BCD的容量</p><p><b>  ELSE</b></p><p>  count<="0000000";--count復0(有此句,則對無效狀態(tài)電路可自啟動)</p><p>  END IF;

42、 --END IF(count<16#60#)</p><p>  ELSIF (count <16#60#) THEN</p><p>  count<=count+1; --若count<16#60#則count加1</p><p>  enhour_1<='0' after 100 ns; --沒有發(fā)生進位&

43、lt;/p><p>  ELSE </p><p>  count<="0000000"; --否則,若count不小于16#60# count復0</p><p>  END IF; --END IF(count(3 DOWNTO 0)="1001")</p><p>

44、;  END IF; --END IF(reset='0')</p><p>  END process;</p><p><b>  END fun;</b></p><p><b>  Second模塊</b></p><p>  LIBRARY IEEE;</p>

45、<p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY second IS</p><p>  PORT( clk,reset,setmin:STD_LOGIC;</p><p>  enmin:O

46、UT STD_LOGIC;</p><p>  daout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));</p><p>  END ENTITY second;</p><p>  ARCHITECTURE fun OF second IS</p><p>  SIGNAL count:STD_LOGIC_VECTO

47、R(6 DOWNTO 0);</p><p>  SIGNAL enmin_1,enmin_2:STD_LOGIC; --enmin_1為59秒時的進位信號</p><p>  BEGIN --enmin_2由clk調制后的手動調分脈沖信號串</p><p>  daout<=count;</p>&l

48、t;p>  enmin_2<=(setmin and clk); --setmin為手動調分控制信號,高電平有效</p><p>  enmin<=(enmin_1 or enmin_2); --enmin為向分進位信號</p><p>  PROCESS(clk,reset,setmin)</p><p><b>  BEGIN<

49、/b></p><p>  IF(reset='0')THEN count<="0000000"; --若reset為0,則異步清零</p><p>  ELSIF(clk 'event and clk='1')then --否則,若clk上升沿到</p><p>  IF(count(3 d

50、ownto 0)="1001")then --若個位計時恰好到"1001"即9</p><p>  IF(count<16#60#)then --又若count小于16#60#,即60H</p><p>  IF(count="1011001")then --又若已到59D</p><p>

51、  enmin_1<='1';count<="0000000";--則置進位為1及count復0</p><p>  ELSE --未到59D</p><p>  count<=count+7; --則加7,而+7=+1+6,即作"加6校正"</p><p><b>  END

52、IF;</b></p><p>  ELSE --若count不小于16#60#(即count等于或大于16#60#)</p><p>  count<="0000000"; --count復0</p><p>  END IF; --END IF(count<16#60#)&l

53、t;/p><p>  ELSIF(count<16#60#)then --若個位計數未到"1001"則轉此句再判</p><p>  count<=count+1; --若count<16#60#則count加1 </p><p>  enmin_1<='0'after 100 ns; --沒

54、有發(fā)生進位 </p><p>  ELSE --否則,若count不小于16#60#</p><p>  count<="0000000"; --則count復0</p><p>  END IF; --END IF(count(3 DOWNTO 0)="1001

55、")</p><p>  END IF; --END IF(reset='0')</p><p>  END PROCESS;</p><p><b>  END fun;</b></p><p>  五、系統(tǒng)調試與性能分析</p><p&

56、gt;<b>  時基T 產生電路</b></p><p>  數字鐘以其顯示時間的直觀性、走時準確性作為一種計時工具,數字鐘的基本組成部分離不開計數器,在控制邏輯電路的控制下完成預定的各項功能。</p><p>  由晶振產生的頻率非常穩(wěn)定的脈沖,經整形、穩(wěn)定電路后,產生一個頻率為1Hz的、非常穩(wěn)定的計數時鐘脈沖。</p><p>  調時、

57、調分信號的產生</p><p>  由計數器的計數過程可知,正常計數時,當秒計數器(60進制)計數到59 時,再來一個脈沖,則秒計數器清零,重新開始新一輪的計數,而進位則作為分計數器的計數脈沖,使分計數器計數加1?,F(xiàn)在我們把電路稍做變動:把秒計數器的進位脈沖和一個頻率為2Hz的脈沖信號同時接到一個2選1數據選擇器的兩個數據輸入端,而位選信號則接一個脈沖按鍵開關,當按鍵開關不按下去時(即為0),則數據選擇器將秒計數

58、器的進位脈沖送到分計數器,此時,數字鐘正常工作;當按鍵開關按下去時(即為1),則數據選擇器將另外一個2Hz 的信號作為分計數器的計數脈沖,使其計數頻率加快,當達到正確時間時,松開按鍵開關,從而達到調時的目的。調節(jié)小時的時間也一樣的實現(xiàn)。</p><p><b>  計數顯示電路</b></p><p>  由計數部分、數據選擇器、譯碼器組成,是時鐘的關鍵部分。<

59、/p><p>  1、計數部分:由兩個60進制計數器和一個24 進制計數器組成,其中60 進制計數器可用6 進制計數器和10 進制計數器構成;24 進制的小時計數同樣可用6 進制計數器和10 進制計數器得到:當計數器計數到24 時,“2”和“4”同時進行清零,則可實現(xiàn)24 進制計數。</p><p>  2、數據選擇器:84 輸入14 輸出的多路數據選擇器,因為本實驗用到了8個數碼管(有兩個用

60、來產生隔離符號‘—’)。</p><p>  3、譯碼器:七段譯碼器。譯碼器必須能譯出‘—’,由實驗二中譯碼器真值表可得:字母F 的8421BCD 碼為“1111”,譯碼后為“1000111”,現(xiàn)在如果只譯出‘—’,即字母F的中間一橫,則譯碼后應為“0000001”,這樣,在數碼管上顯示的就為‘—’。</p><p><b>  仿真</b></p>&

61、lt;p><b>  未曾編輯的仿真波形</b></p><p><b>  仿真波形</b></p><p><b>  實驗結果</b></p><p>  實驗箱使用模式7,鍵8為復位按鍵,鍵8為1時正常工作。鍵4設置小時,鍵7設置分鐘。</p><p>  下載成

62、功后,按下鍵8,及使六個LED復位清零,顯示數秒的自動計時,可以通過4鍵設置小時數,7鍵設置分鐘數。當秒數滿60則進一位,分鐘數滿60進一位,當顯示為23:59:59時,秒數在加一則顯示00:00:00,之后從新計時。</p><p><b>  六、訓練體會</b></p><p>  通過這次課程設計,我進一步加深了對電子設計自動化的了解。并進一步熟練了對Quar

63、tusII軟件的操作。EDA這門課程再也不像學習理論般那么空洞,有了更加貼切的了解及運用。</p><p>  在編寫程序的過程中,遇到了很多問題,使我發(fā)現(xiàn)自己以前學習上存在的不足。通過與同學探討和請教老師,終于把問題都解決了,并加深了對數字時鐘原理和設計思路的了解。</p><p>  同時我也掌握了做課程設計的一般流程,為以后的電子設計這塊積累了一定的經驗,為以后從事相關工作一些幫助。

溫馨提示

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

評論

0/150

提交評論