赞
踩
关于测试 异步 fifo的复位使用
按下按钮K4(key_in[3])后开始写入到fifo,延时100个CLK读出FIFO,确保写入、读出之间数量不一致。在复位的时候可观察。写入和读出都是松开按钮K4停止。
按下按钮K0(key_in[0])后,开始复位。
按下按钮是低电平有效。
(* mark_debug="true" *) reg[15:0]alcnt,rd_cnt; (* mark_debug="true" *) reg[2:0] seq; (* mark_debug="true" *) reg kk,k_end,rd_key; (* mark_debug="true" *) wire k3,k0; assign k3=key_in[3]; assign k0=key_in[0]; always @(posedge sys_clk) begin alcnt<=alcnt==60000 ? 0:alcnt+1; seq <= seq==1 ? 0 : seq+1; kk<=key_in[3]; if(key_in[3] && kk==0) k_end<=1; else if(key_in[3]==0 && kk) k_end<=0; if(key_in[3]==0 ) begin rd_key<=1; rd_cnt<=rd_cnt==100 ? 100:rd_cnt+1; end else begin rd_key<=0; rd_cnt<=0; end end
按下K4(K3),写入、读出fifo松下按钮后,empty为低,所以没有完全读出
按下按钮K0,(复位不能一个clk,需要延长一段时间)
empty、full都为高
松开按钮后
观察empty、full 复位完成
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。