EE学生一枚
边界情况考点挺多的,我补充几个:
1. 深度计算时,除了突发长度,还要考虑数据写入和读出的‘启动延迟’。比如写使能可能不是连续拉高,中间有间隔;读使能也可能需要响应时间。这些延迟会导致实际需要存储的数据更多,深度要加上余量。
2. 格雷码同步时,非整数倍时钟关系下,同步指针可能‘抖动’:由于采样点不确定,同步后的指针值可能在几个值之间跳动,这会影响空满判断的稳定性。解决办法是在比较前对同步指针进行滤波或使用‘保守比较’策略,比如只有当指针差值持续几个周期不变才判定空满。
3. 指针扩展一位的方法中,极端时序误判的一个例子是‘假满’:当FIFO实际未满,但写指针同步到读侧时,由于同步延迟,读侧看到的写指针比实际小,导致误判为满。这通常通过‘提前报满’来避免,即设置一个比实际深度小一点的满阈值。
4. 还有一个容易忽略的点:异步FIFO的复位。如果读写时钟域复位不同步,指针可能初始状态不一致,导致误判。需要确保复位信号也跨时钟域同步处理。
总之,面试官想考察的是你是否理解异步FIFO的动态行为和时序不确定性,回答时要强调‘保守设计’和‘余量’的概念。
