eda課程設計--頻率計_第1頁
已閱讀1頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  目錄</b></p><p>  摘要…………………………………………………………………………………Ⅱ</p><p>  正文………………………………………………………………………………….1</p><p>  1.設計目的和要求………………………………………………………………………...…1</p>

2、;<p>  2.設計原理………………………………………………………………………………….…1</p><p>  3.設計內容…………………………………………………………………………………….1</p><p><b>  摘要</b></p><p>  此次設計的主要目的是學習掌握頻率計的設計方法,掌握動態(tài)掃描輸出電路的實現

3、方法,學習較復雜的數字系統的設計方法。通過單位時間(1秒)內頻率的計數來實現頻率的設計。此次設計主要用四位十進制計數器,所以頻率計數范圍為1~9999Hz。量程有1KHz,1MHz兩檔,用LED燈指示。且讀數大于9999時,頻率計處于超量程狀態(tài),發(fā)出溢出指示,下次量程,量程自動增大一檔。讀數小時,頻率計處于前量程狀態(tài),下次測量,量程自動減小一檔。然后鎖存防止閃爍顯示,最后由譯碼掃描顯示電路輸出到數碼管進行顯示輸出。并且下載后能夠進行仿真

4、頻率的計數和靜態(tài)顯示。通過這次的設計能夠更清楚的理解VHDL程序的描述語言,進行簡單程序的編寫和仿真。</p><p>  關鍵詞:EDA技術、頻率、四位十進制、仿真、鎖存顯示</p><p><b>  正文</b></p><p><b>  1.設計目的和要求</b></p><p> ?。?

5、)設計4位十進制頻率計,學習較復雜的數字系統設計方法;</p><p> ?。?)用VHDL硬件描述語言進行模塊電路的設計;</p><p> ?。?)掌握較為復雜的原理圖層次化設計,熟悉詳細的設計流程。</p><p><b>  2.設計原理</b></p><p>  根據頻率的定義和頻率測量的基本原理,測定信號的

6、頻率必須有一個脈寬為1S的輸入信號脈沖計數允許的信號;1S計數結束后,計數值被鎖入鎖存器,計數器清零,為下一測評計數周期做好準備。測頻控制信號可以由一個獨立的發(fā)生器來產生。</p><p>  FTCTRL的計數使能信號CNT_EN能產生一個1S脈寬的周期信號,并對頻率計中的4位計數器couter4D的ENABL使能端進行同步控制。當CNT_EN高電平時允許計數;低電平時停止計數,并保持其所計的脈沖數。在停止計數

7、期間,首先需要一個鎖存信號LOAD的上升沿將計數器在前一秒鐘的計數值鎖進鎖存器REG4D中,并由外部的十進制7段譯碼器譯出,顯示計數值。設置鎖存器的好處是數據顯示穩(wěn)定,不會由于周期性的清零信號而不斷閃爍。鎖存信號后,必須有一清零信號RST_CNT對計數器進行清零,為下一秒的技術操作做準備。</p><p><b>  3.設計內容</b></p><p><b&

8、gt;  3.1模塊劃分</b></p><p>  設計一個四位十進制頻率計,首先需要一個測頻控制電路來產生一個脈寬為1S的輸入信號脈沖計數允許的信號;然后需要一個4位計數器進行計數,由于我們設計的是四位的十進制的頻率計,所以還需要用4個十進制的加法計數器來構成所需要的計數器;在技計數完成之后還需要一個鎖存器將計數值進行鎖存,從而使顯示的數值穩(wěn)定。</p><p>  3.2

9、四位計數器設計</p><p> ?。?)輸入完整的VHDL語言描述,具體描述如下。</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  E

10、NTITY CNT4B IS</p><p>  PORT (CLK : IN STD_LOGIC; </p><p>  RST : IN STD_LOGIC; </p><p>  ENA : IN STD_LOGIC; </p><p>  OUTY : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p&g

11、t;<p>  COUT : OUT STD_LOGIC ); </p><p>  END CNT4B;</p><p>  ARCHITECTURE behav OF CNT4B IS</p><p>  SIGNAL CQI : STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p><b&

12、gt;  BEGIN</b></p><p>  P_REG: PROCESS(CLK, RST, ENA)</p><p><b>  BEGIN</b></p><p>  IF RST = '1' THEN CQI <= "0000"; </p><p>

13、  ELSIF CLK'EVENT AND CLK = '1' THEN</p><p>  IF ENA = '1' THEN CQI <= CQI + 1; </p><p><b>  END IF;</b></p><p><b>  END IF;</b><

14、;/p><p>  OUTY <= CQI ;</p><p>  END PROCESS P_REG ; --進位輸出</p><p>  COUT<=CQI(0) AND CQI(1) AND CQI(2) AND CQI(3);</p><p>  END behav;</p><p>  (2) 模塊

15、圖形符號及邏輯功能描述如圖1所示。</p><p>  圖1 四位計數器結構體</p><p>  仿真結果及分析,結果如圖2所示。</p><p>  圖2 四位計數器仿真波形</p><p>  分析:對照波形進行分析,結果正確說明設計無誤。</p><p>  3.3測頻控制器的設計</p>

16、<p> ?。?)輸入完整的VHDL語言描述,具體描述如下。</p><p>  LIBRARY IEEE; --測頻控制器</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY TES

17、TCTL IS</p><p>  PORT ( CLKK : IN STD_LOGIC; -- 1Hz</p><p>  CNT_EN,RST_CNT,LOAD : OUT STD_LOGIC); </p><p>  END TESTCTL;</p><p>  ARCHITECTURE behav

18、 OF TESTCTL IS</p><p>  SIGNAL DIV2CLK : STD_LOGIC;</p><p><b>  BEGIN</b></p><p>  PROCESS( CLKK )</p><p><b>  BEGIN</b></p><p>  I

19、F CLKK'EVENT AND CLKK = '1' THEN DIV2CLK <= NOT DIV2CLK;</p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p>  PROCESS (CLKK, DIV2CLK)</p><p&

20、gt;<b>  BEGIN</b></p><p>  IF CLKK='0' AND Div2CLK='0' THEN RST_CNT <= '1';</p><p>  ELSE RST_CNT <= '0'; END IF;</p><p>  END

21、PROCESS;</p><p>  LOAD <= NOT DIV2CLK ; </p><p>  CNT_EN <= DIV2CLK;</p><p>  END behav;</p><p>  3.4四位鎖存器的設計</p><p> ?。?)輸入完整的VHDL語言描述,具體描述如下。&l

22、t;/p><p>  LIBRARY IEEE; --4位鎖存器</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  ENTITY REG4B IS</p><p>  PORT ( LOAD : IN STD_LOGIC;</p><p>  DIN : IN STD_L

23、OGIC_VECTOR(3 DOWNTO 0);</p><p>  DOUT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) );</p><p>  END REG4B;</p><p>  ARCHITECTURE behav OF REG4B IS</p><p><b>  BEGIN</b&g

24、t;</p><p>  PROCESS(LOAD, DIN)</p><p><b>  BEGIN</b></p><p>  IF LOAD'EVENT AND LOAD='1'</p><p>  THEN DOUT <= DIN ; --時鐘到來時,鎖存輸入數據&l

25、t;/p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p>  END behav;</p><p>  將完成的4位計數器、測頻控制器以及4位鎖存器的設計打包成模塊以便設計頂層文件時調用。</p><p>  該程序分為五個部分,分別實現預定的

26、功能,然后通過元件例化的方式,組合在一起,編寫頂層文件,組合在一起,形成整個系統,各功能相互配合以實現簡易頻率計的設計。</p><p>  頂層文件程序中設置一系列的信號,將五個部分的程序輸入輸出信號相對應的連接起來,并與整個系統的封裝引腳相對應。同時將五個程序分別編譯后生成的.vhd文件加載進來,然后進行編譯,仿真。</p><p>  頂層文件的設計,結果如下圖所示</p>

27、;<p><b>  圖3</b></p><p>  3.5十進制加法計數器的設計</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.all;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.all;</p

28、><p>  ENTITY CNT10 IS</p><p>  PORT (RST:IN STD_LOGIC; --清零端</p><p>  FX::IN STD_LOGIC; --時鐘信號</p><p>  ENA:IN STD_LOGIC;

29、 --使能端</p><p>  OUTY:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--輸出計數結果</p><p>  COUT:OUT STD_LOGIC); --輸出信號用于進位</p><p>  END ENTITY CNT10;</p><p>  ARCH

30、ITECTURE behav OF CNT10 IS</p><p><b>  BEGIN</b></p><p>  process(RST,ENA,FX)</p><p>  variable CQI :STD_LOGIC_VECTOR(3 downto 0);--定義變量CQI</p><p><b>

31、  begin</b></p><p>  if (RST = '1') then CQI:=(others =>'0'); </p><p>  elsif(FX'EVENT and FX = '1') then --在時鐘信號FX的上升沿</p><p>  if ENA='

32、1' then --使能端為1,讓信號從0--9進行計數</p><p>  if CQI<9 then CQI:= CQI+1; COUT<='0';</p><p>  elsif CQI=9 then CQI:=(others =>'0');COUT<='1';--超出9

33、時進位</p><p><b>  END IF;</b></p><p>  ELSIF ENA='0' THEN CQI:=(others =>'0');--使能端置0輸出為0</p><p><b>  END IF;</b></p><p><b&

34、gt;  end if;</b></p><p>  OUTY<= CQI;</p><p>  end process;</p><p>  END behav;</p><p>  十進制加法計數器的仿真如下圖所示:</p><p><b>  總結與致謝</b></p

35、><p>  本實驗設計的是四位十進制頻率計,利用測頻控制電路、4位鎖存器、4位計數器和十進制的計數加法器幾個模塊完成了我所要的設計。實現的功能是:在測頻控制電路給的1HZ的測頻信號下,計數器對待測頻率的周期進行計數,再由鎖存器鎖存,最終通過外部的數碼管將待測頻率的頻率數值顯示出來。</p><p>  通過本次設計實驗我也學到了很多東西,剛開始時不知道如何下手,通過翻書、上網查資料找到了一些

36、相關知識才開始做實驗。在實驗的進行中也出現了很多問題,比如說編譯出現了很多錯誤,經過我仔細的排查和修改后,最終使得編譯完全正確了,這讓我有一點成就感,同時也使我對此充滿了興趣,做得就更加認真了,努力把很多沒弄懂的問題都想清楚了,做完本次設計實驗后真的收獲頗豐。</p><p>  在本次課程設計過程中,**老師給與了我很大的幫助,在此表示由衷的感謝!</p><p><b>  

37、參考文獻</b></p><p>  [1] 黃仁欣.EDA技術實用教程.北京:清華大學出版社,2006</p><p>  [2] 潘松,黃繼業(yè).EDA技術與VHDL.北京:清華大學出版社,2009</p><p>  [3] 江國強編著.EDA技術與應用(第三版)..北京:電子工業(yè)出版社,2010</p><p>  [4]

38、夏宇聞編著.Verilog HDL數字系統設計教程..北京:北京航空航天大學出版社,2008</p><p>  [5] 周祖成,程曉軍,馬卓釗編著.數字電路與系統教學實驗教程.北京:科學出版社,2010</p><p>  [6] 周潤景,蘇良碧.基于Quartus II 的數字系統Verilog HDL設計實例詳解.北京:電子工業(yè)出版社,2010</p><p>

39、;  [7] (美國)Sanir Palnitkar 譯者:夏宇聞 胡燕祥 刁嵐松.Verilog HDL數字設計與綜合(第2版).北京:電子工業(yè)出版社,2009</p><p>  [8] 云創(chuàng)工作室.Verilog HDL程序設計與實踐.北京:人民郵電出版社,2009</p><p>  [9] 劉福奇,劉波.Verilog HDL應用程序設計實例精講.北京:電子工業(yè)出版社,2009&

40、lt;/p><p>  [10] 張延偉,楊金巖,葛愛學.verilog hdl程序設計實例詳解.北京:人民郵電出版社,2008</p><p><b>  附錄</b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><

41、;p>  use ieee.std_logic_unsigned.all;</p><p>  entity plj is</p><p>  port(fb,clk,rst:in std_logic;</p><p>  k1,k2,k3,k4:in std_logic;</p><p>  g1,g2,g3,g4,g5:out st

42、d_logic;</p><p>  d1,d2,d3,d4:out std_logic_vector(3 downto 0));</p><p><b>  end plj;</b></p><p>  architecture bhv of plj is</p><p>  signal h0,h1,h2,h3:st

43、d_logic;</p><p>  signal s0,s1,s2:std_logic;</p><p>  signal p0:integer range 0 to 10000;</p><p>  component fp is</p><p>  port(fb1:in std_logic;</p><p> 

44、 ao,bo,co,do:buffer std_logic);</p><p>  end component;</p><p>  component wx is</p><p>  port(ai,bi,ci,di,rst:in std_logic;</p><p>  k1,k2,k3,k4:in std_logic;</p>

45、;<p>  g1,g2,g3,g4:out std_logic;</p><p>  fb0:out std_logic);</p><p>  end component;</p><p>  component sz is</p><p>  port(clki:in std_logic;</p><p

46、>  clko:buffer std_logic);</p><p>  end component;</p><p>  component js is</p><p>  port(fb,clk:in std_logic;</p><p>  g5:out std_logic;</p><p>  q:out

47、 integer range 0 to 10000);</p><p>  end component;</p><p>  component bcd is</p><p>  port(qi:in integer range 0 to 10000;</p><p>  rst:in std_logic;</p><p&

48、gt;  d1,d2,d3,d4:buffer std_logic_vector(3 downto 0));</p><p>  end component;</p><p><b>  begin</b></p><p>  u1:fp port map(fb1=>fb,ao=>h0,bo=>h1,co=>h2,do=

49、>h3);</p><p>  u2:wx port map(k1=>k1,k2=>k2,k3=>k3,k4=>k4,ai=>h0,bi=>h1,ci=>h2,di=>h3,</p><p>  rst=>rst,fb0=>s0,g1=>g1,g2=>g2,g3=>g3,g4=>g4);</p&

50、gt;<p>  u3:sz port map(clki=>clk,clko=>s1);</p><p>  u4:js port map(fb=>s0,clk=>s1,g5=>g5,q=>p0);</p><p>  u5:bcd port map(qi=>p0,rst=>rst,d1=>d1,d2=>d2,d3=

51、>d3,d4=>d4);</p><p><b>  end bhv;</b></p><p><b>  分頻程序u1:</b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><

52、p>  entity fp is</p><p>  port(fb1:in std_logic;</p><p>  ao,bo,co,do:buffer std_logic);</p><p><b>  end fp;</b></p><p>  architecture bhv of fp is</p

53、><p><b>  begin</b></p><p><b>  ao<=fb1;</b></p><p>  process(fb1)</p><p>  variable nu,nu1,nu2:integer range 0 to 1000:=0;</p><p>

54、<b>  begin</b></p><p>  if(fb1'event and fb1='1')then</p><p>  nu:=nu+1;nu1:=nu1+1;nu2:=nu2+1;</p><p>  if(nu=5)then</p><p>  bo<=not bo;<

55、/p><p><b>  nu:=0;</b></p><p><b>  end if;</b></p><p>  if(nu1=50)then</p><p>  co<=not co;</p><p><b>  nu1:=0;</b><

56、/p><p><b>  end if;</b></p><p>  if(nu2=500)then</p><p>  do<=not do;</p><p><b>  nu2:=0;</b></p><p><b>  end if;</b>&l

57、t;/p><p><b>  end if;</b></p><p>  end process;</p><p><b>  end bhv;</b></p><p><b>  位選程序u2:</b></p><p>  library ieee;<

58、;/p><p>  use ieee.std_logic_1164.all;</p><p>  entity wx is</p><p>  port(ai,bi,ci,di,rst:in std_logic;</p><p>  k1,k2,k3,k4:in std_logic;</p><p>  g1,g2,g3,

59、g4:out std_logic;</p><p>  fb0:out std_logic);</p><p><b>  end wx;</b></p><p>  architecture bhv of wx is</p><p><b>  begin </b></p><

60、p>  process(rst,k1,k2,k3,k4,ai,bi,ci,di)</p><p><b>  begin</b></p><p>  if(rst='1')then</p><p>  g1<='0';g2<='0';g3<='0';g4&l

61、t;='0';</p><p><b>  fb0<='0';</b></p><p>  elsif(k1='1')then</p><p>  g1<='1';g2<='0';g3<='0';g4<='0&#

62、39;;</p><p><b>  fb0<=ai;</b></p><p>  elsif(k2='1')then</p><p>  g1<='0';g2<='1';g3<='0';g4<='0'; </p>

63、<p><b>  fb0<=bi;</b></p><p>  elsif(k3='1')then</p><p>  g1<='0';g2<='0';g3<='1';g4<='0';</p><p><b>

64、  fb0<=ci;</b></p><p>  elsif(k4='1')then</p><p>  g1<='0';g2<='0';g3<='0';g4<='1';</p><p><b>  fb0<=di;</b&

65、gt;</p><p><b>  end if;</b></p><p>  end process;</p><p><b>  end bhv;</b></p><p><b>  時鐘程序u3:</b></p><p>  library iee

66、e;</p><p>  use ieee.std_logic_1164.all;</p><p>  entity sz is</p><p>  generic (v:integer:=8);</p><p>  port(clki:in std_logic;</p><p>  clko:buffer std_l

67、ogic);</p><p><b>  end sz;</b></p><p>  architecture bhv of sz is</p><p><b>  begin </b></p><p>  process(clki)</p><p>  variable c

68、ount:integer range 0 to v;</p><p><b>  begin</b></p><p>  if(clki'event and clki='1')then</p><p>  count:=count+1;</p><p>  if(count=v)then</

69、p><p>  clko<=not clko;</p><p><b>  count:=0;</b></p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;

70、</p><p><b>  end bhv;</b></p><p><b>  計數程序u4:</b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  entity js i

71、s</p><p>  port(fb,clk:in std_logic;</p><p>  g5:out std_logic;</p><p>  q:out integer range 0 to 10000);</p><p><b>  end js;</b></p><p>  arch

72、itecture bhv of js is</p><p><b>  begin</b></p><p>  process(fb,clk)</p><p>  variable n:integer range 0 to 10000;</p><p>  variable m:integer range 0 to 10

73、000;</p><p><b>  begin</b></p><p>  if(clk'stable)then</p><p>  if(fb'event and fb='1')then</p><p><b>  n:=n+1;</b></p>&

74、lt;p><b>  m:=n;</b></p><p>  if(n>9999 or n=0)then</p><p><b>  g5<='1';</b></p><p><b>  q<=0;</b></p><p><b&g

75、t;  end if;</b></p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  if(clk='0')then</p><p><b>  q<=m;</b></

76、p><p><b>  n:=0;</b></p><p><b>  g5<='0';</b></p><p><b>  end if;</b></p><p>  end process;</p><p><b>  e

77、nd bhv;</b></p><p><b>  BCD轉換u5:</b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_signed.all;</p>&

78、lt;p>  use ieee.std_logic_arith.all;</p><p>  entity bcd is</p><p>  port(qi:in integer range 0 to 10000;</p><p>  rst:in std_logic;</p><p>  d1,d2,d3,d4:buffer std_

79、logic_vector(3 downto 0));</p><p><b>  end bcd;</b></p><p>  architecture bhv of bcd is</p><p><b>  begin</b></p><p>  process(qi)</p>&l

80、t;p>  constant a:integer:=1000;</p><p>  constant b:integer:=100;</p><p>  constant c:integer:=10;</p><p>  variable x1,x2,x3,x4,y,z:integer range 0 to 1000;</p><p>

81、<b>  begin</b></p><p>  if(rst='1')then</p><p>  x1:=0;x2:=0;x3:=0;x4:=0;</p><p><b>  else </b></p><p><b>  x1:=qi/a;</b><

82、;/p><p>  y:=qi-x1*1000;</p><p><b>  x2:=y/b;</b></p><p>  z:=y-x2*100;</p><p><b>  x3:=z/c;</b></p><p>  x4:=z-x3*10;</p><

83、p><b>  end if;</b></p><p>  d1<=conv_std_logic_vector(x1,4);</p><p>  d2<=conv_std_logic_vector(x2,4);</p><p>  d3<=conv_std_logic_vector(x3,4);</p>&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論