一、原理说明:
根据频率的定义和频率测量的基本原理,测定信号的频率必须有一个脉宽为1秒的对输入信号脉冲计数允许的信号;1秒计数结束后,计数值锁入锁存器的锁存信号和为下一测频计数周期作准备的计数器清0信号。这清0个信号可以由一个测频控制信号发生器产生,即图5-1中的TESTCTL,它的设计要求是,TESTCTL的计数使能信号CNT_EN能产生一个1秒脉宽的周期信号,并对频率计的每一计数器CNT10的EN使能端进行同步控制。当CNT_EN高电平时,允许计数;低电平时停止计数,并保持其所计的脉冲数。在停止计数期间,首先需要一个锁存信号LOAD的上跳沿将计数器在前1秒钟的计数值锁存进各锁存器REG4B中,并由外部的7段译码器译出,显示计数值。设置锁存器的好处是,显示的数据稳定,不会由于周期性的清零信号而不断闪烁。锁存信号之后,必须有一清零信号RST_CNT对计数器进行清零,为下1秒钟的计数操作作准备。 【例1】--测频控制器,使得频率计能自动测频 module testctl(clkk,cnt_en,rst_cnt,load); input clkk; // 1HZ output cnt_en; output rst_cnt; output load; reg div2clk; wire cnt_en; reg rst_cnt; wire load; always@(posedge clkk) div2clk<=~div2clk; always @(clkk or div2clk) begin if(!clkk & !div2clk) rst_cnt<=1'b1; else rst_cnt<=1'b0; end assign load = ~div2clk; assign cnt_en = div2clk;
endmodule
【例2】锁存器,将频率计的每位数锁存后输出
module reg4(clk,cq,led );
always@(posedge clk) led<=cq;
reg[3:0] led; input clk; input[3:0] cq; output[3:0] led;
endmodule
[例3] 用原理图方式将各模块连接起来
也可以用.v文件实现系统组合。
二、思考题
将频率计扩展为8位十进制频率计,并在测频速度上给予优化,使其能测出更高的频率。
因篇幅问题不能全部显示,请点此查看更多更全内容