數(shù)字邏輯課程設(shè)計(jì)---數(shù)字鐘的設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩7頁(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>  計(jì)算機(jī)科學(xué)學(xué)院</b></p><p>  數(shù)字邏輯課程設(shè)計(jì)報(bào)告</p><p><b>  數(shù)字鐘的設(shè)計(jì)</b></p><p>  班級(jí): </p><p>  學(xué)號(hào): </p&g

2、t;<p>  姓名: </p><p>  同組者: </p><p>  日期: 2010.7.2 </p><p><b>  1 題目與要求</b></p><p><b>  1.1 問(wèn)題

3、的提出</b></p><p>  設(shè)計(jì)一個(gè)數(shù)字時(shí)鐘,具有以下功能:</p><p>  1、秒、分為00~59六十進(jìn)制計(jì)數(shù)器。</p><p>  2、時(shí)為00~23二十四進(jìn)制計(jì)數(shù)器。</p><p><b>  3、整點(diǎn)報(bào)時(shí)。</b></p><p><b>  4、數(shù)碼

4、管顯示。</b></p><p><b>  5、校時(shí)功能。</b></p><p><b>  1.2 設(shè)計(jì)原理</b></p><p>  數(shù)字鐘的主體是計(jì)數(shù)器,它記錄并顯示接收到的秒脈沖個(gè)數(shù),其中秒和分為模60計(jì)數(shù)器,小時(shí)是模24計(jì)數(shù)器,分別產(chǎn)生3位BCD碼。BCD碼經(jīng)譯碼,驅(qū)動(dòng)后接數(shù)碼管顯示電路。&l

5、t;/p><p>  秒模60計(jì)數(shù)器的進(jìn)位作為分模60計(jì)數(shù)器的時(shí)鐘,分模60計(jì)數(shù)器的進(jìn)位作為模24計(jì)數(shù)器的時(shí)鐘。</p><p>  為了實(shí)現(xiàn)手動(dòng)調(diào)整時(shí)間,在外部增加了switch,add,clk和set按鍵,在switch值為1時(shí),正常計(jì)數(shù);switch值為0時(shí)校對(duì)時(shí)間,此時(shí)set為10時(shí)校對(duì)分,set為11時(shí)校對(duì)時(shí),校對(duì)動(dòng)作是通過(guò)clk來(lái)實(shí)現(xiàn)的,clk按下一次對(duì)應(yīng)的數(shù)值加1;同時(shí)還在外部增

6、加了一個(gè)清零按鍵clear,當(dāng)clear為1時(shí)執(zhí)行清零操作。數(shù)字鐘顯示為59分52,54,56,58秒時(shí),報(bào)時(shí)鬧鐘會(huì)響起。</p><p><b>  2 設(shè)計(jì)過(guò)程</b></p><p><b>  2.1 邏輯描述</b></p><p><b>  源代碼:</b></p><

7、;p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_arith.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity clock is<

8、;/p><p>  port(clk,switch,clear,add:in std_logic;</p><p>  set :in std_logic_vector(1 downto 0);</p><p>  second0,second1,minute0,minute1,hour0,hour1:out std_logic_vector(3

9、downto 0);</p><p>  naozhong:out std_logic_vector(0 downto 0));</p><p><b>  end;</b></p><p>  architecture arch of clock is</p><p>  signal clk0,clr,m0,m1,m

10、2,m3,m4:std_logic;</p><p>  signal cout0:std_logic_vector(3 downto 0);</p><p>  signal cout1:std_logic_vector(3 downto 0);</p><p>  signal cout2:std_logic_vector(3 downto 0);</p&

11、gt;<p>  signal cout3:std_logic_vector(3 downto 0);</p><p>  signal cout4:std_logic_vector(3 downto 0);</p><p>  signal cout5:std_logic_vector(3 downto 0);</p><p>  signal co

12、ut6:std_logic_vector(0 downto 0);</p><p><b>  begin</b></p><p>  start:process(switch)</p><p><b>  begin</b></p><p>  if(switch='0')then

13、</p><p>  clk0<=clk;</p><p><b>  else</b></p><p>  if(add='1')then</p><p>  clk0<='1';</p><p><b>  else</b>&l

14、t;/p><p>  clk0<='0';</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process start;</p><p>  p1:process(clr,c

15、lk0)</p><p><b>  begin</b></p><p>  if(set="00" or set="01")then</p><p>  if(clr='1')then</p><p>  cout0<="0000";m0

16、<='0';</p><p>  elsif( rising_edge (clk0)) then</p><p>  if(cout0="1001") then</p><p>  cout0<="0000";m0<='1';</p><p><b

17、>  else</b></p><p>  cout0<=cout0+'1';m0<='0';</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p><b>  

18、end if;</b></p><p>  end process p1;</p><p>  p2:process(clr,m0)</p><p><b>  begin</b></p><p>  if(set="00" or set="01")then</p

19、><p>  if(clr='1') then</p><p>  cout1<="0000";m1<='0';</p><p>  elsif( rising_edge (m0)) then</p><p>  if(cout1="0101") then<

20、/p><p>  cout1<="0000";m1<='1';</p><p><b>  else</b></p><p>  cout1<=cout1+'1';m1<='0';</p><p><b>  end if;

21、</b></p><p><b>  end if;</b></p><p>  elsif(set="10")then</p><p>  if(clk0='1')then</p><p><b>  m1<='1';</b>&

22、lt;/p><p><b>  else</b></p><p><b>  m1<='0';</b></p><p><b>  end if;</b></p><p><b>  end if;</b></p><

23、p>  end process p2;</p><p>  p3:process(clr,m1)</p><p><b>  begin</b></p><p>  if(set="00" or set="10")then</p><p>  if(clr='1

24、9;) then</p><p>  cout2<="0000";m2<='0';</p><p>  elsif(rising_edge (m1)) then</p><p>  if(cout2="1001") then</p><p>  cout2<="

25、;0000";m2<='1';</p><p><b>  else</b></p><p>  cout2<=cout2+'1';m2<='0';</p><p><b>  end if;</b></p><p><

26、;b>  end if;</b></p><p><b>  end if;</b></p><p>  end process p3;</p><p>  p4:process(clr,m2)</p><p><b>  begin</b></p><p>

27、;  if(set="00" or set="10")then</p><p>  if(clr='1') then</p><p>  cout3<="0000";m3<='0';</p><p>  elsif( rising_edge (m2)) then&

28、lt;/p><p>  if(cout3="0101") then</p><p>  cout3<="0000";m3<='1';</p><p><b>  else</b></p><p>  cout3<=cout3+'1';m

29、3<='0';</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  elsif(set="11")then</p><p>  if(clk0='1')then</

30、p><p><b>  m3<='1';</b></p><p><b>  else</b></p><p><b>  m3<='0';</b></p><p><b>  end if;</b></p&g

31、t;<p><b>  end if;</b></p><p>  end process p4;</p><p>  p5:process(clr,m3)</p><p><b>  begin</b></p><p>  if(set="00" or set=&

32、quot;11")then</p><p>  if(clr='1') then</p><p>  cout4<="0000";m4<='0';</p><p>  elsif( rising_edge (m3)) then</p><p>  if(cout4=&q

33、uot;1001" ) then</p><p>  cout4<="0000";m4<='1';</p><p>  elsif(cout5="0010" and cout4="0011")then</p><p>  cout4<="0000&quo

34、t;;m4<='1';</p><p><b>  else</b></p><p>  cout4<=cout4+'1';m4<='0';</p><p><b>  end if;</b></p><p><b> 

35、 end if;</b></p><p><b>  end if;</b></p><p>  end process p5;</p><p>  p6:process(clr,m4)</p><p><b>  begin</b></p><p>  if(s

36、et="00" or set="11")then</p><p>  if(clr='1') then</p><p>  cout5<="0000";</p><p>  elsif( rising_edge (m4)) then</p><p>  if(c

37、out5="0010" and cout4="0011") then</p><p>  cout5<="0000";</p><p><b>  else</b></p><p>  cout5<=cout5+'1';</p><p&g

38、t;<b>  end if;</b></p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process p6;</p><p>  p7:process(clk0,clear)</p>

39、;<p><b>  begin</b></p><p>  if(rising_edge(clk0)) then</p><p>  if(cout5>="0010" and cout4="0011" and cout3="0101" and cout2="1001"

40、 and cout1="0101" and cout0="1001") then</p><p><b>  clr<='1';</b></p><p><b>  else</b></p><p><b>  clr<='0';

41、</b></p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  if(clear='1')then</p><p><b>  clr<='1';</b>&l

42、t;/p><p><b>  else</b></p><p>  clr<='0';</p><p><b>  end if;</b></p><p>  end process p7;</p><p>  p8:process(m0,m1,

43、m2,m3)</p><p><b>  begin</b></p><p>  if(cout3="0101" and cout2="1001" and cout1="0101" and (cout0="0010" or cout0="0100" or cout0=&

44、quot;0110" or cout0="1000"</p><p><b>  )) then</b></p><p>  cout6<="1";</p><p><b>  else</b></p><p>  cout6<=&quo

45、t;0";</p><p><b>  end if;</b></p><p>  end process p8;</p><p>  output:process(m0,m1,m2,m3,m4)</p><p><b>  begin</b></p><p>  

46、second0<=cout0;</p><p>  second1<=cout1;</p><p>  minute0<=cout2;</p><p>  minute1<=cout3;</p><p>  hour0 <=cout4;</p><p>  hour1 <=cou

47、t5;</p><p>  naozhong <=cout6;</p><p>  end process output;</p><p><b>  end arch;</b></p><p>  2.2 編譯(Compilation)</p><p>  將實(shí)驗(yàn)VHDL代碼寫(xiě)入后,利用編

48、譯工具對(duì)代碼進(jìn)行編譯,檢查代碼中是否出現(xiàn)錯(cuò)誤,在編譯通過(guò)之后才能進(jìn)行仿真,下載等操作</p><p>  2.3 邏輯功能仿真(Simulation)</p><p>  編譯通過(guò)后,利用仿真工具對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行仿真,預(yù)先知道可編程芯片在設(shè)計(jì)系統(tǒng)中的運(yùn)行狀態(tài)。</p><p>  先建立向量波形文件,進(jìn)入仿真環(huán)境后,利用仿真工具欄中的工具設(shè)定各個(gè)輸入,最后開(kāi)始功能仿真

49、</p><p><b>  仿真圖: </b></p><p>  2.4下載(Programming)</p><p>  仿真結(jié)果與預(yù)期結(jié)果一致之后,就可以通過(guò)下載電纜將設(shè)計(jì)結(jié)果燒錄到可編程邏輯器件中,然后才可以接線進(jìn)行實(shí)際結(jié)果驗(yàn)證。</p><p><b>  2.5 驗(yàn)證</b><

50、;/p><p>  接通電路后,觀察最終結(jié)果是否符合要求。Switch鍵置1,看時(shí)鐘是否正常計(jì)數(shù);清零鍵置1,看時(shí),分,秒是否都清零;switch鍵置0,set鍵置10或11,并且同時(shí)按clk鍵,分或者是時(shí)是否實(shí)現(xiàn)了調(diào)整;時(shí)鐘顯示到鬧鐘所對(duì)應(yīng)時(shí)間時(shí),是否會(huì)有聲音等。</p><p><b>  3 設(shè)計(jì)總結(jié)</b></p><p>  通過(guò)這次VH

51、DL課程設(shè)計(jì),我學(xué)到了很多,對(duì)于原本掌握的不好的數(shù)字邏輯相關(guān)知識(shí),在課程設(shè)計(jì)具體實(shí)踐中有了很深刻的認(rèn)識(shí),在這次VHDL課程設(shè)計(jì)過(guò)程中遇到了不少困難,如對(duì)VHDL語(yǔ)言掌握有一定欠缺,在改善代碼過(guò)程中花費(fèi)了不少時(shí)間,因?qū)浖牧私獠粔?,模擬仿真時(shí)也遇到阻礙,不過(guò)最終經(jīng)過(guò)思考和合作解決了問(wèn)題。這次設(shè)計(jì)加強(qiáng)了我們動(dòng)手思考,解決問(wèn)題的能力。</p><p><b>  5 參考文獻(xiàn)</b></p

溫馨提示

  • 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)論