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

下載本文檔

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

文檔簡介

1、<p><b>  數(shù)字秒表設計</b></p><p>  專 業(yè): 自動化 </p><p>  班級學號: 509</p><p>  姓 名: </p><p>  2011年 6 月14日</p><p><b>  目錄</b>&l

2、t;/p><p>  數(shù)字秒表設計實驗任務書2</p><p>  一、設計實驗目的:2</p><p>  二、設計實驗說明及要求:2</p><p>  三、數(shù)字秒表組成及功能:2</p><p>  四、系統(tǒng)硬件要求:2</p><p>  五、設計內容及步驟:3</p>

3、;<p><b>  六、硬件實現(xiàn)3</b></p><p><b>  實驗報告3</b></p><p>  一、數(shù)字秒表頂層設計3</p><p>  二、數(shù)字秒表內部設計4</p><p><b>  1、分頻器4</b></p>

4、<p>  2、十進制計數(shù)器5</p><p>  3、六進制計數(shù)器6</p><p>  4、二十四進制計數(shù)器8</p><p>  5、數(shù)據(jù)選擇和數(shù)碼管選擇模塊9</p><p>  6、數(shù)碼管驅動模塊:10</p><p>  三、數(shù)字秒表仿真波形11</p><p>

5、;<b>  四、硬件驗證12</b></p><p><b>  五、實驗總結12</b></p><p>  數(shù)字秒表設計實驗任務書</p><p><b>  一、設計實驗目的:</b></p><p>  在MAX+plusII軟件平臺上,熟練運用VHDL語言,完成

6、數(shù)字時鐘設計的軟件編程、編譯、綜合、仿真,使用EDA實驗箱,實現(xiàn)數(shù)字秒表的硬件功能。</p><p>  二、設計實驗說明及要求:</p><p>  1、數(shù)字秒表主要由:分頻器、掃描顯示譯碼器、一百進制計數(shù)器、六十進制計數(shù)器(或十進制計數(shù)器與6進制計數(shù)器)、十二進制計數(shù)器(或二十四進制計數(shù)器)電路組成。在整個秒表中最關鍵的是如何獲得一個精確的100HZ計時脈沖,除此之外,數(shù)字秒表需有清零

7、控制端,以及啟動控制端、保持保持,以便數(shù)字時鐘能隨意停止及啟動。</p><p>  2、數(shù)字秒表顯示由時(12或24進制任選)、分(60進制)、秒(60進制)、百分之一秒(一百進制)組成,利用掃描顯示譯碼電路在八個數(shù)碼管顯示。</p><p>  3、能夠完成清零、啟動、保持(可以使用鍵盤或撥碼開關置數(shù))功能。</p><p>  4、時、分、秒、百分之一秒顯示準

8、確。</p><p>  三、數(shù)字秒表組成及功能:</p><p>  1、分頻率器:用來產生100HZ計時脈沖;</p><p>  2、二十四進制計數(shù)器:對時進行計數(shù);</p><p>  3、六進制計數(shù)器:分別對秒十位和分十位進行計數(shù);</p><p>  4、十進制計數(shù)器:分別對秒個位和分個位進行計數(shù);<

9、/p><p>  5、掃描顯示譯碼器:完成對7字段數(shù)碼管顯示的控制;</p><p><b>  四、系統(tǒng)硬件要求:</b></p><p>  1、時鐘信號為10MHz;</p><p>  2、FPGA芯片型號EPM7128LC84—15、EP1K30TC144—3或EP1K100QC208—3(根據(jù)實驗箱上FPGA芯片

10、具體選擇);</p><p>  3、8個7段掃描共陰級數(shù)碼顯示管;</p><p>  4、按鍵開關(清零、啟動、保持);</p><p>  五、設計內容及步驟:</p><p>  1、根據(jù)電路持點,用層次設計概念。將此設計任務分成若干模塊,規(guī)定每一模塊的功能和各模塊之間的接口,同時加深層次化設計概念;</p><p

11、>  2、軟件的元件管理深層含義,以及模塊元件之間的連接概念,對于不同目錄下的同一設計,如何熔合;</p><p>  3、適配劃分前后的仿真內容有何不同概念,仿真信號對象有何不同,有更深一步了解。熟悉了CPLD/FPGA設計的調試過程中手段的多樣化;</p><p>  4、按適配劃分后的管腳定位,同相關功能塊硬件電路接口連線;</p><p>  5、所有

12、模塊盡量采用VHDL語言設計。</p><p><b>  六、硬件實現(xiàn)</b></p><p>  將時序仿真正確的文件下載到實驗箱中的EPM7128LC84—15、EP1K30TC144—3或EP1K100QC208—3中,通過合適的管腳分配,將相應的管腳連接起來,驗證設計是否完成設計要求;</p><p><b>  實驗報告&

13、lt;/b></p><p>  一、數(shù)字秒表頂層設計</p><p>  外部輸入:啟動/停止信號(start);</p><p>  10MHZ的時鐘信號(clk);</p><p>  清零信號(clr);</p><p>  外部輸出:位選控制信號(sel0、sel1、sel2);</p>

14、<p>  7段數(shù)碼管顯示信號(led0、led1、led2、led3、led4、led5、led6、led7);</p><p><b>  數(shù)字秒表頂層原理圖</b></p><p>  二、數(shù)字秒表內部設計</p><p><b>  1、分頻器</b></p><p>  功能:將

15、10MHz的時鐘信號轉換成100Hz的計時脈沖,使秒表正常工作。</p><p><b>  圖標:</b></p><p><b>  VHDL語言:</b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p&

16、gt;<p>  entity div is</p><p>  port(clr,clk: in bit;q: buffer bit);</p><p><b>  end div;</b></p><p>  architecture a of div is</p><p>  signal count

17、er:integer range 0 to 49999;</p><p><b>  begin</b></p><p>  process(clr,clk)</p><p><b>  begin</b></p><p>  if (clk='1' and clk'even

18、t) then </p><p>  if clr='1' then</p><p>  counter<=0;</p><p>  elsif counter=49999 then</p><p>  counter<=0;</p><p>  q<= not q;<

19、/p><p><b>  else</b></p><p>  counter<=counter+1;</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;

20、</p><p><b>  end a;</b></p><p><b>  波形仿真:</b></p><p><b>  2、十進制計數(shù)器</b></p><p>  功能:通過在計時脈沖的作用下進行逢十進一,從而完成對秒個位和分個位進行計數(shù)的功能。</p>

21、<p><b>  圖標:</b></p><p><b>  VHDL語言:</b></p><p>  library ieee; </p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigne

22、d.all;</p><p>  entity count10 is</p><p>  port(clr,start,clk: in bit;</p><p>  cout: out bit;</p><p>  daout: out std_logic_vector(3 downto 0));</p><p>  

23、end count10;</p><p>  architecture a of count10 is</p><p>  signal temp:std_logic_vector(3 downto 0);</p><p><b>  begin</b></p><p>  daout<=temp; </p

24、><p>  process(clk,clr)</p><p><b>  begin</b></p><p>  if clr='1' then </p><p>  temp<="0000";</p><p>  cout<='0';

25、 </p><p>  elsif (clk'event and clk='1') then</p><p>  if start='1' then </p><p>  if temp>="1001" then </p><p>  temp<="0000&q

26、uot;;</p><p>  cout<='1'; </p><p><b>  else </b></p><p>  temp<=temp+1; </p><p>  cout<='0'; </p><p><b>  end i

27、f; </b></p><p><b>  end if; </b></p><p><b>  end if; </b></p><p>  end process;</p><p><b>  end a;</b></p><p><

28、;b>  波形仿真:</b></p><p><b>  3、六進制計數(shù)器</b></p><p>  功能:通過在計時脈沖的作用下進行逢六進一,完成秒表秒的十位部分和分的十位部分的計數(shù)功能。</p><p><b>  圖標:</b></p><p><b>  VHD

29、L語言:</b></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>  po

30、rt(clr,start,clk: in bit;</p><p>  cout: out std_logic;</p><p>  daout: out std_logic_vector(3 downto 0));</p><p>  end count6;</p><p>  architecture a of count6 is<

31、/p><p>  signal temp:std_logic_vector(3 downto 0);</p><p><b>  begin </b></p><p>  daout<=temp; </p><p>  process(clk,clr)</p><p><b>  be

32、gin</b></p><p>  if clr='1' then </p><p>  temp<="0000";</p><p>  cout<='0'; </p><p>  elsif (clk'event and clk='1') t

33、hen</p><p>  if start='1' then </p><p>  if temp>="0101" then </p><p>  temp<="0000";</p><p>  cout<='1'; </p><p

34、><b>  else </b></p><p>  temp<=temp+1; </p><p>  cout<='0'; </p><p><b>  end if; </b></p><p><b>  end if; </b><

35、/p><p><b>  end if; </b></p><p>  end process; </p><p><b>  end a;</b></p><p><b>  波形仿真:</b></p><p>  4、二十四進制計數(shù)器</p>

36、<p>  功能:通過在計時脈沖的作用下進行逢二十四進一,從而對時進行計數(shù)。</p><p><b>  圖標:</b></p><p><b>  VHDL語言:</b></p><p>  library ieee; </p><p>  use ieee.std_logic_11

37、64.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity count24 is</p><p>  port(clr,start,clk:in std_logic;</p><p>  hour0,hour1:out std_logic_vector(3 downt

38、o 0));</p><p>  end count24; </p><p>  architecture a of count24 is</p><p>  begin process(clr,clk) </p><p>  variable cnt1,cnt0:std_logic_vector(3 downto 0);</p>

39、<p><b>  begin </b></p><p>  if clr='1' then cnt0:="0000"; cnt1:="0000";</p><p>  elsif clk'event and clk='1' then</p><p>

40、;  if start='1' then</p><p>  if cnt1="0010" and cnt0="0011"</p><p>  then cnt1:="0000";</p><p>  cnt0:="0000"; </p><p>

41、  elsif cnt0<"1001" then cnt0:=cnt0+1; </p><p>  else cnt0:="0000";</p><p>  cnt1:=cnt1+1;</p><p><b>  end if;</b></p><p><b>  

42、end if;</b></p><p><b>  end if;</b></p><p>  hour0<=cnt0;</p><p>  hour1<=cnt1;</p><p>  end process; </p><p><b>  end a;<

43、/b></p><p><b>  波形仿真:</b></p><p>  5、數(shù)據(jù)選擇和數(shù)碼管選擇模塊</p><p>  功能:通過每個計數(shù)器輸入的dain信號對數(shù)碼管進行選擇。</p><p><b>  圖標:</b></p><p><b>  VH

44、DL語言:</b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity seltime is</p><p>  

45、port(clk: in bit;</p><p>  dain0,dain1,dain2,dain3,dain4,dain5,dain6,dain7: in std_logic_vector(3 downto 0);</p><p>  sel: out std_logic_vector(2 downto 0);</p><p>  daout: out std_

46、logic_vector(3 downto 0));</p><p>  end seltime;</p><p>  architecture a of seltime is</p><p>  signal temp:integer range 0 to 7;</p><p><b>  begin</b></

47、p><p>  process(clk)</p><p><b>  begin</b></p><p>  if (clk='1'and clk'event) then </p><p>  if temp=7 then temp<=0;</p><p>  else

48、 temp<=temp + 1; </p><p>  end if; </p><p>  case temp is</p><p>  when 0=>sel<="000";daout<=dain0;</p><p>  when 1=>sel<="001

49、";daout<=dain1;</p><p>  when 2=>sel<="010";daout<=dain2;</p><p>  when 3=>sel<="011";daout<=dain3;</p><p>  when 4=>sel<="1

50、00";daout<=dain4;</p><p>  when 5=>sel<="101";daout<=dain5;</p><p>  when 6=>sel<="110";daout<=dain6;</p><p>  when 7=>sel<="

51、;111";daout<=dain7;</p><p><b>  end case;</b></p><p><b>  end if;</b></p><p>  end process;</p><p><b>  end a;</b></p>

52、<p><b>  波形仿真:</b></p><p>  6、數(shù)碼管驅動模塊:</p><p>  功能:通過對輸入的信號進行編碼,完成對7段數(shù)碼管的驅動,使數(shù)碼管顯示出對應的數(shù)字。</p><p><b>  圖標:</b></p><p><b>  VHDL語言:&l

53、t;/b></p><p>  library ieee; </p><p>  use ieee.std_logic_1164.all; </p><p>  entity deled is </p><p>  port(num:in std_logic_vector(3 downto 0); </p><p&g

54、t;  led:out std_logic_vector(6 downto 0)); </p><p>  end deled ; </p><p>  architecture a of deled is </p><p><b>  begin </b></p><p>  process(num) </p&g

55、t;<p><b>  begin </b></p><p>  case num is </p><p>  when"0000"=>led<="0111111";-----------3FH</p><p>  when"0001"=>led<

56、="0000110";-----------06H </p><p>  when"0010"=>led<="1011011";-----------5BH </p><p>  when"0011"=>led<="1001111";-----------4FH &l

57、t;/p><p>  when"0100"=>led<="1100110";-----------66H </p><p>  when"0101"=>led<="1101101";-----------6DH </p><p>  when"0110&qu

58、ot;=>led<="1111101";-----------7DH </p><p>  when"0111"=>led<="0100111";-----------27H </p><p>  when"1000"=>led<="1111111";--

59、---------7FH </p><p>  when"1001"=>led<="1101111";-----------6FH </p><p>  when others=>led<="0000000";-----------00H </p><p>  end case; &

60、lt;/p><p>  end process; </p><p><b>  end a;</b></p><p><b>  波形仿真:</b></p><p>  三、數(shù)字秒表仿真波形</p><p><b>  四、硬件驗證</b></p>

61、;<p>  1、選擇合適的芯片類型,進行自動分配管腳,在實驗箱上將相應的管腳連接起來;</p><p>  2、將做好的數(shù)字秒表下載到實驗箱中;</p><p>  3、驗證功能,當輸入端clr撥至低電平,start撥至高電平時,秒表開始計時,能清楚的顯示時、分、,秒、0.01秒;當把start撥至低電平時計時,秒表暫停,當把start再次撥回高電平時,秒表繼續(xù)計時;當把c

62、lr撥至高電平時,8個數(shù)碼管同時變?yōu)?,秒表停止工作。</p><p><b>  五、實驗總結</b></p><p>  通過本次課程設計,使我對MAX+plusII軟件的使用、實驗箱的使用、VHDL語言以及一個課題從開始的分析到最后的綜合編譯和仿真也有了更深刻的認識。</p><p>  一拿到課程設計題目時確實有些迷茫,我就到圖書館查閱

63、了相關的書籍、上網查了查資料、以及與同學討論了整體構思和VHDL語言的設計。雖然大體思路有了,但是在編程的過程中還是遇到了不少問題。</p><p>  分頻器的設計就是一個難題,100HZ的周期是10MHZ的100000倍,那counter的取值不是該是100000,那就是從0to99999,但是硬件驗證時秒表明顯走得偏慢。那counter要取什么值呢?是取0to49999?通過分析才明白,如果語句中沒有用到q

64、<= not q;語句,在0.01秒內,q很長一段時間都保持低電平,只有在最后0.2us進行高低電平的跳變;但如果用了q<= not q;語句,在0.005s時,q就從電平跳變到高電平,然后一直保持到0.01s才跳變到低電平,也就是將0.01s作為一個高低電平的周期。</p><p>  數(shù)碼管驅動模塊的輸出端口也遇到了問題,如果接線按EDA實驗書上的接法,輸出端口有7個,驗證的時候總是有錯,最后只好

65、將輸出端口改成一個led[6..0],在功能上同樣也滿足驅動數(shù)碼管的功能。</p><p>  雖然在實驗中遇到了許多這樣那樣的大小問題,但是我還是積極的尋找解決問題的辦法,認真分析問題,研究問題,解決問題,最后終于設計出了數(shù)字秒表,并能實現(xiàn)各個功能端的作用。</p><p>  課程設計不僅教會了我課本上的知識,更使我自身的學習能力和遇到問題時分析思考問題的能力有了明顯提高,自身的意志和

溫馨提示

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

評論

0/150

提交評論