zyyzyy的个人空间 https://blog.eetop.cn/466104 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

异步fifo设计中空满标志的产生:由简单到较复杂(欢迎讨论)

已有 3241 次阅读| 2009-9-1 14:31

异步fifo的设计:

空满标志的产生方法:

1,简单

empty=(wptr[n:0]==rptr[n:0]; 读指针追上写指针

full=(wptr[n-1:0]==rptr[n-1:0]&&wptr[n]!==rptr[n]; 写指针转一圈后追上读指针

但是读指针和写指针是异步的,所以会产生错误

 

2,下述方法可解决亚稳态

always @(wptr or rptr)

if(wptr[n-1:0]==rptr[n-1:0])

if(wptr[n]==rptr[n])

begin

empty<=1;

full<=0;

     end

else begin

 full<=1;

empty<=0;

       end

else begin

       full<=0;

       empty<=0;

    end

always(posedge reclk or negedge empty)

 if(!empty)

   (rempty,rempty2)<=2’b11;

else

  (rempty,rempty2)<=(rempty2,~empty);

always(posedge wrclk or negedge full or negedge wrst_n)

 if(!wrst_n)

   (wfull,wfull2)<=2’b00;

else if(!full)

 (wfull,wfull2)<=2’b11;

     else

(wfull,wfull2)<=(wfull2,~full);

 

 

3,较优的空满标志产生方法,地址分为四个象限

direction=1,先表示将满,再表示满

direction=0,先表示将空,再表示空

不将空,不空,不将满,不满时输出保持前期置的值.符不符合功能要求呢?

.是符合功能要求的,因为两个时钟虽然不同,但是是固定的,所以,一个系统,要么总产生空标志(读时钟大于写时钟),要么总产生满标志(写时钟大于读时钟)

空满信号的产生逻辑虽然是差不多,但是对于一个特定的系统,空满逻辑的使用情况是不同的,一般要么只使用空逻辑,要么只使用满逻辑.

对于上面这个空满逻辑,如读时钟和写时钟不改变的时候是可以用的,但是如果,时钟频率中途改变,则空满标志的产生就错误了!

 


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 0

    获赞
  • 15

    评论
  • 1049

    访问数
关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-24 14:47 , Processed in 0.025254 second(s), 14 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部