异步FIFO设计

同步FIFO REVIEW

  • 方法1:使用计数器判断空满
  • 方法2:使用扩展一位的地址指示空满,读写指针最高位不同,剩余的位都相同,表示满了;读写指针相等,表示空

异步FIFO

格雷码产生

  • gray_code = data ^ (data >>1)
  • 相邻两个数之间只有一个bit发生变化

异步FIFO原理

  • 读写时钟不一致
  • 使用地址扩展的方式判断空满
  • 两个时钟域,所以存在跨时钟域的问题,所以使用gray码,相邻两个数之间只有一个bit发生变化,发生跳转的时候只有1bit发生变化
  • 产生空满信号,需要比较地址指针,指针存在不同的时钟域,所以需要进行跨时钟域的处理,先将地址指针转变为格雷码之后,进行打两拍进行同步


RTL

异步FIFO包含

  • syn - 两级同步器
  • bin_to_gray - 二进制数转gray码
  • write_ctrl - 写控制模块,产生满信号
  • read_ctrl - 读控制模块,产生空信号
  • RAM





两级同步器


bin_to_gray

写控制


读控制端


posted @ 2024-02-25 12:56  Icer_Newer  阅读(66)  评论(0编辑  收藏  举报