1 设计简介
SP7021 SOC平台自测实验主要用来测试SOC平台连接的可靠性,FBIO的设计放在FPGA子板上,通过Plus1 芯片对FBIO的读写,实现Plus1 芯片与FPGA子板管脚连接的可靠性测试。
1.1 SP7021 SOC平台自测试设计实验项目的硬件平台实现
SP7021 SOC平台自测实验只需将FBIO Wrapper的axi_m和axi_s 64bit总线接口对接在一起,并做相应的地址映射,即将FBIO起始地址0x70000000的访问映射为对Plus1 芯片内DRAM起始地址0x00000000的访问;如下图所示:
本实验以Plus1 7021实践平台配套的FPGA子板完成相关实验,FPGA子板的开发工具采用Xilinx的Vivado集成开发环境(版本号为2018.3);为了方便将用户自己需要验证的IP方便连接到SOC系统中验证,本实验提供了相应的设计参考基础文件,如下
设计案例与SP7021主板与FPGA子板脚位对应连接关系如下表所示:
1:主板上的U20B接FPGA子板的J2(Pin脚对应,如 1-51...),提供主板上的Plus1 主芯片与FPGA的数据传输通道
Design Demo | FPGA子板 | SP7021主板 | |||
fbio_selftest | J2 | U1E | U20B | ||
Top Port Name | Schematic Name | FPGA I/O | Schematic Name | ||
| 1 | GND |
| 51 | GND |
| 2 | GND |
| 52 | GND |
FPGA_PAD[0] | 3 | B34_L24_N | T8 | 53 | FBIO_PAD_0 |
FPGA_PAD[43] | 4 | B34_L24_P | R8 | 54 | FBIO_PAD_1 |
| 5 | VIN |
| 55 | VCC(3.3V) |
| 6 | VCCIO34 |
| 56 | VCC(3.3V) |
FPGA_PAD[1] | 7 | B34_L21_N | V9 | 57 | FBIO_PAD_2 |
FPGA_PAD[42] | 8 | B34_L21_P | U9 | 58 | FBIO_PAD_3 |
FPGA_PAD[2] | 9 | B34_L18_N | N6 | 59 | FBIO_PAD_4 |
FPGA_PAD[41] | 10 | B34_L18_P | M6 | 60 | FBIO_PAD_5 |
FPGA_PAD[3] | 11 | B34_L22_N | U6 | 61 | FBIO_PAD_6 |
FPGA_PAD[40] | 12 | B34_L22_P | U7 | 62 | FBIO_PAD_7 |
FPGA_PAD[4] | 13 | B34_L20_N | V6 | 63 | FBIO_PAD_8 |
FPGA_PAD[39] | 14 | B34_L20_P | V7 | 64 | FBIO_PAD_9 |
FPGA_PAD[5] | 15 | B34_L23_N | T6 | 65 | FBIO_PAD_10 |
FPGA_PAD[38] | 16 | B34_L23_P | R7 | 66 | FBIO_PAD_11 |
FPGA_PAD[6] | 17 | B34_L10_N | V4 | 67 | FBIO_PAD_12 |
FPGA_PAD[37] | 18 | B34_L10_P | V5 | 68 | FBIO_PAD_13 |
FPGA_PAD[7] | 19 | B34_L19_P | R6 | 69 | FBIO_PAD_14 |
FPGA_PAD[36] | 20 | B34_L19_N | R5 | 70 | FBIO_PAD_15 |
FPGA_PAD[8] | 21 | B34_L8_P | U4 | 71 | FBIO_PAD_16 |
FPGA_PAD[35] | 22 | B34_L8_N | U3 | 72 | FBIO_TCLK |
FPGA_PAD[9] | 23 | B34_L9_N | V2 | 73 | FBIO_RCLK |
FPGA_PAD[34] | 24 | B34_L9_P | U2 | 74 | FBIO_PAD_17 |
FPGA_PAD[10] | 25 | B34_L7_N | V1 | 75 | FBIO_PAD_18 |
FPGA_PAD[33] | 26 | B34_L7_P | U1 | 76 | FBIO_PAD_19 |
FPGA_PAD[11] | 27 | B34_L13_P | N5 | 77 | FBIO_PAD_20 |
FPGA_PAD[32] | 28 | B34_L13_N | P5 | 78 | FBIO_PAD_21 |
FPGA_PAD[12] | 29 | B34_L12_P | T5 | 79 | FBIO_PAD_22 |
FPGA_PAD[31] | 30 | B34_L12_N | T4 | 80 | FBIO_PAD_23 |
FPGA_PAD[13] | 31 | B34_L11_N | T3 | 81 | FBIO_PAD_24 |
FPGA_PAD[30] | 32 | B34_L11_P | R3 | 82 | FBIO_PAD_25 |
FPGA_PAD[29] | 33 | B34_L14_P | P4 | 83 | FBIO_PAD_26 |
FPGA_PAD[28] | 34 | B34_L14_N | P3 | 84 | FBIO_PAD_27 |
FPGA_PAD[14] | 35 | B34_L16_N | N4 | 85 | FBIO_PAD_28 |
FPGA_PAD[27] | 36 | B34_L16_P | M4 | 86 | FBIO_PAD_29 |
FPGA_PAD[15] | 37 | B34_L17_N | T1 | 87 | FBIO_PAD_30 |
FPGA_PAD[26] | 38 | B34_L17_P | R1 | 88 | FBIO_PAD_31 |
FPGA_PAD[16] | 39 | B34_L15_N | R2 | 89 | FBIO_PAD_32 |
FPGA_PAD[25] | 40 | B34_L15_P | P2 | 90 | FBIO_PAD_33 |
FPGA_PAD[17] | 41 | B34_L3_N | N1 | 91 | FBIO_PAD_34 |
FPGA_PAD[24] | 42 | B34_L3_P | N2 | 92 | FBIO_PAD_35 |
FPGA_PAD[18] | 43 | B34_L1_N | M1 | 93 | FBIO_PAD_RSTB |
FPGA_PAD[23] | 44 | B34_L1_P | L1 | 94 | EXT0_INT |
| 45 | VCCIO34 |
| 95 | VCC(3.3V) |
| 46 | VIN |
| 96 | VCC(3.3V) |
FPGA_PAD[19] | 47 | B34_L4_P | M3 | 97 | EXT1_INT |
FPGA_PAD[20] | 48 | B34_L4_N | M2 | 98 |
|
| 49 | GND |
| 99 | GND |
| 50 | GND |
| 100 | GND |
1.2 SP7021 SOC平台自测实验项目的系统软件平台实现
在IDE 环境中如下图所示,选择sp7021工程名,单击鼠标右键在弹出的菜单中选Copy
接下来再次选择sp7021工程名;
单击鼠标右键在弹出的菜单中选Paste,出现下图
在Project name框中填写fbio_selftest,完成fbio_selftest 工程名及目录建立,如下图所示
接下来需要复制安装目录\SP7021\example\fbio_selftest下的所有文件及文件夹到上面建好的fbio_selftest工程目录中(路径为:安装目录 \SP7021\workspace\fbio_selftest\),同名文件选择覆盖,这样SP7021 SOC平台自测试设计实践所需的程序代码main.c;放到如下的路径中:
1) 安装目录 \SP7021\workspace\ fbio_selftest \ 文件夹下的main.c
最后按下图所示,鼠标选中红框1,接着点击鼠标右键出现下拉菜单,然后选中红框2,对刚才复制动作做刷新,这样刚才复制的文件就能在IDE环境中显示出来。
main.c
int main(void)
{
printf("Build @%s, %s\n", __DATE__, __TIME__);
hw_init();
sys_init();
pin_mux();
disp_hdmi_init();
fbio_self_test();
printf("fbio self test finished \n");
while(1);
}
对比数码管控制IP实验,增加了fbio_self_test()函数,用来完成SP7021 SOC平台自测实验操作,如下讲解。
void fbio_self_test()
{
unsigned int i,temp;
for (i = 0; i < 200; i++)
fbio_addr[i]=i;
for (i = 0; i < 100; i++)
{
temp=fbio_addr[i];
if(temp==i)
printf("@write value=[%x]; read value= [%x]\n", i,temp);
else
printf("Error @ temp= [%x];i= [%x] \n", temp,i);
}
}
第一个for循通过fbio实现对Plus1 芯片的DRAM地址空间1到200的写操作;
第一个for循通过fbio实现对Plus1 芯片的DRAM地址空间1到100的读操作;并将读出的内容与写入的内容进行比较,若不同,则打印Error信息;
程序代码运行
在Plus1 IDE环境中compile后,下载到平台,在terminal窗口看到如下信息