为了方便试验时候测试基带的频率。
/*
frq_cal #(.REF_FRQ ( 100*1000*1000)) frq_cal(
.sig(),
.clk(),
.res(),
.update()
);
*/
module frq_cal #(parameter REF_FRQ = 100*1000*1000)(
input sig,
input clk,
output reg [31:0] res,
output reg update
);
wire rst = 0;
reg a;
always @(posedge sig) a<=!a;
reg [2:0] r;
always @(posedge clk) begin r[2:1] <= r[1:0] ;r[0]=(a!=a );end
reg [31:0] d;
wire d_of = d >= (REF_FRQ-1 ) ;
always @ (posedge clk)if (rst | d_of)d<=0;else d <=d+1 ;
always @ (posedge clk) if(rst | d_of)cntr<=0;else if (r[2])cntr<=cntr+1;
always@(posedge clk) update<= d_of;
always@(posedge clk) if (d_of) res<= cntr;
endmodule