|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
任意分频器
! |6 [0 I- ]4 F8 U9 f' @* O2 k; D+ _module frequency_divider_mealy_fsm1s(clk_in, rst, clk_out);6 x5 a5 ~0 Q5 W$ B2 p
8 l: h1 J& j1 O8 V0 c
parameter HW = 3; //输出时钟高电平宽度0 o8 K6 e0 }3 d% T
parameter LW = 2; //输出时钟低电平宽度
! L& F8 j+ |# t- L# s7 }
$ V4 z! ]: i: Z input clk_in;
2 W+ m' B. u8 B [" r' S input rst;1 R; }$ q3 m1 | \: P4 k! P9 D2 k+ R
output clk_out;; C, s; E: z, I u, [+ X. \
n$ N' @. N7 A& Y9 L( x `define s0 1'b0 //显式状态机
0 j' I) x: c5 k' R5 [ `define s1 1'b1
% [" {1 Q: Q8 x( n+ c4 L & F# ]& j; m- {
reg clk_out;
6 { V! u- |% W* r$ @1 c reg [31:0] count;' X- R7 r. ~# T
reg state;
; L4 ?# i8 @; f* i
2 I3 x% c( v- [$ ?! f% v ^3 L always @ (posedge clk_in) # q( g5 R0 {! O8 i+ Q
begin+ I: w# |& b7 g/ E/ G
if (!rst) //同步复位0 k/ {# o" J/ W$ r7 q
begin4 y% d/ U' R, X& z
clk_out <= 1'b0;
6 @/ g6 s6 [# T- c) p count <= 0;) k5 i1 m, d$ m& A( d) _+ w
state <= `s0;
! e* M& o+ p8 u5 w+ ? end% V$ S. {1 E0 B1 S: d9 [. A
else
7 U4 M8 U! @! f" u8 ?, c! y6 _ case (state)
. [; \# D) ~1 R" e% M$ b7 n. e `s0 : if (count < LW-1)
5 J& ~: l+ ~5 n; ?8 y' X begin! w, _; X' \" ]8 A f1 j
count <= count + 1;
9 I8 g7 E8 n$ @: P1 p2 R state <= `s0; //显式状态 H$ o* b; F3 l2 g; f5 M9 c( h
end! O# D3 i1 C/ K* B1 J; E1 |( T1 s
else7 k9 v4 y; L1 Q7 i: @2 A4 y# W
begin
2 Y0 Y! Y+ g% g. z: g count <= 0;
% k3 G" k' v& W5 c clk_out <= 1'b1;8 \/ J3 B0 n1 `/ p- D5 W) |( n
state <= `s1;% T+ i* c& o p- f
end
a! G/ R" O0 Y3 ` U' g , T% S# r$ m) p! y# e1 g
`s1 : if (count < HW-1)/ r9 F, o" ^9 ?, G5 g: [4 B; H( E
begin
+ N: W1 E) {4 B b count <= count + 1;4 ?9 i$ ^+ a ?2 A
state <= `s1; //显式状态
: I5 Q( ]7 ~- Y end
9 }% r% x' h5 p7 b9 x3 P% `) M else! \- D3 k( b' z& S5 e2 Y' u
begin
o( T5 C) {- [; h count <= 0;
. D$ Z, a1 K a, N$ w clk_out <= 1'b0;
. s8 Y( L y1 Z8 c3 \4 i/ S state <= `s0;
# Y* p0 V( p8 W0 i5 i; m end
4 R9 g- N l b7 l endcase! Z; ?4 L1 `) T! B
end; Z- f5 t7 |7 W2 o" F+ l U
( R9 `0 U C5 @4 ]! Q2 c0 F# z
endmodule
: A U4 O( j, b; v% ~2 A, ~9 W2 D/ { | ' V# ?8 e( a8 W' u! I4 H1 m
2 e0 O9 y: o; Q, ~* _% i9 H
1 d9 E6 x! p2 }& S# H1 K. \8 B" |1 f7 E" `" ]* n6 z
. ^; O$ Y6 C* K
~ p0 n7 J( L& c, S+ G | 2 ]2 h; `6 z7 s8 `4 S* j
| ' _8 [! }/ @- S( p
|
|