TA的每日心情 | 开心 2019-11-19 15:19 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
verilog 语言实现任意分频
! g" W! l [9 ~% z( B6 k4 X分频器是指使输出信号频率为输入信号频率整数分之一的电子电路。在许多电子设备中如电子钟、频率合成器等,需要各种不同频率的信号协同工作,常用的方法是以稳定度高的晶体振荡器为主振源,通过变换得到所需要的各种频率成分,分频器是一种主要变换手段。早期的分频器多为正弦分频器,随着数字集成电路的发展,脉冲分频器(又称数字分频器)逐渐取代了正弦分频器。下面以Verilog HDL 语言为基础介绍占空比为50%的分频器。
, [% v: T+ E2 ?. ^( n+ e( I$ D/ j% t' W: H: A3 x$ j. q# O
1 偶分频7 ^: ?# c/ T- n- x, R
+ }* t$ V0 o2 a! ]偶分频比较简单,假设为N分频,只需计数到N/2-1,然后时钟翻转、计数清零,如此循环就可以得到N(偶)分频。代码如下。
7 B. u% C' I& P' h
3 b8 E) c$ v9 e. }; M z6 F3 amodule fp_even(clk_out,clk_in,rst);
: G" |$ f$ Y% D/ F/ K) d$ ^& E
) L. h( J) M. ^/ k z+ soutput clk_out;* T1 z! c" }, S
+ I9 _' U$ R, s: {, `4 E! Oinput clk_in;
+ R3 M, m& Y5 ], o: L U- |
) m$ Y6 y* ^7 i* Cinput rst;
/ v1 w' `7 J2 I3 P+ I x3 E& @6 O p1 Z
reg [1:0] cnt;
1 A E" {0 G2 ~. |7 [2 L3 b
" U5 _0 {% A, R; M! f7 }6 v& Rreg clk_out;9 l% _8 }$ E: n) n/ m# l
0 D! {+ B& }4 A* m- H* Y6 |
parameter N=6;7 i1 U- m3 s z: f: r
( n, `! d, R( W( E
2 A; H: t0 A( Z9 I
- r* i0 o U9 t, C8 q* C% h& Qalways @ (posedge clk_in or negedge rst)" ?0 y! |. l7 y% _
) K, Q) U: [# I3 ]0 C( K
begin: C2 e# ]0 S; h6 h, X* R/ b! D
8 T# C% R) N: | `4 h
if(!rst)
% J$ s+ X$ c; l( R5 }1 L8 ~7 @% h; \
begin% s Z; k' W8 ` z
1 P. k9 d. l6 k3 C cnt <= 0;
' s. n6 ?9 |3 V/ n
* O6 [! P. ^; z9 |0 ?7 X- J clk_out <= 0;
6 E% W, Y/ f- V5 B% d: r% ~8 g% U9 K
end# Q1 q; [& |6 Q# _) {
0 R) N9 n0 E2 n7 v4 R; t) Q
else begin
9 n; ~9 X# [& u7 W) o4 b4 W! l! v& a. o( u# v+ ]# k6 k, C
if(cnt==N/2-1)
) F: b0 C3 O( C3 z( P) o
* J+ S$ C. J; h; i7 w& p begin clk_out <= !clk_out; cnt<=0; end
|7 H; c* R: E+ M: e# g! ~6 N! O+ i! N/ e" q9 _$ i1 L
else
& U. W8 v+ J; s0 B
8 e# @3 t" r9 X& p+ o cnt <= cnt + 1;$ k$ i6 D S. x8 I, M
+ j _" ]4 ^( O% J: Q
end, y) @* B0 p' j8 J z
& r o/ @* V' |' y( K2 {( H. e* @ ^
end) o) w) I+ e2 ^% A+ Z
' }9 T# g, h& _! |( E0 q' Gendmodule
/ D. d5 B1 F$ Q0 d! F8 D* L8 _* Y8 B" U/ P% C
可以通过改变参量N的值和计数变量cnt的位宽实现任意偶分频。 | + e5 i: r$ `/ m. E% F
|
|