TA的每日心情 | 开心 2019-11-19 15:19 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
. q* E2 j8 R0 T* m! J7 `: F' b- N: x- ]
今日无聊,搬运了一个 二分频的代码来玩一玩。。。
% O- U7 C T. c/ h9 t6 |4 j' O分频器一般用计数器就可以实现了。2分频,也就是说对原来的时钟计数,每记2个数让新的时钟输出翻转。新的时钟周期不就是原来的2倍么,这就完成了2分频。同理可以实现任意分频,只要用计数器记满你想分频的倍率然后让新时钟输出翻转即可。 翻转的意思是,1变0,0变1。
- ?3 m( M) ?( A4 ~$ F* ^2 K
+ Z8 o1 e0 q/ F# ^
) ~, n, r4 |3 H直接上代码:
3 x2 i* \; k" s7 J2 p- T, I) Fhalf_clk.v # U; h" C- v' q% J
- 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
9 j8 ~. Z `3 I( [6 @ ~4 r& z
6 H9 }2 R( i% S! a. I& o9 e
/ v' I/ T0 C$ M" \5 C2 T$ G- l- W
- h0 o, H( Z! Z; \) l7 t* F: _: f7 m; i5 ^" Q4 n- P# n
8 U/ d" b' ]5 C0 P$ }half_clk_tb.v ; \# \1 P# e9 x! Q. I2 _" z
4 c3 A' w* [0 A" f% H7 {" _
- `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
- , w- q6 ?9 `5 C
2 j& o9 t; ?- Z, {1 p
2 u+ @. T7 A0 |: I: ? g( V' }' q& p! r l" ]$ U0 ~/ [4 P7 P' ^! K
/ A- N0 B. {4 s. J! Z, f
. {! a. R& S( N; L+ P& t# ?2 c$ m/ Y. \! U
仿真效果如下: 5 }+ X- S& M6 B6 i j$ b9 Z
- k5 H k4 e% H- V w( E4 Q
. @+ G4 A$ |! s2 x2 C) S8 a; e$ k4 \4 Z! ]# C7 S6 h
# Y/ W" T9 D. z& H, k/ n
|
|