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

下載本文檔

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

文檔簡介

1、電子課程設(shè)計 數(shù)字頻率計 學(xué)院: 專業(yè)、班級: 姓名: 學(xué)號 : 指導(dǎo)老師: 時間: 目錄一、設(shè)計任務(wù)要求3二、總體框圖3三、選擇器件3四、功能模塊41、分頻部分 42、控制部分 63、計數(shù)部分 64、鎖存部分 95、數(shù)據(jù)選擇部分 106、3-8譯碼部分 127、顯示部分 13五、總體設(shè)計電路圖 141、總體電路的原理圖152、總體電路仿真圖163、管腳分配圖164、實驗連線與硬件驗證情況 17六、總結(jié) 17參考文獻(xiàn) 2數(shù)字頻率計一、設(shè)計任務(wù)與要求1、設(shè)計任務(wù):檢測輸入信號頻率,并顯示在數(shù)碼管上,輸入信號頻率在1hz999hz。2、設(shè)計要求:寫出設(shè)計步驟,畫出設(shè)計電路圖,設(shè)計頂層文件及各模塊程

2、序,實驗箱連線,程序下載,功能測試。二、總體框圖 控制部分系 統(tǒng) 時 鐘 分 頻 部 分 數(shù)據(jù)選擇 計 數(shù) 部 分 數(shù) 據(jù) 鎖 存 部分?jǐn)?shù)碼管地址譯碼數(shù)碼管顯示部分總體框圖設(shè)計思路:由50mhz系統(tǒng)時鐘分頻得到0.5hz的基準(zhǔn)時鐘,在基準(zhǔn)時鐘的1s高電平期間計被測頻率的脈沖個數(shù),1s高電平結(jié)束時計數(shù)結(jié)束,所記錄的脈沖個數(shù)就是被測信號的頻率,為了在數(shù)碼管上顯示計數(shù)結(jié)果需要鎖存器將所計的數(shù)鎖存,因此,在基準(zhǔn)時鐘下降沿來的時候鎖存器實現(xiàn)鎖存功能。為了下次計數(shù)必須將本次計數(shù)的結(jié)果清零,所以在基準(zhǔn)時鐘低電平期間對計數(shù)器清零。被測頻率從計數(shù)器的是中端輸入實現(xiàn)頻率的測試。將鎖存器鎖存的數(shù)據(jù)輸入掃描器,通過譯

3、碼器將鎖存的二進(jìn)制數(shù)譯成十進(jìn)制然后顯示到數(shù)碼管上,最終被讀出來。此頻率計的測頻的最大值是9999hz,超出范圍將無法顯示正確的結(jié)果。三、選擇器件1、裝有quartusii軟件的計算機(jī)一臺。2、芯片:使用altera公司生產(chǎn)的cyclone系列芯片,如ep1c12q240c8芯片。3、eda實驗箱一個。4、下載接口是數(shù)字芯片的下載接口(jtag)主要用于fpga芯片的數(shù)據(jù)下載。35、撥碼開關(guān)。6、時鐘源。 cyclone的配置器件 配置器件器件數(shù)量ep1c3ep1c4ep1c6ep1c12ep1c20epcs1111n/an/aepcs411111epc2 11122epc411111epc81

4、1111epc16111111、新的可編程體系結(jié)構(gòu),實現(xiàn)低成本設(shè)計。 2、嵌入式存儲器資源支持多種存儲器應(yīng)用和數(shù)字信號處理(dsp)實現(xiàn) 3、專用外部存儲器接口電路,支持與ddr fcram和sdram器件以及sdr sdram存儲器的連接。 4、支持串行總線和網(wǎng)絡(luò)接口以及多種通信協(xié)議 片內(nèi)和片外系統(tǒng)時序管理使用嵌入式pll 5、支持單端i/o標(biāo)準(zhǔn)和差分i/o技術(shù),lvds信號數(shù)據(jù)速率高達(dá)640mbps。 6、處理功耗支持nios ii 系列嵌入式處理器 7、采用新的串行配置器件的低成本配置方案四、功能模塊1、分頻器 圖一library ieee;use ieee.std_logic_1164

5、.all;use ieee.std_logic_unsigned.all;4entity div isport(clk_in:in std_logic; clk1k,clk5:out std_logic);end div;architecture a of div issignal fre_n:integer range 0 to 19999;signal clk_tmp:std_logic;signal tmp:std_logic;begin clk1k=clk_tmp; clk5=19999 then fre_n=0; clk_tmp=not clk_tmp; else fre_n=fre

6、_n+1; end if; end if;end process;process(clk_tmp) variable count : integer range 0 to 619; begin if clk_tmpevent and clk_tmp=1 then if count=619 then tmp=not tmp;count:=0; else count:=count+1; end if; end if; end process;end a;分頻器的邏輯功能分析:第一個進(jìn)程將50mhz的系統(tǒng)時鐘分成為0.5hz的時鐘信號,第二個進(jìn)程分成19999hz的時鐘,0.5hz的時鐘信號高電平期

7、間用于計數(shù)器的計數(shù)、低電平期間清零、下降沿的時候鎖存器鎖存數(shù)據(jù);而619hz的時鐘信號用于掃描器的驅(qū)動時鐘,當(dāng)619hz的時鐘信號上升沿來的時候掃描器進(jìn)行掃描。2、測控器5 圖二library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity testctl is port(clk:in std_logic; tsten:out std_logic; clr_cnt:out std_logic; load:out std_logic);end testctl;architecture a of tes

8、tctl is signal div2clk:std_logic; beginprocess(clk) beginif(clkevent and clk=1) then div2clk=not div2clk;end if;end process; process(clk,div2clk)beginif(clk=0and div2clk=0) thenclr_cnt=1;elseclr_cnt=0;end if; end process;load=not div2clk; tsten0); elsif clkevent and clk=1 thenif en=1 thenif cqi0);en

9、d if;end if;end if;if cqi=9 then cout=1;else cout=0;end if;cq=cqi;end process;end behav; 圖五十進(jìn)制計數(shù)器的邏輯功能分析:在計數(shù)器的時鐘信號處于高電平期間,即1s高電平期間,當(dāng)被測頻率的上升沿來的時侯計數(shù)器加一,當(dāng)個位計到九的時候給十位進(jìn)一,同理當(dāng)十位、百位、千位等等計滿九的時候給對應(yīng)的高位進(jìn)一。當(dāng)0.5hz的1秒高電平結(jié)束的時候計數(shù)停止,當(dāng)1秒低電平來的時候?qū)τ嫈?shù)器所計的數(shù)清零,為下次的計數(shù)做準(zhǔn)備,當(dāng)下一個時鐘上升沿來的時候再次的計數(shù)。 4、鎖存器 8 圖六library ieee;use ieee.st

10、d_logic_1164.all;entity reg24 is port(load,rst:in std_logic; din:in std_logic_vector(3 downto 0); dout:out std_logic_vector(3 downto 0); end reg24;architecture a of reg24 is signal data:std_logic_vector(3 downto 0);begin process(rst,load) beginif rst=1 thendata0);elsif(loadevent and load=1) then dat

11、a=din; end if; dout=data; end process;end 9圖七鎖存部分的邏輯功能分析:當(dāng)0.5hz的基準(zhǔn)時鐘下降沿來的時候鎖存器是能,將計數(shù)器輸出端給的數(shù)據(jù)鎖存。5、4選1數(shù)據(jù)選擇器 圖八library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity seltime is port( clk1,reset:in std_logic;10d1,d2:in std_logic_vector(3 downto 0); d

12、3,d4:in std_logic_vector(3 downto 0); daout :out std_logic_vector(3 downto 0); sel:out std_logic_vector(2 downto 0); end seltime;architecture fun of seltime is signal count:std_logic_vector(2 downto 0);begin sel=count; process(clk1,reset) begin if(reset=1)then count=011)then count=000; else countdao

13、utdaoutdaoutdaout=d4;end case;end process;end fun; 圖九114選1數(shù)據(jù)選擇器的邏輯功能分析:選擇器的功能是進(jìn)行位選。本實驗是四位十進(jìn)制計數(shù)器,有四位計數(shù)器和索存器。選擇器進(jìn)行選擇分別進(jìn)行控制。位選之后然后通過譯碼器顯示。6、3-8譯碼器 圖十library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; entity decode3_8 isport(sel: instd_logic_vector(2 downto 0);q: outstd_logic_vect

14、or(7 downto 0);end decode3_8;architecture a of decode3_8 isbeginq=11111110when sel=0 else 11111101when sel=1 else 11111011when sel=2 else 11110111when sel=3 else 11111111;end a;12圖十一3-8譯碼器的邏輯功能分析:將掃描輸出的三位二進(jìn)制數(shù)譯成與之相對應(yīng)的十進(jìn)制數(shù),以便在數(shù)碼管上直接顯示測頻結(jié)果。7、數(shù)碼顯示 圖十二library ieee;use ieee.std_logic_1164.all;use ieee.std

15、_logic_unsigned.all;entity deled is13port(num:in std_logic_vector(3 downto 0);led:out std_logic_vector(6 downto 0);end deled;architecture fun of deled isbeginled=1111110when num=0000else 0110000when num=0001else 1101101when num=0010else 1111001when num=0011else 0110011when num=0100else 1011011when n

16、um=0101else 1110000when num=0111else 1111111when num=1000else 1111011when num=1001;end fun; 圖十三數(shù)碼顯示的邏輯功能分析:將七段數(shù)碼管的輸入,即四位二進(jìn)制數(shù)譯十進(jìn)制的形式顯示到數(shù)碼管上,數(shù)碼管的每段是高電平,即輸出位1是對應(yīng)的燈就亮,輸出位輸出0則就滅,根據(jù)燈亮的段讀出數(shù)字。 五、總體設(shè)計電路圖1、設(shè)計原理圖14圖十四電路的總體工作概括:本設(shè)計有兩個時鐘信號,一個是clk,一個是fryin。clk是總的時鐘信號用來實現(xiàn)仿真,fryin是待測時鐘信號,io3與ioclk連接以便測信號頻率。分頻器將時鐘信號

17、分為1khz和5hz。5hz用來掃頻送到測控器模塊。測控器一個輸出為tsten送給計數(shù)器以便計數(shù),一個輸出為清零端,另一個為置數(shù)端。十進(jìn)制計數(shù)器和索存器分別實現(xiàn)計數(shù)和索存功能。模塊將鎖存輸入到4選1 多路選擇器,為個鎖存器分別有四個控制端,選擇器進(jìn)行位選之后通過3-8譯碼器譯碼,然后顯示在7段數(shù)碼管上。2、波形仿真圖15圖十五波形仿真分析: 在上圖波形當(dāng)中,當(dāng)譯碼輸出即setout是11111110時,數(shù)碼輸出即abcdefg 是1111110,這表示個位顯示十進(jìn)制數(shù)0。當(dāng)譯碼輸出即譯碼輸出setout 是11111101,數(shù)碼輸出是即abcdefg 是1111110,這表示十位顯示十進(jìn)制數(shù)0

18、.據(jù)次原則,依次根據(jù)譯碼輸出對應(yīng)讀出八位數(shù)字,最后換算成準(zhǔn)確的頻率數(shù)。3、管腳分配圖 圖十六164、eda實驗箱上的硬件驗證(1)試驗箱連線:將eda試驗箱上的io3與ioclk連接。(2)當(dāng)撥碼開關(guān)撥到1111時,數(shù)碼管顯示1hz;當(dāng)撥碼開關(guān)撥到0111時,數(shù)碼管顯示5hz;當(dāng)撥碼開關(guān)撥到1011時,數(shù)碼管顯示10hz;當(dāng)撥碼開關(guān)撥到1101時,數(shù)碼管顯示50hz;當(dāng)撥碼開關(guān)撥到0101時,數(shù)碼管顯示503hz;當(dāng)撥碼開關(guān)撥到1001時,數(shù)碼管顯示1093hz;被測頻率越高,誤差越大。六、總結(jié) 第一次看到課程設(shè)計,沒有搞懂頻率計的含義。當(dāng)時只設(shè)計了一個時鐘信號,在后來實驗中,也沒有注意位選和控制。要準(zhǔn)確的顯示每一位數(shù)字,每個數(shù)碼管上都應(yīng)該有自己的控制端。最初的設(shè)計中沒有4選1選擇器,也沒有注意3-8譯碼器的主要性,沒有譯碼器數(shù)據(jù)無法編譯成數(shù)碼管識別的數(shù)字。在老師的指導(dǎo)下,重點設(shè)計了分頻器、選擇器、3-8譯碼器。雖然程序可以編譯但是還得考慮另外的也是非常致命的一個問題是我的軟件必須和硬件相匹配。在設(shè)計過程當(dāng)中遇到好多大大小小的問題,當(dāng)是,每次出麻煩都與我的分頻器有關(guān),當(dāng)分得的掃描頻率太大的時候,數(shù)碼管上掃描的數(shù)據(jù)閃的厲害,很不穩(wěn)定,然而,太小的時候,數(shù)碼管就是一片黑,根本沒顯示,所以必須一直調(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

提交評論