數(shù)字電子鐘邏輯電路設計EDA課程設計數(shù)字時鐘_第1頁
數(shù)字電子鐘邏輯電路設計EDA課程設計數(shù)字時鐘_第2頁
數(shù)字電子鐘邏輯電路設計EDA課程設計數(shù)字時鐘_第3頁
數(shù)字電子鐘邏輯電路設計EDA課程設計數(shù)字時鐘_第4頁
數(shù)字電子鐘邏輯電路設計EDA課程設計數(shù)字時鐘_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、序號 綜合成績優(yōu)秀( )良好( )中等( )及格( )不及格( )教師(簽名)批改日期eda技術課程設計報告 課題: 數(shù)字電子鐘邏輯電路設計院系 電子與電氣工程學院 專業(yè) 電氣工程及其自動化 班級 學號 姓名 指導教師 楊銀賢、王文杰、葉曉婷、王曉輝 起止日期 2014-12-18至2014-12-19 2014年 12 月 目錄一、課程設計任務及要求11.1實驗目的11.2功能設計1二、整體設計思想12.1性能指標及功能設計12.2總體方框22.3fpga芯片介紹2三、編譯與調(diào)試33.1數(shù)字鐘的基本工作原理:33.1.1調(diào)時、調(diào)分信號的產(chǎn)生33.1.2計數(shù)顯示電路43.2設計思路43.3設計

2、步驟53.3.1工程建立及存盤53.3.2工程項目的編譯53.3.3時序仿真63.3.4引腳鎖定63.3.5硬件測試63.3.6實驗結果7四、程序設計8五、實驗電路圖165.1實驗原理圖165.2pcb圖16六、心得體會17七、 參考文獻18一、課程設計任務及要求1.1實驗目的1)掌握vhdl語言的基本運用2)掌握quartusii的簡單操作并會使用eda實驗箱3)掌握一個基本eda課程設計的操作1.2功能設計要求顯示格式為小時分鐘秒鐘,整點報時,報時時間為5 秒,即從整點前5 秒鐘開始進行報時提示,led 開始閃爍,過整點后,停止閃爍。調(diào)整時間的按鍵用按鍵模塊的s1 和s2,s1 調(diào)節(jié)小時,

3、每按下一次,小時增加一個小時,s2 調(diào)整分鐘,每按下一次,分鐘增加一分鐘。另外用s8 按鍵作為系統(tǒng)時鐘復位,復位后全部顯示000000。二、整體設計思想2.1性能指標及功能設計 1)時、分、秒計時器時計時器為一個24進制計數(shù)器,分、秒計時器均為60進制計數(shù)器。當秒計時器接受到一個秒脈沖時,秒計數(shù)器開始從00計數(shù)到59,此時秒顯示器將顯示00、01、02、.、59、00;每當秒計數(shù)器數(shù)到00時,就會產(chǎn)生一個脈沖輸出送至分計時器,此時分計數(shù)器數(shù)值在原有基礎上加1,其顯示器將顯示00、01、02、.、59、00;每當分計數(shù)器數(shù)到00時,就會產(chǎn)生一個脈沖輸出送至時計時器,此時時計數(shù)器數(shù)值在原有基礎上加

4、1,其顯示器將顯示00、01、02、.、23、00。2)校時電路當開關撥至校時檔時,電子鐘秒計時工作,通過時、分校時開關分別對時、分進行校對,開關每按1次,與開關對應的時或分計數(shù)器加1,當調(diào)至需要的時與分時,撥動reset開關,電子鐘從設置的時間開始往后計時。2.2總體方框2.3fpga芯片介紹sopc-niosii eda/sopc實驗開發(fā)系統(tǒng)是根據(jù)現(xiàn)代電子發(fā)展的方向,集eda和sopc系統(tǒng)開發(fā)為一體的綜合性實驗開發(fā)系統(tǒng),除了滿足高校專、本科生和研究生的sopc教學實驗開發(fā)之外,也是電子設計和電子項目開發(fā)的理想工具。整個開發(fā)系統(tǒng)由核心板sopc-niosii-ep2c35、系統(tǒng)板和擴展板構成

5、,根據(jù)用戶不同的需求配置成不同的開發(fā)系統(tǒng)。sopc-niosii-ep2c35開發(fā)板是在經(jīng)過長期用戶需求考察后,結合目前市面上以及實際應用需要,同時兼顧入門學生以及資深開發(fā)工程師的應用需求而研發(fā)的。就資源而言,它已經(jīng)可以組成一個高性能的嵌入式系統(tǒng),可以運行目前流行的rtos,如uc/os、uclinux等。系統(tǒng)主芯片采用672引腳、bga封裝的ep2c35 fpga,它擁有33216個le,105個m4k片上ram(共計483840bits),35個1818硬件乘法器、4個高性能pll以及多達475個用戶自定義io。板上提供了大容量的sram、sdram和flash rom等以及常用的rs-2

6、32、usb2.0、 rj45接口和標準音頻接口等,除去板上已經(jīng)固定連接的io,還有多達260個io通過不同的接插件引出,供用戶使用。所以,不管從性能上而言,還是從系統(tǒng)靈活性上而言,無論您是初學者,還是資深硬件工程師,它都會成為您的好幫手。如圖2.3所示:圖2.3fpga系統(tǒng)功能框圖三、編譯與調(diào)試3.1數(shù)字鐘的基本工作原理:3.1.1調(diào)時、調(diào)分信號的產(chǎn)生由計數(shù)器的計數(shù)過程可知,正常計數(shù)時,當秒計數(shù)器(60進制)計數(shù)到59 時,再來一個脈沖,則秒計數(shù)器清零,重新開始新一輪的計數(shù),而進位則作為分計數(shù)器的計數(shù)脈沖,使分計數(shù)器計數(shù)加1?,F(xiàn)在我們把電路稍做變動:把秒計數(shù)器的進位脈沖和一個頻率為2hz的脈

7、沖信號同時接到一個2選1數(shù)據(jù)選擇器的兩個數(shù)據(jù)輸入端,而位選信號則接一個脈沖按鍵開關,當按鍵開關不按下去時(即為0),則數(shù)據(jù)選擇器將秒計數(shù)器的進位脈沖送到分計數(shù)器,此時,數(shù)字鐘正常工作;當按鍵開關按下去時(即為1),則數(shù)據(jù)選擇器將另外一個2hz 的信號作為分計數(shù)器的計數(shù)脈沖,使其計數(shù)頻率加快,當達到正確時間時,松開按鍵開關,從而達到調(diào)時的目的。調(diào)節(jié)小時的時間也一樣的實現(xiàn)。3.1.2計數(shù)顯示電路由計數(shù)部分、數(shù)據(jù)選擇器、譯碼器組成,是時鐘的關鍵部分。1、計數(shù)部分:由兩個60進制計數(shù)器和一個24 進制計數(shù)器組成,其中60 進制計數(shù)器可用6 進制計數(shù)器和10 進制計數(shù)器構成;24 進制的小時計數(shù)同樣可用

8、6 進制計數(shù)器和10 進制計數(shù)器得到:當計數(shù)器計數(shù)到24 時,“2”和“4”同時進行清零,則可實現(xiàn)24 進制計數(shù)。2、數(shù)據(jù)選擇器:84 輸入14 輸出的多路數(shù)據(jù)選擇器,因為本實驗用到了8個數(shù)碼管(有兩個用來產(chǎn)生隔離符號)。3、譯碼器:七段譯碼器。譯碼器必須能譯出,由實驗二中譯碼器真值表可得:字母f 的8421bcd 碼為“1111”,譯碼后為“1000111”,現(xiàn)在如果只譯出,即字母f的中間一橫,則譯碼后應為“0000001”,這樣,在數(shù)碼管上顯示的就為。3.2設計思路根據(jù)系統(tǒng)設計要求,系統(tǒng)設計采用自頂向下設計方法,由時鐘分頻部分、計時部分、按鍵部分調(diào)時部分和顯示部分五個部分組成。這些模塊都放

9、在一個頂層文件中。1)時鐘計數(shù):首先下載程序進行復位清零操作,電子鐘從00:00:00計時開始。setshi可以調(diào)整時鐘的小時部分, setfen可以調(diào)整分鐘,步進為1。用6位數(shù)碼管分別顯示“時”、“分”、“秒”,通過output( 6 downto 0 )上的信號來點亮指定的led七段顯示數(shù)碼管。2) 時間設置:手動調(diào)節(jié)分鐘、小時,可以對所設計的時鐘任意調(diào)時間,這樣使數(shù)字鐘真正具有使用功能。我們可以通過實驗板上的s2和s1進行任意的調(diào)整,因為我們用的時鐘信號均是1hz的,所以每led燈變化一次就來一個脈沖,即計數(shù)一次。3)清零功能:s8為復位鍵,低電平時實現(xiàn)清零功能,高電平時正常計數(shù)??梢愿?/p>

10、據(jù)我們自己任意時間的復位。3.3設計步驟3.3.1工程建立及存盤1打開 quartus,單擊“file”菜單,選擇 filenew project wizard,對話框如下:分別輸入項目的工作路徑、項目名和實體名,單擊finish。2.單擊“file”菜單,選擇new,彈出小對話框,雙擊“vhdl file,即選中了文本編輯方式。在出現(xiàn)的“vhdl1.vhd”文本編輯窗中鍵入vhdl程序,輸入完畢后,選擇filesave as,即出現(xiàn)“save as”對話框。選擇自己建立好的存放本文件的目錄,然后在文件名框中鍵入文件名,按“save”按鈕。3. 建立工程項目,在保存vhdl文件時會彈出是否建立

11、項目的小窗口,點擊“yes”確定。即出現(xiàn)建立工程項目的導航窗口,點擊“next”,最后在出現(xiàn)的屏幕中分別鍵入新項目的工作路徑、項目名和實體名。注意,原理圖輸入設計方法中,存盤的原理圖文件名可以是任意的,但vhdl程序文本存盤的文件名必須與文件的實體名一致,輸入后,單擊“finish”按鈕。3.3.2工程項目的編譯單擊工具條上的編譯符號開始編譯,并隨著進度不斷變化屏幕,編譯完成后的屏幕如圖所示:3.3.3時序仿真建立波形文件:選擇 filenew,在new窗中選中“other file”標簽。在出現(xiàn)的屏幕中選擇“vector waveform file”項出現(xiàn)一新的屏幕。在出現(xiàn)的新屏幕中,雙擊“

12、name”下方的空白處,彈出“insert nod or bus”對話框,單擊該對話框的“node finder”。在屏幕中的 filter 中選擇 pins,單擊“l(fā)ist”。而后,單擊“”,所有輸入/輸出都被拷貝到右邊的一側(cè),這些正是我們希望的各個引腳,也可以只選其中的的一部分,根據(jù)實際情況決定。然后單擊屏幕右上腳的 “ok”。在出現(xiàn)的小屏幕上單擊“ok”。 設定仿真時間寬度。選擇 edit end time選項,在end time選擇窗中選擇適當?shù)姆抡鏁r間域,以便有足夠長的觀察時間。波形文件存盤。選擇filesave as 選項,直接存盤即可。運行仿真器。在菜單中選擇項,直到出現(xiàn),仿真結

13、束。3.3.4引腳鎖定將設計編程下載進選定的目標器件中,如epf10k10,作進一步的硬件測試,將設計的所有輸入輸出引腳分別與目標器件的epf10k10的部分引腳相接,操作如下:1選擇 assignments assignments editor ,即進入 assignments editor編輯器。在category 欄選擇 pin,或直接單擊右上側(cè)的 pin 按鈕。2雙擊 to 欄的new,在出現(xiàn)的的下拉欄中選擇對應的端口信號名(如 d0);然后雙擊對應的欄的new,在出現(xiàn)的下拉欄中選擇對應的端口信號名的期間引腳號。3最后存儲這些引腳鎖定信息后,必須再編譯(啟動 )一次,才能將引腳鎖定信息

14、編譯進編程下載文件中。此后就可以準備將編譯好的 sof 文件下載到試驗系統(tǒng)的fpga中去了。3.3.5硬件測試1.首先將下載線把計算機的打印機口與目標板(如開發(fā)板或?qū)嶒灠澹┻B接好,打開電源。2.打開編輯窗和配置文件。選擇,彈出一個編輯窗。在mode欄中選擇jtag,并在選項下的小方框打勾。注意核對下載文件路徑與文件名。如果文件沒有出現(xiàn)或者出錯,單擊左add file側(cè)按鈕,手動選擇配置文件 clocksof。 3.最后單擊下載標符start,即進入對目標器件 fpga 的配置下載操作。當 progress 顯示100%,以及在底部的處理欄中出現(xiàn) configuration succeeded

15、時,表示編程成功,如圖所示。注意,如果必要時,可再次單擊 start ,直至編程成功。4下載完成后,通過硬件測試進一步確定設計是否達到所有的技術指標,如未達到,可逐步檢查,哪部分出現(xiàn)問題。如果是代碼出現(xiàn)問題,須修改代碼;若是時序波形圖有問題,須重新設置。3.3.6實驗結果鍵s8為復位按鍵,鍵s1設置小時,鍵s2設置分鐘。下載成功后,按下鍵s8,即使六個led復位清零,顯示數(shù)秒的自動計時。當秒數(shù)滿59則進一位,分鐘數(shù)滿59進一位,當顯示為xx:59:55時,外接的led小燈開始閃爍,過整點以后停止閃爍。調(diào)試實物圖如圖3.3.6所示: 圖3.3.6調(diào)試實物圖四、程序設計1. (1)秒計數(shù)器(mia

16、o)vhdl 程序描述library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity miao is port( clk,reset,setfen:in std_logic; enfen:out std_logic; countmiao:out std_logic_vector(7 downto 0) ); end miao; architecture fun of miao is signal count:std_logic_vector(7 downto 0); signal enfen_

17、1,enfen_2:std_logic; begin countmiao=count; enfen_2=(setfen and clk); enfen=(enfen_1 or enfen_2); process(clk,reset,setfen) begin if(reset=0) then count=00000000; enfen_1=0; elsif(clkevent and clk=1) then if(count(3 downto 0)=1001) then if(count16#60#) then if(count=01011001) then count=00000000; en

18、fen_1=1; else count=count+7; end if; else count=00000000;enfen_1=0; end if; elsif(count16#60#) then count=count+1; enfen_1=0; else count=00000000; enfen_1=1; end if; end if; end process; end fun;(2)秒計數(shù)器(miao)仿真波形圖(3)秒計數(shù)器(miao)仿真分析 1、隨著 clk 脈沖信號的不斷到來,countmiao 記錄出 clk 的脈沖個數(shù),計數(shù) 到 59 時,在下一個 clk 脈沖信號到來時

19、,輸出端 enfen 輸出高定平,即向分進 位,同時 countmiao 清零。 2、 reset 為清零端, reset 低電平時, 當 countmiao 計數(shù)從零重新開始計數(shù)。 3、setfen 為分的手動進位端,當 setfen 高定平時且 clk 脈沖到來時,輸出 enfen 高電平,向分進位。2. (1)分計數(shù)器(fen)vhdl 程序描述 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity fen is port( imiao,clk,reset,setshi:in

20、std_logic; enshi:out std_logic; countfen:out std_logic_vector(7 downto 0) ); end fen; architecture fun of fen is signal enshi_1,enshi_2:std_logic; signal count:std_logic_vector(7 downto 0); begin countfen=count; enshi_2=(setshi and clk); enshi=(enshi_1 or enshi_2); process(imiao,reset,setshi) begin

21、if(reset=0) then count=00000000; elsif(imiaoevent and imiao=1) then if(count(3 downto 0)=1001) then if(count16#60#) then if(count=01011001) then count=00000000; enshi_1=1; else count=count+7; end if; else count=00000000; end if; elsif(count16#60#) then count=count+1; enshi_1=0; else count=00000000;

22、end if; end if; end process; end fun;(2)分計數(shù)器(fen)仿真波形圖(3)分計數(shù)器(fen)仿真分析 1、imiao 為秒計數(shù)器的 enfen 進位輸出端,當 enfen(imiao)高電平到來 時, clk 高電平時, 且 countfen 開始計數(shù)。 countfen 計數(shù)到 59 時, 下一個 enfen (imiao)、clk 到來時,enshi 高電平,即向時進位,同時 countfen 清零。 2、reset 為清零端,當 reset 低電平時,countfen 計數(shù)從零重新開始計數(shù)。 3、setshi 為時的手動進位端,當 setshi 高

23、定平時且 clk 脈沖到來時,輸出 en 時高電平,向時進位。3.(1)時計數(shù)器(shi)vhdl 程序描述library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity shi is port( ifen,reset:in std_logic; countshi:out std_logic_vector(7 downto 0) ); end shi; architecture fun of shi is signal count:std_logic_vector(7 downto 0); b

24、egin countshi=count; process(ifen,reset) begin if(reset=0) then count=00000000; elsif(ifenevent and ifen=1) then if(count(3 downto 0)=1001) then if(count16#23#) then count=count+7; else count=00000000; end if; elsif(count16#23#) then count=count+1; else count=00000000; end if; end if; end process; e

25、nd fun;(2)時計數(shù)器(shi)仿真掃描顯示譯碼器(saomiao)仿真(3)時計數(shù)器(shi)仿真分析 1、ifen 為分計數(shù)器的 enshi 進位輸出端,當 enshi(ifen)為高電平時, countshi 計數(shù)。countshi 計數(shù)到 23 時,當下一個 enshi(ifen)、clk 到來時, countshi 會自動清零。 2、reset 為清零端,當 reset 低電平時,countfen 計數(shù)從零重新開始計數(shù)。4.整點報時(1)整點報時器(baoshi)vhdl 程序描述 library ieee; use ieee.std_logic_1164.all; use i

26、eee.std_logic_unsigned.all; entity baoshi is port( clk:in std_logic; inputmiao,inputfen:in std_logic_vector(6 downto 0); output:out std_logic_vector(1 downto 0) ); end baoshi; architecture fun of baoshi is signal temp:std_logic_vector(1 downto 0); signal nummiao,numfen:std_logic_vector(7 downto 0);

27、begin nummiao=inputmiao; numfen=inputfen; outputtemptemptemptemptemp=00; end case; end if; end if; end process; end fun; 11(2)整點報時器(baoshi)仿真波形圖(3)整點報時器(baoshi)仿真分析 input 為分計數(shù)器的輸出端,當輸出 58、59 和 00(十六進制)時,整點報 時器(baoshi)的輸出端 output 為高電平,點亮 led 燈。當 intput 為 58、59 時,點亮一個 led 燈,當 input 為 00 時,點亮兩個 led 燈。其

28、他情況時,led 燈均不發(fā)光。4. (1)分頻器(fenpin)設計 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity fenpin is port( clk_5m:in std_logic; clk:out std_logic ); end fenpin; architecture fun of fenpin is signal count:std_logic_vector(22 downto 0); begin process(clk_5m) begin if (clk_5m

29、event and clk_5m=1) then if(count=10011000100101100111111) then count=00000000000000000000000; clk=1; else count= count+1; clk=0; end if;end if;end process; end fun;5. (1)掃描顯示譯碼器(saomiao)vhdl 程序描述掃描顯示譯碼器是用來顯示時鐘數(shù)值的裝置,將數(shù)字時鐘的高低電平信號用 數(shù)碼管的數(shù)值顯示出來。八個數(shù)碼管中,用六個數(shù)碼管顯示時、分和秒,另外兩 個可做為時和分、分和秒之間的間隔,始終不顯示。 首先對八個數(shù)碼管進行掃描,每一時刻都只有一個數(shù)碼管處于掃描狀態(tài),并 將此時的數(shù)字時鐘的高低電平通過十六進制的 bcd 碼轉(zhuǎn)換為數(shù)碼管顯示數(shù)值。library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsign

溫馨提示

  • 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

提交評論