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

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

上一节我们使用dds生成了两个通道的波形数据,在这一节中,我们需要将dds生成的波形数据存储到ddr4中,在存储过程中,每次突发只能最多传输256个数据,并且如果使用dds产生双通到数据,那么两组波形出来后,需要同时存储。这些情况是存储时需要考虑的事情。接下来按照设计思路,逐步实现向ddr4中存储两个通道的波形数据。本章节着重讲述dds的配置设计。

Dds配置设计

1.添加使能信号

    在向ddr4中写入数据时,每次最多突发256个数据,而且dds生成的数据要实时的写进ddr4中。这时就需要用一个使能信号,来控制何时输出波形。在dds IP配置中,勾选上ACLKEN选项。

通过控制aclken电平的高低,可以实现实时产生波形,如图2所示。

在图3中,可以看到m_axis_data_tdata只在aclken为高时输出sin波形,并且在aclken为低时数据保持不变,这样就确保了在aclken为高时的sin波形的连续性。

在如此情况下,可以将ddr4的写数据有效(wvalid与wready的握手)当做aclken,这样在向ddr4写数据时,不论wready何时有效,都可以产生连续的sin波形,并将波形存储到ddr4中。

    2.使用两组dds IP输出波形

    由于ddr4同时只能写入一个数据,不能实现将两通道的数据同时写入,所以在这里还需要另外创建一个dds IP,此时就有两个dds IP来产生sin波形数据了。所以在dds IP配置中,通道数量选择一个就可以了,以前输入的系统时钟为200MHz,单通道的输出波形的时钟频率为100MHz,此时改换为单通道的输出,系统时钟改为100MHz。如图4所示。

两个dds Ip配置中,相位角增量配置如下。通道0输出2MHz,通道1输出5MHz。


dds模块仿真测试

dds控制模块代码:

dds仿真模块代码:

仿真波形如图7所示。

经过如此配置后,每个通道的数据与数据有效信号可以分别单独控制,以便根据ddr4的写数据握手情况来控制各自的dds IP输出自己的波形。并且输出的有效数据为连续的sin波形。

章节总结

在本章节中,使用两个dds IP来分别产生sin波形,并添加了aclken信号,此信号为高时IP输出的波形有效,并且可以保障sin波形的连续性。下一章节来继续讲述如何截取波形并写进ddr4。

文章来源:威视锐科技