{$cluname}

意得法论坛 » CPLD/FPGA综合论坛 » FIFO设计中的深度计算


‹‹上一主题 | 下一主题›› 查看 2606
发表一个新帖子 发表回复

标题 FIFO设计中的深度计算 在百度搜索本主题 [ 搜 ] [ 打印 ] [ 推荐 ] [收藏帖子] [ 收藏到新浪VIVI] [ 订阅 ]

aaron (超级版主)
楼主   [点击复制本网址] [ 字体: ] [ 编辑 ] [ 报告 ] [评分]
Rank:17
Rank:17
Rank:17
Rank:17
Rank:17
Rank:17

UID 3
帖子 24
积分 62 点
金币 111 枚
魅力 44 度
注册 2009年11月20日
FIFO设计中的深度计算
写时钟频率 w_clk,
读时钟频率 r_clk,
写时钟周期里,每B个时钟周期会有A个数据写入FIFO
读时钟周期里,每Y个时钟周期会有X个数据读出FIFO
则,FIFO的最小深度是?

计算公式如下:

fifo_depth = burst_length - burst_length * X/Y * r_clk/w_clk

例举说明:
如果100个写时钟周期可以写入80个数据,10个读时钟可以读出8个数据。令wclk=rclk ,考虑背靠背(20个clk不发数据+80clk发数据+80clk发数据+20个clk不发数据的200个clk)代入公式可计算FIFO的深度
fifo_depth = 160-160X(80%)=160-128=32

如果令wclk=200mhz,改为100个wclk里写入40个,rclk=100mhz,10个rclk里读出8个。那么fifo深度为48
计算如下fifo_depth =80-80X(80%)X(100/200)=80-32=48

注:将 fifo_depth = burst_length - burst_length * (X/Y) * (r_clk/w_clk) 作个变形,得到 fifo_depth = burst_length - (burst_length /w_clk)*[r_clk*(x/y)] 其中(burst_length /w_clk) 表示这个burst的持续时间,r_clk*(x/y)表示读的实际速度。两者的乘积自然就是这段时间读出的数据量。显然burst_length表示这段时间写入的数据量,两者的差为fifo中残留的数据,这个也就是理论上的fifo的最小深度。实际应用中往往是以半空半满信号来指示fifo的空满状态的,所以实际设计fifo的时候会至少留下一个数据空间的深度裕量。




此用户离线!
共计在线时长170分钟2009-11-24 10:42:19
[ 资料 ] [ 短信 ] [ 好友 ] [ 文集 ] [ 引用 ] [ 回复 ] 点击返回顶部

« 首页1 »1/共1页


查看积分策略说明快速回复你的内容
快捷回复标题 (选填) 快捷插入表情图标
验 证 码  点击获取验证码
快捷回复内容

自动复制

Powered by TEAM 2.0.5 Release - ACC © 2005 Team5 Studio All rights reserved