图5 用户设计时序图
时刻①写等待状态,此时检测到ADFIFO为空,因此保持写等待状态。
时刻②检测到ADFIFO非空,于是读使能拉高,下一个状态为写数据状态。
时刻③已进入写数据状态,此时检测adata_valid(ADFIFO数据有效信号),因为读使能拉高到读数据有效有一个时钟的延时,因此当检测到adata_valid有效再使得adfifo_rden(ADFIFO读使能)拉低的话,读使能已经有效了两个时钟了。此时并没有检测到ADFIFO数据有效信号,状态不变继续检测。
时刻④检测到读数据有效,说明两个时钟周期的读使能信号已经发出,于是读使能拉低,同时拉高app_wdf_wren(DDR核写使能信号),将对应数据发出。
因为有两个时钟的有效数据,时刻⑤adata_valid依然拉高,继续写入数据;此时检测到brust_cnt(帧尾计数标志)为高,给出帧尾信号,同时app_en(核使能信号)拉高,准备发送写命令,下一个状态为写命令状态。
时刻⑥已进入写命令状态,这时app_en已经拉高,只要检测到app_rdy(核准备好信号)拉高,说明对应地址的写命令已经发出。时刻⑥检测到app_rdy为低,状态不变,继续检测。
经过连续几个时钟周期的等待后,时刻⑦检测到app_rdy为高,说明对应地址的写命令已经发出,地址自动加一,同时app_en信号拉低,再次进入写等待状态。
时刻①到时刻⑦详细描述了当接受到DSP写命令时用户接口设计对各个端口的时序操作,可见与MIG要求时序相符。
读命令的发送和写命令的发送类似,也比较简单,在此不再赘述。
五、结论
使用Xilinx公司生产的Virtex-6芯片进行验证,采样速率为1Ghz,采样位宽为12位,扩展成16位后进行存储,DDR3内部以1067M处理速度,32位的处理带宽进行存储,写数据时从地址全0写到地址全1,读数据时也从地址全0读到全1,经对比无误,说明该控制器能够较好地进行高速读写操作。
`