IntelFPGA_DCFIFO_IP

  • dcfifo常用于跨时钟域数据传输,有两种工作模式,normal mode/ showahead mode,本文主要通过仿真对比这两种模式的区别。

1.showahead mode

参数设定
intended_device_family = "Cyclone 10 LP",
lpm_numwords = 128,	//FIFO深度在位宽为写位宽32bit时为128,响应的以读位宽16bit来看深度为256
lpm_showahead = "ON",	//模式设置
lpm_type = "dcfifo_mixed_widths",
lpm_width = 32,				//输入数据宽度
lpm_widthu = 7,				//写时钟下的FIFO深度位宽
lpm_widthu_r = 8,			//读时钟下的FIFO深度位宽,比写要多1bit,深度是其2倍
lpm_width_r = 16,			//输出数据宽度
overflow_checking = "ON",
rdsync_delaypipe = 6,			//写指针过度到读时钟域下需要6级流水来同步,会延迟判断FIFO是否空 ,但偏保守
read_aclr_synch = "ON",		//开启异步复位读时钟同步
underflow_checking = "ON",
use_eab = "ON",
write_aclr_synch = "ON",	//开启异步复位写时钟同步
wrsync_delaypipe = 6;		//读指针过度到读时钟域下需要6级流水同步,会延迟判断FIFO是否满,但偏保守

在这里插入图片描述
在这里插入图片描述

  • 在showahead模式下,即使没有读请求信号,FIFO也会先输出一个数据,在本例子中,输入为32为,输出为16位,FIFO首先输出32位中的低16位后输出高16位。如图qout端口一直挂199,等到真正的读命令来了才属于高16位的数201。但是后续每次读完之后并没有提前将下一个数据挂出,和普通FIFO无异。

2.normal mode

  • 参数设置上和上面的唯一区别就是OFF了lpm_showahead 。
    在这里插入图片描述
    在这里插入图片描述
  • 在正常模式下,一开始是没有挂数据的(输出0),只有在读命令来了之后才输出数据。相比上面的showahead模式,正常模式始终比其慢半拍(慢在最开始没有提前挂出低16位)。正常模式最后输出是197,超前模式最后输出是194。

3.超前模式应用场景

超前模式下,可以直接读取fifo最前面的数据而不必先发出读请求再读,当然为了持续读后续数据还是要发出读请求。
正常模式下,必须严格地先发读请求,再读取数据。为了持续读后续数据也是要持续发出读请求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arist9612

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值