时钟分频及切换(FPGA)
最近做fpga的东西,需要做小数分频。把那个小东西完成了之后就来写一下时钟分频和切换的一些比较基础的东西。
偶数分频
偶数分频是很简单的东西。直接定义一个寄存器来记数然后根据寄存器记数来翻转就可以得到目标的偶数分频时钟信号了。
`timescale 1ns/1ns
module even_div
(
input wire rst ,
input wire clk_in,
output reg clk_out2,
output reg clk_out4,
output reg clk_out8
);
//*************code***********//
reg [3:0] clk_cnt;
always@(posedge clk_in or negedge rst)
begin
if(!rst)
clk_cnt<=4'd0;
else
clk_cnt<=(clk_cnt==4'd7)?4'd0:(clk_cnt+1'b1);
end
always@(posedge clk_in or negedge rst)
begin
if(!rst)
begin
clk_out2<=1'b0;
clk_out4<=1'b0;
clk_out8<=1'b0;
end
else
begin
clk_out2<= ~clk_out2;
if(clk_cnt==4'd0||clk_cnt==4'd2||clk_cnt==4'd4||clk_cnt==4'd6)
clk_out4<= ~clk_out4;
if(clk_cnt==4'd0 || clk_cnt==4'd4)