

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 《EDA技術綜合設計》</p><p><b> 課程設計報告</b></p><p> 報告題目: 數字秒表設計 </p><p> 作者所在系部: 電子工程系 </p><p> 作者所在專業(yè): 自動化
2、 </p><p><b> 內 容 摘 要</b></p><p> 本次設計的目的就是在掌握EDA實驗開發(fā)系統(tǒng)的初步使用基礎上,了解EDA技術,對計算機系統(tǒng)中時鐘控制系統(tǒng)進一步了解,掌握狀態(tài)機工作原理,同時了解計算機時鐘脈沖是怎么產生和工作的。在掌握所學的計算機組成與結構課程理論知識時。通過對數字秒表的設計,進行理論與實際的結合,提高與計算機有
3、關設計能力,提高分析、解決計算機技術實際問題的能力。通過課程設計深入理解計算機結構與控制實現的技術,達到課程設計的目標。</p><p> 利用VHDL語言設計基于計算機電路中時鐘脈沖原理的數字秒表。該數字秒表能對0秒~59分59.99秒范圍進行計時,顯示最長時間是59分59秒,到了一小時后,報警器開始報警,計時精度達到10ms。設計了復位開關和啟停開關。復位開關可以在任何情況下使用,使用以后計時器清零,并做好
4、下一次計時的準備。</p><p> 字體、格式、圖號不對、重新修改</p><p><b> 關鍵詞</b></p><p> EDA、可編程邏輯器件、計數器、顯示</p><p><b> 目 錄</b></p><p> 1.設計要求 ……………………………
5、……………… 1</p><p> 實驗目的 …………………………………………… 1</p><p> 實驗原理 …………………………………………… 1</p><p> 源程序(*.vhd)和原理圖(*gdf) ……………… 2</p><p> 4.1計數器模塊…………………………………… 2</
6、p><p> 4.2報警模塊……………………………………… 3</p><p> 4.3顯示模塊……………………………………… 4</p><p> 4.4選擇模塊……………………………………… 5</p><p> 4.5秒表模塊……………………………………… 6</p><p> 仿真
7、調試和下載結果 ……………………………… 7</p><p> 收獲和體會 ………………………………………… 8</p><p><b> 課程設計任務書</b></p><p><b> 一、設計要求:</b></p><p> 1.秒表共有6個輸出顯示,分別為百分之一秒、十分之一
8、秒、秒、十秒、分、十分,所以共有6個計數器與之相對應,6個計數器的輸出全都為BCD碼輸出,這樣便于和顯示譯碼器的連接。當計時達60分鐘后,蜂鳴器鳴響10聲。</p><p> 2.整個秒表還需有一個啟動信號和一個歸零信號,以便秒表能隨意停止及啟動。</p><p> 3.秒表的邏輯結構較簡單,它主要由顯示譯碼器、分頻器、十進制計數器、六進制計數器和報警器組成。在整個秒表中最關鍵的是如何
9、獲得一個精確的100HZ計時脈沖。</p><p><b> 二、實驗目的:</b></p><p> 通過本次課設,加深對EDA技術設計的理解,學會用MaxplusⅡ工具軟件設計基本電路,熟練掌握VHDL語言,為以后工作使用打下堅實的基礎。</p><p><b> 實驗原理:</b></p><
10、;p> 秒表由于其計時精確,分辨率高(0.01秒),在各種競技場所得到了廣泛的應用。秒表的工作原理與數字時基本相同,唯一不同的是秒表的計時時鐘信號,由于其分辨率為0.01秒,所以整個秒表的工作時鐘是在100Hz的時鐘信號下完成。當秒表的計時小于1個小時時,顯示的格式是mm-ss-xx(mm表示分鐘:0~59;ss表示秒:0~59;xx表示百分之一秒:0~99),當秒表的計時大于或等于一個小時時,顯示的和多功能時鐘是一樣的,就是
11、hh-mm-ss(hh表示小時:0~99),由于秒表的功能和鐘表有所不同,所以秒表的hh表示的范圍不是0~23,而是0~99,這也是和多功能時鐘不一樣的地方。在設計秒表的時候,時鐘的選擇為100Hz。變量的選擇:因為xx(0.01秒)和hh(小時)表示的范圍都是0~99,所以用兩個4位二進制碼(BCD碼)表示;而ss(秒鐘)和mm(分鐘)表示的范圍是0~59,所以用一個3位的二進制碼和一個4位的二進制碼(BCD)碼表示。顯示的時候要注
12、意的問題就是小時的判斷,如果小時是00,則顯示格式為mm-ss-xx,如果小時不為00,則顯示hh-mm-ss。</p><p> 四、源程序(*.vhd)和原理圖(*gdf):</p><p> 1.計時模塊:計時模塊執(zhí)行計時功能,計時方法和計算機一樣是對標準時鐘脈沖計數。他是由四個十進制計數器和倆個六進制計數器構成,其中毫秒位、十毫秒位、秒位和分位采用十進制計數器,十秒位和十分位
13、采用六進制計數器。源程序:</p><p> (1)十進制計數器(count_10)</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p>
14、entity count10 is</p><p> port (clk,start,clr : in std_logic;</p><p> cout : out std_logic;</p><p> daout : out std_logic_vector(3 downto 0));</p><p> end count10;&
15、lt;/p><p> architecture one of count10 is</p><p> signal q0 : std_logic_vector(3 downto 0);</p><p> signal q1 : std_logic;</p><p><b> begin</b></p>
16、<p> process(clk,clr)</p><p><b> begin</b></p><p> if clr='1' then q0<="0000";</p><p> elsif clk'event and clk='1' then</p&g
17、t;<p> if start='1' then</p><p> if q0="1001" then</p><p> q0<="0000";</p><p><b> q1<='1';</b></p><p>
18、 else q0<=q0+1;</p><p><b> q1<='0';</b></p><p><b> end if;</b></p><p><b> end if;</b></p><p><b> end if;<
19、/b></p><p> end process;</p><p> daout<=q0;</p><p><b> cout<=q1;</b></p><p><b> end one;</b></p><p> (2)六進制計數器(count_
20、6)</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity count6 is</p><p> port (clk,star
21、t,clr : in std_logic;</p><p> cout : out std_logic;</p><p> daout: out std_logic_vector(3 downto 0));</p><p> end count6;</p><p> architecture two of count6 is</
22、p><p> signal q0 : std_logic_vector(3 downto 0);</p><p> signal q1 : std_logic;</p><p><b> begin</b></p><p> process(clk,clr)</p><p><b>
23、 begin</b></p><p> if clr='1' then q0<="0000";</p><p> elsif clk'event and clk='1' then</p><p> if start='1' then</p><p
24、> if q0="0101" then</p><p> q0<="0000";</p><p><b> q1<='1';</b></p><p> else q0<=q0+1;</p><p><b> q1<=
25、'0';</b></p><p><b> end if;</b></p><p> 2.報警器(alarm_3)</p><p> 當計數到一小時的時候,回來一個高電平,然后報警器會出現10個高電平和10個低電平。程序如下:</p><p> library ieee;</p&
26、gt;<p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity alarm_3 is</p><p> port (clk,clr,I : in std_logic;</p><p> qer:
27、buffer std_logic_vector(4 downto 0);</p><p> q : out std_logic);</p><p> end alarm_3;</p><p> architecture four of alarm_3 is</p><p><b> begin</b></p
28、><p> process(clk,clr,I)</p><p><b> begin</b></p><p> if clr='1' then qer<="00000";</p><p> elsif(clk'event and clk='1') t
29、hen</p><p> if(I='1')then</p><p> if(qer="10100")then NULL;</p><p> else qer<=qer+1;</p><p><b> end if;</b></p><p>&l
30、t;b> end if;</b></p><p><b> end if; </b></p><p> end process;</p><p> q<=qer(0);</p><p> end four; </p><p> 4.顯示器(deled)<
31、/p><p> 計時顯示電路的作用是將計時值在LED數碼管上顯示出來。計時電路產生的值經過BCD七段譯碼后,驅動LED數碼管。計時顯示電路的實現方案采用掃描顯示。部分源程序:</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> ENTITY DELE
32、D IS</p><p> PORT(num : IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> LED : OUT STD_LOGIC_VECTOR(6 DOWNTO 0));</p><p> END DELED;</p><p> ARCHITECTURE FIVE OF DELED IS&l
33、t;/p><p><b> BEGIN</b></p><p> PROCESS(NUM)</p><p><b> BEGIN</b></p><p> CASE NUM IS</p><p> WHEN "0000"=>LED<=&q
34、uot;1111110";</p><p> WHEN "0001"=>LED<="0110000";</p><p> WHEN "0010"=>LED<="1101101";</p><p> WHEN "0011"=>
35、;LED<="1111001";</p><p> WHEN "0100"=>LED<="0110011";</p><p> WHEN "0101"=>LED<="1011011";</p><p> WHEN "011
36、0"=>LED<="1011111";</p><p> WHEN "0111"=>LED<="1110000";</p><p> WHEN "1000"=>LED<="1111111";</p><p> WHE
37、N "1001"=>LED<="1111011";</p><p> when others=>LED<="0000000";</p><p><b> END CASE;</b></p><p> END PROCESS;</p><
38、p><b> END FIVE;</b></p><p> 5.選擇器(SELTIME)</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p
39、><p> entity seltime is</p><p><b> port (</b></p><p> clk:in std_logic;</p><p> clr:in std_logic;</p><p> dain0:in std_logic_vector(3 downto
40、0);</p><p> dain1:in std_logic_vector(3 downto 0);</p><p> dain2:in std_logic_vector(3 downto 0);</p><p> dain3:in std_logic_vector(3 downto 0);</p><p> dain4:in st
41、d_logic_vector(3 downto 0);</p><p> dain5:in std_logic_vector(3 downto 0);</p><p> y:buffer std_logic_vector(3 downto 0);</p><p> sel:buffer std_logic_vector(2 downto 0));</p&
42、gt;<p> end seltime;</p><p> architecture three of seltime is</p><p> signal m:std_logic_vector(2 downto 0);</p><p> signal n:std_logic_vector(3 downto 0);</p><
43、;p><b> begin</b></p><p> n<="0000" when clr='1' else </p><p> dain0 when m="000" else</p><p> dain1 when m="001"else</
44、p><p> dain2 when m="010"else</p><p> dain3 when m="011"else</p><p> dain4 when m="100" else</p><p><b> dain5;</b></p>
45、<p> process(clr,clk,dain0,dain1,dain2,dain3,dain4,dain5)</p><p><b> begin</b></p><p> if clk 'event and clk='1'then</p><p> if m="101" t
46、hen m<="000";</p><p> else m <=m+1;</p><p><b> end if;</b></p><p><b> end if;</b></p><p><b> sel<=m;</b></
47、p><p> end process;</p><p><b> y<=n;</b></p><p> end three;</p><p> 數字秒表計數器(miaobiao_2 )</p><p> 數字秒表的原理圖以及最后的整合:</p><p> 五.
48、仿真調試和下載結果:</p><p><b> 1.仿真結果:</b></p><p><b> 2.下載結果:</b></p><p><b> 六.收獲和體會:</b></p><p> 開始做設計時總是會犯一些錯誤,只有經過不停的改錯不停的編譯得到正確的程序說明了
49、作為軟件編程人員是不能粗心大意的,一個程序的質量的高低與你細心與否有著一定的聯系。在編程時,我充分使用了結構化的思想,這樣程序檢查起來也比較方便,調試時也給了我很大方便,只要一個模塊一個模塊的進行調就可以了,充分體現了結構化編程的優(yōu)勢。在設計中要求我要有耐心和毅力,還要細心,稍有不慎,一個小小的錯誤就會導致結果的不正確,而對錯誤的檢查要求我要有足夠的耐心,通過這次設計和設計中遇到的問題,也積累了一定的經驗,對以后從事集成電路設計工作會有
50、一定的幫助。</p><p> 在應用VHDL的過程中讓我真正領會到了其并行運行與其他軟件順序執(zhí)行的差別及其在電路設計上的優(yōu)越性。用VHDL硬件描述語言的形式來進行數字系統(tǒng)的設計方便靈活,利用EDA軟件進行編譯優(yōu)化仿真極大地減少了電路設計時間和可能發(fā)生的錯誤,降低了開發(fā)成本,這種設計方法在數字系統(tǒng)設計中發(fā)揮越來越重要的作用。</p><p> 對幫助我們的指導老師和的同學表示忠心的感謝
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論