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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

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

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

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

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

12、厚,本人也態(tài)度十分認(rèn)真,積極向老師和同學(xué)求教并在此過(guò)程中收獲良多,能夠進(jìn)一步了解和使用一門與硬件直接打交道的基本語(yǔ)言對(duì)我們將來(lái)的學(xué)習(xí)和工作都會(huì)十分有益。附件:附件1、設(shè)計(jì)圖形元件原理圖:附件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、測(cè)頻控制信號(hào)發(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信號(hào) tsten:out std_logic;-計(jì)數(shù)器使能信號(hào) clr_cnt:out std_logic;-計(jì)數(shù)器清零信號(hào) load:out std_logic);-鎖存器輸出控制信號(hào)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í)為零時(shí)計(jì)數(shù)器清零 else clr_cnt<='0' -當(dāng)div2clk處于的高電平時(shí)計(jì)數(shù)器計(jì)數(shù) end if; end process; load<=not div2clk; -鎖存器輸出與計(jì)數(shù)器使能信號(hào)反相 ts

17、ten<=div2clk; end art;3、有時(shí)鐘使能的十進(jìn)制計(jì)數(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:計(jì)數(shù)器時(shí)鐘,clr:清零信號(hào),en:計(jì)數(shù)使能信號(hào) q: out std_logic_vector(3 downto 0);-q:4位計(jì)數(shù)結(jié)果輸出 c10: out std_logic);-計(jì)數(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時(shí)清零 elsif clk'event and clk='1' then if en='1' then -當(dāng)輸入的tesen為高電平1時(shí)允許計(jì)數(shù) if (cqi<9) then cqi<=cqi+1; else cqi<="0000" -等于9則計(jì)

19、數(shù)器清零 end if; -當(dāng)輸入的tesen為低電平0時(shí)禁止計(jì)數(shù),鎖定計(jì)數(shù)值 end if; end if;end process;-產(chǎn)生進(jìn)位process(cqi) begin if cqi="1001" then c10<='1' -當(dāng)加的9時(shí)產(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;-輸出鎖存控制信號(hào) 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為高電平時(shí)teten為低電平,計(jì)數(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位信號(hào) dataout: out std_logic_vector(3 downto 0);-輸出至譯碼器的4位信號(hào) com: out std_logic_vector(3 downto 0);-輸出數(shù)碼管選

22、擇信號(hào)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;-對(duì)應(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ù)碼管控制器輸入四位信號(hào)d_out: out std_logic_vector(7 downto 0); -輸出8位信號(hào) end ymq; -第8位d_out7為逗號(hào)architecture art of ymq isbegin process(d_in) begin case d_in is -第8位為1高電平逗號(hào)不顯示 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、元件聲明及例化將各個(gè)元器件依據(jù)設(shè)計(jì)相連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)制計(jì)數(shù)器component cnt10 -待調(diào)用的有時(shí)鐘使能的十進(jìn)制計(jì)數(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;-測(cè)頻控制器component testpl -待調(diào)用的測(cè)頻控制信號(hà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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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)論