zoukankan      html  css  js  c++  java
  • 直接测频法

    module    cepin(
            clk,rst_n,
            ad_data,ad_clk,cnt_ms,
            pinlv,cepin_buffer
    );
    
    input                clk;
    input                rst_n;
    input        [9:0]    ad_data;
    output                ad_clk;
    output        [39:0]    pinlv;
    output reg    [23:0]    cepin_buffer;
    output reg    [23:0]    cnt_ms;
    assign        ad_clk =~ clk;
    
    //计数
    parameter            CE_WAN = 24'd10_000_000;
    reg                    flag_cnt;
    always @(posedge clk or negedge rst_n)
        if(!rst_n)
            cnt_ms <= 'd0;
        else if(flag_cnt)
            cnt_ms <= 'd0;
        else
            cnt_ms <= cnt_ms + 1'b1;
    //检测上升沿
    reg            [9:0]    ad_data_r;
    reg            [2:0]    state;
    reg            [23:0]    cnt_cepin;
    always @(posedge clk or negedge    rst_n)
        if(!rst_n)begin
            state <= 'd0;
            ad_data_r <= ad_data;
            cnt_cepin <= 'd0;
            cepin_buffer <= 'd0;
        end
        else
            case(state)
            3'd0:begin
                ad_data_r <= ad_data;
                if(ad_data_r < ad_data)
                    state <= 3'd1;
                else
                    state <= 3'd0;
            end
            3'd1:begin
                ad_data_r <= ad_data;
                if(ad_data_r > ad_data)
                    state <= 3'd2;
                else
                    state <= 3'd1;
            end
            3'd2:begin
                if(cnt_ms > CE_WAN)begin
                    cepin_buffer <= cnt_cepin;
                    cnt_cepin <= 'd0;
                    flag_cnt <= 1'd1;
                end
                else begin
                    cepin_buffer <= cepin_buffer;
                    cnt_cepin <= cnt_cepin + 1'b1;
                    flag_cnt <= 'd0;
                end
                state <= 3'd0;
            end
            endcase
    
    
    assign        pinlv =  5*cepin_buffer;
    //assign    pinlv = CE_P / cnt_r;
    
    endmodule

    .直接测频法:由时基信号形成闸门,对被测信号进行计数。当闸门宽度为1s时可直接从计数器读出被测信号频率。计数值存在正负一个脉冲的误差是可能的,故此法的绝对误差就是1Hz(对1s宽的闸门而言)。其相对误差则随着被测频率的升高而降低,故此法适于测高频而不适于测低频。

  • 相关阅读:
    Why "权限不够“?
    ASP程序快速生成Excel文件
    百家争鸣之-破冰(2005年年度总结)
    PostgreSQL最常见问题
    Delphi使用server组件控制excel的一点经验
    打造完美linux系统:常用软件安装
    QA杂想(2006年2月16日)
    java jdk / api
    Linux + Database
    eclipse dorado plugin
  • 原文地址:https://www.cnblogs.com/bixiaopengblog/p/6651191.html
Copyright © 2011-2022 走看看