TA的每日心情 | 开心 2019-11-19 15:19 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
; y4 |9 ~2 w$ d3 a" [: p/ d3 Y9 [$ s
. _" b" W$ G( e) a" x今日无聊,搬运了一个 二分频的代码来玩一玩。。。
' ~, }) s4 o) |! I$ E) ~* c3 V分频器一般用计数器就可以实现了。2分频,也就是说对原来的时钟计数,每记2个数让新的时钟输出翻转。新的时钟周期不就是原来的2倍么,这就完成了2分频。同理可以实现任意分频,只要用计数器记满你想分频的倍率然后让新时钟输出翻转即可。 翻转的意思是,1变0,0变1。- r3 {+ x1 J8 X. J1 T$ v
8 @# w9 E: M. h& j ! q! w% H) q" ]' M, [* j
直接上代码:
8 ] g. d9 U& p0 w5 C7 {, o% H/ U3 Lhalf_clk.v
6 T$ n# j, l6 a! a0 e" k3 W- 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
" h- t" ^& I A2 L1 G0 O$ S
3 b8 s9 C9 c g1 P; Z Y. r5 [- J1 ]9 s4 y7 Z$ Y
; ?- @# U1 }& i0 P3 x
! A& e0 L1 n% k
# l8 T& q+ t+ ~: Yhalf_clk_tb.v , j9 ~" h/ U- j, p9 }
. j, n8 R* X! ?$ S
- `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 i* D8 P4 [6 T$ O% |
( B3 K$ e1 D7 J4 x
8 c9 X- W S6 t8 O+ ?8 Q5 z3 a
" s# n# l/ q' ]" `7 X$ z: w# G/ P0 O4 o
) u: r8 {" [% v3 L& l
/ h5 ^; l5 ?; T0 u: ~% h6 p! h
仿真效果如下: 5 J8 g0 M# z. q( ~/ E2 w* {8 f1 ~
. j/ T. s, o9 `5 _
) m: I3 }) V; s5 y* z
0 N% f; w- X% a6 t' P1 W
$ @- T* q# i4 I! s |
|