FIFO
- FIFO一些介绍:FIFO由RAM配置而来。7系列中配置FIFO不需要额外的CLB组成计数器,比较器,状态转换标志位。只需要一个BRAM就组成一个FIFO。但是需要注意的是独立的读写宽度的配置需要额外的CLB.
- Dual-Clock FIFO
Almnost_full和Almost_empty偏移范围
- almost_full和almost_empty可以配置在FIFO地址范围的几乎任何位置。
- Reset到底清零的是怎什么,为方便解读粘贴手册原话
- 在复位期间,是将读写地址指针指向首地址处,而不是把内部数据清零。
-
关于FIFO读写状态的判断
-
地址最高位表示指针是不是绕回
-
计数器
格雷码
-
当一个二进制计数值从一个时钟与同步到另一个时钟域时,可能有很多位同时变化,在同一个时钟沿同步多个信号的变化会带来亚稳态。而格雷码每次变换只有一位发生了变化。所以通过将地址转化为格雷码,再把格雷码同步到另一个时钟域,以此来作为空满状态的检测。
- 具体如何进行空满检测
- 空,就是两个地址对比完全一致
- 满,并不能简单比较MSB不同和其他位不同,比如8[1000]和7[0111]。所以通过格雷码进行满判断的时候需要满足两个条件——同步的地址值最高位MSB不相同;同步而来的地址值的次高位也不相同。