中心思想:
利用计数器生成目标频率的一半的两个正交相位时钟,然后通过上升沿和下降沿采样后异或得到输出频率
module freq_div #(
parameter N = 7
) (
input clk,
input rst_n,
output clk_out
);
//counter
reg [3:0] cnt ;
always @(posedge clk or negedge rst_n) begin
if (~rst_n) begin
cnt <= 0;
end else if (cnt == 13) begin
cnt <= 0;
end else begin
cnt <= cnt +1;
end
end
//
reg div1, div2;
assign tff_en1 = (cnt < 7) ? 1 : 0;
assign tff_en2 = ((3 < cnt) && (cnt < 11) )? 1 : 0;
always @(posedge clk ) begin
if (~rst_n) begin
div1 <= 0;
end else begin
div1 <= ~tff_en1 ;
end
end
always @(negedge clk ) begin
if (~rst_n) begin
div2 <= 0;
end else begin
div2 <= tff_en2;
end
end
assign clk_out = div1 ^ div2;
endmodule<

该博客介绍了如何通过计数器生成占空比为50%的奇数分频信号,包括两种方法:一是利用正交相位时钟的上升沿和下降沿异或;二是采用三个触发器实现。第二种方法在资源利用率上更优。
最低0.47元/天 解锁文章
649

被折叠的 条评论
为什么被折叠?



