|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
EDA实验与实践 filter_200us
! ?* U) ?( e+ Y+ [3 x; i
. E# m1 m( D$ o f- c% u' lmodule filter_200us(clk,in,out);$ e( s* A# [3 t7 d5 R; Z
input clk;
0 w* L3 w9 ?/ Y+ Q ]input in;! M5 ~3 W& j; z. W" G
output out;
5 y0 C/ F" X. J0 N- [& ~% f
8 e3 z1 J7 F1 F% l3 ^4 greg[19:0] cnt;; T( U& D3 ~, F, v+ g
reg out_r;1 N U+ d! z, v$ B+ L
always @(posedge clk)/ F: e5 }, B: }
begin4 C; F( J# y' G0 }: Q+ z
if(in == 1'h1) //一旦出现高电平即复位计数器, k% V- C! X# F& K9 a) \
begin/ t' L# c6 T3 y# `8 y8 x
cnt <= 20'h0; //清0计数器
" m: {- p+ w+ d0 @* M8 ?6 X. z- W out_r <= 1'h1;//输出置1
" p' c, ?8 f9 U end
& c# S" w* P, M% P else //低电平开始计数6 L" w2 v; ~. k3 ~) f2 G1 z
begin
Q' D2 C0 B: B* d& R" `) g if(cnt >= 20'd9600) //CLK=48M,约200us - j; w$ A8 u" q% T9 ?: r
begin
4 [$ ?9 C+ Y. u: \$ g// cnt <= 20'd9601; //计数满后保持9 C0 ~4 @" t. V. B
out_r <= 1'h0; //低电平宽度大于200us时输出低电平
4 c* A- }) b0 W end( _ t3 B$ ~( B; ^7 c; X" h
else //低电平宽度小于200us时输出高电平2 k8 u, o# z Y- g9 ~& j# D" J' a
begin9 |: ~2 W! Q) c/ K/ s! c
cnt <= cnt + 20'h1;//计数器累加
c' q+ k/ z$ ]$ a out_r <= 1'h1; //1 G: Z+ _- z$ V& d6 [
end% c3 Z M2 g( E
end
- T' j# k! d- W, M' dend/ P7 t: b# e" E* j% O* ` t
z9 q) T" X5 | P8 a& H K
assign out = out_r;
2 |, E, g6 U# \5 {" f" Fendmodule! E4 X' \# Y- m/ f! S
|
|