數(shù)字邏輯課程設(shè)計---數(shù)字鐘的設(shè)計_第1頁
已閱讀1頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  計算機科學(xué)學(xué)院</b></p><p>  數(shù)字邏輯課程設(shè)計報告</p><p><b>  數(shù)字鐘的設(shè)計</b></p><p>  班級: </p><p>  學(xué)號: </p&g

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

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

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

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

6、加了一個清零按鍵clear,當(dāng)clear為1時執(zhí)行清零操作。數(shù)字鐘顯示為59分52,54,56,58秒時,報時鬧鐘會響起。</p><p><b>  2 設(shè)計過程</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>  將實驗VHDL代碼寫入后,利用編

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

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

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

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

溫馨提示

  • 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

提交評論