TA的每日心情 | 开心 2019-11-19 15:19 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
verilog 语言实现任意分频 r0 h7 o9 }' W
分频器是指使输出信号频率为输入信号频率整数分之一的电子电路。在许多电子设备中如电子钟、频率合成器等,需要各种不同频率的信号协同工作,常用的方法是以稳定度高的晶体振荡器为主振源,通过变换得到所需要的各种频率成分,分频器是一种主要变换手段。早期的分频器多为正弦分频器,随着数字集成电路的发展,脉冲分频器(又称数字分频器)逐渐取代了正弦分频器。下面以Verilog HDL 语言为基础介绍占空比为50%的分频器。 m" [3 Q& _2 q3 H: ]1 ~
5 L2 z- u5 k2 q* y# }9 b8 p) y
1 偶分频4 }# ^0 n0 l; ^; c- R
5 C7 j% Q& S3 \' U9 s& A$ v
偶分频比较简单,假设为N分频,只需计数到N/2-1,然后时钟翻转、计数清零,如此循环就可以得到N(偶)分频。代码如下。! G/ N( k6 i; S* `
" J, _5 V R! N0 D# v
module fp_even(clk_out,clk_in,rst);" W' { I/ ]' ^- I% ^
% \6 Y7 z6 ], P0 x& g0 C' Houtput clk_out;
" L. d! ?) S1 m6 h) |
: p' Y! {* J1 S4 |* Tinput clk_in;
3 h& |. y. U) f$ Q3 a2 Z5 G; i% a0 S- @8 q
input rst;
* Z0 B4 y# d5 _7 a& v
1 l+ ^' p$ ?& \+ M7 oreg [1:0] cnt;% ]8 A7 r" R. @4 y3 z/ ]+ O
b2 `- ]' O1 O* b- q. M
reg clk_out;( K! r5 [* C+ v/ L- N" B3 V
& V7 B7 o! j) q1 c; L4 \5 mparameter N=6;
& i2 b5 `4 i$ ?$ T
3 S2 b# v; B7 e; M' C5 F
+ k6 r1 I1 A9 m; [* S! L( e: C! S
' [1 Y& k. w# Z) ~9 Malways @ (posedge clk_in or negedge rst)
8 }1 y7 a+ j5 P. `" Z d
& j& Q B) x+ G) m) t+ T1 U! ebegin0 ~/ F) ]. L/ j" i! z2 {& d
/ d/ ^% z1 r3 o$ Q _; y
if(!rst)
! o2 |# t- ~7 o W# A Q7 O6 p0 E! F3 w/ w# G
begin
3 a- E: U: ?8 z" M9 |) ^" `
2 N! w* S2 ?3 L, [3 J( S cnt <= 0;
4 x2 q; J+ G: P( I8 _/ _9 \% v! r# O2 K" ~
clk_out <= 0;
! z4 c* T7 ~! E5 z+ P$ m$ _
3 K( b2 x5 B. v5 f0 C' X end8 F6 G1 Q) v. g) Y; [! A5 d1 h
! x* B. E# ?& K8 r e* c7 Nelse begin/ n. q2 S* I& l# x) w
, y: u0 i. ~- _: w, V if(cnt==N/2-1)9 ^& r. b3 d M* n# M3 K
( G+ A/ z9 }' ^# X7 Y% d begin clk_out <= !clk_out; cnt<=0; end- f8 H! J$ \& F* ^
1 n/ o* y) r" n! [6 s% C( p8 f else
* m4 e+ y7 C) w6 O! A5 h' l
+ Q$ \3 O6 Z. K8 Q9 _ cnt <= cnt + 1;
! Q5 I3 q+ V- b3 Q3 Y+ l1 Z5 h! X& g+ l3 X
end( b V# v6 `! Z6 q
. m. ^- i1 H* X: k( Iend- z% v c) s. S" f
; n7 t* N: I5 M, L, yendmodule
# n' g8 k/ A' I& \) R: H" ~, K( o0 Y6 L$ h5 G
可以通过改变参量N的值和计数变量cnt的位宽实现任意偶分频。 | ! k# e5 X- m) m* R+ L# F! G
|
|