xilinx zynq 7000 PS PL test

主要用到 vivado 2103.4,vivado sdk 开发。

Vivado 2103.4 建立硬件工程描述。为vhdl工程。

Vivado sdk 包括下面三个包:

 

硬件开发包-为vivado 2013.4 建立工程导出的bitstream 。包括ps 配置,pl逻辑,以及互连。

 

板级支持包-建立是需要添加PL逻辑driver ,之后可以方便调用其提供的功能。

 

开发包-包含测试文件和common.h头文件。        



一。    硬件工程描述


开始建立xilinx microzed 工程。可用sourceps.Tcl直接建立,也可以按照图形界面一步步建立。主要分为PS和PL部分。

 

Ps 为zynq 7000 ip核,可直接添加;

 

然后添加 ps msater接口。方便后面的连线。其中ps不需要过多的设置,保持系统默认即可。

 

PL为自建立的AXI14 lite 逻辑外设;

为外设添加vhdl语言描述,建立逻辑。

 

分别编辑了两个文件来描述PL的逻辑功能。

Fileone MYIP_v1_0.vhd

FileTwo  MYIPv1_0_S00_AXI.vhd

其中主要实现了

 

四个寄存器:

为寄存器实现运算其部分代码描述:

即是 cx2+bx+a

 

其中A,B,C 为

CONSTANT c : signed(16 DOWNTO 0) :=to_signed(-577,17);

CONSTANT b : signed(16 DOWNTO 0) :=to_signed(57910,17);

CONSTANT a : signed(16 DOWNTO 0) :=to_signed(33610,17);

 

规格化格式方式如下:

 

测试开始的时候可以写入寄存器一个值,即是上式中的X值。然后可以对比输出的计算结果和希望结果,如果出错则输出。

 

然后验证设计正确性。依次进行仿真,执行设计,产生bitstream,用于以后的工作。

 




二。   具体实现


1.Ps测试

 

l Cpu测试,大量操作寄存器(数据访问的时候不需要访问内存),以汇编代码实现。

 

然后比较输入结果和希望得到的结果,如果不一样,则说明在操作寄存器的过程中出现错误或寄存器出现问题。

 

l  Memory测试,

 

分两部分DDR和RAM。

 

测试DDR从0x00100000测试采用方式测试,

同理测试RAM从0xFFFF0000。

注入一些数值。

如出错则输出错误结果。

 

 

l Cache 测试

 

系统函数中加入如果出错,则显示出错数据。然后调用自写函数,覆盖系统函数。

 

主要思想是:

先写data到cache,flush一下写到内存;然后修改data在cache中

,然后关闭写到内存。

因为你关闭了cache的写回功能,

所以cache的内容改变了但并不写回,即如果是原来的值就是正确的,如果值改变就打印出改变的值,并且状态为failure。

说明cache的无效功能并不能正常工作。

 

 

l DMA测试

 

利用系统函数并重写系统函数,显示出错数据。

搬运数据,然后比较原数据和目的数据,如果不相等,则说明出现错误。然后打印出出错的数据。

 

l ALU ,FPU测试

 

Alu主要测试逻辑,递归,普通计算。

 

FPU主要测试 FFT ,回归运算。

 

 

利用FFT计算的复杂性验证FPU。

 

 

l 然后其他的 GIC QSPI DMA(启动 )测试直接调用功能化函数,判断输出状态

如果成功则说明功能性没有问题,否则说明硬件中出现问题。在测试的时候需要注意硬件的初始化顺序,因为如果硬件初始化过程中影响到其它硬件,也可能出现错误。

 

2   PL测试

 

底层参见第一部分,SDK中主要包括

可大量输入i值

PL会进行事先设计的运算,在验证数据的时候,事先记录一些正确的数据。

接着

拿之前记录的数据和此次在试验中得到的数据进行比较,

 

如果出错则输出。



项目参见:            https://github.com/gaoloudushang点击打开链接

你可能感兴趣的:(xilinx)