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

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  課程設(shè)計(jì)報(bào)告</b></p><p>  課程名稱: EDA技術(shù)與應(yīng)用 </p><p>  設(shè)計(jì)題目: 數(shù)字鐘設(shè)計(jì) </p><p><b>  數(shù)字鐘設(shè)計(jì)</b></p><p>  摘 要 : 系統(tǒng)使用EDA技術(shù)設(shè)計(jì)

2、了數(shù)字鐘,采用硬件描述語(yǔ)言VHDL按模塊化方式進(jìn)行設(shè)計(jì),然后進(jìn)行編程,時(shí)序仿真等。利用VHDL語(yǔ)言完成了數(shù)字鐘的設(shè)計(jì)。該數(shù)字鐘能實(shí)現(xiàn)時(shí)、分、秒計(jì)數(shù)的顯示功能,且以24小時(shí)循環(huán)計(jì)時(shí)。整個(gè)系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,使用方便,功能齊全,精度高,具有一定的開(kāi)發(fā)價(jià)值。</p><p>  關(guān)鍵字: 數(shù)字鐘;EDA;VHDL;</p><p><b>  一、設(shè)計(jì)要求</b></p&

3、gt;<p><b>  1.1、時(shí)鐘功能</b></p><p>  設(shè)計(jì)一個(gè)具有時(shí)、分、秒計(jì)時(shí)的數(shù)字鐘電路,計(jì)時(shí)采用24小時(shí)制。小時(shí)、分鐘可調(diào)的數(shù)字鐘。</p><p><b>  1.2、準(zhǔn)確性要求</b></p><p>  設(shè)計(jì)出的時(shí)鐘電路要確保高精度的要求,每天的誤差不得超過(guò)一秒。</p&g

4、t;<p>  二、數(shù)字鐘的基本原理</p><p>  1、具有時(shí)、分、秒計(jì)數(shù)顯示功能,以24小時(shí)循環(huán)計(jì)時(shí)。其中SECOND模塊為60進(jìn)制BCD碼計(jì)數(shù)電路,實(shí)現(xiàn)秒計(jì)時(shí)功能;MINUTE模塊為60進(jìn)制BCD碼計(jì)數(shù)電路,實(shí)現(xiàn)分計(jì)時(shí)功能;HOUR模塊為24進(jìn)制BCD碼計(jì)數(shù)電路,實(shí)現(xiàn)小時(shí)計(jì)時(shí)功能。</p><p>  2、有驅(qū)動(dòng)8位七段共陰極掃描數(shù)碼管的片選驅(qū)動(dòng)信號(hào)輸出和七段碼輸出

5、。SELTIME模塊產(chǎn)生8位數(shù)碼管的掃描驅(qū)動(dòng)信號(hào)SEL[2..0]和時(shí)鐘顯示數(shù)據(jù)(動(dòng)態(tài)顯示)DAOUT[3..0]。DELED模塊則為數(shù)碼管顯示時(shí)鐘數(shù)據(jù)的7段譯碼電路。</p><p><b>  三、方案論證</b></p><p>  3.1、數(shù)字鐘的基本組成</p><p>  數(shù)字鐘實(shí)際上是一個(gè)對(duì)標(biāo)準(zhǔn)頻率(1HZ)進(jìn)行計(jì)數(shù)的計(jì)數(shù)電路,其

6、基本組成電路如下圖所示:</p><p>  圖3.1 數(shù)字鐘原理圖</p><p>  圖(1)中,秒沖發(fā)生器產(chǎn)生秒脈沖,作為圖中各個(gè)計(jì)數(shù)器的脈沖信號(hào)。分、秒計(jì)數(shù)器要求設(shè)計(jì)為六十進(jìn)制計(jì)數(shù)器;時(shí)計(jì)數(shù)器則設(shè)計(jì)為二十四進(jìn)制計(jì)數(shù)器。時(shí)、分、秒的計(jì)時(shí)結(jié)果分別送入譯碼器中,經(jīng)譯碼器翻譯后,共由六個(gè)LED數(shù)碼管顯示出結(jié)果。因此,使用計(jì)數(shù)器作為計(jì)時(shí)電路是可以實(shí)現(xiàn)的。</p><p&

7、gt;<b>  四、各功能模塊</b></p><p>  4.1、小時(shí)計(jì)時(shí)功能</p><p><b>  實(shí)現(xiàn)程序如下:</b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>

8、;  use ieee.std_logic_unsigned.all;</p><p>  entity hour is</p><p>  port(reset,clk : in std_logic;</p><p>  daout : out std_logic_vector(7 downto 0));</p><p><b>

9、  end hour;</b></p><p>  architecture behav of hour is</p><p>  signal count : std_logic_vector(3 downto 0);</p><p>  signal counter : std_logic_vector(3 downto 0);</p>

10、;<p><b>  begin</b></p><p>  p1: process(reset,clk)</p><p><b>  begin</b></p><p>  if reset='0' then </p><p>  count<="00

11、00"; </p><p>  counter<="0000"; </p><p>  elsif(clk'event and clk='1') then</p><p>  if (counter<2) then</p><p>  if (count=9) then&l

12、t;/p><p>  count<="0000";</p><p>  counter<=counter + 1;</p><p><b>  else</b></p><p>  count<=count+1;</p><p><b>  end if

13、;</b></p><p><b>  else</b></p><p>  if (count=3) then</p><p>  count<="0000";</p><p>  counter<="0000";</p><p>

14、<b>  else</b></p><p>  count<=count+1;</p><p>  end if; </p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  

15、end process;</p><p>  daout(7 downto 4)<=counter;</p><p>  daout(3 downto 0)<=count;</p><p>  end behav;</p><p>  圖4.1 時(shí)計(jì)時(shí)功能模塊</p><p><b>  4.2

16、、分計(jì)時(shí)功能</b></p><p><b>  實(shí)現(xiàn)程序如下:</b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p>&

17、lt;p>  entity minute is</p><p>  port(reset,clk,sethour: in std_logic;</p><p>  daout : out std_logic_vector(7 downto 0);</p><p>  enhour : out std_logic);</p><p>  

18、end minute;</p><p>  architecture behav of minute is</p><p>  signal count : std_logic_vector(3 downto 0);</p><p>  signal counter : std_logic_vector(3 downto 0);</p><p

19、>  signal carry_out1 : std_logic;</p><p>  signal carry_out2 : std_logic;</p><p><b>  begin</b></p><p>  p1: process(reset,clk)</p><p><b>  begin&l

20、t;/b></p><p>  if reset='0' then </p><p>  count<="0000"; </p><p>  counter<="0000"; </p><p>  elsif(clk'event and clk='1

21、') then</p><p>  if (counter<5) then</p><p>  if (count=9) then</p><p>  count<="0000";</p><p>  counter<=counter + 1;</p><p><b&

22、gt;  else</b></p><p>  count<=count+1;</p><p><b>  end if;</b></p><p>  carry_out1<='0';</p><p><b>  else</b></p><

23、;p>  if (count=9) then</p><p>  count<="0000";</p><p>  counter<="0000";</p><p>  carry_out1<='1';</p><p><b>  else</b&

24、gt;</p><p>  count<=count+1;</p><p>  carry_out1<='0';</p><p>  end if; </p><p><b>  end if;</b></p><p><b>  end if;</

25、b></p><p>  end process;</p><p>  p2: process(clk)</p><p><b>  begin</b></p><p>  if(clk'event and clk='0') then</p><p>  if (co

26、unter=0) then</p><p>  if (count=0) then</p><p>  carry_out2<='0';</p><p><b>  end if; </b></p><p><b>  else</b></p><p>

27、  carry_out2<='1'; </p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process; </p><p>  daout(7 downto 4)<=counte

28、r;</p><p>  daout(3 downto 0)<=count;</p><p>  enhour<=(carry_out1 and carry_out2) or sethour;</p><p>  end behav; </p><p>  圖4.2 分計(jì)時(shí)模塊</p><p>

29、<b>  4.3、秒計(jì)時(shí)功能</b></p><p><b>  實(shí)現(xiàn)程序如下;</b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all

30、;</p><p>  entity second is</p><p>  port(reset,clk,setmin : in std_logic;</p><p>  daout : out std_logic_vector(7 downto 0);</p><p>  enmin : out std_logic);</p>

31、<p>  end second;</p><p>  architecture behav of second is</p><p>  signal count : std_logic_vector(3 downto 0);</p><p>  signal counter : std_logic_vector(3 downto 0);<

32、/p><p>  signal carry_out1 : std_logic;</p><p>  signal carry_out2 : std_logic;</p><p><b>  begin</b></p><p>  p1: process(reset,clk)</p><p><b

33、>  begin</b></p><p>  if reset='0' then </p><p>  count<="0000"; </p><p>  counter<="0000"; </p><p>  elsif(clk'event a

34、nd clk='1') then</p><p>  if (counter<5) then</p><p>  if (count=9) then</p><p>  count<="0000";</p><p>  counter<=counter + 1;</p>&l

35、t;p><b>  else</b></p><p>  count<=count+1;</p><p><b>  end if;</b></p><p>  carry_out1<='0';</p><p><b>  else</b>&l

36、t;/p><p>  if (count=9) then</p><p>  count<="0000";</p><p>  counter<="0000";</p><p>  carry_out1<='1';</p><p><b>

37、  else</b></p><p>  count<=count+1;</p><p>  carry_out1<='0';</p><p>  end if; </p><p><b>  end if;</b></p><p><b> 

38、 end if;</b></p><p>  end process;</p><p>  daout(7 downto 4)<=counter;</p><p>  daout(3 downto 0)<=count;</p><p>  enmin<=carry_out1 or setmin;</p>

39、;<p>  end behav;</p><p>  圖4.3 秒計(jì)時(shí)模塊</p><p>  4.4、alert模塊</p><p><b>  實(shí)現(xiàn)程序如下:</b></p><p>  Library IEEE;</p><p>  use IEEE.std_logic_

40、1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity alert is</p><p><b>  Port(</b></p><p>  clkspk : in std_logic;</p><p>  sec

41、ond : in std_logic_vector(7 downto 0);</p><p>  minute : in std_logic_vector(7 downto 0);</p><p>  speak : out std_logic;</p><p>  lamp : out std_logic_vector(8 downto 0));</p>

42、;<p>  end alert;</p><p>  architecture behav of alert is</p><p>  signal divclkspk2 : std_logic;</p><p><b>  begin</b></p><p>  p1: process(clkspk)&

43、lt;/p><p><b>  begin</b></p><p>  if (clkspk'event and clkspk='1') then</p><p>  divclkspk2<=not divclkspk2;</p><p><b>  end if;</b>

44、</p><p>  end process;</p><p>  p2: process(second,minute)</p><p><b>  begin</b></p><p>  if (minute="01011001") then</p><p>  case s

45、econd is</p><p>  when "01010001"=>lamp<="000000001";speak<=divclkspk2;</p><p>  when "01010010"=>lamp<="000000010";speak<='0';&

46、lt;/p><p>  when "01010011"=>lamp<="000000100";speak<=divclkspk2;</p><p>  when "01010100"=>lamp<="000001000";speak<='0';</p>

47、<p>  when "01010101"=>lamp<="000010000";speak<=divclkspk2;</p><p>  when "01010110"=>lamp<="000100000";speak<='0';</p><p&g

48、t;  when "01010111"=>lamp<="001000000";speak<=divclkspk2;</p><p>  when "01011000"=>lamp<="010000000";speak<='0';</p><p>  when

49、"01011001"=>lamp<="100000000";speak<=clkspk;</p><p>  when others=>lamp<="000000000";</p><p><b>  end case;</b></p><p><b

50、>  end if;</b></p><p>  end process;</p><p>  end behav;</p><p>  圖4.4 alert模塊</p><p>  4.5、DELED模塊</p><p><b>  實(shí)現(xiàn)程序如下;</b></p>

51、<p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  ENTITY DELED IS</p><p><b>  PORT(</b></p><p>  S: IN STD_LOGIC_VECTOR(3 DOWNTO 0);

52、</p><p>  A,B,C,D,E,F,G,H: OUT STD_LOGIC);</p><p>  END DELED;</p><p>  ARCHITECTURE BEHAV OF DELED IS</p><p>  SIGNAL DATA:STD_LOGIC_VECTOR(3 DOWNTO 0);</p><

53、;p>  SIGNAL DOUT:STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p><b>  BEGIN</b></p><p><b>  DATA<=S;</b></p><p>  PROCESS(DATA)</p><p><b>  BEG

54、IN</b></p><p>  CASE DATA IS</p><p>  WHEN "0000"=>DOUT<="00111111";</p><p>  WHEN "0001"=>DOUT<="00000110";</p>&l

55、t;p>  WHEN "0010"=>DOUT<="01011011";</p><p>  WHEN "0011"=>DOUT<="01001111";</p><p>  WHEN "0100"=>DOUT<="01100110&quo

56、t;;</p><p>  WHEN "0101"=>DOUT<="01101101";</p><p>  WHEN "0110"=>DOUT<="01111101";</p><p>  WHEN "0111"=>DOUT<=&

57、quot;00000111";</p><p>  WHEN "1000"=>DOUT<="01111111";</p><p>  WHEN "1001"=>DOUT<="01101111";</p><p>  WHEN "1010&quo

58、t;=>DOUT<="01110111";</p><p>  WHEN "1011"=>DOUT<="01111100";</p><p>  WHEN "1100"=>DOUT<="00111001";</p><p>  WH

59、EN "1101"=>DOUT<="01011110";</p><p>  WHEN "1110"=>DOUT<="01111001";</p><p>  WHEN "1111"=>DOUT<="01000000";</p&g

60、t;<p>  WHEN OTHERS=>DOUT<="00000000";</p><p><b>  END CASE;</b></p><p>  END PROCESS;</p><p>  H<=DOUT(7);</p><p>  G<=DOUT(6)

61、;</p><p>  F<=DOUT(5);</p><p>  E<=DOUT(4);</p><p>  D<=DOUT(3);</p><p>  C<=DOUT(2);</p><p>  B<=DOUT(1);</p><p>  A<=DOUT(

62、0);</p><p>  END BEHAV;</p><p>  圖4.5 deled模塊</p><p>  4.6、seltime模塊</p><p><b>  實(shí)現(xiàn)程序如下:</b></p><p>  library ieee;</p><p>  use

63、ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity seltime is</p><p><b>  port(</b></p><p>  ckdsp : in std_logic;</p>

64、<p>  reset : in std_logic;</p><p>  second : in std_logic_vector(7 downto 0);</p><p>  minute : in std_logic_vector(7 downto 0);</p><p>  hour : in std_logic_vector(7 downto

65、 0);</p><p>  daout : out std_logic_vector(3 downto 0);</p><p>  sel : out std_logic_vector(2 downto 0));</p><p>  end seltime;</p><p>  architecture behav of seltime i

66、s</p><p>  signal sec : std_logic_vector(2 downto 0);</p><p><b>  begin</b></p><p>  process(reset,ckdsp)</p><p><b>  begin</b></p><p

67、>  if(reset='0') then</p><p>  sec<="000";</p><p>  elsif(ckdsp'event and ckdsp='1') then </p><p>  if(sec="111") then</p><

68、p>  sec<="000";</p><p><b>  else</b></p><p>  sec<=sec+1;</p><p><b>  end if;</b></p><p><b>  end if;</b></p&g

69、t;<p>  end process;</p><p>  process(sec,second,minute,hour)</p><p><b>  begin</b></p><p>  case sec is</p><p>  when "000"=>daout<=

70、second(3 downto 0);</p><p>  when "001"=>daout<=second(7 downto 4);</p><p>  when "011"=>daout<=minute(3 downto 0);</p><p>  when "100"=>

71、;daout<=minute(7 downto 4);</p><p>  when "110"=>daout<=hour(3 downto 0);</p><p>  when "111"=>daout<=hour(7 downto 4);</p><p>  when others=>d

72、aout<="1111";</p><p><b>  end case;</b></p><p>  end process;</p><p><b>  sel<=sec;</b></p><p>  end behav;</p><p>

73、  圖4.6 seltime模塊</p><p><b>  五、功能實(shí)現(xiàn)簡(jiǎn)述</b></p><p>  5.1、具有時(shí)、分、秒計(jì)數(shù)顯示功能,以24小時(shí)循環(huán)計(jì)時(shí)。其中SECOND模塊為60進(jìn)制BCD碼計(jì)數(shù)電路,實(shí)現(xiàn)秒計(jì)時(shí)功能;MINUTE為60進(jìn)制BCD碼計(jì)數(shù)電路,實(shí)現(xiàn)分計(jì)時(shí)功能;HOUR模塊為24進(jìn)制BCD碼計(jì)數(shù)電路,實(shí)現(xiàn)小時(shí)計(jì)時(shí)功能。</p>&

74、lt;p>  5.2、有驅(qū)動(dòng)8位七段共陰極掃描數(shù)碼管的片選驅(qū)動(dòng)信號(hào)輸出和七段碼輸出。SELTIME模塊產(chǎn)生8位數(shù)碼管的掃描驅(qū)動(dòng)信號(hào)SEL[2..0]和時(shí)鐘顯示數(shù)據(jù)(動(dòng)態(tài)顯示)DAOUT[3..0]。DELED模塊則為數(shù)碼管顯示時(shí)鐘數(shù)據(jù)的7段譯碼電路。</p><p>  根據(jù)圖1所示原理圖,對(duì)其進(jìn)行仿真,其仿真圖如下:</p><p>  圖5.1 實(shí)驗(yàn)仿真圖</p>

75、<p>  完成功能仿真之后,如圖所示對(duì)其進(jìn)行管腳鎖定,并下載到目標(biāo)芯片,將第一全局時(shí)鐘CLK1的跳線器接1Hz,第二全局時(shí)鐘CLK2的跳線器接1024Hz,第三全局時(shí)鐘CLK3的跳線器接32768Hz。撥位開(kāi)關(guān)KD1為清零控制開(kāi)關(guān)(高電平有效),KD2、KD3分別為小時(shí)調(diào)節(jié)、分鐘調(diào)節(jié)允許端(低電平允許調(diào)節(jié),高電平禁止調(diào)節(jié)/正常計(jì)時(shí))。按鍵K2、K3分別為小時(shí)調(diào)節(jié)、分鐘調(diào)節(jié)按鍵(僅當(dāng)KD2、KD3為低電平允許調(diào)節(jié)時(shí)有效),只

76、能加調(diào)節(jié)。數(shù)碼管SM6-SM1分別顯示小時(shí),分鐘,秒。</p><p><b>  結(jié)果顯示</b></p><p>  圖6.1 實(shí)驗(yàn)顯示圖</p><p><b>  心得體會(huì)</b></p><p>  這次實(shí)驗(yàn)中積累了如下經(jīng)驗(yàn):</p><p>  1、系統(tǒng)設(shè)計(jì)進(jìn)要

77、行充分的方案論證,不可盲目就動(dòng)手去做;</p><p>  2、實(shí)驗(yàn)中對(duì)每一個(gè)細(xì)節(jié)部分都要全面思考,要對(duì)特殊情況進(jìn)行處理;</p><p>  3、對(duì)于數(shù)字系統(tǒng),要考慮同步、異步問(wèn)題;</p><p>  4、數(shù)字電路的理論分析要結(jié)合時(shí)序圖;</p><p>  5、遇到問(wèn)題,要順藤摸瓜,分析清楚,不可胡亂改動(dòng),每做一次改變都要有充分的理由;

78、</p><p>  6、模塊化設(shè)計(jì)方法的優(yōu)點(diǎn)在于其簡(jiǎn)潔性,但是在實(shí)驗(yàn)設(shè)計(jì)中也發(fā)現(xiàn),在實(shí)驗(yàn)最終電路確定之前,要盡量減少模塊重疊嵌套,因?yàn)樵诳偟碾娐非枚ㄖ埃娐愤€不成熟,很多地方需要改進(jìn),如果在開(kāi)始時(shí)就進(jìn)行多層模塊化,里層模塊電路的修改將影響其外層的全部電路,這樣就是牽一發(fā)動(dòng)全身,很顯然,這樣將導(dǎo)致電路設(shè)計(jì)的低效,所以在設(shè)計(jì)過(guò)程中,一定要盡量減少超過(guò)兩層的模塊;</p><p>  7、遇

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論