|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
EDA实验与实践 filter_200us
9 X p. u7 H6 k8 g+ _0 ~. F, X( F/ C
' x+ K9 @3 d$ X! L+ y1 pmodule filter_200us(clk,in,out);
* u8 ]- n2 [! X5 Z- r% b+ c% yinput clk;9 B; V* C5 E/ |0 T2 K+ `
input in;( D0 l7 Z. l p
output out;8 h5 O1 N" x* ]9 _
; z4 d1 }( {% W% c& \
reg[19:0] cnt;
+ g! Y3 A! z6 J4 a9 Hreg out_r;
/ K/ N: o b8 A b" T/ y5 ealways @(posedge clk): \6 f# q: f: C Y* {
begin
O @2 S" x. Q$ @/ N4 p$ s% \" G( ?6 T if(in == 1'h1) //一旦出现高电平即复位计数器' q4 G: M* A2 G- O# L; X& L
begin
, j6 {% M+ O8 U cnt <= 20'h0; //清0计数器1 Z/ V& d" o3 s
out_r <= 1'h1;//输出置1* c# K' B. g/ b
end
6 ]3 O+ }" O Z. P3 t6 O else //低电平开始计数
/ r$ ^" I; N/ g! Y' x5 ~4 R begin
# T$ d. ^, e- e5 t2 Q0 p5 h if(cnt >= 20'd9600) //CLK=48M,约200us 8 |# L B; p/ m3 u
begin
0 C/ o3 h P- I9 x6 {// cnt <= 20'd9601; //计数满后保持; {# W8 N9 `+ K( d4 _
out_r <= 1'h0; //低电平宽度大于200us时输出低电平8 N+ D& x# R V. {, o# ~
end( c9 q; s3 \$ g9 w* W) s' D3 h J3 O- a
else //低电平宽度小于200us时输出高电平% t7 _# _3 O. k& R7 K% l
begin
9 D# _# z9 a- t s cnt <= cnt + 20'h1;//计数器累加
5 T! X1 z4 Z6 w7 N9 p7 K* f out_r <= 1'h1; //
: O/ p2 U9 c+ ?) V/ i end
4 X+ A2 X- |( x9 a. y) W# ]. d( { end
3 s. F, d. n( H% }" Gend
* e0 Q Y/ f8 K$ S8 F
2 D9 c6 Q5 G# G7 H3 Kassign out = out_r;
' E6 _* |* i% ~: N6 x3 }0 _3 j6 Pendmodule; V. Y* G. }0 ~1 W! n
|
|