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

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  電子課程設(shè)計(jì)</b></p><p><b>  —數(shù)字秒表的設(shè)計(jì)</b></p><p><b>  數(shù)字秒表的設(shè)計(jì)</b></p><p><b>  一、設(shè)計(jì)任務(wù)與要求</b></p><p>  1、數(shù)字秒表的計(jì)時(shí)范圍

2、是0秒~59分59.99秒,顯示的最長(zhǎng)時(shí)間為59分59秒。</p><p>  2、數(shù)字秒表的計(jì)時(shí)精度是10ms。</p><p>  3、復(fù)位開關(guān)可以在任何情況下使用,即便在計(jì)時(shí)過程中,只要按一下復(fù)位開關(guān),計(jì)時(shí)器就清零,并做好下次計(jì)時(shí)的準(zhǔn)備。</p><p>  4、具有啟/停開關(guān),即按一下啟/停開關(guān),啟動(dòng)計(jì)時(shí)器開始計(jì)時(shí),再按一下啟/停開關(guān)則停止計(jì)時(shí)。</p

3、><p><b>  二、總體框圖</b></p><p>  由頻率信號(hào)輸出端輸出頻率為100HZ的時(shí)鐘信號(hào),輸入到微妙模塊的時(shí)鐘端clk,微妙模塊為100進(jìn)制的計(jì)數(shù)器,產(chǎn)生的進(jìn)位信號(hào)co輸入到下一級(jí)秒模塊的</p><p>  時(shí)鐘端,以此類推,直到分模塊計(jì)數(shù)到59進(jìn)60時(shí),產(chǎn)生的進(jìn)位信號(hào)不輸出,計(jì)數(shù)清零。將微妙、秒、分產(chǎn)生的計(jì)數(shù)通過置數(shù)/位選

4、再通過顯示模塊實(shí)時(shí)顯示。</p><p>  設(shè)計(jì)方案:利用一塊芯片完成除時(shí)鐘源,按鍵和顯示器之外的所有數(shù)字電路功能。所有數(shù)字邏輯功能都在CPLD器件上用VHDL語言實(shí)現(xiàn)。這樣設(shè)計(jì)具有體積小,設(shè)計(jì)周期短,調(diào)試方便,故障率地和修改升級(jí)容易等特點(diǎn),</p><p>  本設(shè)計(jì)采用自頂向下,混合輸入方式(原理圖輸入——頂層文件鏈接和VHDL語言輸入——各模塊程序設(shè)計(jì))實(shí)現(xiàn)數(shù)字秒表的設(shè)計(jì),下載和調(diào)

5、試。</p><p><b>  三、功能模塊</b></p><p><b>  微秒模塊</b></p><p>  采用VHDL語言輸入方式,以時(shí)鐘clk,清零信號(hào)clr以及暫停信號(hào)STOP為進(jìn)程敏感變量,程序如下:</p><p>  library ieee;</p><

6、;p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity MINSECONDb is</p><p>  port(clk,clrm,stop:in std_logic;----時(shí)鐘/清零信號(hào)</p><p>

7、;  secm1,secm0:out std_logic_vector(3 downto 0);----秒高位/低位</p><p>  co:out std_logic);-------輸出/進(jìn)位信號(hào)</p><p>  end MINSECONDb;</p><p>  architecture SEC of MINSECONDb is</p>&

8、lt;p>  signal clk1,DOUT2:std_logic;</p><p><b>  begin</b></p><p>  process(clk,clrm)</p><p>  variable cnt1,cnt0:std_logic_vector(3 downto 0);---計(jì)數(shù)</p><p&g

9、t;  VARIABLE COUNT2 :INTEGER RANGE 0 TO 10 begin</p><p>  IF CLK'EVENT AND CLK='1'THEN</p><p>  IF COUNT2>=0 AND COUNT2<10 THEN</p><p>  COUNT2:=COUNT2+1;</p>

10、;<p>  ELSE COUNT2:=0;</p><p>  DOUT2<= NOT DOUT2;</p><p><b>  END IF;</b></p><p><b>  END IF;</b></p><p>  if clrm='1' then--

11、--當(dāng)clr為1時(shí),高低位均為0</p><p>  cnt1:="0000";</p><p>  cnt0:="0000";</p><p>  elsif clk'event and clk='1' then</p><p>  if stop='1' th

12、en</p><p>  cnt0:=cnt0;</p><p>  cnt1:=cnt1;</p><p><b>  end if;</b></p><p>  if cnt1="1001" and cnt0="1000" ;</p><p>  th

13、en----當(dāng)記數(shù)為98(實(shí)際是經(jīng)過59個(gè)記時(shí)脈沖)</p><p>  co<='1';----進(jìn)位</p><p>  cnt0:="1001";----低位為9</p><p>  elsif cnt0<"1001" then----小于9時(shí)</p><p>  cnt

14、0:=cnt0+1;----計(jì)數(shù)</p><p>  --elsif cnt0="1001" then</p><p>  --clk1<=not clk1;</p><p><b>  else</b></p><p>  cnt0:="0000";</p>

15、<p>  if cnt1<"1001" then----高位小于9時(shí)</p><p>  cnt1:=cnt1+1;</p><p><b>  else</b></p><p>  cnt1:="0000"; </p><p><b>  co<

16、;='0'; </b></p><p><b>  end if; </b></p><p><b>  end if; </b></p><p><b>  end if;</b></p><p>  secm1<=cnt1;</p&g

17、t;<p>  secm0<=cnt0;</p><p>  end process;</p><p><b>  end SEC;</b></p><p><b>  程序生成器件如圖:</b></p><p>  微妙模塊生成的器件可以實(shí)現(xiàn)帶有100進(jìn)制進(jìn)位和清零功能,暫停等

18、功能,MINSECONDb輸入為100HZ脈沖和低電平的清零信號(hào)CLR與暫停信號(hào)STOP,輸出微妙個(gè)位、十位及進(jìn)位信號(hào)CO。</p><p><b>  2、秒模塊</b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  u

19、se ieee.std_logic_unsigned.all;</p><p>  entity SECOND is</p><p>  port(clk,clr:in std_logic;----時(shí)鐘/清零信號(hào)</p><p>  sec1,sec0:out std_logic_vector(3 downto 0);----秒高位/低位</p>&l

20、t;p>  co:out std_logic);-------輸出/進(jìn)位信號(hào)</p><p>  end SECOND;</p><p>  architecture SEC of SECOND is</p><p><b>  begin</b></p><p>  process(clk,clr)</p&

21、gt;<p>  variable cnt1,cnt0:std_logic_vector(3 downto 0);---計(jì)數(shù)</p><p><b>  begin</b></p><p>  if clr='1' then----當(dāng)ckr為1時(shí),高低位均為0</p><p>  cnt1:="0000&

22、quot;;</p><p>  cnt0:="0000";</p><p>  elsif clk'event and clk='1' then</p><p>  if cnt1="0101" and cnt0="1000" then----當(dāng)記數(shù)為58(實(shí)際是經(jīng)過59個(gè)記時(shí)脈沖

23、)</p><p>  co<='1';----進(jìn)位</p><p>  cnt0:="1001";----低位為9</p><p>  elsif cnt0<"1001" then----小于9時(shí)</p><p>  cnt0:=cnt0+1;----計(jì)數(shù)</p>

24、;<p><b>  else</b></p><p>  cnt0:="0000";</p><p>  if cnt1<"0101" then----高位小于5時(shí)</p><p>  cnt1:=cnt1+1;</p><p><b>  else

25、</b></p><p>  cnt1:="0000";</p><p><b>  co<='0';</b></p><p><b>  end if;</b></p><p><b>  end if;</b></

26、p><p><b>  end if;</b></p><p>  sec1<=cnt1;</p><p>  sec0<=cnt0;</p><p>  end process;</p><p><b>  end SEC;</b></p><p

27、><b>  程序生成器件如圖:</b></p><p>  此器件實(shí)現(xiàn)60進(jìn)制帶有進(jìn)位功能和清零功能的秒計(jì)數(shù)模塊SECOND,輸入為微妙模塊的進(jìn)位信號(hào)和低電平有效的清零信號(hào)CLR,輸出秒個(gè)位、十位及進(jìn)位信號(hào)CO。</p><p><b>  3、分模塊</b></p><p>  library ieee;<

28、/p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity MINUTE is</p><p>  port(clk,en:in std_logic;</p><p>  min1,min

29、0:out std_logic_vector(3 downto 0);</p><p>  co:out std_logic);</p><p>  process(clk)</p><p>  variable cnt1,cnt0:std_logic_vector(3 downto 0);</p><p><b>  begin&

30、lt;/b></p><p>  if clk'event and clk='1' then</p><p>  if en='1' then</p><p>  if cnt1="0101" and cnt0="1000" then</p><p><

31、;b>  co<='1';</b></p><p>  cnt0:="1001";</p><p>  elsif cnt0<"1001" then</p><p>  cnt0:=cnt0+1;</p><p><b>  else</b&

32、gt;</p><p>  cnt0:="0000";</p><p>  end MINUTE;</p><p>  architecture MIN of MINUTE is</p><p><b>  begin</b></p><p>  if cnt1<&quo

33、t;0101" then</p><p>  cnt1:=cnt1+1;</p><p><b>  else</b></p><p>  cnt1:="0000";</p><p><b>  co<='0';</b></p>&l

34、t;p><b>  end if;</b></p><p><b>  end if;</b></p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  min1<=cnt1;&

35、lt;/p><p>  min0<=cnt0;</p><p>  end process;</p><p><b>  end MIN;</b></p><p><b>  程序生成器件如圖:</b></p><p>  此器件實(shí)現(xiàn)進(jìn)制帶有進(jìn)位和置數(shù)功能的分計(jì)數(shù)模塊MIN

36、UTE,輸入為妙進(jìn)位信號(hào)和高電平有效的使能信號(hào)EN,輸出分個(gè)位、十位及進(jìn)位信號(hào)CO。</p><p><b>  4、動(dòng)態(tài)掃描模塊</b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic

37、_unsigned.all;</p><p>  use ieee.std_logic_arith.all;</p><p>  entity SELTIME is</p><p><b>  port(</b></p><p>  clk:in std_logic;------掃描時(shí)鐘</p><p

38、>  secm1,secm0,sec1,sec0,min1,min0,h1,h0:in std_logic_vector(3 downto 0);-----分別為秒個(gè)位/時(shí)位;分個(gè)位/</p><p>  daout:out std_logic_vector(3 downto 0);----------------輸出</p><p>  sel:out std_logic_vect

39、or(2 downto 0));-----位選信號(hào)</p><p>  end SELTIME;</p><p>  architecture fun of SELTIME is</p><p>  signal count:std_logic_vector(2 downto 0);----計(jì)數(shù)信號(hào)</p><p><b>  be

40、gin</b></p><p>  sel<=count;</p><p>  process(clk)</p><p><b>  begin</b></p><p>  if(clk'event and clk='1') then</p><p>  

41、if(count>="111") then</p><p>  count<="000";</p><p><b>  else</b></p><p>  count<=count+1;</p><p><b>  end if;</b>&

42、lt;/p><p><b>  end if;</b></p><p>  case count is</p><p>  when"111"=>daout<= secm0;</p><p>  when"110"=>daout<= secm1;</p&g

43、t;<p>  when"101"=>daout<= sec0;</p><p>  when"100"=>daout<= sec1;</p><p>  when"011"=>daout<=min0; </p><p>  when"010&

44、quot;=>daout<=min1;</p><p>  when"001"=>daout<=h0;</p><p>  when others =>daout<=h1;</p><p><b>  end case;</b></p><p>  end proc

45、ess;</p><p><b>  end fun;</b></p><p><b>  程序生成器件如圖:</b></p><p>  此器件實(shí)現(xiàn)復(fù)用功能模塊SELTIME,輸入為妙(含個(gè)/十位)、分、時(shí)、掃描時(shí)鐘CLK,輸出為D和顯示控制信號(hào)SEL。</p><p>  5、顯示模塊libra

46、ry ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  entity DISPLAY is</p><p>  port(d:in std_logic_vector(3 downto 0);----連接seltime掃描部分d信號(hào)</p><p>  q:out std_logic_

47、vector(6 downto 0));----輸出段選信號(hào)(電平)</p><p>  end DISPLAY;</p><p>  architecture disp_are of DISPLAY is</p><p><b>  begin</b></p><p>  process(d)</p>&

48、lt;p><b>  begin</b></p><p><b>  case d is</b></p><p>  when"0000" =>q<="0111111";--顯示0</p><p>  when"0001" =>q<=

49、"0000110";--顯示1</p><p>  when"0010" =>q<="1011011";--顯示2</p><p>  when"0011" =>q<="1001111";--顯示3</p><p>  when"01

50、00" =>q<="1100110";--顯示4</p><p>  when"0101" =>q<="1101101";--顯示5</p><p>  when"0110" =>q<="1111101";--顯示6</p><

51、;p>  when"0111" =>q<="0100111";--顯示7</p><p>  when"1000" =>q<="1111111";--顯示8</p><p>  when others =>q<="1101111";--顯示9<

52、/p><p><b>  end case;</b></p><p>  end process;</p><p>  end disp_are;</p><p><b>  生成器件如圖所示:</b></p><p>  DISPLAY實(shí)現(xiàn)譯碼顯示功能,輸入為D,輸出為Q<

53、;/p><p>  注意:以上所有程序均經(jīng)過硬件測(cè)試。</p><p><b>  四、總體設(shè)計(jì)電路圖</b></p><p>  頂層文件(原理圖輸入)</p><p><b>  五 心得體會(huì)</b></p><p>  經(jīng)過本次課程設(shè)計(jì),我發(fā)現(xiàn)以我現(xiàn)在的學(xué)習(xí)水平,獨(dú)立自主的

溫馨提示

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

評(píng)論

0/150

提交評(píng)論