verilog时钟翻转怎么写_verilog时钟分频设计

1.偶分频模块设计

偶分频意思是时钟模块设计最为简单。首先得到分频系数M和计数器值N。

M = 时钟输入频率 / 时钟输出频率

N = M / 2

如输入时钟为50M,输出时钟为25M,则M=2,N=1。偶分频则意味着M为偶数。

以M=4,N=2为例,我们希望得到的输出时钟时序如下:

因此只需要将counter以clk_in为时钟驱动计数,当counter = (N-1)时,clk_out翻转即可。

verilog代码如下,其中WIDTH为(N的位宽-1):

module time_adv_even #(

parameter N = 2,

WIDTH = 7

)

(

input clk,

input rst,

output reg clk_out

);

reg [WIDTH:0]counter;

always @(posedge clk or posedge rst) begin

if (rst) begin

// reset

counter <= 0;

end

else if (counter == N-1) begin

counter <= 0;

end

else begin

counter <= counter + 1;

end

end

always @(posedge clk or posedge rst) begin

if (rst) begin

// reset

clk_out <= 0;

end

else if (counter == N-1) begin

clk_out <= !clk_out;

end

end

endmodule

testbench测试8分频即N=4,ISE仿真结果如下:

2.奇分频模块设计

奇分频需要通过两个时钟共同得到。首先得到分频系数M和计数器值N。

M = 时钟输入频率 / 时钟输出频率

N = (M-1) / 2

如输入时钟为50M,输出时钟为10M࿰

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值