首页 > 代码库 > AC6102 DDR2测试工程

AC6102 DDR2测试工程

AC6102 DDR2测试工程

 

本文档介绍AC6102上DDR2存储器基于Verilog代码的测试过程。AC6102上使用了2片16bit的DDR2存储器组成了32bit的硬件总线。虽然是32bit硬件总线,但是我们在使用的时候,也可以只使用其中1片,即16bit模式,忽略对另一片DDR2的读写。因此整个测试分为两种模式,16bit型(仅测试位于低16bit的DDR2芯片)和32bit型(测试由两片DDR2组成的32bit接口)。在实际使用时用户可以根据自己的需求选择使用16bit(仅使用1片DDR2)或32bit(同时使用两片DDR2)接口。两个测试工程与对应的功能如下所示。

 

文件名

功能描述

AC6102_DDR2_16bit_Test.rar

单片16bit模式测试工程

AC6102_DDR2_32bit_Test.rar

两片32bit模式测试工程

 

由于两种模式的测试方式完全相同,这里仅以两片32bit模式的工程为例,讲解测试过程。

1、  解压AC6102_DDR2_32bit_Test.rar到不含中文或者空格的目录中,如D:\fpga

解压后工程目录下内容如下所示:

 技术分享

 

这里对其中几个重要文件(夹)简单说明下功能:

 

文件或文件夹名

文件或文件夹功能描述

DDR2_IP文件夹

调用DDR2 IP核后生成的各种源码,不可随意修改

  • output_filses文件夹

编译整个工程后生成的文件,包括我们需要下载到FPGA中运行的sof文件

DDR2.xml

生成DDR2 IP时相关文件,存储了DDR2的一些相关信息,暂不理会。

DDR2_32bit_Test.qpf

工程文件,使用Quartus II 13.0打开。

DDR2_32bit_Test.qsf

工程配置文件,记录了工程相关的各个设置,包括引脚分配。

DDR2_32bit_Test.v

测试工程顶层,例化了DDR2 IP和测试代码,组成完整的测试工程。

data64_source.v

DDR2读写测试逻辑,该部分实现对DDR2的写入和读出控制,以配合signaltap ii抓取实时读写波形,以判断DDR2的读写是否真确。名字里之所以为64,是因为32bit硬件总线的DDR2对用户的逻辑接口为32*2,即64bit,所以我们需要实用64bit的数据进行测试

DDR2_32bit_Test_pin_assigment.tcl

工程引脚分配,由于DDR2的引脚电平和分组都有严格要求,与我们平常普通的引脚分配方式有一定区别,因此这里提供本工程的引脚分配脚本,如果用户不小心操作使得工程引脚分配丢失,可以运行此tcl脚本来恢复引脚分配。

Micron MT47H64M32-5E.xml

DDR2存储器参数配置文件,在DDR2 IP核配置界面需要用到。该文件的创建和使用在后续教程中会详细介绍,本测试工程不做过多讲解。

stp1.stp

signaltap ii设置文件,测试时双击运行此文件以查看写入和读出的数据内容,通过抓取的波形内容分析读写是否正确。

 

2、  双击DDR2_32bit_Test.qpf以打开工程(强烈建议使用工程创建时候对应的版本即Quartus II 13.0,使用其他版本打开或编译遇到问题,请邮件告知我们,以获得解决方案邮箱:xiaomeige_fpga@foxmail.com)

3、  使用配套的5V电源给开发板供电,打开电源开关,插上USB Blaster下载器。然后在Quartus II中打开双击stp1.stp文件打开signaltap ii,如下图所示:

 技术分享

4、  选择下载器和需要下载的文件,然后点击下载以开始下载sof文件到开发板中,如下图所示:

技术分享 

5、  点击Run Analysis,抓取单次波形数据,如下图所示:

技术分享 

6、  分析抓取到的数据内容,重点看local_address为0xFFE_部分的读取结果,可以看到

 技术分享

当local_rdata_valid为高电平时,表明发出的读取指令已经开始返回数据,可以看到,返回的数据高32位和低32位数据都是从地址值开始累加返回的。与写入的数据一致,表明DDR2的读写是没有问题的。

 

测试16bit版本与32bit版本的过程完全一致,这里就不在细说。

小梅哥

2016年12月7日于成都市电子科技大学

AC6102 DDR2测试工程