版主: 51FPGA

分享到:
共1条 1/1 1   

一步一步学ZedBoard & Zynq(三):使用自带外设IP让ARM PS访问FPGA(转载)

    [您是本帖的第1056位阅读者]
南盗
我是GG
高级会员

最后登陆时间:2015-01-28 12:03:43

直达楼层
1# 发表于 2014-11-12 09:51:36

这一节的目的是使用XPS为ARM PS 处理系统 添加额外的IP。从IP Catalog 标签添加GPIO,并与ZedBoard板子上的8个LED灯相连。当系统建立完后,产生bitstream,并对外设进行测试。

更多更新请关注我的博客:@超群天晴 http://www.cnblogs.com/surpassal/

硬件平台:Digilent ZedBoard

开发环境:Windows XP 32 bit

软件: XPS 14.2 +SDK 14.2

一、硬件配置

1、创建硬件工程

启动XPS,创建Lab3工程。因为PS系统和FPGA连接是采用AXI接口,因而选择内部互联类型(Interconnect Type) 为AXI。

选择设计平台为Zynq ZC702

到外设配置界面,系统会默认有GPIO_SW 和 LEDs_4bits 这两个外设,我们不需要,remove之

2、添加AXI GPIO外设

工程建立后,在IP Catalog中,找到General Purpose IO,找到 AXI GPIO,双击添加到系统中。

修改元件实例化名称为axi_LDs,这个名称就是将要实例化连接到PS的元件。将长度改为8,其他默认。

点开Bus Interfaces标签,可以看到系统汇总现在有PS(这里是processing_systems7_0) 、添加的外设axi_LDs 和AXI内部互联总线axi_interconnet_1。可以看到对于 axi_interconnet_1来说,PS是AXI主设备,外设是AXI从设备。

在Port标签,将IO_IF中的GPIO_IO_O(output)设置为External Ports,将Port名称改为LD。LD就是顶层对外的引脚名称

3、设定引脚约束

在project标签中,找到system.ucf约束文件,

将其内容改为

复制代码
 
1 NET LD[0] LOC = T22  | IOSTANDARD=LVCMOS33;  # "LD0"
2 NET LD[1] LOC = T21  | IOSTANDARD=LVCMOS33;  # "LD1"
3 NET LD[2] LOC = U22  | IOSTANDARD=LVCMOS33;  # "LD2"
4 NET LD[3] LOC = U21  | IOSTANDARD=LVCMOS33;  # "LD3"
5 NET LD[4] LOC = V22  | IOSTANDARD=LVCMOS33;  # "LD4"
6 NET LD[5] LOC = W22  | IOSTANDARD=LVCMOS33;  # "LD5"
7 NET LD[6] LOC = U19  | IOSTANDARD=LVCMOS33;  # "LD6"
8 NET LD[7] LOC = U14  | IOSTANDARD=LVCMOS33;  # "LD7"

复制代码

4、点击Generate BitStream,生成bitstream

如果没有错题,控制台会提示信息如下,表明成功生成了FPGA的配置bitstream文件

复制代码
 
"*********************************************"
2 "Running Bitgen.."
3 "*********************************************"
4 cd implementation & bitgen -w -f bitgen.ut system & cd ..
5 Release 14.2 - Bitgen P.28xd (nt)
6 Copyright (c) 1995-2012 Xilinx, Inc.  All rights reserved.
7 PMSPEC -- Overriding Xilinx file <C:/Xilinx/14.2/ISE_DS/EDK/zynq/data/zynq.acd>
8 with local file <C:/Xilinx/14.2/ISE_DS/ISE/zynq/data/zynq.acd>
9 Loading device for application Rf_Device from file '7z020.nph' in environment
10 C:\Xilinx\14.2\ISE_DS\ISE\;C:\Xilinx\14.2\ISE_DS\EDK.
11    "system" is an NCD, version 3.2, device xc7z020, package clg484, speed -1
12 Opened constraints file system.pcf.
13 
14 Mon Oct 08 09:13:57 2012
15 
16 Running DRC.
17 DRC detected 0 errors and 0 warnings.
18 Creating bit map...
19 Saving bit stream in "system.bit".
20 Bitstream generation is complete.
21 Done!

复制代码

5、将硬件配置导入到SDK,启动SDK。这里需要将bitstream和BMM文件同时包括到SDK中。

二、创建软件程序

为了方便项目管理,在SDK目录下建立sw文件夹,作为workspace

使用新建工程向导。注意,这里使用工程模板为Memory Tests。个人经验是使用Hello World会出现XMD错误,原因不明白,可能是工程的配置不同。

新建工程后,会有几个存储空间测试的文件,我们不需要,删掉。

修改main文件,内容如下

复制代码
 
//@超群天晴 http://www.cnblogs.com/surpassal/ 
1
 #include <stdio.h>
2 #include "xparameters.h"
3 #include "xil_types.h"
4 #include "xstatus.h"
5 #include "xil_testmem.h"
6 #include "xgpio.h"
7 #include "platform.h"
8 
9 void print(char *ptr);
10 
11 int main()
12 {
13     static XGpio LED_Ptr;//定义GPIO指针
14     int XStatus;//函数返回状态
15 
16     init_platform();
17 
18     print("ZedBoard LAB3: PS_AXI_LDs\n\r");
19     print("超群天晴 2012年10月7日22:12:31\n\r");
20 
21     XStatus = XGpio_Initialize(&LED_Ptr,XPAR_AXI_LDS_DEVICE_ID);
22     if(XST_SUCCESS != XStatus)
23         print("GPIO INIT FAILED\n\r");
24 
25     XGpio_SetDataDirection(&LED_Ptr, 1,0x00);//通道1;设置方向 0 输出 1输入
26 
27     XGpio_DiscreteWrite(&LED_Ptr, 1,0xaa);
28 
29     cleanup_platform();
30 
31 }
 

在下载软件程序前,需要将bitstream文件烧如FPGA,对FPGA进行配置。在工具栏中Xilinx tools->Program FPGA,也可以使用XPS中的Device Configuration->Download Bitstream等其他配置FPGA的方式。

配置完FPGA后,下载软件程序,可以看到超级终端显示调试信息:

同时,Zedboard上的8个LED亮起

注意:

如果run或者debug软件程序提示

ERROR : Unexpected error while launching program. java.lang.RuntimeException:  ERROR: Elf Verify failed at Address:     0x0060d77b
at com.xilinx.sdk.targetmanager.internal.TM.verifyELF(Unknown Source)
at com.xilinx.sdk.debug.core.internal.AppRunner.run(Unknown Source)

则很有可能是因为工程建立的问题,建议使用Memory Tests模板,然后再加以修改

================================================================




关键词:ZedBoard    外设    自带    

快乐生活,快乐学习。

共1条 1/1 1   
快速回复主题
  • 匿名不能发帖!请先 [ 登陆 注册 ]