eda課程--數(shù)字秒表設(shè)計_第1頁
已閱讀1頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  《EDA技術(shù)綜合設(shè)計》</p><p><b>  課程設(shè)計報告</b></p><p>  報告題目: 數(shù)字秒表設(shè)計 </p><p>  作者所在系部: 電子工程系 </p><p>  作者所在專業(yè): 自動化

2、 </p><p><b>  內(nèi) 容 摘 要</b></p><p>  本次設(shè)計的目的就是在掌握EDA實驗開發(fā)系統(tǒng)的初步使用基礎(chǔ)上,了解EDA技術(shù),對計算機系統(tǒng)中時鐘控制系統(tǒng)進一步了解,掌握狀態(tài)機工作原理,同時了解計算機時鐘脈沖是怎么產(chǎn)生和工作的。在掌握所學(xué)的計算機組成與結(jié)構(gòu)課程理論知識時。通過對數(shù)字秒表的設(shè)計,進行理論與實際的結(jié)合,提高與計算機有

3、關(guān)設(shè)計能力,提高分析、解決計算機技術(shù)實際問題的能力。通過課程設(shè)計深入理解計算機結(jié)構(gòu)與控制實現(xiàn)的技術(shù),達(dá)到課程設(shè)計的目標(biāo)。</p><p>  利用VHDL語言設(shè)計基于計算機電路中時鐘脈沖原理的數(shù)字秒表。該數(shù)字秒表能對0秒~59分59.99秒范圍進行計時,顯示最長時間是59分59秒,到了一小時后,報警器開始報警,計時精度達(dá)到10ms。設(shè)計了復(fù)位開關(guān)和啟停開關(guān)。復(fù)位開關(guān)可以在任何情況下使用,使用以后計時器清零,并做好

4、下一次計時的準(zhǔn)備。</p><p>  字體、格式、圖號不對、重新修改</p><p><b>  關(guān)鍵詞</b></p><p>  EDA、可編程邏輯器件、計數(shù)器、顯示</p><p><b>  目 錄</b></p><p>  1.設(shè)計要求 ……………………………

5、……………… 1</p><p>  實驗?zāi)康?…………………………………………… 1</p><p>  實驗原理 …………………………………………… 1</p><p>  源程序(*.vhd)和原理圖(*gdf) ……………… 2</p><p>  4.1計數(shù)器模塊…………………………………… 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、調(diào)試和下載結(jié)果 ……………………………… 7</p><p>  收獲和體會 ………………………………………… 8</p><p><b>  課程設(shè)計任務(wù)書</b></p><p><b>  一、設(shè)計要求:</b></p><p>  1.秒表共有6個輸出顯示,分別為百分之一秒、十分之一

8、秒、秒、十秒、分、十分,所以共有6個計數(shù)器與之相對應(yīng),6個計數(shù)器的輸出全都為BCD碼輸出,這樣便于和顯示譯碼器的連接。當(dāng)計時達(dá)60分鐘后,蜂鳴器鳴響10聲。</p><p>  2.整個秒表還需有一個啟動信號和一個歸零信號,以便秒表能隨意停止及啟動。</p><p>  3.秒表的邏輯結(jié)構(gòu)較簡單,它主要由顯示譯碼器、分頻器、十進制計數(shù)器、六進制計數(shù)器和報警器組成。在整個秒表中最關(guān)鍵的是如何

9、獲得一個精確的100HZ計時脈沖。</p><p><b>  二、實驗?zāi)康模?lt;/b></p><p>  通過本次課設(shè),加深對EDA技術(shù)設(shè)計的理解,學(xué)會用MaxplusⅡ工具軟件設(shè)計基本電路,熟練掌握VHDL語言,為以后工作使用打下堅實的基礎(chǔ)。</p><p><b>  實驗原理:</b></p><

10、;p>  秒表由于其計時精確,分辨率高(0.01秒),在各種競技場所得到了廣泛的應(yīng)用。秒表的工作原理與數(shù)字時基本相同,唯一不同的是秒表的計時時鐘信號,由于其分辨率為0.01秒,所以整個秒表的工作時鐘是在100Hz的時鐘信號下完成。當(dāng)秒表的計時小于1個小時時,顯示的格式是mm-ss-xx(mm表示分鐘:0~59;ss表示秒:0~59;xx表示百分之一秒:0~99),當(dāng)秒表的計時大于或等于一個小時時,顯示的和多功能時鐘是一樣的,就是

11、hh-mm-ss(hh表示小時:0~99),由于秒表的功能和鐘表有所不同,所以秒表的hh表示的范圍不是0~23,而是0~99,這也是和多功能時鐘不一樣的地方。在設(shè)計秒表的時候,時鐘的選擇為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í)行計時功能,計時方法和計算機一樣是對標(biāo)準(zhǔn)時鐘脈沖計數(shù)。他是由四個十進制計數(shù)器和倆個六進制計數(shù)器構(gòu)成,其中毫秒位、十毫秒位、秒位和分位采用十進制計數(shù)器,十秒位和十分位

13、采用六進制計數(shù)器。源程序:</p><p>  (1)十進制計數(shù)器(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> ?。?)六進制計數(shù)器(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>  當(dāng)計數(shù)到一小時的時候,回來一個高電平,然后報警器會出現(xiàn)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數(shù)碼管上顯示出來。計時電路產(chǎn)生的值經(jīng)過BCD七段譯碼后,驅(qū)動LED數(shù)碼管。計時顯示電路的實現(xiàn)方案采用掃描顯示。部分源程序:</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>  數(shù)字秒表計數(shù)器(miaobiao_2 )</p><p>  數(shù)字秒表的原理圖以及最后的整合:</p><p>  五.

48、仿真調(diào)試和下載結(jié)果:</p><p><b>  1.仿真結(jié)果:</b></p><p><b>  2.下載結(jié)果:</b></p><p><b>  六.收獲和體會:</b></p><p>  開始做設(shè)計時總是會犯一些錯誤,只有經(jīng)過不停的改錯不停的編譯得到正確的程序說明了

49、作為軟件編程人員是不能粗心大意的,一個程序的質(zhì)量的高低與你細(xì)心與否有著一定的聯(lián)系。在編程時,我充分使用了結(jié)構(gòu)化的思想,這樣程序檢查起來也比較方便,調(diào)試時也給了我很大方便,只要一個模塊一個模塊的進行調(diào)就可以了,充分體現(xiàn)了結(jié)構(gòu)化編程的優(yōu)勢。在設(shè)計中要求我要有耐心和毅力,還要細(xì)心,稍有不慎,一個小小的錯誤就會導(dǎo)致結(jié)果的不正確,而對錯誤的檢查要求我要有足夠的耐心,通過這次設(shè)計和設(shè)計中遇到的問題,也積累了一定的經(jīng)驗,對以后從事集成電路設(shè)計工作會有

50、一定的幫助。</p><p>  在應(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ā)揮越來越重要的作用。</p><p>  對幫助我們的指導(dǎo)老師和的同學(xué)表示忠心的感謝

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論