eda課程設(shè)計 秒表計時器 王斯
《eda課程設(shè)計 秒表計時器 王斯》由會員分享,可在線閱讀,更多相關(guān)《eda課程設(shè)計 秒表計時器 王斯(18頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 目錄 1 引言 1 1.1 課程設(shè)計的目的 2 1.2 課程設(shè)計的內(nèi)容 2 2 EDA、VHDL簡介 2 2.1 EDA技術(shù) 2 2.2 硬件描述語言——VHDL 3 2.2.1 VHDL的簡介 3 VHDL語言的特點 3 2.2.3 VHDL的設(shè)計流程 4 3設(shè)計過程 5 3.1 設(shè)計規(guī)劃 5 3.2 頂層模塊設(shè)計 6 3.3 底層模塊設(shè)計 6 4 系統(tǒng)仿真 13 5 結(jié)束語 16 6參考文獻 17 1 引言 在科技高度開展的今天,集成電路和計算機應(yīng)用得到了高速開展
2、。尤其是計算機應(yīng)用的開展。它在人們?nèi)粘I钜阎饾u嶄露頭角。大多數(shù)電子產(chǎn)品多是由計算機電路組成, 如: 、mp3等。而且將來的不久他們的身影將會更頻繁的出現(xiàn)在我們身邊。各種家用電器多會實現(xiàn)微電腦技術(shù)。電腦各局部在工作時多是一時間為基準的。本文就是基于計算機電路的時鐘脈沖信號、狀態(tài)控制等原理設(shè)計出的數(shù)字秒表。秒表在很多領(lǐng)域充當(dāng)一個重要的角色。在各種比賽中對秒表的精確度要求很高,尤其是一些科學(xué)實驗。他們對時間精確度到達了幾納秒級別。 1.1 課程設(shè)計的目的 本次設(shè)計的目的就是在掌握EDA實驗開發(fā)系統(tǒng)的初步使用根底上,了解EDA技術(shù),對計算機系統(tǒng)中時鐘控制系統(tǒng)進一步了解,掌握狀態(tài)機工作原
3、理,同時了解計算機時鐘脈沖是怎么產(chǎn)生和工作的。在掌握所學(xué)的計算機組成與結(jié)構(gòu)課程理論知識時。通過對數(shù)字秒表的設(shè)計,進行理論與實際的結(jié)合,提高與計算機有關(guān)設(shè)計能力,提高分析、解決計算機技術(shù)實際問題的能力。通過課程設(shè)計深入理解計算機結(jié)構(gòu)與控制實現(xiàn)的技術(shù),到達課程設(shè)計的目標。 1.2 課程設(shè)計的內(nèi)容 利用VHDL語言設(shè)計基于計算機電路中時鐘脈沖原理的數(shù)字秒表。該數(shù)字秒表能對 0秒~59分59.99秒范圍進行計時,顯示最長時間是59分59秒。計時精度到達10ms。設(shè)計了復(fù)位開關(guān)和啟停開關(guān)。復(fù)位開關(guān)可以在任何情況下使用,使用以后計時器清零,并做好下一次計時的準備。 2 EDA、VHDL簡
4、介 2.1 EDA技術(shù) EDA是指以計算機為工作平臺,融合了應(yīng)用電子技術(shù)、計算機技術(shù)、智能化技術(shù)的最新成果而開發(fā)出的電子CAD通用軟件包,它根據(jù)硬件描述語言HDL完成的設(shè)計文件,自動完成邏輯編譯、化簡、分割、綜合、優(yōu)化、布局布線及仿真,直至完成對于特定目標芯片的適配編譯、邏輯映射和編程下載等工作。目前EDA主要輔助進行三個方面的設(shè)計工作:IC設(shè)計、電子電路設(shè)計和PCB設(shè)計。沒有EDA技術(shù)的支持,想要完成超大規(guī)模集成電路的設(shè)計制造是不可想象的;反過來,生產(chǎn)制造技術(shù)的不斷進步又必將對EDA技術(shù)提出新的要求。 2.2 硬件描述語言——VHDL VHDL的簡介 VHDL語言是一種用于電路設(shè)
5、計的高級語言。它在80年代的后期出現(xiàn)。最初是由美國國防部開發(fā)出來供美軍用來提高設(shè)計的可靠性和縮減開發(fā)周期的一種使用范圍較小的設(shè)計語言 。但是,由于它在一定程度上滿足了當(dāng)時的設(shè)計需求,于是他在1987年成為A I/IEEE的標準〔IEEE STD 1076-1987〕。1993年更進一步修訂,變得更加完備,成為A I/IEEE的A I/IEEE STD 1076-1993標準。目前,大多數(shù)的CAD廠商出品的EDA軟件都兼容了這種標準。自IEEE公布了VHDL的標準版本,IEEE-1076〔簡稱87版)之后,各EDA公司相繼推出了自己的VHDL設(shè)計環(huán)境,或宣布自己的設(shè)計工具可以和VHDL接口。此后
6、VHDL在電子設(shè)計領(lǐng)域得到了廣泛的接受,并逐步取代了原有的非標準的硬件描述語言。1993年,IEEE對VHDL進行了修訂,從更高的抽象層次和系統(tǒng)描述能力上擴展VHDL的內(nèi)容,公布了新版本的VHDL,即IEEE標準的1076-1993版本,〔簡稱93版〕?,F(xiàn)在,VHDL和Verilog作為IEEE的工業(yè)標準硬件描述語言,又得到眾多EDA公司的支持,在電子工程領(lǐng)域,已成為事實上的通用硬件描述語言。有專家認為,在新的世紀中,VHDL于Verilog語言將承擔(dān)起大局部的數(shù)字系統(tǒng)設(shè)計任務(wù)。 VHDL語言的特點 VHDL的程序結(jié)構(gòu)特點是將一項工程設(shè)計,關(guān)于用VHDL和原理圖輸入進行CPLD/FPGA
7、設(shè)計的粗略比較:在設(shè)計中,如果采用原理圖輸入的設(shè)計方式是比較直觀的。你要設(shè)計的是什么,你就直接從庫中調(diào)出來用就行了。這樣比較符合人們的習(xí)慣。在對一個設(shè)計實體定義了外部界面后,一旦其內(nèi)部開發(fā)完成后,其他的設(shè)計就可以直接調(diào)用這個實體。這種將設(shè)計實體分成內(nèi)外局部的概念是VHDL系統(tǒng)設(shè)計的根本點。應(yīng)用VHDL進行工程設(shè)計的優(yōu)點是多方面的。 〔1〕與其他的硬件描述語言相比,VHDL具有更強的行為描述能力,從而決定了他成為系統(tǒng)設(shè)計領(lǐng)域最正確的硬件描述語言。強大的行為描述能力是避開具體的器件結(jié)構(gòu),從邏輯行為上描述和設(shè)計大規(guī)模電子系統(tǒng)的重要保證。 〔2〕VHDL豐富的仿真語句和庫函數(shù),使得在任何大系統(tǒng)的設(shè)
8、計早期就能查驗設(shè)計系統(tǒng)的功能可行性,隨時可對設(shè)計進行仿真模擬。 〔3〕VHDL語句的行為描述能力和程序結(jié)構(gòu)決定了他具有支持大規(guī)模設(shè)計的分解和已有設(shè)計的再利用功能。符合市場需求的大規(guī)模系統(tǒng)高效,高速的完成必須有多人甚至多個代發(fā)組共同并行工作才能實現(xiàn)。 〔4〕對于用VHDL完成的一個確定的設(shè)計,可以利用EDA工具進行邏輯綜合和優(yōu)化,并自動的把VHDL描述設(shè)計轉(zhuǎn)變成門級網(wǎng)表。 〔5〕VHDL對設(shè)計的描述具有相對獨立性,設(shè)計者可以不懂硬件的結(jié)構(gòu),也不必管理最終設(shè)計實現(xiàn)的目標器件是什么,而進行獨立的設(shè)計。 2.2.3 VHDL的設(shè)計流程 它主要包括以下幾個步驟: 1.文本編輯: 2.功
9、能仿真: 將文件調(diào)入HDL仿真軟件進行功能仿真,檢查邏輯功能是否正確〔也叫前仿真,對簡單的設(shè)計可以跳過這一步,只在布線完成以后,進行時序仿真〕 3.邏輯綜合: 將源文件調(diào)入邏輯綜合軟件進行綜合,即把語言綜合成最簡的布爾表達式。邏輯綜合軟件會生成.edf或.edif 的EDA工業(yè)標準文件。 4.布局布線: 將.edf文件調(diào)入PLD廠家提供的軟件中進行布線,即把設(shè)計好的邏輯安放PLD/FPGA內(nèi)。 5.時序仿真: 需要利用在布局布線中獲得的精確參數(shù),用仿真軟件驗證電路的時序?!惨步泻蠓抡妗?通常以上過程可以都在PLD/FPGA廠家提供的開發(fā)工具。 6.器件編程 3設(shè)計過程
10、 設(shè)計規(guī)劃 根據(jù)系統(tǒng)設(shè)計要求,系統(tǒng)的組成框圖如圖3—1所示。 數(shù)字秒表 計時控制電路 計時電路 顯示電路 控制模塊 時基分頻電路 計數(shù)器 掃描電路 譯碼器 六進制 計數(shù)器 十進制 計數(shù)器 圖3—1 系統(tǒng)組成框圖 系統(tǒng)設(shè)計采用自頂向下的設(shè)計方法,它主要是由控制模塊、時基分頻模塊、計時模塊和顯示模塊四局部組成。 〔1〕控制模塊 計時控制模塊的作用是對計時過程進行控制。計時控制模塊可用兩個按鈕開關(guān)來完成秒表的啟動、停止和復(fù)位。 〔2〕計時模塊 計時模塊執(zhí)行計時功能,計時的方法是對標準時鐘脈沖計數(shù)。由于計時范圍是0秒~59分59.
11、59秒,所以計時器可以由兩個60進制計數(shù)器和一個100進制計數(shù)器構(gòu)成,其中分和秒采用60進制計數(shù)器,毫秒采用100進制計數(shù)器。 〔3〕顯示模塊 計時顯示電路的作用是將計時值在LED七段譯碼數(shù)碼管上顯示出來。計時電路產(chǎn)生的計時值經(jīng)過BCD七段譯碼后,驅(qū)動LED數(shù)碼管。 3.2 頂層模塊設(shè)計 以上所描述的模塊的程序編寫均在同一工程下,由程序生成的元件也在該工程下,所以可以在該工程下再建一原理圖作為頂層,將所需要的元件按照要求進行連線,參加輸入輸出處端口并改名。包層原理圖,并將原理圖置為頂層文件。 如以下圖: 3.3 底層模塊設(shè)計 底層單元模塊共有七個,全部用VHDL語言描述
12、。它主要是由計時電路、計時控制電路及顯示電路組成。 .1 計時模塊 計時電路執(zhí)行計時功能,主要是由時基分頻器、計數(shù)器組成。計時方法是對標準時鐘脈沖計數(shù),計數(shù)器是由一個100進制計數(shù)器和兩個60進制計數(shù)器構(gòu)成,其中毫秒位采用100進制計數(shù)器,秒位和分位采用60進制計數(shù)器。 100進制計數(shù)器的源程序: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity cnt100 is port(cs,clk:in std_logic; co:buffer
13、std_logic; s_10ms,s_100ms:buffer std_logic_vector(3 downto 0); clear:in std_logic); end ; architecture behave of cnt100 is signal clock:std_logic; begin process(clk) variable count1:integer range 0 to 5; begin if clk'event and clk='1' then if count1<5 then count1:=
14、count1+1; else clock<=not clock; count1:=0; end if; end if; end process; process(clock,cs,clear) begin if clear='0' then if cs='1' then if clock'event and clock='1' then co<='0'; if s_10ms=9 then s_10ms<=(others=>'0'); if s_100ms=9 then s_100m
15、s<=(others=>'0');co<=not co; else s_100ms<=s_100ms+1; end if; else s_10ms<=s_10ms+1; end if; end if; else s_10ms<=s_10ms;s_100ms<=s_100ms; end if; else s_10ms<=(others=>'0');s_100ms<=(others=>'0'); end if; end process; end behave; 60秒進制計數(shù)器源程
16、序: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity cnt60s is port(clk:in std_logic; co:buffer std_logic; s_1s,s_10s:buffer std_logic_vector(3 downto 0); clear:in std_logic); end ; architecture behave of cnt60s is begin pro
17、cess(clk) begin if clear='0' then if clk'event and clk='1' then co<='0'; if s_1s=9 then s_1s<=(others=>'0'); if s_10s=5 then s_10s<=(others=>'0');co<=not co; else s_10s<= s_10s+1; end if; else s_1s<= s_1s+1; end if;
18、 end if; else s_1s<=(others=>'0');s_10s<=(others=>'0'); end if; end process; end behave; 60分進制源程序: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity cnt60m is port(clk:in std_logic; s_1min,s_10min:buffer std_logic_vector(3 downto 0);
19、 clear:in std_logic); end ; architecture behave of cnt60m is begin process(clk) begin if clear='0' then if clk'event and clk='1' then if s_1min=9 then s_1min<=(others=>'0'); if s_10min=5 then s_10min<=(others=>'0'); else s_10min<= s_10min+1;
20、 end if; else s_1min<= s_1min+1; end if; end if; else s_1min<=(others=>'0');s_10min<=(others=>'0'); end if; end process; end behave; 3.3.2 分頻模塊 分頻模塊的作用把輸入時鐘信號變?yōu)榉诸l輸出信號。源程序: library ieee; use ieee.std_logic_1164.all; use ieee.st
21、d_logic_arith.all; use ieee.std_logic_unsigned.all; entity fenpin is port (clk:in std_logic; ft:out std_logic); end fenpin; architecture a of fenpin is signal fm:std_logic; begin process(clk) variable num:integer range 0 to 100; begin if clk'event and clk='1' then if num
22、<50 then num:=num+1; else num:=1; fm<=not fm; end if ; end if; ft<=fm; end process; end a; 3.3.3 顯示模塊 計時顯示電路的作用是將計時值在LED數(shù)碼管上顯示出來。計時電路產(chǎn)生的值經(jīng)過BCD七段譯碼后,驅(qū)動LED數(shù)碼管。BCD七段譯碼器源程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY BCD IS PORT(
23、 BCD:IN STD_LOGIC_VECTOR(3 DOWNTO 0); LED:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END BCD; ARCHITECTURE ART OF BCD IS BEGIN LED<="1111110"WHEN BCD ="0000" ELSE "0110000"WHEN BCD ="0001" ELSE "1101101"WHEN BCD ="0010" ELSE "1111001"WHEN BCD ="0011" ELSE "0110011"WHEN BCD ="0
24、100" ELSE "1011011"WHEN BCD ="0101" ELSE "1011111"WHEN BCD ="0110" ELSE "1110000"WHEN BCD ="0111" ELSE "1111111"WHEN BCD ="1000" ELSE "1111011"WHEN BCD ="1001" ELSE "0000000"; END ART; 3.3.4 控制模塊 計時模塊的作用是針對計時過程進行控制。計時控制模塊可用倆個按鈕來完成秒表的啟動、停止和復(fù)位??刂颇K源程序: library ieee; use ieee.std_logic_1164.
25、all; entity control is port(s_10ms,s_100ms,s_1s,s_10s,s_1min,s_10min:in std_logic_vector(3 downto 0); choose:in std_logic_vector(2 downto 0); y:out std_logic_vector(3 downto 0)); end ; architecture behave of control is begin process(choose) begi
26、n case choose is when "000"=>y<=s_10ms; when "001"=>y<=s_100ms; when "010"=>y<=s_1s; when "011"=>y<=s_10s; when "100"=>y<=s_1min; when "101"=>y<=s_1min; when others=>null; end case; end process; end behave; 4 系統(tǒng)仿真 (1) 分頻模塊的仿真〔如圖 4-1所示〕
27、 圖 4-1 分頻器仿真圖 clk為時鐘輸入信號,ft為分頻輸出信號。 (2) 計時電路模塊的仿真〔如圖 4-2~圖4-4所示〕 ① 六十秒進制計數(shù)器的仿真〔如圖4-2所示〕 ② 六十分進制計數(shù)器的方針〔如圖4-3所示〕 ③ 一百進制計數(shù)器的仿真〔如圖4-4所示〕 圖4-2 六十秒進制計數(shù)器的仿真圖 圖4-3六十分進制計數(shù)器的仿真圖 圖 4-4一百進制計數(shù)器的仿真圖 (3) 顯示電路模塊的仿真〔如圖4—5所示〕 ① BCD七段譯碼器驅(qū)動器的仿真〔如圖 4-5所示〕 圖4-5 BCD七段譯碼器的仿真圖
28、 5 結(jié)束語 開始做設(shè)計時總是會犯一些錯誤,只有經(jīng)過不停的改錯不停的編譯得到正確的程序說明了作為軟件編程人員是不能粗心大意的,一個程序的質(zhì)量的上下與你細心與否有著一定的聯(lián)系。在編程時,我充分使用了結(jié)構(gòu)化的思想,這樣程序檢查起來也比較方便,調(diào)試時也給了我很大方便,只要一個模塊一個模塊的進行調(diào)就可以了,充分表達了結(jié)構(gòu)化編程的優(yōu)勢。在設(shè)計中要求我要有耐心和毅力,還要細心,稍有不慎,一個小小的錯誤就會導(dǎo)致結(jié)果的不正確,而對錯誤的檢查要求我要有足夠的耐心,通過這次設(shè)計和設(shè)計中遇到的問題,也積累了一定的經(jīng)驗,對以后從事集成電路設(shè)計工作會有一定的幫助。 在應(yīng)用VHDL的過程中讓我真正領(lǐng)會到了其并行運行與其他軟件順序執(zhí)行的差異及其在電路設(shè)計上的優(yōu)越性。用VHDL硬件描述語言的形式來進行數(shù)字系統(tǒng)的設(shè)計方便靈活,利用EDA軟件進行編譯優(yōu)化仿真極大地減少了電路設(shè)計時間和可能發(fā)生的錯誤,降低了開發(fā)本錢,這種設(shè)計方法在數(shù)字系統(tǒng)設(shè)計中發(fā)揮越來越重要的作用。 6參考文獻 [1]
- 溫馨提示:
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. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 植樹問題講課
- 小小圖書館賈世喜
- 小班數(shù)學(xué):變得一樣多
- 蘇教版三年級數(shù)學(xué)上冊教學(xué)ppt課件58:解決問題的策略復(fù)習(xí)
- 小學(xué)科學(xué)六下《拓展與應(yīng)用》-公開課一等獎ppt課件
- 高中英語人教版選修七Unit-2-Robots-ppt課件
- 第九章長期負債課件
- 皮膚免疫系統(tǒng)課件
- 辦公樓施工現(xiàn)場消防安全管理要求規(guī)范課件
- freeroi在功能磁共振roi分析中的應(yīng)用
- 《永遇樂&#183;京口北固亭懷古》用典講解課件
- 《秋天的雨》微課課件
- 護患溝通技巧-課件
- 《高等數(shù)學(xué)B》第十章___微分方程與差分方程__第6節(jié)__差分與差分方程的概念_、……課件
- 英語(人教版)九年級總復(fù)習(xí)題型訓(xùn)練補全對話(含最新原創(chuàng)題)課件