TA的每日心情 | 开心 2019-11-19 15:19 |
|---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
verilog 语言实现任意分频2 ~7 L- d5 \. h
分频器是指使输出信号频率为输入信号频率整数分之一的电子电路。在许多电子设备中如电子钟、频率合成器等,需要各种不同频率的信号协同工作,常用的方法是以稳定度高的晶体振荡器为主振源,通过变换得到所需要的各种频率成分,分频器是一种主要变换手段。早期的分频器多为正弦分频器,随着数字集成电路的发展,脉冲分频器(又称数字分频器)逐渐取代了正弦分频器。下面以Verilog HDL 语言为基础介绍占空比为50%的分频器。' s& f- f. `7 w
% v# d( W3 U. a& m
1 偶分频
* w% k/ }/ m7 l# v: h- o- d
: A7 e* Y P5 o. o偶分频比较简单,假设为N分频,只需计数到N/2-1,然后时钟翻转、计数清零,如此循环就可以得到N(偶)分频。代码如下。
: t! G! h( ?- k0 P/ C: S2 m4 [3 O5 w( o. d! Z: p7 k2 [
module fp_even(clk_out,clk_in,rst);
# |6 ?- K- z) \$ w/ O) o5 p$ b3 }) X
4 g: H7 ?8 D" F, X) X( L; ^output clk_out;
/ K' w! X# o' D# M2 L
% n1 A9 z+ v3 H3 ]input clk_in;
8 r- K, q+ x! z* J2 F
) C' U: k2 b X* }5 G) vinput rst;
, a" g* w4 ]3 ]: W- ^, ?6 L$ |3 I6 v! i6 t" _, b0 W
reg [1:0] cnt;; H( R6 {: l4 w8 a+ x4 L- N5 R
* [/ B8 f+ S* s$ L0 zreg clk_out;
8 X* d% S9 u# C4 B4 ?) N q1 d4 O! p+ H' U7 `
parameter N=6;0 H& Y6 a0 q, R4 }3 r
$ l, G( R) I7 S O( s2 ]0 c
8 j3 L5 U- t6 B( N* d* R
/ ]# y4 ~2 C) }0 W/ y0 ~" V4 Talways @ (posedge clk_in or negedge rst)+ {9 [1 l# B* N. R* U
1 _ S2 @7 |. S1 f6 sbegin3 r" j) Y, J# w$ q; E5 _
8 f3 ]7 E; q) y8 f
if(!rst)
. I, I0 b. Y: ], B3 C
8 O& W: _9 s% [: K% A. k7 H begin
' X' Q6 k4 P4 Z6 S, t7 X( S1 [
7 m* v) h" ]9 D6 ~8 Z& q cnt <= 0;8 l5 f; v, |# C7 {
; b# z! u5 b5 l; v+ V+ u( J( `+ T
clk_out <= 0;. G$ H# u1 a! d5 U, v. y: \0 o
" m4 v1 r% M8 j9 Y! l% q
end! o! W( G9 \' Y0 \' f
: C1 S% N' g& ^- w) A8 O( {% J6 i$ r
else begin
1 @7 ?' `& z8 U8 M E, w
2 E2 X3 C5 V& X9 S/ b. k& m if(cnt==N/2-1)
7 g1 @! O& [5 u9 U4 Q
6 o. Z e |8 {, v3 d begin clk_out <= !clk_out; cnt<=0; end
' @/ z) r. P' l: `# T
" G0 |" ]2 N4 O' K U- X9 a else
5 |. C$ j5 y: e, i n; N
2 A9 l) H- K9 D, S cnt <= cnt + 1;; C- g/ n' T) u
* v- x$ A7 a% D, S- k end0 ~1 w) k$ y* [# e h
" A/ o9 d* l5 ?
end
$ q/ \2 O4 m2 p
/ f J$ \' N) eendmodule
) Y3 s/ L1 }+ h
# W6 p# K3 T1 F$ I3 r' F- g5 t. t可以通过改变参量N的值和计数变量cnt的位宽实现任意偶分频。 |
& Q+ i- p8 C+ W4 }9 H* G+ t, z* y |
|