求一个用verilog实现二分之一分频(是提高频率,不是降低频率)的代码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求一个用verilog实现二分之一分频(是提高频率,不是降低频率)的代码相关的知识,希望对你有一定的参考价值。
那是2倍频,不是分频。基本思想:通过逻辑延时,使同频时钟相位改变,而后将两个时钟相或即可得到二倍频电路,不过占空比不可调,由两个时钟相位差决定。
Verilog代码如下:
module twice (clk,
clk_out
);
input clk; output clk_out;
wire clk_temp;
wire d_outn;
reg d_out=0;
assign clk_temp = clk ^ d_out ;
assign clk_out = clk_temp ;
assign d_outn = ~d_out ;
always@(posedge clk_temp)
begin
d_out <= d_outn ;
end
endmodule 参考技术A 就是倍频呗~直接用PLL得了,搞得那么麻烦
IC面试常考题 Verilog三分频电路设计(占空比50%,三分之一,三分之二)
实现三分频电路最简单的是:
利用计数器实现。
时序图分析(本人比较懒,平常科研忙,所以直接手画时序图了,懒得用软件画了):
直接上图分析:利用计数器每隔三个周期信号翻转一次,同时在不同的计数下翻转得到的同步信号
clk_1和clk_2,再利用异或即可实现出一个不同占空比的三分频信号(同样的方法也可扩展到其他奇数分频设计中)。
例如占空比50%:
module Div_three(
input clk,
input rst_n,
output div_three
);
reg [1:0] cnt;
reg div_clk1;
reg div_clk2;
always @(posedge clk or negedge rst_n)begin
if(rst_n == 1'b0)begin
cnt <= 0;
end
else if(cnt == 2)
cnt <= 0;
else begin
cnt <= cnt + 1;
end
end
always @(posedge clk or negedge rst_n)begin
if(rst_n == 1'b0)begin
div_clk1 <= 0;
end
else if(cnt == 0)begin
div_clk1 <= ~div_clk1;
end
else
div_clk1 <= div_clk1;
end
always @(negedge clk or negedge rst_n)begin
if(rst_n == 1'b0)begin
div_clk2 <= 0;
end
else if(cnt == 2)begin
div_clk2 <= ~div_clk2;
end
else
div_clk2 <= div_clk2;
end
assign div_three = div_clk2 ^ div_clk1;
endmodule
占空比三分之一:
只用将上述代码中div_clk2翻转规律更改为 cnt==1 ,并且改为上升沿采样:
always @(posedgeclk or negedge rst_n)begin
if(rst_n == 1'b0)begin
div_clk2 <= 0;
end
else if(cnt == 1)begin
div_clk2 <= ~div_clk2;
end
else
div_clk2 <= div_clk2;
end
assign div_three = div_clk2 ^ div_clk1;
占空比三分之二:
将上述代码中div_clk2翻转规律更改为 cnt==2 ,并且也是上升沿采样:
always @(posedgeclk or negedge rst_n)begin
if(rst_n == 1'b0)begin
div_clk2 <= 0;
end
else if(cnt == 2)begin
div_clk2 <= ~div_clk2;
end
else
div_clk2 <= div_clk2;
end
assign div_three = div_clk2 ^ div_clk1;
以上是关于求一个用verilog实现二分之一分频(是提高频率,不是降低频率)的代码的主要内容,如果未能解决你的问题,请参考以下文章
IC面试常考题 Verilog三分频电路设计(占空比50%,三分之一,三分之二)
IC面试常考题 Verilog三分频电路设计(占空比50%,三分之一,三分之二)
IC面试常考题 Verilog三分频电路设计(占空比50%,三分之一,三分之二)