ZYNQ7000 学习 (十五)FIFO(存储器)的原理实现以及应用于PS与PL进行速度的协调

视频十五:FIFO(存储器)的原理实现以及应用于PS与PL进行速度的协调

1,关于FIFO的原理看视频。这里注意虽然没有直接例化任何RAM,实际会调用RAM块的。

2,考虑在OLED接口加入FIFO的必要性。

1)PS高速运行,而SPI发送一个字节需要多个周期。
2)在上一个字节没有发送完情况下,PS又要发送另外一个字节时候,PS只能等待。(通过设置READY==0告诉)。
3)由于驱动是连续写多个字节(大约128*8个字节),这PS的速度实际是被瓶颈在SPI串行发送一个字节上。N* 128*8+24 = ps 用的时间。
4)PL发送器的速度制约了PS的速度。
5)我们设想有做一个缓冲区,PS不阻塞的发送写命令到缓冲区内,而SPI的发送器依次取,并传输给OLED。
6) 这种符合先入先出条件的缓冲区首选FIFO。

3,接入FIFO的好处。( 图 )

就是克服上述PS被SPI发送器制约的问题。让PS和SPI发送器之间的耦合度降低。SPI发送器不再影响PS的运行。

4,FIFO的接入方式:

写端由PS控制,将要写信息打入FIFO。写端要注意,FIFO写满的情况,写满了怎么办?写满了就要通过设置AWREADY和WREADY为0,挂起AXI总线,强迫PS等待。

读端接SPI加速器,自动读出并由SPI发出。
另外也有附加信息OLED_DC,这里同时和对应字节存入FIFO并同时取出。
读端要注意如何产生FIFO读命令,以及如何产生写SPI加速器命令(SPI加速器还是用上一个例子的,不用任何修改)。

5

实际操作注意更新IP的时候,要ADD新的文件,注意看看生成的原理图(分析一下代码),最好更新一下版本好,要在BLOCK_DESIGN里面删除和从新添加。

6,探讨如何设置FIFO的深度。

1)综合考虑复杂度,RAM容量,以及带来的性能提升。做出权衡是否采用FIFO,以及多大深度的FIFO深度。

2)考虑性能,FIFO的深度,也就是说组成FIFO的RAM的容量,在这个设计中我们应该设置能容纳一次刷屏操作的所有数据。我们从应用角度考虑,这个OLED是具备保持功能的,我们要刷一次屏,再下次刷屏之前都保留显示的,所以PS对OLED的一个有刷屏的操作应该作为一组基本OLED的操作序列,这里写的数据是128*8个字节以及附件一些控制指令24。

3) 128*8 = 1024 我们设置一个2048的FIFO是足够的。

4)虽然对FIFO容量有足够估计,但是也要处理好 满写 和 空读 的操作。毕竟加速只是锦上添花,而错误是不容许发生的。

5)类似于进水管和出水管的速度数学模型。

十三到十五认真看懂(重要):

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值