江蘇大學(xué)數(shù)字邏輯課程設(shè)計(jì)數(shù)字時(shí)鐘_第1頁(yè)
已閱讀1頁(yè),還剩11頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  JIANGSU NIVERSITY</p><p><b>  課程設(shè)計(jì)報(bào)告</b></p><p>  學(xué)院:計(jì)算機(jī)科學(xué)與通信工程</p><p><b>  班級(jí):網(wǎng)絡(luò)工程</b></p><p><b>  姓名:</b></p>&l

2、t;p><b>  學(xué)號(hào):</b></p><p><b>  指導(dǎo)老師:</b></p><p>  報(bào)告日期 :2016年1月15日</p><p>  目 錄</p><p><b> ?、?設(shè)計(jì)目的1</b></p><

3、;p><b>  Ⅱ.設(shè)計(jì)內(nèi)容1</b></p><p><b> ?、?設(shè)計(jì)原理1</b></p><p><b>  Ⅳ.具體實(shí)現(xiàn)2</b></p><p><b> ?。?)頂層圖2</b></p><p><b> ?。?)

4、代碼2</b></p><p><b>  1.24進(jìn)制:2</b></p><p>  2. 60進(jìn)制:3</p><p><b>  3.動(dòng)態(tài)顯示:4</b></p><p><b>  4. 分頻器:5</b></p><p>

5、;  5. 二路選擇器:6</p><p><b>  6.整點(diǎn)報(bào)時(shí):7</b></p><p><b>  7.鬧鐘設(shè)置:8</b></p><p>  8.alarmcmp:9</p><p><b>  9.消抖:9</b></p><p&g

6、t;<b> ?、?心得體會(huì)10</b></p><p><b> ?、?設(shè)計(jì)目的</b></p><p>  設(shè)計(jì)一個(gè)擁有:正常的時(shí)分秒計(jì)數(shù)功能,實(shí)現(xiàn)校時(shí)校分清零的功能,利用揚(yáng)聲器實(shí)現(xiàn)整點(diǎn)報(bào)時(shí)和鬧鐘功能的多功能數(shù)字鐘。</p><p><b>  Ⅱ.設(shè)計(jì)內(nèi)容</b></p><

7、;p>  整個(gè)系統(tǒng)分成七個(gè)模塊進(jìn)行:計(jì)時(shí)模塊、校時(shí)模塊、整點(diǎn)報(bào)時(shí)模塊、分頻模塊、動(dòng)態(tài)掃描模塊,動(dòng)態(tài)顯示模塊、鬧鐘模塊。</p><p>  l、能進(jìn)行正常的時(shí)、分、秒計(jì)時(shí)功能,分別由6個(gè)數(shù)碼顯示24小時(shí)、60分鐘的計(jì)數(shù)器顯示。</p><p>  2、能利用實(shí)驗(yàn)系統(tǒng)上的按鈕實(shí)現(xiàn)“校時(shí)”、“校分”功能;</p><p>  3、能利用揚(yáng)聲器做整點(diǎn)報(bào)時(shí):</

8、p><p><b>  4、定時(shí)鬧鐘功能</b></p><p>  5、用層次化設(shè)計(jì)方法設(shè)計(jì)該電路,用硬件描述語(yǔ)言編寫(xiě)各個(gè)功能模塊。</p><p>  6、報(bào)時(shí)功能。報(bào)時(shí)功能用功能仿真的仿真驗(yàn)證,可通過(guò)觀察有關(guān)波形確認(rèn)電路設(shè)計(jì)是否正確。</p><p><b> ?、?設(shè)計(jì)原理</b></p&

9、gt;<p>  1 計(jì)時(shí)模塊:使用一個(gè)二十四進(jìn)制和兩個(gè)六十進(jìn)制計(jì)數(shù)器級(jí)聯(lián),構(gòu)成數(shù)字鐘的基本框架。二十四進(jìn)制用于計(jì)時(shí),六十進(jìn)制用于計(jì)分和計(jì)秒。給秒計(jì)數(shù)器一個(gè)1hz的時(shí)鐘脈沖,分計(jì)數(shù)器以秒計(jì)數(shù)器的進(jìn)位作為計(jì)數(shù)脈沖,時(shí)計(jì)數(shù)器以分計(jì)數(shù)器的進(jìn)位作為計(jì)數(shù)脈沖。</p><p>  2 校時(shí)模塊:分別按下校時(shí)鍵和校分鍵,計(jì)數(shù)器增至所需時(shí)分?jǐn)?shù),按下清零鍵,秒計(jì)數(shù)器歸零。</p><p> 

10、 此處注意事項(xiàng):①按鍵“抖動(dòng)”消除。利用觸發(fā)器,如D觸發(fā)器,利用D觸發(fā)器邊沿觸發(fā)的特性,在除去時(shí)鐘邊沿來(lái)之前一瞬間之外的絕大部分時(shí)間都不能接受輸入,從而實(shí)現(xiàn)“消抖”。②校分時(shí),分計(jì)數(shù)器計(jì)數(shù)不應(yīng)對(duì)小時(shí)位產(chǎn)生影響,因而需要屏蔽此時(shí)分計(jì)數(shù)器的進(jìn)位信號(hào)。③需要設(shè)計(jì)二路選擇器對(duì)于正常計(jì)數(shù)以及校時(shí)進(jìn)行選擇。</p><p>  3 整點(diǎn)報(bào)時(shí)模塊:計(jì)時(shí)到59分50秒,每?jī)擅胍淮蔚鸵魣?bào)時(shí),整點(diǎn)進(jìn)行高音報(bào)時(shí),將報(bào)時(shí)信號(hào)接到實(shí)驗(yàn)板上

11、的揚(yáng)聲器輸出。、</p><p>  4 分頻模塊:通過(guò)不同進(jìn)制的計(jì)數(shù)將1khz的時(shí)鐘脈沖分頻出不同頻率的時(shí)鐘脈沖,以實(shí)現(xiàn)系統(tǒng)對(duì)多頻率時(shí)鐘信號(hào)的需求。</p><p>  5動(dòng)態(tài)顯示模塊:利用6個(gè)數(shù)碼管,將時(shí)分秒按照高低位輸出到數(shù)碼管上。其中掃描頻率超過(guò)人眼視覺(jué)暫留頻率就可以實(shí)現(xiàn)六個(gè)管同時(shí)顯示的視覺(jué)效果。</p><p>  6 鬧鐘模塊:需要新的計(jì)數(shù)器進(jìn)行定時(shí)鬧

12、鐘信號(hào)的存儲(chǔ),與正常計(jì)時(shí)狀態(tài)實(shí)現(xiàn)切換,設(shè)計(jì)一個(gè)比較模塊使鬧鐘和計(jì)時(shí)相等時(shí),開(kāi)始鳴叫,同時(shí)需要一個(gè)按鍵能夠控制鬧鐘的開(kāi)關(guān)。</p><p><b> ?、?具體實(shí)現(xiàn)</b></p><p><b> ?。?)頂層圖</b></p><p><b>  圖一:頂層圖</b></p><

13、p><b> ?。?)代碼</b></p><p><b>  1.24進(jìn)制:</b></p><p>  時(shí)計(jì)數(shù)器:模塊圖如圖。24進(jìn)制無(wú)進(jìn)位計(jì)數(shù)器,當(dāng)計(jì)數(shù)信號(hào)計(jì)到23后再檢測(cè)到計(jì)數(shù)信號(hào)時(shí)會(huì)自動(dòng)歸零。帶清零,clk輸入為分秒進(jìn)位相與的結(jié)果。qh為十位,ql為個(gè)位。</p><p>  library ieee;&l

14、t;/p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity cnt24 is</p><p>  port(clk:in std_logic;</p><p>  qh,ql:out

15、std_logic_vector(3 downto 0);</p><p>  tc:out std_logic);</p><p>  end cnt24;</p><p>  architecture one of cnt24 is</p><p><b>  begin</b></p><p&g

16、t;  process(clk)</p><p>  variable iql,iqh:std_logic_vector(3 downto 0):="0000";</p><p><b>  begin</b></p><p>  if clk'event and clk='1' then <

17、/p><p>  iql:=iql+1;</p><p>  if iql="1010" then</p><p>  iqh:=iqh+1; </p><p>  iql:="0000";</p><p><b>  end if;</b></p>

18、<p>  if (iqh="0010")and(iql="0100") then</p><p>  iqh:="0000"; </p><p>  iql:="0000";</p><p>  end if; </p><p><

19、;b>  end if;</b></p><p>  ql<=iql; </p><p><b>  qh<=iqh;</b></p><p>  end process; </p><p>  end one; </p><p>

20、<b>  2. 60進(jìn)制: </b></p><p>  秒計(jì)數(shù)器模塊設(shè)計(jì):六十進(jìn)制帶進(jìn)位計(jì)數(shù)器,可清零,clk輸入信號(hào)為1Hz脈沖,當(dāng)ql計(jì)滿(mǎn)9后qh增加1,當(dāng)ql滿(mǎn)9且qh記滿(mǎn)5,ql、qh同時(shí)歸零,co輸出為高電平。qh為十位ql為個(gè)位。</p><p>  library ieee;</p><p>  use ieee.std_lo

21、gic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity cnt60 is</p><p>  port(clk,clr:in std_logic;</p><p>  ql,qh:buffer std_logic_vector(3 downto 0);

22、</p><p>  tc:out std_logic</p><p><b>  );</b></p><p>  end cnt60;</p><p>  architecture behavor of cnt60 is</p><p><b>  begin</b>&l

23、t;/p><p>  tc<='0' when(clk='1' and ql="0000" and qh="0110") else '1';</p><p>  process(clk,clr,ql,qh)</p><p>  variable iql,iqh:std_logi

24、c_vector(3 downto 0);</p><p><b>  begin</b></p><p>  if(clr='0'or (iql="0000" and iqh="0110"))then</p><p>  iql:="0000";</p>

25、<p>  iqh:="0000";</p><p>  else if(clk'event and clk='1')then</p><p>  iql:=iql+1;</p><p>  if(iql="1010")then</p><p>  iql:=&quo

26、t;0000";</p><p>  iqh:=qh+1;</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  ql&l

27、t;=iql;qh<=iqh;</p><p>  end process;</p><p>  END behavor;</p><p>  分計(jì)數(shù)器同上。注:不同之處為分的clk輸入信號(hào)為秒的進(jìn)位信號(hào)。</p><p><b>  3.動(dòng)態(tài)顯示:</b></p><p>  LIBRAR

28、Y IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY dtsm is</p><p><b>  port(</b></p><p>  

29、clk:in std_logic;</p><p>  h:in std_logic_vector(7 downto 0);</p><p>  m:in std_logic_vector(7 downto 0);</p><p>  s:in std_logic_vector(7 downto 0);</p><p>  seg7out:o

30、ut std_logic_vector(6 downto 0);</p><p>  sel:buffer std_logic_vector(2 downto 0)</p><p><b>  );</b></p><p><b>  END dtsm;</b></p><p>  ARCHITEC

31、TURE beha of dtsm is</p><p>  signal key:std_logic_vector(3 downto 0);</p><p><b>  BEGIN</b></p><p>  PROCESS(clk)</p><p>  variable dount:std_logic_vector(

32、2 downto 0):="000";</p><p><b>  BEGIN</b></p><p>  IF(rising_edge(clk))then</p><p>  IF dount="111" then</p><p>  dount:="000"

33、;</p><p><b>  ELSE</b></p><p>  dount:=dount+1;</p><p><b>  END IF;</b></p><p><b>  END IF;</b></p><p>  sel<=dount;

34、</p><p>  end process;</p><p>  PROCESS(sel)</p><p><b>  BEGIN</b></p><p>  CASE sel IS</p><p>  when "000"=>key<=h(7 downto 4)

35、;</p><p>  when "001"=>key<=h(3 downto 0);</p><p>  when "010"=>key<="1010";</p><p>  when "011"=>key<=m(7 downto 4);</p

36、><p>  when "100"=>key<=m(3 downto 0);</p><p>  when "101"=>key<="1010";</p><p>  when "110"=>key<=s(7 downto 4);</p>&

37、lt;p>  when "111"=>key<=s(3 downto 0);</p><p>  when others=>null;</p><p><b>  END CASE;</b></p><p>  END PROCESS;</p><p>  PROCESS (k

38、ey)</p><p><b>  BEGIN</b></p><p>  case key is</p><p>  when"0000"=>seg7out<="0111111";</p><p>  when"0001"=>seg7out&

39、lt;="0000110";</p><p>  when"0010"=>seg7out<="1011011";</p><p>  when"0011"=>seg7out<="1001111";</p><p>  when"010

40、0"=>seg7out<="1100110";</p><p>  when"0101"=>seg7out<="1101101";</p><p>  when"0110"=>seg7out<="1111101";</p><

41、p>  when"0111"=>seg7out<="0000111";</p><p>  when"1000"=>seg7out<="1111111";</p><p>  when"1001"=>seg7out<="1101111&qu

42、ot;;</p><p>  when"1010"=>seg7out<="1000000";</p><p>  when others=>null;</p><p><b>  END CASE;</b></p><p>  END PROCESS;</p

43、><p><b>  END beha;</b></p><p><b>  分頻器:</b></p><p>  模塊圖如圖。由四個(gè)分頻器構(gòu)成,輸入信號(hào)in_clk為1024Hz脈沖信號(hào)。把輸入的1024Hz信號(hào)分頻為四個(gè)脈沖信號(hào),即1Hz的秒脈沖,4Hz的校時(shí)、校分脈沖,64Hz的消抖脈沖,以及512Hz的蜂鳴器低音輸入。

44、</p><p><b>  :</b></p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_ARITH.ALL;</p><p>  USE IEEE.STD_L

45、OGIC_UNSIGNED.ALL;</p><p>  ENTITY freq_divider IS</p><p>  PORT(clk : IN STD_LOGIC;</p><p>  hz1 : OUT STD_LOGIC;</p><p>  hz4 : OUT STD_LOGIC;</p><p&

46、gt;  hz64 : OUT STD_LOGIC;</p><p>  hz512 : OUT STD_LOGIC);</p><p>  END freq_divider;</p><p>  ARCHITECTURE rtl OF freq_divider IS</p><p>  SIGNAL count : STD_LOGIC_

47、VECTOR(9 DOWNTO 0);</p><p><b>  BEGIN</b></p><p>  PROCESS(clk)</p><p><b>  BEGIN</b></p><p>  IF (clk'event and clk='1') THEN</p

48、><p>  IF(count="1111111111") THEN</p><p>  Count <= (OTHERS =>'0');</p><p><b>  ELSE</b></p><p>  Count <= count +1;</p><

49、;p><b>  END IF ;</b></p><p><b>  END IF ;</b></p><p>  END PROCESS; </p><p>  hz512 <= count(0);</p><p>  hz64 <= count(3);</p>

50、<p>  hz4 <= count(7);</p><p>  hz1 <= count(9);</p><p><b>  END rtl;</b></p><p><b>  二路選擇器:</b></p><p>  模塊圖如圖。用以進(jìn)行正常計(jì)時(shí)和校時(shí)/分的選擇。ala

51、rm為經(jīng)過(guò)消抖的校時(shí)/分信號(hào)。當(dāng)按鍵未曾按下時(shí),即校時(shí)/分信號(hào)沒(méi)有到來(lái)時(shí),二選一選擇器會(huì)選擇輸出a(正常計(jì)時(shí)輸入)信號(hào),否則當(dāng)alarm按鍵按下時(shí)輸出y為校時(shí)/分輸入信號(hào)——4Hz。</p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_

52、arith.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity sel2 is</p><p>  port(sel:in std_logic;</p><p>  ip: in std_logic;</p><p>  a,b:out st

53、d_logic);</p><p><b>  end sel2;</b></p><p>  architecture beh of sel2 is</p><p><b>  begin</b></p><p>  process(sel)</p><p><b&g

54、t;  begin</b></p><p>  if(sel='0')then a<=ip;</p><p>  else b<=ip;</p><p><b>  end if;</b></p><p>  end process;</p><p><

55、;b>  end beh;</b></p><p><b>  6.整點(diǎn)報(bào)時(shí):</b></p><p>  整點(diǎn)報(bào)時(shí)及鬧時(shí):模塊圖如圖在59分52秒、54秒、56秒、58秒給揚(yáng)聲器賦以低音512Hz信號(hào),在00分00秒給揚(yáng)聲器賦以高音1024Hz信號(hào),當(dāng)系統(tǒng)時(shí)間與鬧鈴時(shí)間相同時(shí)給揚(yáng)聲器賦以高音1024Hz信號(hào)。鬧時(shí)時(shí)間為一分鐘。</p>

56、<p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity zdbs is</p><p>  port(mh,ml,sh,sl:in std_logic

57、_vector(3 downto 0);</p><p>  sig500,sig1k: out std_logic</p><p><b>  );</b></p><p><b>  end zdbs;</b></p><p>  architecture behavior of zdbs is

58、</p><p><b>  begin </b></p><p>  sig500<='1' when mh="0101"and ml="1001"and sh="0101"</p><p>  and( sl="0000"or sl=&qu

59、ot;0010" or sl="0100"or sl="0110"or sl="1000") </p><p>  else '0';</p><p>  sig1k<='1' when mh="0000"and ml="0000"and

60、sh="0000"and sl="0000" </p><p>  else '0';</p><p>  end behavior;</p><p><b>  7.鬧鐘設(shè)置:</b></p><p>  鬧鐘時(shí)間的設(shè)定:模塊圖如圖。由開(kāi)關(guān)K1選擇鬧鐘和時(shí)間。由

61、S1、S2脈沖鍵調(diào)節(jié)時(shí)、分。</p><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>

62、<p>  entity alarmset is</p><p>  port(sel:in std_logic;</p><p>  hclo,mclo,sclo,halr,malr,salr: in std_logic_vector(7 downto 0);</p><p>  h,s,m:out std_logic_vector(7 downto 0

63、));</p><p>  end alarmset;</p><p>  architecture beh of alarmset is</p><p><b>  begin</b></p><p>  process(sel)</p><p><b>  begin</b&g

64、t;</p><p>  if(sel='0')then h<=hclo;</p><p><b>  m<=mclo;</b></p><p><b>  s<=sclo;</b></p><p>  else h<=halr;</p><

65、;p><b>  m<=malr;</b></p><p>  s<="00000000";</p><p><b>  end if;</b></p><p>  end process;</p><p><b>  end beh;</b&g

66、t;</p><p>  8.alarmcmp:</p><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_uns

67、igned.all;</p><p>  entity alarmcmp is</p><p>  port( h,m,halr,malr: in std_logic_vector(7 downto 0);</p><p>  stop:in std_logic;</p><p>  sig:out std_logic);

68、 </p><p>  end alarmcmp;</p><p>  architecture beh of alarmcmp is </p><p><b>  begin </b></p><p>  process(h,m,halr,malr,stop)</p><p><b>

69、  begin</b></p><p>  if stop='0'then </p><p><b>  sig<='0';</b></p><p><b>  end if;</b></p><p>  if h=halr and m=malr a

70、nd stop='1' then </p><p>  sig<='1'; </p><p>  else sig<='0';</p><p><b>  end if;</b></p><p>  end process;</p><p&g

71、t;<b>  end beh;</b></p><p><b>  9.消抖:</b></p><p>  模塊圖如圖。分頻出的用64Hz信號(hào)對(duì)s1校時(shí)信號(hào)、s2校分信號(hào)、s3秒清零信號(hào)、s4秒清分。是由四個(gè)兩級(jí)d觸發(fā)器構(gòu)成的,分別對(duì)輸入的sa、sb、sc信號(hào)的相鄰兩個(gè)上升沿進(jìn)行比較以確定按鍵的按下,從而達(dá)到消抖的目的。</p>

72、<p><b> ?、?心得體會(huì)</b></p><p>  通過(guò)此次課程設(shè)計(jì),使我更加扎實(shí)的掌握了有關(guān)數(shù)字邏輯方面的知識(shí),在設(shè)計(jì)過(guò)程中遇到了一些問(wèn)題,比如在畫(huà)頂層原理圖時(shí),最大的問(wèn)題就是根本沒(méi)有把各個(gè)模塊的VHD文件以及生成的器件都全部放在頂層文件的文件夾內(nèi),還有就是程序設(shè)計(jì)的時(shí)候考慮的不夠全面,沒(méi)有聯(lián)系著各個(gè)模式以及實(shí)驗(yàn)板的情況來(lái)編寫(xiě)程序,以至于多考慮編寫(xiě)了譯碼電路而浪費(fèi)了很多

73、時(shí)間。暴露除了我在這方面的知識(shí)有所欠缺和經(jīng)驗(yàn)不足,實(shí)踐出真知,通過(guò)親自動(dòng)手制作,使我們掌握的知識(shí)不再是紙上談兵。</p><p>  課程設(shè)計(jì)誠(chéng)然是一門(mén)專(zhuān)業(yè)課,給我很多專(zhuān)業(yè)知識(shí)以及專(zhuān)業(yè)技能上的提升,同時(shí)也給我很多新的想法,一些在課上學(xué)習(xí)不到的思路,讓我感觸頗深。通過(guò)這次課程設(shè)計(jì),我掌握了關(guān)于數(shù)字鐘方面的有關(guān)知識(shí),可以獨(dú)立設(shè)計(jì)一個(gè)數(shù)字鐘,并且了解了它的原理。思路即出路,有什么不懂的地方要及時(shí)弄懂,世上無(wú)難事,只怕有

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論