跳转到主要内容
瑞苏盈科专栏
我与瑞苏盈科板卡的开发故事

FPGA小课堂-使用DDR4控制器实现多通道数据读写(10)

 一、本章概述

    本章节对目前单通道的读写功能进项测试,主要验证读写的数据是否正确,并观察该工程可以存储的最大容量。通过空满信号进行读写测试,根据ila抓取fifo和ddr4全部满的时刻,可以观察到最大容量。再通过debug逻辑可以测试读写数据是否正确。

二、DDR4循环读写功能测试

我们实现的功能是,只要fifo_1不满就可以往里存入数据,fifo_2不空就可以读出数据。所以只要根据fifo_1的几乎满(wrfifo_almost_full)信号为低电平状态就可以控制数据写入,根据fifo_2d的空(rdfifo_empty)信号为低电平状态就可以控制数据输出。

1、写入数据测试代码:

Image
写入数据测试代码
Image
写入数据测试代码
Image
写入数据测试代码

通过vio控制数据何时读取,也可以通过empty的状态观察到fifo_1、fifo_2、ddr中是否含有数据。如果写入的数据和读取的数据不相同,error_1就会拉高,可以通过error_1的状态判断ddr循环读写的功能是否正确。

三、上板验证过程

将板卡上电并烧入bit文件与ltx文件。

Image
将板卡上电并烧入bit文件与ltx文件

图1中vio_2控制何时开始写入,为1时开始写入递增数据。

图2中vio_1控制何时开始读数据,为1时开始读出数据。

    测试时,首先vio_2控制rst_1拉高,抓取数据存满的时刻。

Image
数据存满

图3中,红线位置为写入数据后,fifo_1,fifo_2和ddr4全部存满数据的时刻。之后,拉低rst_1,再控制vio_1拉高read_1,抓取数据读取完的时刻。

Image
图3中,红线位置为写入数据后,fifo_1,fifo_2和ddr4全部存满数据的时刻

图4中,可以看到,读出的数据数量和存入的数据数量相等,并且可以观察到,测试工程中可以存储的数据数量为ddr4的最大存储量加上两个fifo的存储量。