一、指標(biāo)需求 (1)設(shè)計(jì)一個(gè)頻率測(cè)量范圍0~200MHz的頻率計(jì)。 (2)要求要能夠完成高、低頻率的測(cè)量并自動(dòng)換擋,設(shè)計(jì)換擋分界,分析誤差來(lái)源并設(shè)計(jì)測(cè)量分辨率及量程。
二、設(shè)計(jì)分工及原理分析2.1設(shè)計(jì)分工及總體框架圖 本文以Max+plusII為設(shè)計(jì)環(huán)境,在具體的VHDL語(yǔ)言設(shè)計(jì)程序中,先將程序分為四個(gè)設(shè)計(jì)模塊:分頻模塊、鎖存器控制模塊、計(jì)數(shù)模塊、判決模塊,在此基礎(chǔ)上建立項(xiàng)層文件,再對(duì)項(xiàng)層文件進(jìn)行編譯、仿真即可。 總體框圖設(shè)計(jì)思路:由系統(tǒng)時(shí)鐘分頻得到基準(zhǔn)時(shí)鐘,在基準(zhǔn)時(shí)鐘的高電平期間計(jì)被測(cè)頻率的脈沖個(gè)數(shù),高電平結(jié)束時(shí)計(jì)數(shù)結(jié)束,所記錄的脈沖個(gè)數(shù)是被測(cè)信號(hào)的頻率,為了在數(shù)碼管上顯示計(jì)數(shù)結(jié)果需要鎖存器的鎖存,因此,在基準(zhǔn)時(shí)鐘下降沿來(lái)的時(shí)候鎖存器實(shí)現(xiàn)鎖存功能。為了下次計(jì)數(shù)必須將本次計(jì)數(shù)的結(jié)果清零,所以在基準(zhǔn)時(shí)鐘低電平期間對(duì)計(jì)數(shù)器清零。被測(cè)頻率從計(jì)數(shù)器的是中端輸入實(shí)現(xiàn)頻率的測(cè)試,通過(guò)計(jì)數(shù)器將最終的計(jì)數(shù)結(jié)果輸入數(shù)據(jù)鎖存器,鎖存器鎖存的數(shù)據(jù)輸入判決模塊決定并輸出最終的計(jì)數(shù)結(jié)果。
2.2數(shù)字頻率計(jì)的基本原理 常用的頻率測(cè)量方法有兩種:頻率測(cè)量法和周期測(cè)量法。 (1)頻率測(cè)量法是用一個(gè)頻率穩(wěn)定度高的頻率源作為基準(zhǔn)時(shí)鐘,在時(shí)間t內(nèi)對(duì)被測(cè)信號(hào)的脈沖數(shù)N進(jìn)行計(jì)數(shù),然后求出單位時(shí)間內(nèi)的脈沖數(shù),即為被測(cè)信號(hào)的頻率。通常情況下計(jì)算每秒內(nèi)待測(cè)信號(hào)的脈沖個(gè)數(shù),此時(shí)我們稱(chēng)閘門(mén)時(shí)間為1秒。閘門(mén)時(shí)間也可以大于或小于一秒,閘門(mén)時(shí)間越長(zhǎng),得到的頻率值就越準(zhǔn)確,但閘門(mén)時(shí)間越長(zhǎng)則每測(cè)一次頻率的間隔就越長(zhǎng);閘門(mén)時(shí)間越短,測(cè)的頻率值刷新就越快,但測(cè)得的頻率精度就受影響。 (2)周期測(cè)量法是先測(cè)量出被測(cè)信號(hào)的周期T,然后根據(jù)頻率f=1/T求出被測(cè)信號(hào)的頻率。但是上述兩種方法都會(huì)產(chǎn)生±1個(gè)被測(cè)脈沖的誤差,在實(shí)際應(yīng)用中有一定的局限性。 根據(jù)測(cè)量原理,很容易發(fā)現(xiàn)頻率測(cè)量法適合于高頻信號(hào)測(cè)量,周期測(cè)量法適合于低頻信號(hào)測(cè)量,故本文高頻時(shí)采用頻率測(cè)量法,低頻時(shí)自動(dòng)換擋使用周期測(cè)量法。
三、設(shè)計(jì)結(jié)果展示 3.2分頻器的功能模塊及仿真 (1)分頻器的功能模塊: (2)源程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY FENP IS PORT(CLK:IN STD_LOGIC; --1 Hz測(cè)頻控制時(shí)鐘 FIN:IN STD_LOGIC; EN1,EN2:OUT STD_LOGIC; --計(jì)數(shù)器時(shí)鐘使能 CLR1,CLR2:OUT STD_LOGIC; --計(jì)數(shù)器清零 LOAD1,LOAD2:OUT STD_LOGIC); --輸出鎖存信號(hào) END ENTITY FENP; ARCHITECTURE ART OF FENP IS SIGNAL DIV2CLK :STD_LOGIC; SIGNAL DIV2FIN :STD_LOGIC; BEGIN PROCESS ( CLK ) IS BEGIN IF CLK'EVENT AND CLK='1' THEN --1HZ時(shí)鐘二分頻 DIV2CLK<=NOT DIV2CLK; END IF ; END PROCESS; PROCESS ( CLK,DIV2CLK ) IS BEGIN IF CLK= '0' AND DIV2CLK = '0' THEN --產(chǎn)生計(jì)數(shù)器清零信號(hào) CLR1<='1'; ELSE CLR1<= '0' ; END IF; END PROCESS; PROCESS ( FIN ) IS BEGIN IF FIN'EVENT AND FIN='1' THEN --二分頻 DIV2FIN<=NOT DIV2FIN; END IF ; END PROCESS; PROCESS (FIN,DIV2FIN ) IS BEGIN IF FIN= '0' AND DIV2FIN = '0' THEN --產(chǎn)生計(jì)數(shù)器清零信號(hào) CLR2<='1'; ELSE CLR2<= '0' ; END IF; END PROCESS; LOAD1<=NOT DIV2CLK; EN1<=DIV2CLK; LOAD2<=NOT DIV2FIN; EN2<=DIV2FIN; END ARCHITECTURE ART; 頻率計(jì)的關(guān)鍵是設(shè)計(jì)一個(gè)測(cè)頻率控制信號(hào)發(fā)生器,產(chǎn)生測(cè)量頻率的控制時(shí)序。控制時(shí)鐘信號(hào)CLK取為1Hz,2分頻后即可產(chǎn)生一個(gè)脈寬為1秒的時(shí)鐘信號(hào),以此作為計(jì)數(shù)閘門(mén)信號(hào)。當(dāng)計(jì)數(shù)閘門(mén)信號(hào)為高電平時(shí),允許計(jì)數(shù);當(dāng)計(jì)數(shù)閘門(mén)信號(hào)由高電平變?yōu)榈碗娖剑ㄏ陆笛氐絹?lái))時(shí),應(yīng)產(chǎn)生一個(gè)鎖存信號(hào),將計(jì)數(shù)值保存起來(lái);鎖存數(shù)據(jù)后,還要在下次計(jì)數(shù)閘門(mén)信號(hào)上升沿到來(lái)之前產(chǎn)生清零信號(hào)CLR,將計(jì)數(shù)器清零,為下次計(jì)數(shù)作準(zhǔn)備。 3.3計(jì)數(shù)器的功能模塊及仿真 (1)計(jì)數(shù)器的功能模塊: (2)源程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY JISHU IS PORT (CLK:IN STD_LOGIC; ENA:IN STD_LOGIC; CLR:IN STD_LOGIC; CQ:OUT INTEGER RANGE 0 TO 15; CO:OUT STD_LOGIC); END ENTITY JISHU; ARCHITECTURE ART OF JISHU IS SIGNAL CQI :INTEGER RANGE 0 TO 15; BEGIN PROCESS(CLK,ENA,CLR) IS BEGIN IF CLR= '1' THEN CQI<= 0; ELSIF CLK'EVENT AND CLK='1' THEN IF ENA='1' THEN IF CQI<9 THEN CQI<=CQI+1; ELSE CQI<=0; END IF; END IF; END IF; END PROCESS; PROCESS (CQI) IS BEGIN IF CQI=9 THEN CO<='1'; ELSE CO<= '0'; END IF; END PROCESS; CQ<=CQI; END ARCHITECTURE ART; 該仿真的作用是實(shí)現(xiàn)十進(jìn)制計(jì)數(shù)功能。從仿真圖中可以得出,當(dāng)?shù)谝粋(gè)計(jì)數(shù)器計(jì)數(shù)輸出CQ=9時(shí),下一秒時(shí)鐘上升沿到來(lái)時(shí),將產(chǎn)生一個(gè)CO進(jìn)位信號(hào)作為下一個(gè)計(jì)數(shù)器 的時(shí)鐘信號(hào),同時(shí)CQ清零,依次遞推到8個(gè)計(jì)數(shù)器。 3.4數(shù)據(jù)鎖存器的功能模塊及仿真 (1)數(shù)據(jù)鎖存器的功能模塊: (2)源程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY JICUNQI IS PORT(LOAD:IN STD_LOGIC; DIN:IN STD_LOGIC_VECTOR(31 DOWNTO 0); DOUT:OUT STD_LOGIC_VECTOR(31 DOWNTO 0)); END ENTITY JICUNQI; ARCHITECTURE ART OF JICUNQI IS BEGIN PROCESS(LOAD,DIN) IS BEGIN IF LOAD'EVENT AND LOAD='1'THEN DOUT<=DIN; END IF; END PROCESS; END ARCHITECTURE ART; 仿真圖的LOAD信號(hào)上升沿到來(lái)時(shí)將對(duì)輸入到內(nèi)部的計(jì)數(shù)信號(hào)進(jìn)行鎖存,并將結(jié)果輸出給判決模塊。當(dāng)輸入信號(hào)上升到時(shí)就會(huì)產(chǎn)生鎖存,否則,不進(jìn)行鎖存,該仿真在上升沿的時(shí)候,將其鎖存起來(lái),直到下個(gè)上升沿才會(huì)改變鎖存的數(shù)據(jù)。 3.5判決器的功能模塊及仿真 (1)判決器的功能模塊: (2)源程序: LIBRARY IEEE; USE IEEE. STD_LOGIC_1164.ALL; USE IEEE. STD_LOGIC_UNSIGNED.ALL; ENTITY PANJUE IS PORT(JCLK:IN STD_LOGIC_VECTOR(31 DOWNTO 0); JFIN:IN STD_LOGIC_VECTOR(31 DOWNTO 0); DOUT:OUT STD_LOGIC_VECTOR(31 DOWNTO 0); M:OUT STD_LOGIC; N:OUT STD_LOGIC); END PANJUE ; ..... 分別將頻率測(cè)量法和周期測(cè)量法的計(jì)數(shù)結(jié)果輸入判決模塊,當(dāng)頻率高于我們換擋頻率(100Hz)時(shí)輸出頻率測(cè)量法的計(jì)數(shù)結(jié)果,并輸出M=0,N=0;當(dāng)頻率高于我們換擋頻率(100Hz)時(shí)輸出周期測(cè)量法的計(jì)數(shù)結(jié)果,并輸出M=1,N=0;當(dāng)頻率低于我們1Hz時(shí)輸出周期測(cè)量法的計(jì)數(shù)結(jié)果,并輸出M=1,N=1,此時(shí)頻率f=1/N;
3.6綜合設(shè)計(jì)結(jié)果展示 (1)當(dāng)被測(cè)頻率為1000Hz時(shí):
此時(shí)輸出結(jié)果DOUT=1000, M=0,N=0;“DOUT=1000”表示“被測(cè)頻率為1000Hz”,“M=0,N=0”表示“頻率測(cè)量法的計(jì)數(shù)結(jié)果”。 (2)當(dāng)被測(cè)頻率為442Hz時(shí):
此時(shí)輸出結(jié)果DOUT=442, M=0,N=0;“DOUT=442”表示“被測(cè)頻率為442Hz”,“ M=0,N=0”表示“頻率測(cè)量法的計(jì)數(shù)結(jié)果”。 (3)當(dāng)被測(cè)頻率為100Hz時(shí):
此時(shí)輸出結(jié)果DOUT=100, M=1,N=0;“DOUT=100”表示“被測(cè)頻率為100Hz”,“M=1,N=0”表示“周期測(cè)量法的計(jì)數(shù)結(jié)果”。 (4)當(dāng)被測(cè)頻率為15Hz時(shí):
此時(shí)輸出結(jié)果DOUT=15, M=1,N=0;“DOUT=15”表示“被測(cè)頻率為15Hz”,“M=1,N=0”表示“周期測(cè)量法的計(jì)數(shù)結(jié)果”。 (5)當(dāng)被測(cè)頻率為1Hz時(shí):
此時(shí)輸出結(jié)果DOUT=1, M=1,N=0;“DOUT=1”表示“被測(cè)頻率為1Hz”,“M=1,N=0”表示“周期測(cè)量法的計(jì)數(shù)結(jié)果”。 (6)當(dāng)被測(cè)頻率為0.2Hz時(shí):
此時(shí)輸出結(jié)果DOUT=5, M=1,N=1;“DOUT=5”表示“被測(cè)頻率為1/5=0.2Hz”,“M=1,N=1”表示“周期測(cè)量法的計(jì)數(shù)結(jié)果且頻率低于1Hz”。
四、設(shè)計(jì)結(jié)果展示調(diào)試參數(shù)分析計(jì)算(1)頻率測(cè)量法:頻率f=N (2)周期測(cè)量法:頻率f=1/T 頻率計(jì)的精度與誤差要求:從上述的仿真結(jié)果可以看出,我們的設(shè)計(jì)方案的結(jié)果與被測(cè)頻率符合很好,誤差很小;實(shí)際上,測(cè)量的脈沖個(gè)數(shù)的誤差會(huì)在士1 之間。假設(shè)所測(cè)得的脈沖個(gè)數(shù)為N,則所測(cè)頻率的最大誤差為δ=1/(N-1) X100%。顯然,減少誤差的方法就是增大N,當(dāng)待測(cè)頻率為換擋頻率100Hz時(shí),誤差理論值為1/100約為1%,則測(cè)頻誤差應(yīng)為1%,隨著被測(cè)頻率越高,則誤差越低;當(dāng)?shù)陀趽Q擋頻率,尤其是當(dāng)頻率無(wú)限接近0Hz時(shí),頻率越接近被測(cè)頻率,誤差越小。
以上文檔下載:
word文檔.docx
(495.64 KB, 下載次數(shù): 8)
2021-8-1 03:37 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|