eda課程設(shè)計(jì)--數(shù)字頻率計(jì)_第1頁
已閱讀1頁,還剩15頁未讀, 繼續(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>  EDA《數(shù)字頻率計(jì)》</p><p><b>  課程設(shè)計(jì)報(bào)告</b></p><p>  專 業(yè): 電子信息工程 </p><p>  班 級(jí): 08電信 </p><p>  姓 名:

2、 </p><p>  學(xué) 號(hào): </p><p>  指導(dǎo)教師: </p><p>  年 月 日</p><p><b>  一 課程設(shè)計(jì)目的</b></p><p>  

3、1)課程設(shè)計(jì)題:數(shù)字頻率計(jì)</p><p><b>  2)任務(wù)及要求</b></p><p>  1、設(shè)計(jì)一個(gè)能測(cè)量方波信號(hào)的頻率的頻率計(jì)。</p><p>  2、測(cè)量的頻率范圍是0999999Hz。</p><p>  3、結(jié)果用十進(jìn)制數(shù)顯示。</p><p>  4、按要求寫好設(shè)計(jì)報(bào)告(設(shè)

4、計(jì)報(bào)告內(nèi)容包括:引言,方案設(shè)計(jì)與論證,總體設(shè)計(jì),各模塊設(shè)計(jì),調(diào)試與數(shù)據(jù)分析,總結(jié))。</p><p><b>  3)教學(xué)提示</b></p><p>  1、脈沖信號(hào)的頻率就是在單位時(shí)間內(nèi)所產(chǎn)生的脈沖個(gè)數(shù),其表達(dá)式為,f為被測(cè)信號(hào)的頻率,N為計(jì)數(shù)器所累計(jì)的脈沖個(gè)數(shù),T為產(chǎn)生N個(gè)脈沖所需的時(shí)間。所以,在1秒時(shí)間內(nèi)計(jì)數(shù)器所記錄的結(jié)果,就是被測(cè)信號(hào)的頻率。</p&g

5、t;<p>  2、被測(cè)頻率信號(hào)取自實(shí)驗(yàn)箱晶體振蕩器輸出信號(hào),加到主控門的輸入端。</p><p>  3、再取晶體振蕩器的另一標(biāo)準(zhǔn)頻率信號(hào),經(jīng)分頻后產(chǎn)生各種時(shí)基脈沖:1ms,10ms,0.1s,1s等,時(shí)基信號(hào)的選擇可以控制,即量程可以改變。</p><p>  4、時(shí)基信號(hào)經(jīng)控制電路產(chǎn)生閘門信號(hào)至主控門,只有在閘門信號(hào)采樣期間內(nèi)(時(shí)基信號(hào)的一個(gè)周期),輸入信號(hào)才通過主控門

6、。</p><p>  5f=N/T,改變時(shí)基信號(hào)的周期T,即可得到不同的測(cè)頻范圍。</p><p>  當(dāng)主控門關(guān)閉時(shí),計(jì)數(shù)器停止計(jì)數(shù),顯示器顯示記錄結(jié)果,此時(shí)控制電路輸出一個(gè)置零信號(hào),將計(jì)數(shù)器和所有觸發(fā)器復(fù)位,為新的一次采樣做好準(zhǔn)備。</p><p>  改變量程時(shí),小數(shù)點(diǎn)能自動(dòng)移位。</p><p><b>  4)設(shè)計(jì)報(bào)告要

7、求</b></p><p>  1、說明設(shè)計(jì)作品的功能、特點(diǎn)、應(yīng)用范圍;</p><p>  2、方案對(duì)比,確定方案。</p><p>  3、電路工作原理、操作方法;</p><p>  4、編程方法、程序框圖及關(guān)鍵程序清單。</p><p><b>  5、課程設(shè)計(jì)總結(jié)。</b>&

8、lt;/p><p>  數(shù)字頻率計(jì)是計(jì)算機(jī)、通訊設(shè)備、音頻視頻等科研生產(chǎn)領(lǐng)域不可缺少的測(cè)量?jī)x器。它是一種用十進(jìn)制數(shù)字,顯示被測(cè)信號(hào)頻率的數(shù)字測(cè)量?jī)x器。它的基本功能是測(cè)量正弦信號(hào),方波信號(hào)以及其他各種單位時(shí)間內(nèi)變化的物理量。在進(jìn)行模擬、數(shù)字電路的設(shè)計(jì)、安裝、調(diào)試過程中,由于其使用十進(jìn)制數(shù)顯示,測(cè)量迅速,精度高,顯示直觀,所以經(jīng)常要用到數(shù)字頻率計(jì)。</p><p>  二、設(shè)計(jì)方案論證、結(jié)果以及分

9、析</p><p><b>  1 原理圖</b></p><p>  編譯成功后其波形圖如下:</p><p><b>  2、信號(hào)發(fā)生器</b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all

10、;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity sele is</p><p>  port(clk: in std_logic;</p><p>  jian: in std_logic_vector(1 downto 0);</p><p>

11、;  oclk: out std_logic);</p><p><b>  end;</b></p><p>  architecture s_1 of sele is</p><p>  signal full : std_logic;</p><p>  signal t :integer range 0 to 5

12、999999;</p><p><b>  begin</b></p><p>  P1:process(jian,t)</p><p><b>  begin</b></p><p>  case jian is</p><p>  when "00"

13、=> t <= 5999999; --產(chǎn)生時(shí)基脈沖1s</p><p>  when "01" => t <= 599999; --產(chǎn)生時(shí)基脈沖100ms</p><p>  when "10" => t <= 59999; --產(chǎn)生時(shí)基脈沖10ms</p><p&

14、gt;  when "11" => t <= 5999; --產(chǎn)生時(shí)基脈沖1ms</p><p>  when others => null;</p><p><b>  end case;</b></p><p>  end process P1;</p><p> 

15、 P2: process(clk,t)</p><p>  variable s : integer range 0 to 5999999;</p><p><b>  begin</b></p><p>  if (clk'event and clk = '1') then</p><p>  

16、if s < t then</p><p>  s := s +1;</p><p>  else s := 0 ;</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  if s = t then

17、full <= '1';</p><p>  else full <= '0';</p><p><b>  end if;</b></p><p>  end process P2;</p><p>  P3: process(full)</p><p&g

18、t;  variable c : std_logic;</p><p><b>  begin</b></p><p>  if full'event and full = '1' then </p><p>  c := not c;</p><p>  if c = '1' t

19、hen </p><p>  oclk <= '1';</p><p>  else oclk <='0';</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p> 

20、 end process P3;</p><p><b>  end;</b></p><p><b>  其仿真波形為:</b></p><p><b>  3、 測(cè)頻</b></p><p>  library ieee;</p><p>  us

21、e ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity cp is</p><p>  port(clkk: in std_logic;</p><p>  en,rst,load: out std_logic);</p

22、><p><b>  end;</b></p><p>  architecture cp_1 of cp is </p><p>  signal div2: std_logic;</p><p><b>  begin</b></p><p>  process(clkk)&

23、lt;/p><p><b>  begin</b></p><p>  if(clkk'event and clkk='1') then </p><p>  div2 <= not div2;</p><p><b>  end if;</b></p>&

24、lt;p>  end process;</p><p>  process(clkk,div2)</p><p><b>  begin </b></p><p>  if (clkk='0' and div2='0') then </p><p>  rst <='

25、1';</p><p>  else rst <='0';</p><p><b>  end if;</b></p><p>  end process;</p><p>  load <= not div2;</p><p>  en <= div2;

26、</p><p><b>  end;</b></p><p><b>  其仿真波形為:</b></p><p><b>  4、 計(jì)數(shù)器</b></p><p>  library ieee;</p><p>  use ieee.std_logi

27、c_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity jishu is</p><p>  port(rst,en,clk: in std_logic;</p><p>  Q: out std_logic_vector(3 downto 0);<

28、/p><p>  cout: out std_logic);</p><p><b>  end;</b></p><p>  architecture cnt of jishu is </p><p>  signal cnt: std_logic_vector(3 downto 0);</p><p&

29、gt;<b>  begin</b></p><p>  process(rst,en,clk)</p><p><b>  begin</b></p><p>  if rst='1' then cnt <= "0000";</p><p>  els

30、if(clk'event and clk='1') and en = '1' then</p><p>  if cnt = "1001" then</p><p>  cnt <= "0000"; cout <= '1';</p><p><b&g

31、t;  else </b></p><p>  cnt <= cnt + 1;</p><p>  cout <= '0';</p><p><b>  end if;</b></p><p><b>  end if;</b></p><

32、p>  end process;</p><p><b>  Q <= cnt;</b></p><p><b>  end;</b></p><p>  在源程序中COUT是計(jì)數(shù)器的進(jìn)位輸出;Q[3..0]是計(jì)數(shù)器的狀態(tài)輸出;CLK是時(shí)鐘輸入端;RST是復(fù)位控制端;當(dāng)RST=1時(shí),Q[3..0]=0,EN是使

33、能控制輸入端,當(dāng)EN=1時(shí),計(jì)數(shù)器計(jì)數(shù),當(dāng)EN=0時(shí),計(jì)數(shù)器保持狀態(tài)不變。編譯成功后,其仿真波形如下:</p><p>  在項(xiàng)目編譯仿真成功后,將設(shè)計(jì)的十進(jìn)制計(jì)數(shù)器電路設(shè)置成可調(diào)用的元件jishu.sym用于以下的頂層設(shè)計(jì)。</p><p>  5、 16位寄存器</p><p>  library ieee;</p><p>  use

34、 ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity suocun is</p><p>  port(load: in std_logic;</p><p>  din : in std_logic_vector(15 do

35、wnto 0);</p><p>  dout: out std_logic_vector(15 downto 0));</p><p><b>  end;</b></p><p>  architecture suo of suocun is </p><p><b>  begin</b>&l

36、t;/p><p>  process(load,din)</p><p><b>  begin</b></p><p>  if (load'event and load='1') then </p><p>  dout <= din;</p><p><b&g

37、t;  end if;</b></p><p>  end process;</p><p><b>  end;</b></p><p>  在源程序中l(wèi)oad是鎖存信號(hào),上升沿觸發(fā);din[3..0]是寄存器輸入;dout[3..0]是寄存器輸出。編譯成功后生成元件圖如下圖,以便頂層模塊的調(diào)用。</p><p

38、><b>  4位寄存器</b></p><p>  寄存器是在計(jì)數(shù)結(jié)束后,利用觸發(fā)器的上升沿吧最新的頻率測(cè)量值保存起來,這樣在計(jì)數(shù)的過程中可不必一直看數(shù)碼顯示器,顯示器將最終的頻率讀數(shù)定期進(jìn)行更新,其輸出作為動(dòng)態(tài)掃描電路的輸入。</p><p>  library ieee;</p><p>  use ieee.std_logic_1

39、164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity suo is</p><p>  port(load: in std_logic;</p><p>  din : in std_logic_vector(3 downto 0);</p>&

40、lt;p>  dout: out std_logic_vector(3 downto 0));</p><p><b>  end;</b></p><p>  architecture suo_1 of suo is </p><p><b>  begin</b></p><p>  pr

41、ocess(load,din)</p><p><b>  begin</b></p><p>  if (load'event and load='1') then </p><p>  dout <= din;</p><p><b>  end if;</b>&l

42、t;/p><p>  end process;</p><p><b>  end;</b></p><p>  在源程序中l(wèi)oad是鎖存信號(hào),上升沿觸發(fā);din[3..0]是寄存器輸入;dout[3..0]是寄存器輸出。編譯成功后生成元件圖如下圖,以便頂層模塊的調(diào)用。</p><p><b>  6、 譯碼器&

43、lt;/b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity leds is</p><p>  port(clk:

44、 in std_logic;</p><p>  Din: in std_logic_vector(15 downto 0);</p><p>  sg: out std_logic_vector(6 downto 0);</p><p>  bt: out std_logic_vector(1 downto 0));</p><p><

45、;b>  end;</b></p><p>  architecture led_1 of leds is</p><p>  signal cnt8: std_logic_vector(1 downto 0);</p><p>  signal q: std_logic_vector(3 downto 0); </p><p&

46、gt;<b>  begin</b></p><p>  P1:process(cnt8,Din,q)</p><p><b>  begin</b></p><p>  case cnt8 is</p><p>  when "00" => bt <= "

47、00";q <= Din(3 downto 0);</p><p>  when "01" => bt <= "01";q <= Din(7 downto 4);</p><p>  when "10" => bt <= "10";q <= Din(11 do

48、wnto 8);</p><p>  when "11" => bt <= "11";q <= Din(15 downto 12);</p><p>  when others => null;</p><p><b>  end case;</b></p><

49、p><b>  case q is</b></p><p>  when "0000" => sg <= "0111111";</p><p>  when "0001" => sg <= "0000110";</p><p>  wh

50、en "0010" => sg <= "1011011";</p><p>  when "0011" => sg <= "1001111";</p><p>  when "0100" => sg <= "1100110";</

51、p><p>  when "0101" => sg <= "1101101";</p><p>  when "0110" => sg <= "1111101";</p><p>  when "0111" => sg <= "

52、;0000111";</p><p>  when "1000" => sg <= "1111111";</p><p>  when "1001" => sg <= "1101111";</p><p>  when others => null

53、;</p><p><b>  end case;</b></p><p>  end process P1;</p><p>  P2:process(clk)</p><p><b>  begin</b></p><p>  if(clk'event and c

54、lk='1') then </p><p>  cnt8 <= cnt8 +1;</p><p><b>  end if;</b></p><p>  end process P2;</p><p><b>  end;</b></p><p>  

55、編譯成功后,其波形圖為:</p><p><b>  7、 譯碼</b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p&

56、gt;  entity divid is</p><p>  port(clk50: in std_logic;</p><p>  qlkhz: out std_logic);</p><p><b>  end;</b></p><p>  architecture div of divid is</p>

57、<p><b>  begin</b></p><p>  K1:process(clk50)</p><p>  variable cout: integer:=0;</p><p><b>  begin</b></p><p>  if(clk50'event and c

58、lk50='1') then </p><p>  cout := cout + 1;</p><p>  if cout <= 24999 then qlkhz <= '1';</p><p>  elsif cout <= 49999 then qlkhz <= '1';</p&g

59、t;<p>  else cout :=0;</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;</p><p><b>  end;</b></p>

60、<p>  編譯成功后,其波形圖為:</p><p>  8、 動(dòng)態(tài)掃描電路</p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p> 

61、 entity dongtai is</p><p>  port(q200hz: in std_logic;</p><p>  bt: in std_logic_vector(1 downto 0);</p><p>  sg: in std_logic_vector(6 downto 0);</p><p>  led0,led1,le

62、d2,led3: out std_logic_vector(6 downto 0));</p><p><b>  end;</b></p><p>  architecture behav of dongtai is</p><p><b>  begin</b></p><p>  proces

63、s(q200hz)</p><p><b>  begin</b></p><p>  if(q200hz'event and q200hz='1') then </p><p>  case bt is</p><p>  when "00" => led0 <

64、= sg(6 downto 0);</p><p>  when "01" => led1 <= sg(6 downto 0);</p><p>  when "10" => led2 <= sg(6 downto 0);</p><p>  when "11" => led3

65、 <= sg(6 downto 0);</p><p>  when others => null;</p><p><b>  end case;</b></p><p><b>  end if;</b></p><p>  end process;</p><p

66、><b>  end;</b></p><p><b>  仿真波形如下:</b></p><p>  編譯成功后生成元件圖如下圖,以便頂層模塊的調(diào)用。</p><p><b>  9、 分頻設(shè)計(jì)</b></p><p>  library ieee;</p>

67、;<p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_signed.all;</p><p>  entity fp is</p><p>  port( clk : in std_logic;</p><p>  oclk: out std_logic

68、);</p><p><b>  end;</b></p><p>  architecture fp_1 of fp is</p><p>  signal full : std_logic;</p><p><b>  begin</b></p><p>  P1: pr

69、ocess(clk)</p><p>  variable s : integer range 0 to 99;</p><p><b>  begin</b></p><p>  if (clk'event and clk = '1') then</p><p>  if s < 99 t

70、hen</p><p>  s := s +1;</p><p>  elsif s > 99 then s := 0;</p><p>  elsif s = 99 then full <= '1';</p><p><b>  end if;</b></p><p>

71、;<b>  end if;</b></p><p>  end process P1;</p><p>  P2: process(full)</p><p>  variable c : std_logic;</p><p><b>  begin</b></p><p>

72、;  if full = '1' then </p><p>  c := not c;</p><p>  if c = '1' then </p><p>  oclk <= '1';</p><p>  else oclk <='0';</p>&

73、lt;p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process P2;</p><p><b>  end;</b></p><p>  編譯成功后,其波形圖為:</p><

74、p><b>  三.設(shè)計(jì)體會(huì)</b></p><p>  通過對(duì)EDA技術(shù)這門課程的學(xué)習(xí),心得體會(huì)甚多。雖然一開始覺得什么都不懂,但是通過一次次的實(shí)驗(yàn),我們真的學(xué)到了不少的東西。往往書本上的知識(shí)在實(shí)際使用或?qū)嶒?yàn)時(shí)都應(yīng)該加以修改,使之更適合實(shí)際應(yīng)用,也更簡(jiǎn)潔。這次EDA課程設(shè)計(jì),使我更加的了解了EDA,VHDL語言和外部設(shè)備的接線。也讓我更加了解了EDA設(shè)計(jì)的流程和原理。</p&g

75、t;<p>  通過本次設(shè)計(jì),讓我很好的鍛煉了理論聯(lián)系實(shí)際,與具體項(xiàng)目、課題相結(jié)合開發(fā)、設(shè)計(jì)產(chǎn)品的能力。既讓我們懂得了怎樣把理論應(yīng)用于實(shí)際,又讓我們懂得了在實(shí)踐中遇到的問題怎樣用理論去解決。</p><p>  在本次設(shè)計(jì)中,我們還需要一些上課時(shí)沒有牢固的知識(shí),于是圖書館和INTERNET成了我們很好的助手。在查閱資料的過程中,我們要判斷優(yōu)劣、取舍相關(guān)知識(shí),不知不覺中我們查閱資料的能力也得到了很好的

76、鍛煉。我們學(xué)習(xí)的知識(shí)是有限的,在以后的工作中我們肯定會(huì)遇到許多未知的領(lǐng)域,這方面的能力便會(huì)使我們受益非淺。</p><p>  在設(shè)計(jì)過程中,總是遇到這樣或那樣的問題。有時(shí)發(fā)現(xiàn)一個(gè)問題的時(shí)候,需要做大量的工作,花大量的時(shí)間才能解決。自然而然,我的耐心便在其中建立起來了。為以后的工作積累了經(jīng)驗(yàn),增強(qiáng)了信心。</p><p>  我認(rèn)為,不僅僅是此次考查設(shè)計(jì),在整個(gè)這學(xué)期的實(shí)驗(yàn)中,不僅培養(yǎng)了獨(dú)

77、立思考、動(dòng)手操作的能力,在各種其它能力上也都有了提高。更重要的是,在實(shí)驗(yàn)課上,我們學(xué)會(huì)了很多學(xué)習(xí)的方法。而這是日后罪實(shí)用的,真的是受益匪淺。我已從中真正體會(huì)到了,做設(shè)計(jì)不是為順利完成而做,而是為了學(xué)會(huì)遇到問題懂得去解決而做。雖然實(shí)踐問題會(huì)遇到很多,每一次實(shí)驗(yàn)其實(shí)真的可以讓人學(xué)到很多知識(shí)。只有自己懂得去總結(jié),才能從中體會(huì)到收獲。</p><p><b>  四.參考文獻(xiàn):</b></p&

78、gt;<p>  [1] 潘松VHDL實(shí)用教程[M] 成都電子科技大學(xué)出版社,2000 </p><p>  [2] 盧毅,賴杰VHDL與數(shù)字電路設(shè)計(jì)[M] 北京科學(xué)出版社,2001 [3] 徐志軍大規(guī)??删幊踢壿嬈骷捌鋺?yīng)用[M] 成都電子科技大學(xué)出版社, 2004.2 &l

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(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)論