EDA報告吳廣嶺_第1頁
EDA報告吳廣嶺_第2頁
EDA報告吳廣嶺_第3頁
EDA報告吳廣嶺_第4頁
EDA報告吳廣嶺_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、合肥學院eda技術課程設計報告課程名稱 在系統(tǒng)編程技術 設計題目 數(shù)字鐘的設計 班級 11級電子(1)班 姓名 吳廣嶺 學號 1105011030 日期 2013.12.28 摘要:隨著eda技術的發(fā)展和應用領域的擴大,eda技術在電子信息、通信、自動控制及計算機應用等領域的重要性日益突出。同時,隨著技術市場與人才市場對eda技術需求的不斷提高,產(chǎn)品的市場效率和技術要求也必然會反映到教學和科研領域中來。eda技術在電子系統(tǒng)設計領域越來越普及,本設計主要利用vhdl語言在eda平臺上設計一個電子數(shù)字鐘,它的計時周期為24小時,顯示滿刻度為23時59分59秒,另外還具有校時功能和鬧鐘功能??偟某绦?/p>

2、由幾個各具不同功能的單元模塊程序拼接而成,其中包括分頻程序模塊、時分秒計數(shù)和設置程序模塊、比較器程序模塊、三輸入數(shù)據(jù)選擇器程序模塊、譯碼顯示程序模塊和拼接程序模塊。并且使用quartus ii軟件進行電路波形仿真,下載到eda實驗箱進行驗證。關鍵詞:eda vhdl語言 數(shù)字鐘一、設計目的1、熟練地運用數(shù)字系統(tǒng)的設計方法進行數(shù)字系統(tǒng)設計;2、能進行較復雜的數(shù)字系統(tǒng)設計;3、按要求設計一個數(shù)字鐘。二、設計內(nèi)容1、要求顯示秒、分、時,顯示格式如下:顯示格式2、可清零、可調(diào)時,具有整點報時和鬧鐘功能。三、設計原理1、數(shù)字鐘的基本工作原理:數(shù)字鐘以其顯示時間的直觀性、走時準確性作為一種計時工具,數(shù)字鐘

3、的基本組成部分離不開計數(shù)器,在控制邏輯電路的控制下完成預定的各項功能。數(shù)字鐘的基本原理方框圖如下:數(shù)字時鐘控制單元時調(diào)整分調(diào)整使能端信號clk信號時顯示分顯示秒顯示24進制60進制60進制led顯示整點報時花樣顯示數(shù)字鐘實現(xiàn)原理框圖1)時鐘計數(shù):完成時、分、秒的正確計時并且顯示所計的數(shù)字;其中秒、分采用60進制計數(shù),即從0到59循環(huán)計數(shù),時鐘采用24進制計數(shù),即從0到23循環(huán)計數(shù),數(shù)值顯示在數(shù)碼管上。2)時間設置:手動調(diào)節(jié)時、分,可以對所設計的時鐘任意調(diào)時間,這樣使數(shù)字鐘真正具有使用功能。我們可以通過實驗板上的鍵7和鍵4分別對時、分進行調(diào)整,因為我們用的時鐘信號均是1hz的,所以每led燈變化

4、一次就來一個脈沖,即計數(shù)一次。3)清零功能:reset為復位鍵,低電平時實現(xiàn)清零功能,高電平時正常計數(shù)。可以根據(jù)我們自己任意時間的復位。4)蜂鳴器在整點時有報時信號產(chǎn)生,蜂鳴器報警。產(chǎn)生“滴答.滴答”的報警聲音。5)led燈在時鐘顯示時有花樣顯示信號產(chǎn)生。即根據(jù)進位情況,led不停的閃爍,從而產(chǎn)生“花樣”信號。根據(jù)總體方框圖及各部分分配的功能可知,本系統(tǒng)可以由秒計數(shù)器、分鐘計數(shù)器、小時計數(shù)器、整點報時、分的調(diào)整以及小時的調(diào)整和一個頂層文件構(gòu)成。采用自頂向下的設計方法,子模塊利用vhdl語言設計,頂層文件用原理圖的設計方法。小時采用24進制,而分鐘均是60進制,而60進制計數(shù)器可采用6進制和10

5、進制計數(shù)器構(gòu)成。2、數(shù)字鐘設計的電路原理圖 24進制數(shù)字鐘的電路圖3、實驗源程序1、秒library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity second isport( clk,reset,setmin:std_logic; enmin:out std_logic; daout:out std_logic_vector(6 downto 0);end entity second;architecture fun of second issignal count:std_logic_vect

6、or(6 downto 0);signal enmin_1,enmin_2:std_logic; -enmin_1為59秒時的進位信號 begin -enmin_2由clk調(diào)制后的手動調(diào)分脈沖信號串 daout=count; enmin_2=(setmin and clk); -setmin為手動調(diào)分控制信號,高電平有效 enmin=(enmin_1 or enmin_2); -enmin為向分進位信號 process(clk,reset,setmin) begin if(reset=0)then count=0000000; -若reset為0,則異步清零 elsif(clk event a

7、nd clk=1)then -否則,若clk上升沿到 if(count(3 downto 0)=1001)then -若個位計時恰好到1001即9 if(count16#60#)then -又若count小于16#60#,即60h if(count=1011001)then -又若已到59d enmin_1=1;count=0000000;-則置進位為1及count復0 else -未到59d count=count+7; -則加7,而+7=+1+6,即作加6校正 end if; else -若count不小于16#60#(即count等于或大于16#60#) count=0000000; -

8、count復0 end if; -end if(count16#60#) elsif(count16#60#)then -若個位計數(shù)未到1001則轉(zhuǎn)此句再判 count=count+1; -若count16#60#則count加1 enmin_1=0after 100 ns; -沒有發(fā)生進位 else -否則,若count不小于16#60# count=0000000; -則count復0 end if; -end if(count(3 downto 0)=1001) end if; -end if(reset=0)end process;end fun;2、分library ieee;use

9、 ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity minute is port(clk,clk1,reset,sethour:in std_logic; enhour:out std_logic; daout:out std_logic_vector(6 downto 0);end entity minute ;architecture fun of minute is signal count :std_logic_vector (6 downto 0); signal enhour_1, enhour_2: st

10、d_logic; -enmin_1為59分時的進位信號 begin -enmin_2由clk調(diào)制后的手動調(diào)時脈沖信號串 daout=count; enhour_2= (sethour and clk1); -sethour為手動調(diào)時控制信號,高電平有效 enhour= (enhour_1 or enhour_2); process(clk,reset,sethour) begin if(reset=0) then -若reset為0,則異步清零 count=0000000; elsif(clkevent and clk=1)then -否則,若clk上升沿到 if(count (3 downt

11、o 0) =1001)then-若個位計時恰好到1001即9 if(count 16#60#) then -又若count小于16#60#,即60 if(count=1011001) then-又若已到59d enhour_1=1; -則置進位為1 count=0000000; -count復0 else count=count+7; -若count未到59d,則加7,即作加6校正 end if; -使前面的16#60#的個位轉(zhuǎn)變?yōu)?421bcd的容量 else count=0000000;-count復0(有此句,則對無效狀態(tài)電路可自啟動) end if; -end if(count16#6

12、0#) elsif (count 16#60#) then count=count+1; -若count16#60#則count加1 enhour_1=0 after 100 ns; -沒有發(fā)生進位 else count=0000000; -否則,若count不小于16#60# count復0 end if; -end if(count(3 downto 0)=1001) end if; -end if(reset=0) end process;end fun;3、時library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsi

13、gned.all;entity hour is port(clk,reset:in std_logic; daout:out std_logic_vector(5 downto 0);end entity hour;architecture fun of hour issignal count:std_logic_vector(5 downto 0); begin daout=count; process(clk,reset) begin if(reset=0)then count=000000; -若reset=0,則異步清零 elsif(clkevent and clk=1)then -否

14、則,若clk上升沿到 if(count(3 downto 0)=1001)then -若個位計時恰好到1001即9 if(count16#23#)then -23進制 count=count+7; -若到23d則 else count=000000; -復0 end if; elsif (count16#23#)then -若未到23d,則count進1 count=count+1; else -否則清零 count=000000; end if; -end if(count(3 downto 0)=1001) end if; -end if(reset=0) end process;end

15、fun; 4、主程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity alert is port(clk:in std_logic; dain:in std_logic_vector(6 downto 0); speak:out std_logic; lamp:out std_logic_vector(2 downto 0);end alert;architecture fun of alert is signal count:std_logic_vector(1 downto 0);

16、 signal count1:std_logic_vector(1 downto 0); begin speaker:process(clk) begin -speak=count1(1); if(clkevent and clk=1)then if(dain=0000000)then speak=10)then count1=00;-count1為三進制加法計數(shù)器 else count1=count1+1; end if ; end if ; end if ; end process speaker; lamper:process(clk) begin if(rising_edge(clk)

17、then if(count=10)then if(count=00)then lamp=001;-循環(huán)點亮三只燈 elsif(count=01)then lamp=010; elsif(count=10)then lamp=100; end if; count=count+1; else countnew,出現(xiàn)圖示屏幕,選擇vector waveform file,單擊ok。建立波形文件2)雙擊name下方的空白處,彈出insert nod or bus對話框。如圖:選擇添加結(jié)點設置3)單擊對話框右側(cè)中間的node finder。在filter中選擇pins:all,單擊list,而后,單擊e

18、nd time選項,在end time選擇窗中選擇適當?shù)姆抡鏁r間域,如可選10微秒,以便有足夠長的觀察時間。5)加上輸入信號后波形文件存盤。選擇file-save as選項,因為存盤窗中的波形文件名是默認的,所以直接存盤即可。6)仿真器參數(shù)設置并運行。選擇菜單assignment中的settings項,在settings窗口下選擇category-simulator settings項,單擊ok。然后在processing菜單下選擇startsimulation項,直到simulator was successful出現(xiàn),仿真結(jié)束。完成波形如圖所示。步驟5:引腳鎖定選擇assignpinloc

19、ationchip,在跳出的窗口中的node name欄中用鍵盤輸入半加器的端口名,步驟5:引腳鎖定選擇assignpinlocationchip,在跳出的窗口中的node name欄中用鍵盤輸入半加器的端口名,如a、b等。如果輸入的端口名正確,在右側(cè)的pin type欄將顯示該信號的屬性。輸入以后如下圖,設定完成以后再運行一次程序。 引腳鎖定步驟6:編程下載1)首先將下載線把計算機的打印機口與目標板(如開發(fā)板或?qū)嶒灠澹┻B接好,打開電源。2)下載方式設定。選擇max+plusiiprogrammer選項,跳出下圖左側(cè)所示的編程器窗口,然后選擇optionshardware setup硬件設置選項,其窗口圖中左側(cè)所示。在其下拉菜單中選byteblaster(mv)編程方式。此編程方式對應計算機的并行口下載通道,“mv”是混合電壓的意思,主要指對altera的各類芯核電壓(如5v、3.3v、2.5v與1.8v等)的fpga/cpld都能由此下載。此項設置只在初次裝軟件后第一

溫馨提示

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

評論

0/150

提交評論