module async_cmp(aempty_n,afull_n,wptr,rptr,wrst_n);
always @(posedge high or negedge dirset_n or negedge dirclr_n)
if (!dirclr_n) direction <= 1'b0;
else if (!dirset_n) direction <= 1'b1;
else direction <= high;
endmodule
读写时钟异步使得FIFO存储器的输入和输出数据速率不相等,在读操作时钟频率高于写操作时钟频率时,可能出现“读空”状态;当写操作时钟频率高于读操作时钟频率时,可能出现“写满”状态。在高速在片激光告警接收系统中,数据读取时钟比写时钟要高,本文选取第一种情况进行仿真。无论是“读空”还是“写空”,对于异步FIFO来说,读取的数据一定等于写入的数据。利用Modelsim SE 6.0仿真软件进行仿真,其波形如图7所示。结果表明,该设计是正确的。