基于FPGA的等精度多功能测频仪( 二)低频信号测频

原理简述:      

        上次完成了等精度频率计,但对一个低频信号,使用周期法测量更好。

所以本模块用周期法测量低频信号的频率,实现原理相似与高频,直接

把低频信号的一个周期当做一个门控信号,将门控信号同步到基准时钟,

然后在一个周期内的时间进行计数。

公式:计数值x基准信号的周期=被测信的周期

           f=1/t

即可算出低频信号的数值。

 


代码:

注:最小频率为1hz

module dengjingdu_d(

	input clk,
	input rst,
	input clk_1hz,
	
	output reg[9:0]data								//1hz-1khz,最大值为1k位宽则为10位

	
);

	reg [9:0]r_data;

	reg [1:0]cnt;								
	reg gate;									//产生门
	
	reg gate_t;									//把门同步到基准时钟
	reg gate_tt;
	reg [25:0]cnt_50m;							//被测信号的一个周期下基准时钟的计数值,最大为1hz时
	reg [25:0]cnt_50m_temp;				

	always @ (posedge clk_1hz or negedge rst)	
	begin
		if(!rst)
			cnt <= 1'b0;
		else if(cnt  == 2'd2)
			cnt <= 1'b0;
		else
			cnt <= cnt + 1'b1;
	end
	
	always @ (posedge clk or negedge rst)		
		if(!rst)
			gate <= 1'b0;
		else if(cnt < 2'd0)
			gate <= 1'b0;
		else if( (2'd1 <=cnt) && (cnt < 2'd2))
			gate <= 1'b1;
		else 
			gate <= 1'b0;
	end

	always @ (posedge clk or negedge rst)		
	begin
		if(!rst)
			gate_t <= 1'b0;
		else
			gate_t <= gate;
	end

	always @ (posedge clk or negedge rst)
	begin
		if(!rst)
			cnt_50m <= 1'b0;
		else if(gate_t == 0)
			cnt_50m <= 1'b0;
		else if(gate_t == 1)
			cnt_50m	 <= cnt_50m	+ 1'b1;
	end
	
	always @ (posedge clk or negedge rst)
	begin
		if(!rst)
			gate_tt <= 1'b0;
		else
			gate_tt <= gate_t;
	end

	wire nege_gate;
	
	assign nege_gate = ((gate_tt == 1'b1) && (gate_t == 1'b0)) ? 1'b1 : 1'b0;

	always @ (posedge clk or negedge rst)
	begin
		if(!rst)
			cnt_50m_temp <= 1'b0;
		else if(nege_gate)
			cnt_50m_temp <= cnt_50m;
	end

	always @ (posedge clk or negedge rst)
	begin
		if(!rst)
			r_data <= 1'b0;
		else
			r_data <= (cnt_50m_temp * 0.00000002);  
	end
	
	always@(posedge clk or negedge rst)
	begin
		if(!rst)
			data <= 1'b0;
		else 
			data <= 1 / r_data;
	end
	
endmodule

仿真:

分频出一个1hz的信号当做被测信号

可以看到测得频率为1hz

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值