日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于FPGA等精度的实时测量频率和占空比

發(fā)布時(shí)間:2024/3/12 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于FPGA等精度的实时测量频率和占空比 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

一、要求:

二、指標(biāo)要求?

三、?等精度測(cè)頻設(shè)計(jì)原理

四、時(shí)序分析:?

五、模塊設(shè)計(jì)?

1、計(jì)數(shù)器

2、讀數(shù)據(jù)

3、數(shù)據(jù)處理

4、數(shù)碼管顯示模塊

六、仿真分析

1、計(jì)數(shù)模塊

A、測(cè)量1Mhz頻率占空比為50%的信號(hào)的頻率。

?B、Em設(shè)置為1Mhz,占空比為46%的信號(hào)的占空比

2、數(shù)據(jù)處理模塊

3、總體仿真?

七、實(shí)測(cè)展示

?八、說明


一、要求:

????????利用Altera公司的FPGA開發(fā)軟件Quartus 13.1采用混合設(shè)計(jì)實(shí)現(xiàn)方波信號(hào)頻率和占空比測(cè)量。?

二、指標(biāo)要求?

1) 待測(cè)方波信號(hào)頻率范圍1Hz~1MHz,測(cè)量精度優(yōu)于0.1Hz

2) 待測(cè)方波信號(hào)占空比范圍1%~95%,測(cè)量精度優(yōu)于1%

3) 頻率數(shù)據(jù)顯示精度0.1Hz,給出8位數(shù)字的BCD碼結(jié)果

4) 占空比給出2位整數(shù)百分比的BCD碼結(jié)果

三、?等精度測(cè)頻設(shè)計(jì)原理

?設(shè)計(jì)原理流程圖如圖 1:

圖 1設(shè)計(jì)原理流程圖?

?????????將在相同時(shí)間內(nèi)對(duì)被測(cè)信號(hào)和標(biāo)準(zhǔn)信號(hào)同時(shí)計(jì)數(shù) ,D觸發(fā)器保證實(shí)際閘門時(shí)間與被測(cè)信號(hào)同步,消除被測(cè)信號(hào)計(jì)數(shù)誤差;讀數(shù)據(jù)模塊兩個(gè)技術(shù)模塊數(shù)據(jù)同時(shí)讀入送進(jìn)數(shù)據(jù)處理模塊處理;數(shù)據(jù)處理模塊將讀入的數(shù)據(jù)計(jì)算出頻率與占空比后送入顯示模塊;顯示模塊將頻率與占空比顯示在數(shù)碼管上。

等精度測(cè)頻率原理:

????????等精度測(cè)頻法本質(zhì)上是多周期同步測(cè)頻,它是在直接測(cè)頻基礎(chǔ)上發(fā)展起來的,在目前的測(cè)頻系統(tǒng)中得到了越來越廣泛的應(yīng)用。等精度測(cè)頻時(shí),同時(shí)對(duì)標(biāo)準(zhǔn)信號(hào)和待測(cè)信號(hào)計(jì)數(shù),而且實(shí)際閘門時(shí)間不是固定的,而是被測(cè)信號(hào)的整數(shù)倍,即與被測(cè)信號(hào)保持同步,因此消除了對(duì)被測(cè)信號(hào)計(jì)數(shù)所產(chǎn)生的士1個(gè)數(shù)字誤差,使測(cè)量精度大為提高。

四、時(shí)序分析:?

?????????如圖 2所示,Tx待測(cè)型號(hào)在Cl的預(yù)置閘門信號(hào)期間進(jìn)行采樣計(jì)數(shù),使得在En為高時(shí)Tx總是整數(shù)倍出現(xiàn)。?

圖 2時(shí)序分析圖?

????????設(shè)在一次實(shí)際閘門時(shí)間τ中計(jì)數(shù)器對(duì)被測(cè)信號(hào)的計(jì)數(shù)值為Nx,對(duì)標(biāo)準(zhǔn)信號(hào)的計(jì)數(shù)值為Ns。標(biāo)準(zhǔn)信號(hào)的頻率為fs,則被測(cè)信號(hào)的頻率為:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?fx=(Nx/Ns)·fs? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(1)? ? ? ? ?

五、模塊設(shè)計(jì)?

????????如圖 3所示,計(jì)數(shù)器模塊同時(shí)計(jì)數(shù)頻率Ns、Nx值與占空比Nh值,數(shù)值傳給數(shù)據(jù)處理模塊,由數(shù)據(jù)模塊switch信號(hào)切換顯示數(shù)據(jù)的不同位,數(shù)值傳給數(shù)碼管顯示模塊顯示。

????????由一個(gè)D觸發(fā)器實(shí)現(xiàn)預(yù)置閘門與待測(cè)信號(hào)的同步,觸發(fā)信號(hào)為Tx,后面四個(gè)D觸發(fā)器為讀信號(hào)和清零信號(hào)延時(shí),由50Mhz標(biāo)準(zhǔn)信號(hào)觸發(fā),延時(shí)兩個(gè)標(biāo)準(zhǔn)信號(hào)單元為Read信號(hào),延時(shí)四個(gè)標(biāo)準(zhǔn)單元為clr信號(hào);復(fù)位信號(hào)控制五個(gè)D觸發(fā)器的使能信號(hào)。

?

圖 3系統(tǒng)總體設(shè)計(jì)圖?

?模塊代碼展示:

1、計(jì)數(shù)器

頻率計(jì)數(shù)器:

module counter(clk,En,clr,tsq); input clk,clr,En; output reg [27:0]tsq; always@(posedge clk or negedge clr) beginif(!clr)begintsq<=28'b0;endelsebeginif(En)begintsq<=tsq+1;endend end endmodule

?占空比計(jì)數(shù)器:

module counter_duty(clk,En,clr,Tx,duty,tsq); input clk,clr,En,Tx; output reg [27:0]duty; output reg [27:0]tsq; always@(posedge clk or negedge clr) beginif(!clr)beginduty<=28'b0;tsq<=28'b0;endelsebegintsq<=tsq+1;if(En&Tx)duty<=duty+1;//高電平數(shù)end end endmodule

2、讀數(shù)據(jù)

module read_value(read,Ns_data_in,Ns_data_out,TX_data_in,TX_data_out,Nh_data_in,Nh_data_out); input read; input [27:0] Ns_data_in,TX_data_in,Nh_data_in; output reg [27:0] Ns_data_out,TX_data_out,Nh_data_out;always@(negedge read) beginTX_data_out<= TX_data_in;Ns_data_out<=Ns_data_in+28'd4;Nh_data_out<=Nh_data_in+28'd4; end endmodule

3、數(shù)據(jù)處理

module data_processing(Ns_data,TX_data,Fre_data_INT,Fre_data_Fra,duty,duty_rs); input [27:0] Ns_data,TX_data,duty; reg [55:0] temp; reg [27:0] remainder;output reg [9:0]duty_rs; //占空比 output reg [27:0] Fre_data_INT; // 頻率整數(shù)部分 output reg [6:0] Fre_data_Fra; // 頻率小數(shù)部分always@(Ns_data,TX_data) begintemp = 50_000_000*TX_data;Fre_data_INT = temp/Ns_data;remainder = temp%Ns_data; Fre_data_Fra= remainder*100/Ns_data; // 保留2位小數(shù)duty_rs =(duty*1000)/Ns_data; end endmodule

4、數(shù)碼管顯示模塊

module display(switch,Fre_data_INT,Fre_data_Fra,clk_50M,duty,Dis1,Dis2,Dis3,Dis4,Dis5,Dis6); input [27:0] Fre_data_INT; input [6:0] Fre_data_Fra; input [9:0] duty; input switch; input clk_50M; output reg [3:0] Dis1; output reg [3:0] Dis2; output reg [3:0] Dis3; output reg [3:0] Dis4; output reg [3:0] Dis5; output reg [3:0] Dis6;reg [27:0] Ns_data;always@(clk_50M) beginif(switch)//前六位beginDis1[3:0]<= Fre_data_INT/1_000_000;Dis2[3:0]<= (Fre_data_INT%1_000_000)/100000;Dis3[3:0]<= (Fre_data_INT%100000)/10000;Dis4[3:0]<= (Fre_data_INT%10000)/1000;Dis5[3:0]<= (Fre_data_INT%1000)/100;Dis6[3:0]<= (Fre_data_INT%100)/10;endelse//后六位(其中最后三位為占空比數(shù)據(jù))beginDis1[3:0]<= Fre_data_INT%10;Dis2[3:0]<= 0;Dis3[3:0] <= Fre_data_Fra/10;Dis4[3:0]<=duty/100;Dis5[3:0]<=(duty%100)/10;Dis6[3:0]<=duty%10;end end endmodule

六、仿真分析

1、計(jì)數(shù)模塊

????????在計(jì)數(shù)模塊中Ns為標(biāo)準(zhǔn)信號(hào)個(gè)數(shù),Nx為待測(cè)信號(hào)個(gè)數(shù),Nh為高電平計(jì)數(shù)個(gè)數(shù),tsq為頻率值,duty為占空比值。

?????? 計(jì)算公式tsq = 50_000_000*Nx/Ns;? duty=Nh/Ns;用quartus自帶仿真,仿高頻信號(hào)。

A、測(cè)量1Mhz頻率占空比為50%的信號(hào)的頻率。

????????設(shè)置Tx為1Mhz,預(yù)置閘門preset_gate周期為20us,clk_50M為標(biāo)準(zhǔn)50Mhz,reset為使能信號(hào),始終為高。

理論測(cè)得tsq=500。

????????實(shí)際仿真測(cè)得tsq=496,由于clr信號(hào)延時(shí)四個(gè)標(biāo)準(zhǔn)信號(hào)周期,所以tsq=500-4,后期數(shù)據(jù)處理模塊會(huì)將Ns補(bǔ)4,符合理論結(jié)果,如圖 4所示。

?圖 4計(jì)數(shù)器模塊頻率計(jì)數(shù)仿真圖?

?B、Em設(shè)置為1Mhz,占空比為46%的信號(hào)的占空比

????????理論測(cè)得Nh=230,Ns=500,duty計(jì)算得460(乘以1000后的結(jié)果,以便顯示)實(shí)際仿真測(cè)得duty=460,Nh補(bǔ)4后符合理論結(jié)果(原因同上),如圖 5所示。

圖 5計(jì)數(shù)器模塊占空比計(jì)數(shù)仿真圖?

2、數(shù)據(jù)處理模塊

????????Duty_rs為占空比值*1000,Fre_data_INT為頻率整數(shù)值,Fre_data_Fra為頻率小數(shù)值Read為讀信號(hào),switch為顯示位輸出轉(zhuǎn)換開關(guān)。

仿真1MHz,占空比為46%的信號(hào)。

根據(jù)公式tsq = 50_000_000*Nx/Ns;? duty=Nh/Ns。

理論測(cè)得Duty_rs=460,fre_data_INT=1000000,fre_data_Fra=0。

實(shí)際仿真測(cè)得Duty_rs=460,fre_data_INT=1000000,fre_data_Fra=0如圖 6。

圖 6數(shù)據(jù)處理模塊仿真圖?

3、總體仿真?

????????總體仿真電路圖如圖 7所示,隨機(jī)選取了5656.5Hz占空比為55.5%的信號(hào)測(cè)試,仿真結(jié)果如下圖所示。頻率仿真得到fre =5656.5hz,占空比為55.5%符合題目設(shè)計(jì)要求。?

圖 7總體仿真電路圖?

測(cè)試文件設(shè)置如圖 8

單位1ps,精度1ps。

圖 8測(cè)試文件圖?

圖 9總體仿真測(cè)試圖?

?Switch為1時(shí)輸出頻率高六位,為0時(shí)輸出低一位和小數(shù)點(diǎn)后一位,以及用0代替小數(shù)點(diǎn)(此模塊小數(shù)點(diǎn)沒接管腳),和占空比(最后一位為小數(shù)后一位)。如上圖9所示。

七、實(shí)測(cè)展示

????????用50Mhz分頻的待測(cè)信號(hào),測(cè)量280.8hz,占空比50%信號(hào)。(隨機(jī)選擇)

?圖 10生成待測(cè)信號(hào)分頻器設(shè)計(jì)

圖 11前六位顯示?

圖 12后六位顯示

????????如圖 11前六為分別是頻率的小數(shù)點(diǎn)前2至7位,如圖 12第一位是頻率的小數(shù)點(diǎn)前1位,第二位是用來當(dāng)小數(shù)點(diǎn)的0(此塊板子沒有接小數(shù)點(diǎn)管腳),第三位是頻率的小數(shù)點(diǎn)后一位,后三位用于表述占空比,其中最后一位是占空比小數(shù)點(diǎn)后一位;可見測(cè)得數(shù)據(jù)位,頻率:280.8hz,占空比為50.0%。

????????將圖 10中的第7行89000改為85000,可改變其占空比,理論計(jì)算得89000/178000=47.7%,實(shí)際測(cè)得也為47.7%,如下圖所示。

?圖 13改變占空比后的后六位顯示

?八、說明

????????因?yàn)閷?shí)際測(cè)量信號(hào)不是由信號(hào)發(fā)生器生成的標(biāo)準(zhǔn)信號(hào),而是通過50Mhz分頻產(chǎn)生而得,?根據(jù)實(shí)際測(cè)量結(jié)果可知,較高頻的測(cè)量誤差較大,其原因是因?yàn)槠浯郎y(cè)信號(hào)是由標(biāo)準(zhǔn)50Mhz分頻而得,在生成較高頻時(shí)由于 ?(數(shù)據(jù)處理+程序運(yùn)行時(shí)間)/理論分頻的周期 的比值較大,數(shù)據(jù)處理時(shí)間+程序運(yùn)行時(shí)間使實(shí)際分頻周期偏大,使得實(shí)際測(cè)得信號(hào)頻率偏小,誤差較大;待測(cè)頻率越高誤差越大。

? ? ? ? 如果使用信號(hào)發(fā)生器作為標(biāo)準(zhǔn)輸入信號(hào),誤差應(yīng)該符合題目需求,但是沒有實(shí)測(cè)過。

總結(jié)

以上是生活随笔為你收集整理的基于FPGA等精度的实时测量频率和占空比的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。