數(shù)字頻率計的設(shè)計_第1頁
數(shù)字頻率計的設(shè)計_第2頁
數(shù)字頻率計的設(shè)計_第3頁
數(shù)字頻率計的設(shè)計_第4頁
數(shù)字頻率計的設(shè)計_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、VHDL與數(shù)字系統(tǒng)設(shè)計設(shè)計說明書數(shù)字頻率計的設(shè)計起止日期: 2010年12月14日 至 2010年12月26日學(xué)生姓名班級學(xué)號成績指導(dǎo)教師(簽字)計算機(jī)與通信學(xué)院2010 年 12 月26 日課題名稱數(shù)字頻率計人數(shù)7組長同組人員課題的主要內(nèi)容及任務(wù)一、設(shè)計的主要技術(shù)參數(shù) 在PC機(jī)上以QUARTUSII軟件為設(shè)計平臺,采用VHDL語言實(shí)現(xiàn)數(shù)字頻率計的整體設(shè)計。二、設(shè)計任務(wù)主要內(nèi)容:設(shè)計一個數(shù)字顯示的頻率計主要任務(wù):1、頻率計采用三位數(shù)碼管顯示。2、頻率測量范圍為1Hz999Hz,并有溢出指示。3、頻率計設(shè)有1999Hz和1999kHz兩個量程,并用LED指示。4、頻率計能根據(jù)測試信號的頻率進(jìn)行量

2、程自動切換。當(dāng)頻率小于1kHz時,系統(tǒng)選擇1s的閘門時間,當(dāng)頻率大于等于1kHz時,在下一次測量時,選擇0.1s的閘門時間。5、采用記憶顯示方式,即在計數(shù)過程中不顯示測試數(shù)據(jù),待技術(shù)過程結(jié)束后顯示測試結(jié)果,并將此結(jié)果保持到下一次計數(shù)結(jié)束。顯示時間不小于1s。三、設(shè)計工作量2周完成進(jìn)度安排2010/12/14集體針對設(shè)計進(jìn)行分析、討論,確定好分工,明確設(shè)計進(jìn)度,以及對設(shè)計總體上有個了解。12/15-12/18 各組員針對自己的任務(wù),查找相關(guān)資料,完成各自相關(guān)部分。12/19-12/20 集體討論,找出一個較佳的方案。12/21-12/25 進(jìn)行可行性分析,對有錯或不佳的地方加以改正。2010/1

3、2/26最后分析整理,書寫課程設(shè)計報告。參考資料1、王小軍 主編.VHDL簡明教程.清華大學(xué)出版社,19972、潘松、王國棟 主編.VHDL應(yīng)用教程電子科技大學(xué)出版社,20003、甘歷 主編.VHDL應(yīng)用于開發(fā)實(shí)踐科學(xué)出版社,2003 4、劉愛榮 主編.EDA技術(shù)與CPLD/FPGA開發(fā)應(yīng)用簡明教程.清華大學(xué)出版社,2007一、設(shè)計背景隨著數(shù)字電子技術(shù)的發(fā)展,頻率測量成為一項(xiàng)越來越普遍的工作,因此測頻計常受到人們的青睞。目前許多高精度的數(shù)字頻率計都采用單片機(jī)加上外部的高速計數(shù)器來實(shí)現(xiàn),然而單片機(jī)的時鐘頻率不高導(dǎo)致測頻速度比較慢,并且在這種設(shè)計中,由于PCB版的集成度不高,導(dǎo)致PCB板走線長,因

4、此難以提高計數(shù)器的工作頻率。為了克服這種缺點(diǎn),大大提高測量精度和速度,我們可以設(shè)計一種可編程邏輯器件來實(shí)現(xiàn)數(shù)字頻率計。EDA技術(shù)是以大規(guī)??删幊踢壿嬈骷樵O(shè)計載體,以硬件語言為系統(tǒng)邏輯描述的主要方式,以計算機(jī)、大規(guī)??删幊踢壿嬈骷拈_發(fā)軟件及實(shí)驗(yàn)開發(fā)系統(tǒng)為設(shè)計工具,通過有關(guān)的開發(fā)軟件,自動完成用軟件設(shè)計的電子系統(tǒng)到硬件系統(tǒng)的設(shè)計,最終形成集成電子系統(tǒng)或?qū)S眉尚酒囊婚T新技術(shù)。其設(shè)計的靈活性使得EDA技術(shù)得以快速發(fā)展和廣泛應(yīng)用。以QUARTUSII軟件為設(shè)計平臺,采用VHDL語言實(shí)現(xiàn)數(shù)字頻率計的整體設(shè)計。伴隨著集成電路(IC)技術(shù)的發(fā)展,電子設(shè)計自動化(EDA)逐漸成為重要的設(shè)計手段,已經(jīng)廣泛

5、應(yīng)用于模擬與數(shù)字電路系統(tǒng)等許多領(lǐng)域。電子設(shè)計自動化是一種實(shí)現(xiàn)電子系統(tǒng)或電子產(chǎn)品自動化設(shè)計的技術(shù),它與電子技術(shù),微電子技術(shù)的發(fā)展密切相關(guān),它吸收了計算機(jī)科學(xué)領(lǐng)域的大多數(shù)最新研究成果,以高性能的計算機(jī)作為工作平臺,促進(jìn)了工程發(fā)展。EDA的一個重要特征就是使用硬件描述語言(HDL)來完成的設(shè)計文件,VHDL語言是經(jīng)IEEE確認(rèn)的標(biāo)準(zhǔn)硬件語言,在電子設(shè)計領(lǐng)域受到了廣泛的接受。二、設(shè)計原理1、頻率計設(shè)計原理在電子技術(shù)中,頻率是最基本的參數(shù)之一,并且與許多電參量的測量方案、測量結(jié)果都有十分密切的關(guān)系,因此,頻率的測量就顯得更為重要。測量頻率的方法有多種,其中電子計數(shù)器測量頻率具有精度高、使用方便、測量迅速

6、,以及便于實(shí)現(xiàn)測量過程自動化等優(yōu)點(diǎn),是頻率測量的重要手段之一。數(shù)字式頻率計的測量原理有兩類:一是直接測頻法,即在一定閘門時間內(nèi)測量被測信號的脈沖個數(shù);二是間接測頻法即測周期法,如周期測頻法。直接測頻法適用于高頻信號的頻率測量,通常采用計數(shù)器、數(shù)據(jù)鎖存器及控制電路實(shí)現(xiàn),并通過改變計數(shù)器閥門的時間長短在達(dá)到不同的測量精度;間接測頻法適用于低頻信號的頻率測量。本設(shè)計中使用的就是直接測頻法,即用計數(shù)器在計算1s內(nèi)輸入信號周期的個數(shù),其測頻范圍為1Hz9999Hz。2.設(shè)計的原理框圖如下所示:三、設(shè)計思路頻率測量的基本原理是計算每秒鐘內(nèi)待測信號的脈沖個數(shù)。這就要求測頻控制信號發(fā)生器testpl的計數(shù)使能

7、信號tsten能產(chǎn)生一個1秒脈寬的周期信號,并對頻率計的每一計數(shù)器cnt10的使能端en進(jìn)行同步控制。當(dāng)tsten為高電平"1"時,允許計數(shù);為低電平"0"時停止計數(shù),并保持其計數(shù)結(jié)果。在停止計數(shù)期間,首先需要一個鎖存信號load的上跳沿將計數(shù)器在前1 秒種的計數(shù)值鎖存進(jìn)16位鎖存器reg16b中。鎖存信號之后,必須有一個清零信號clr_cnt對計數(shù)器進(jìn)行清零,為下1 秒的計數(shù)操作做準(zhǔn)備。,然后由外部數(shù)碼管控制器ledcom控制的7段譯碼器ymq譯出,并穩(wěn)定顯示。四、設(shè)計步驟與過程1、頻率產(chǎn)生器lpm_counter0:有一50MHz的時鐘輸入端clk,

8、經(jīng)過分頻處理后從輸出端q26.0輸出27種頻率信號,從中選出三個不同頻率的信號:q25為1Hz輸入testpl的clk端,q13為測試信號輸入低位計數(shù)器的cnt10的clk端,q17為數(shù)碼管顯示選擇的掃描信號輸入數(shù)碼管控制器的clk端。2、測頻控制信號發(fā)生器testpl:輸入端clk收到1Hz信號后,其輸出端testen控制各個cnt10的使能,clr_cnt控制各個cnt10的清零,load控制鎖存器內(nèi)數(shù)據(jù)的輸出。3、十進(jìn)制計數(shù)器cnt10:有一時鐘使能輸入端en,用于鎖定計數(shù)值。當(dāng)高電平"1"時計數(shù)允許計數(shù),低電平"0"時禁止計數(shù)。多位十進(jìn)制計數(shù)器時

9、,最低位的計數(shù)器的clk端輸入被測信號,各計數(shù)器的進(jìn)位輸出端c10將信號輸?shù)较乱晃皇M(jìn)制計數(shù)器cnt10的輸入端clk,最高位十進(jìn)制計數(shù)器cnt10的進(jìn)位輸出端c10不處理。4、16位鎖存器reg16b:將已有16 位bcd碼存在于此模塊的輸入口din15.0,在信號load的上升沿后即被鎖存到寄存器reg16b的內(nèi)部,并由reg16b的輸出端dout15.0輸出,設(shè)置鎖存器的好處是,數(shù)碼管上顯示的數(shù)據(jù)穩(wěn)定,不會由于周期性的清零信號而不斷閃爍。5、數(shù)碼管控制器ledcom:兩個輸入端一個為datain15.0,另一個為數(shù)碼管顯示選擇的掃描頻率輸入端clk,輸出端為數(shù)碼管選擇信號com3.0和對

10、應(yīng)顯示的數(shù)碼管的BCD碼信號端dataout3.0,數(shù)碼管顯示選擇隨掃描頻率clk循環(huán)變化,實(shí)現(xiàn)穩(wěn)定顯示。6、譯碼器ymq:輸入端d_in3.0將接收BCD碼信號,譯碼后輸出端d_out7.0輸出8為7段數(shù)碼管信號,其中輸出的第8位均為高電平"1"可以使四個數(shù)碼管的小數(shù)點(diǎn)不顯示。經(jīng)譯碼器的處理輸出后數(shù)碼管顯示相應(yīng)的數(shù)值。7、元件聲明及例化:將各個元器件依據(jù)設(shè)計相連五、心得體會這次課程設(shè)計中,我不僅復(fù)習(xí)鞏固了課堂所學(xué)的理論知識,提高了對所學(xué)知識的綜合應(yīng)用能力,并從根本上了解了VHDL語言的一些基本用法,應(yīng)用了原來不會或者不熟練的句型,如if句,case句等,也學(xué)會了一些基本功

11、能的實(shí)現(xiàn)方法,如分頻,狀態(tài)控制等等,從另外一個角度重新審視了上學(xué)期完全從硬件角度出發(fā)的電路設(shè)計,明白了軟硬件之間的交互。通過這個課題,對系統(tǒng)框圖、邏輯流程圖、狀態(tài)轉(zhuǎn)移圖的設(shè)計有了一定的了解。也懂得了系統(tǒng)的前期設(shè)計對于后續(xù)的編程和調(diào)試的重要性。本課題采用了自下而上的設(shè)計方法,根據(jù)系統(tǒng)對硬件的要求,畫出系統(tǒng)控制流程圖;然后根據(jù)控制流程圖,分化模塊,利用模塊實(shí)現(xiàn)功能;最后進(jìn)行仿真和調(diào)試。每個成功的背后都要面對無數(shù)次的失敗,這次課設(shè)也不例外。雖然遇到不少問題與困難,但通過老師以及同學(xué)的幫助,都一一得到順利地解決。我想這必定會為將來的實(shí)踐積累寶貴的經(jīng)驗(yàn)和教訓(xùn)??傊?,這次課設(shè)我們都受益匪淺。整個過程氛圍濃

12、厚,本人也態(tài)度十分認(rèn)真,積極向老師和同學(xué)求教并在此過程中收獲良多,能夠進(jìn)一步了解和使用一門與硬件直接打交道的基本語言對我們將來的學(xué)習(xí)和工作都會十分有益。附件:附件1、設(shè)計圖形元件原理圖:附件2、程序源代碼:1、頻率產(chǎn)生器:library ieee;use ieee.std_logic_1164.all;library lpm;use lpm.lpm_components.all;entity lpm_counter0 is port(clock: in std_logic ; q: out std_logic_vector (26 downto 0);end lpm_counter0;arch

13、itecture syn of lpm_counter0 issignal sub_wire0: std_logic_vector (26 downto 0);component lpm_countergeneric (lpm_direction: string;lpm_port_updown: string;lpm_type: string;lpm_width: natural);port(clock: in std_logic ; q: out std_logic_vector (26 downto 0);end component;beginq <= sub_wire0(26 do

14、wnto 0);lpm_counter_component : lpm_countergeneric map (lpm_direction => "up",lpm_port_updown => "port_unused",lpm_type => "lpm_counter",lpm_width => 27)port map (clock => clock,q => sub_wire0);end syn;2、測頻控制信號發(fā)生器library ieee;use ieee.std_logic_1164.al

15、l;use ieee.std_logic_unsigned.all;entity testpl is port(clk:in std_logic;-1Hz信號 tsten:out std_logic;-計數(shù)器使能信號 clr_cnt:out std_logic;-計數(shù)器清零信號 load:out std_logic);-鎖存器輸出控制信號end testpl;architecture art of testpl is signal div2clk:std_logic;begin process(clk) begin if clk'event and clk='1'the

16、n div2clk<=not div2clk; -div2clk為2Hz end if ; end process; process (clk ,div2clk) begin if( clk='0'and div2clk='0')then clr_cnt<='1' -當(dāng)div2clk與clk同時為零時計數(shù)器清零 else clr_cnt<='0' -當(dāng)div2clk處于的高電平時計數(shù)器計數(shù) end if; end process; load<=not div2clk; -鎖存器輸出與計數(shù)器使能信號反相 ts

17、ten<=div2clk; end art;3、有時鐘使能的十進(jìn)制計數(shù)器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt10 is port(clk,clr,en: in std_logic; -clk:計數(shù)器時鐘,clr:清零信號,en:計數(shù)使能信號 q: out std_logic_vector(3 downto 0);-q:4位計數(shù)結(jié)果輸出 c10: out std_logic);-計數(shù)進(jìn)位end cnt10;architecture art of cnt10 is

18、signal cqi: std_logic_vector(3 downto 0);begin process (clk,clr) begin if clr='1' then cqi<="0000" -當(dāng)輸入的clr_cnt為低電平0時清零 elsif clk'event and clk='1' then if en='1' then -當(dāng)輸入的tesen為高電平1時允許計數(shù) if (cqi<9) then cqi<=cqi+1; else cqi<="0000" -等于9則計

19、數(shù)器清零 end if; -當(dāng)輸入的tesen為低電平0時禁止計數(shù),鎖定計數(shù)值 end if; end if;end process;-產(chǎn)生進(jìn)位process(cqi) begin if cqi="1001" then c10<='1' -當(dāng)加的9時產(chǎn)生進(jìn)位輸出 else c10<='0' end if;end process;q<=cqi;end art;4、16位鎖存器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;enti

20、ty reg16b is port (load: in std_logic;-輸出鎖存控制信號 din: in std_logic_vector(15 downto 0); dout: out std_logic_vector(15 downto 0);end reg16b;architecture art of reg16b isbegin process(load,din) begin if load'event and load='1'then -load為高電平時teten為低電平,計數(shù)器禁止 dout<=din; -鎖存輸入的數(shù)據(jù) end if; end

21、 process;end art;5、數(shù)碼管控制器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ledcom isport(clk:in std_logic; -數(shù)碼管掃描頻率 datain: in std_logic_vector(15 downto 0);-鎖存器輸入的16位信號 dataout: out std_logic_vector(3 downto 0);-輸出至譯碼器的4位信號 com: out std_logic_vector(3 downto 0);-輸出數(shù)碼管選

22、擇信號end ledcom;architecture art of ledcom is signal comclk: std_logic_vector(1 downto 0); begin -comclk同掃描頻率clk循環(huán)變化 process(clk)begin if rising_edge(clk) then if comclk>=3 thencomclk <="00"else comclk<=comclk+1; end if; end if; end process;-數(shù)碼管選擇 process(comclk)begin case comclk is

23、 when "00" => com<="1000" when "01" => com<="0100" when "10" => com<="0010" when "11" => com<="0001" when others =>NULL; end case; end process;-對應(yīng)數(shù)碼管的輸出 process(comclk,datain)begin case comclk

24、is when "11"=> dataout<=datain(3 downto 0); when "10"=> dataout<=datain(7 downto 4); when "01"=> dataout<=datain(11 downto 8); when "00"=> dataout<=datain(15 downto 12); when others =>NULL; end case; end process;end art;6、七段數(shù)碼管的譯碼器li

25、brary IEEE;use IEEE.std_logic_1164.all;entity ymq is port(d_in: in std_logic_vector(3 downto 0); -數(shù)碼管控制器輸入四位信號d_out: out std_logic_vector(7 downto 0); -輸出8位信號 end ymq; -第8位d_out7為逗號architecture art of ymq isbegin process(d_in) begin case d_in is -第8位為1高電平逗號不顯示 when "0000" => d_out<=&

26、quot;11000000" -0 when "0001" => d_out<="11111001" -1 when "0010" => d_out<="10100100" -2 when "0011" => d_out<="10110000" -3 when "0100" => d_out<="10011001" -4 when "0101" => d

27、_out<="10010010" -5 when "0110" => d_out<="10000010" -6 when "0111" => d_out<="11111000" -7 when "1000" => d_out<="10000000" -8 when "1001" => d_out<="10010000" -9 when others =>NU

28、LL; end case; end process;end art;7、元件聲明及例化將各個元器件依據(jù)設(shè)計相連library ieee;use ieee.std_logic_1164.all;entity lx is port(clk: in std_logic; led: out std_logic_vector(7 downto 0); ledc: out std_logic_vector(3 downto 0);end lx;architecture art of lx iscomponent lpm_counter0 -待調(diào)用的頻率生成器端口定義 PORT(clock: IN STD_

29、LOGIC ; q: OUT STD_LOGIC_VECTOR (26 DOWNTO 0);end component;-十進(jìn)制計數(shù)器component cnt10 -待調(diào)用的有時鐘使能的十進(jìn)制計數(shù)器端口定義 port(clk,clr,en: in std_logic; q: out std_logic_vector(3 downto 0); c10: out std_logic);end component;-16位鎖存器component reg16b -待調(diào)用的32位鎖存器端口定義 port (load: in std_logic; din: in std_logic_vector(15 downto 0); dout: out std_logic_vector(15 downto 0);end component;-測頻控制器component testpl -待調(diào)用的測頻控制信號發(fā)生器端口定義 port(clk:in std_logic; tsten:out std_logic; clr_cnt:out std_logic; load:out std_logic);end component;-數(shù)碼管選擇器component ledcom -待調(diào)用

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論