|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
EDA实验与实践 filter_200us f) s" b* Z- U, G" W4 V5 i
4 p$ t$ C! p9 M" O1 amodule filter_200us(clk,in,out);
; l3 C* f( M4 linput clk;
/ Q, g3 Q/ \* ?+ Hinput in;
8 Q% ^9 a: d$ d- soutput out;5 l! X3 u: ^3 I- N; G' T
1 ]& L, Z5 X! Y4 ?8 A* C: O
reg[19:0] cnt;
' k7 G7 H* S9 @% L7 o# }reg out_r;# y- G# i8 ~0 [7 j- O
always @(posedge clk)
1 z6 ^. V$ |; T$ |8 _" t$ sbegin0 o5 K l4 Q, e J6 r' ?' U
if(in == 1'h1) //一旦出现高电平即复位计数器0 `4 d6 ^# M4 a6 U* F+ J
begin
* ^# X+ i p: Y$ G7 z( }+ q cnt <= 20'h0; //清0计数器9 a8 v5 ?4 i5 h$ H# n( u' Y
out_r <= 1'h1;//输出置1
( Y: X, P0 ^ } end; Z1 s6 q. y' Z4 L: h; _ f
else //低电平开始计数
3 V, n, C) L, r9 b$ R begin* t% T3 U. V" g6 y
if(cnt >= 20'd9600) //CLK=48M,约200us
( _3 r8 [4 a/ Q2 h8 i! M- @ begin
9 {9 b$ M; O b F2 [// cnt <= 20'd9601; //计数满后保持 ~) v' ^: u7 R W
out_r <= 1'h0; //低电平宽度大于200us时输出低电平
% W7 j5 D$ x* H+ o' ?& ^8 B end
+ b" C2 w- R. c( F2 w4 N/ w else //低电平宽度小于200us时输出高电平+ i1 [% S0 D3 K- I) o
begin
2 t' [: n0 ]1 S cnt <= cnt + 20'h1;//计数器累加
; R; W) h; v& D$ k out_r <= 1'h1; //9 T/ `/ B% I/ ?; _
end
, S$ c. ?- A" ], k, c( L end
/ C5 a/ I) C1 \1 D$ z4 V. p0 {end" ]! E9 j5 q6 r
' D! g7 p1 Y2 n. W* A; w5 S
assign out = out_r;
3 `7 P5 f7 h( f5 Uendmodule
3 @2 \" f- q7 C5 J. k" ~6 z9 `# A |
|