FPGA|CPLD|ASIC论坛
直播中

晓灰灰

7年用户 436经验值
擅长:可编程逻辑 嵌入式技术 EDA/IC设计 接口/总线/驱动
私信 关注
[经验]

关于异步fifo的安全问题:

关于异步fifo的安全问题:

1. 虽然异步fifo可以提供多个握手信号,但真正影响安全性能的就两个:
2. 一个是读时钟域的空信号rdrempty
3. 另一个是写时钟域的满信号wrfull
4. 这是由于,如果异步fifo的双口ram真的空了,而跨时钟域延迟造成的rdempty仍然非空,则读fifo的逻辑,就有可能根据rdempty信号(非空指示),发出将导致错误的读请求rdreq
5. 另外,如果异步fifo的双口ram真的满了,而跨时钟域延迟造成的wrfull仍然非满,则写fifo的逻辑,就有可能根据wrfull信号(非满指示),发出将导致错误的写请求信号wrreq
6. 因此,异步fifo必须谨慎的分析其节拍关系,确定读时钟域的空信号,一定要在真空之前出现;写时钟域的满信号,一定还要在真满之前出现。
7. 这种almost empty和almost full的设置,无论altera或xilinx均采用。
8. 也就是说,如果双口RAM真空之前报空,则延迟造成的rdreq,异步fifo仍然可以正确响应
9. 双开RAM真满之前报满,则延迟造成的wrreq,异步fifo仍然可以正确响应
10. 异步fifo的报空过程,可以用火车票比喻。车站在还有几张票的情况下,显示票已经售空。这并不会发生混乱,但如果有紧急情况或领导需要,还有这几张票缓冲。

回帖(1)

晓灰灰

2018-3-5 10:40:47
关于异步fifo的安全问题:

1. 虽然异步fifo可以提供多个握手信号,但真正影响安全性能的就两个:
2. 一个是读时钟域的空信号rdrempty
3. 另一个是写时钟域的满信号wrfull
举报

更多回帖

发帖
×
20
完善资料,
赚取积分