|
今日无聊,搬运了一个 二分频的代码来玩一玩。。。
分频器一般用计数器就可以实现了。2分频,也就是说对原来的时钟计数,每记2个数让新的时钟输出翻转。新的时钟周期不就是原来的2倍么,这就完成了2分频。同理可以实现任意分频,只要用计数器记满你想分频的倍率然后让新时钟输出翻转即可。 翻转的意思是,1变0,0变1。
直接上代码:
half_clk.v
- module half_clk_dai(
- clk_in,
- rst,
- clk_out
- );
- input clk_in;
- input rst;
- output clk_out;
- reg clk_out;
- always@(posedge clk_in or negedge rst)
- begin
- if(!rst)
- clk_out<=0;
- else
- clk_out<=~clk_out;
- end
- endmodule
复制代码
half_clk_tb.v
- `timescale 1ns/1ns
- module half_clk_top;
- reg clk_in;
- reg rst;
-
- initial
- begin
- clk_in=1;
- rst=1;
- #1000
- rst=0;
- #1000
- rst=1;
- end
-
- always #200 clk_in=~clk_in;
- half_clk_dai dai1(
- .clk_in(clk_in),
- .rst(rst),
- .clk_out(clk_out)
- );
- endmodule
复制代码
仿真效果如下:
|
赞赏
-
1
查看全部赞赏
-
|