一、 概述
在上一章节讲述了使用两个dds产生不同频率的sin波形,通道0为2MHz,通道1为5MHz,截取一部分dds产生的sin波形,并写入到ddr4中。本章节使用仿真来查看波形,更直观的观察并了解两个通道存储波形的过程。
二、 仿真波形
1、dds_ctrl模块使用两个dds产生sin波形
图1
图1中,使用两个dds根据aclken的使能情况,来分别输出sin波形。
2、chnl_test_0模块产生写使能、写地址、写长度来驱动ddr4的写请求。
图2
图2中,发送写指令来控制数据的传输,wdata_in_0为传输的数据,data_sin_0为通道0中的sin波形数据。
wire [7:0] data_sin_0;
assign data_sin_0 = wdata_in_0[7:0];
对于通道0的写地址,在两通道都写完数据后,产生写请求,将通道1的地址计数作为通道0下一次的写地址。写长度固定为256突发。
3、通道0的ddr4_axi_wr_ctrl模块,将数据波形根据写请求传输到interconnect中,
图3
图3中,可以看到在wvalid和wready握手时,数据有效,其中就包含了传输的2MHz的sin波形。
4、chnl_test_1模块产生写使能、写地址、写长度来驱动ddr4的写请求。
图4
图4中,发送写指令来控制数据的传输,wdata_in_1为传输的数据,data_sin_1为通道1中的sin波形数据。
wire [7:0] data_sin_1;
assign data_sin_1 = wdata_in_1[7:0];
对于通道1的写地址,在两通道都写完数据后,产生写请求,将通道1的地址计数+’h4000作为通道1下一次的写地址。写长度固定为256突发。
5、通道1的ddr4_axi_wr_ctrl模块,将数据波形根据写请求传输到interconnect中。
图5
图5中,可以看到在wvalid和wready握手时,数据有效,其中就包含了传输的5MHz的sin波形。
6、interconnect中通道0和通道1的写数据情况。
图6
图6中,显示了通道0和通道1的写数据情况,每个通道产生10次写突发,每次突发长度为255,实际突发256个数据。写地址在通道0和通道1中交替连续。这样写ddr4的地址可以连续。
图7
图7中,可以看到interconnect的两个通道写数据情况,通道0写入的数据包含2MHz的数据波形,通道1写入的数据包含5MHz的数据波形。
wire [7:0] sin_data_2MHz;
assign sin_data_2MHz=S00_AXI_WDATA[7:0];
wire [7:0] sin_data_5MHz;
assign sin_data_5MHz=S01_AXI_WDATA[7:0];
7、ddr4中写数据通道
图7
图7中,根据interconnect的控制,向ddr4发起写请求,在valid与vready握手时传输数据,因为经过interconnect控制后,valid没有连续,有些地方看起来不是那么整齐,实际写进的数据使正确的。
并且在ddr4侧,写突发的地址为连续的,通过awid来区分通道0和通道1。
三、 总结
经过仿真后,更清晰的观察了写数据的传输情况,下一节来实现将ddr4中存储的数据取出,使用通道2和通道3读取数据波形。来验证ddr4多通道读写功能。
本文章由威三学院出品
对课程感兴趣可以私信联系

京公网安备11022902000513号
