概述
在之前使用通道0和通道1来产生两组不同频率的sin波形,并截取一部分写入了ddr4中,又通过通道2和通道3将ddr4中存储的sin波形数据读出,在之前已经通过仿真了解了ddr4写通道的传输过程,本章节使用仿真工具观察ddr4多通道读写的具体流程,并验证结果。
流程图

仿真波形
1.由两个dds产生两组sin波形,波形频率分别为2MHz和5MHz。

图1中,使用两个dds根据aclken的使能情况,来分别输出sin波形。
2.chnl_test_0模块产生写使能、写地址、写长度来驱动ddr4的写请求,并接收dds的波形数据,将波形数据传输给ddr4控制模块。

图2中,发送写指令来控制数据的传输,wdata_in_0为传输的数据,data_sin_0为通道0中的sin波形数据。
对于通道0的写地址,在两通道都写完数据后,产生写请求,将通道1的地址计数作为通道0下一次的写地址。写长度固定为256突发。
通过wr_start_0_cnt的计数可以看出总共计数了10次,共十次突发,每次突发256个数据。通道0共截取了2560个数据写进ddr4中。
3.通道0的ddr4_axi_wr_ctrl模块,将数据波形根据写请求传输到interconnect中。

图3中,通过写通道将2MHz的sin波形数据写进ddr4中。
4.chnl_test_1模块产生写使能、写地址、写长度来驱动ddr4的写请求,并接收dds的波形数据,将波形数据传输给ddr4控制模块。

图4中,发送写指令来控制数据的传输,wdata_in_1为传输的数据,data_sin_1为通道1中的sin波形数据。
对于通道1的写地址,在两通道都写完数据后,产生写请求,将通道1的地址计数+’h4000作为通道1下一次的写地址。写长度固定为256突发。
共发起10次写突发指令,每次突发写入256个数据。通道1共截取了2560个sin波形数据。那么两个通道共5120个数据,存储到ddr4中,按照从0地址开始写入数据,那么地址计数到5120*64=327680。
5.通道1的ddr4_axi_wr_ctrl模块,将数据波形根据写请求传输到interconnect中。

图5中,通过写通道将5MHz的sin波形数据写进ddr4中。
6.在ddr4IP中,写数据通道波形

图6为ddr4中的写通道波形,其中每次发起写指令时,地址会递增’h4000。并且在ddr4侧,写突发的地址为连续的,通过awid来区分通道0和通道1。
7.

图7为两通道的sin波形数据经过interconnect后的数据传输情况,会将通道0 和通道1 的数据交替写入。根据interconnect的控制,向ddr4发起写请求,在valid与vready握手时传输数据。
8.通道2模块通过发起读指令来读取2MHz波形数据。

图8中,在rd_en_2拉高期间,数据有效。为读取的2MHz波形,可以看出每次读出的波形都为2MHz,并且有效数据为连续波形。
9.通道3模块通过发起度周玲来读取5MHz波形数据。

图9中,在rd_en_3拉高期间,数据有效。为读取的5MHz波形,可以看出每次读出的波形都为5MHz,并且有效数据为连续波形。
总结
经过仿真验证,可以详细观察并了解多通道读写的数据在每个阶段的传输情况。对于读写指令,由用户控制,这些指令发送到interconnect中,再经过interconnect的仲裁,它会向ddr4发起读写指令,并可以通过id标识将每个通道进行区分。最终实现ddr4的多通道读写功能。
文章来源:威视锐科技