频率计的设计 测频一般有 直接测频法 测周法 等精度测量法 直接测频是给定一个周期较长的门阀,在这段时间内计数被测信号的上升沿次数N,然后用标准时钟信号频率与其相比 ,即可得到需测频率,但这种方法所得结果只能是大致的,不能精确.就像用用同一把尺子去量不同的数量级的物体, 1会有一定误差 2会浪费资源 较前两者而言,最后一个更为精确,它能根据不同的频率范围选择不同的门阀时间,在此基础上再用直接测频法得到频率. 我们的驱动时钟为50Mhz ,为使测量的频率更精确,我们先利用PLL核倍频为100MHZ 程序分析总结 然后我们选择一个初始预置闸门时间 我们先置为1毫秒 因为倍频后的时钟1s内变换100M次 1ms内变换 100000次 第一个模块:初始预置闸门内测被测信号粗略频率,用于之后判断需要用哪一个更匹配的频率段闸门测量 从而更为精确 always @(posedge fx or negedge rst) begin if(!rst) begin cnt_fx<=0; end else begin if(c1==1) cnt_fx<=cnt_fx+1;//预置闸门时间内计数 else cnt_fx<=0; end end 第二模块:实际门阀选择 always @(posedge clk or negedge rst) begin if(!rst) begin cnt<=0;预置门阀时间内,即 fx_time内的计数器 cnt_s<=0;标准时钟下的计数器,用于判断频率范围 end end else begin if(cnt begin cnt<=cnt+1; 在没到预置闸门结束时,两个计数器同步计数 cnt_s<=cnt_s+1; end else if(cnt==cnt_time) begin 到预置闸门信号结束时 进行信号频率范围判断 获得不同的预置闸门 if(cnt_fx>=10000&&cnt_s==cnt_time) begin cnt<=cnt+1; 表示满足以上条件时 cnt加1 结束闸门选择,产生能匹配待测信号的实际闸门为什么会结束闸门选择:因为这几个条件语句都在if(cnt==cnt_time)条件语句之内的,一旦不满足,就不会进行选择,进而直接生成实际闸门信号相关参数 end elseif(cnt_fx>=1000&&cnt_s==cnt_time*10) begin cnt<=cnt+1; end elseif(cnt_fx>=100&&cnt_s==cnt_time*100) begin cnt<=cnt+1; end elseif(cnt_fx>=2&&cnt_s==cnt_time*1000) begin cnt<=cnt+1; end elseif(cnt_fx>=1&&cnt_s==cnt_time*10000) begin cnt<=cnt+1; end if(fx&!fx_reg) cnt<=cnt+1; else cnt<=cnt; end else begin cnt<=cnt; cnt_s<=cnt_s+1; 若还没有达到结束闸门信号的要求时即(cnt=cnt_time)时cnt保持不变,cnt_s继续计数直到满足其中一个条件 end end else begin if(c1==0)闸门信号结束时计数器清零 begin cnt<=0; cnt_s<=0; end else begin cnt<=cnt; cnt_s<=0; end end end end 第三模块 :预置闸门控制信号 always@(posedge clk) begin if(cnt c1_r<=1; c1_r为c1的一个寄存器,用于下一个模块中与待测信号同步,避免相差+-1个周期 else c1_r<=0; end 第四模块:闸门信号与待测信号同步 always @(posedge fx,negedge rst) begin if(!rst) c1<=0; else c1<=c1_r; end 注意事项 1预置门阀时间越短,越节省资源,一定程度上能缩短测频时间,频率的精度取决于同步计数避免+—1个周期,以及标准频率的大小。 2去毛刺 输出加D触发器 原理就是用一个D触发器去读带毛刺的信号, 利用D触发器对输入信号的毛刺不敏感的特点,去除信号中的毛刺, 尤其是对信号中发生在非时钟跳变沿的毛刺信号去除效果非常的明显。但是对于大多数的时序电路来说,毛刺信号往往发生在时钟信号的跳变沿,这样D触发器的效果就没有那么明显了 信号延时同步法 采用同步电路可以大大减少毛刺。另外,由于大多数毛刺都比较短(大概几个纳秒),只要毛刺不出现在时钟跳变沿, 毛刺信号就不会对系统造成危害了。因此很多人认为,只要在整个系统中使用同一个时钟就可以达到系统同步的目标了 软件延时消抖适用于低频,去掉毛刺后更有利于低频信号的稳定,而高频本身毛刺很多,消抖也无济于事,经过仿真分析,消抖会使高频信号严重变形,使所测频率产生巨大误差。 3计数结果不得立即传出去,还得经过锁存器缓冲一下,使显示端显示稳定。当收、发数据双方的工作速度匹配时,这里的缓冲器可以用不带锁存结构的电路来实现。而当收、发数据双方的工作速度不匹配,就要用带锁存结构的电路来实现了,(否则,会出现数据丢失)。 FPGA任务 频率计总结 学习 FPGA Spi 32Spi 时间 10月25日——11月5日
|