这一节的目的是使用xps为arm ps?处理系统?添加额外的ip。从ip catalog 标签添加gpio,并与zedboard板子上的8个led灯相连。当系统建立完后,产生bitstream,并对外设进行测试。
硬件平台: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约束文件,
将其内容改为
net ld[0] loc = t22 | iostandard=lvcmos33; # ld0
net ld[1] loc = t21 | iostandard=lvcmos33; # ld1
net ld[2] loc = u22 | iostandard=lvcmos33; # ld2
net ld[3] loc = u21 | iostandard=lvcmos33; # ld3
net ld[4] loc = v22 | iostandard=lvcmos33; # ld4
net ld[5] loc = w22 | iostandard=lvcmos33; # ld5
net ld[6] loc = u19 | iostandard=lvcmos33; # ld6
net ld[7] loc = u14 | iostandard=lvcmos33; # ld7
4、点击generate bitstream,生成bitstream
如果没有错题,控制台会提示信息如下,表明成功生成了fpga的配置bitstream文件
*********************************************
running bitgen..
*********************************************
cd implementation & bitgen -w -f bitgen.ut system & cd ..
release 14.2 - bitgen p.28xd (nt)
copyright (c) 1995-2012 xilinx, inc. all rights reserved.
pmspec -- overriding xilinx file
with local file
loading device for application rf_device from file '7z020.nph' in environment
c:xilinx14.2ise_dsise;c:xilinx14.2ise_dsedk.
system is an ncd, version 3.2, device xc7z020, package clg484, speed -1
opened constraints file system.pcf.
mon oct 08 09:13:57 2012
running drc.
drc detected 0 errors and 0 warnings.
creating bit map...
saving bit stream in system.bit.
bitstream generation is complete.
done!
5、将硬件配置导入到sdk,启动sdk。这里需要将bitstream和bmm文件同时包括到sdk中。
二、创建软件程序
为了方便项目管理,在sdk目录下建立sw文件夹,作为workspace
?使用新建工程向导。注意,这里使用工程模板为memory tests。个人经验是使用hello world会出现xmd错误,原因不明白,可能是工程的配置不同。
新建工程后,会有几个存储空间测试的文件,我们不需要,删掉。
修改main文件,内容如下
#include
#include xparameters.h
#include xil_types.h
#include xstatus.h
#include xil_testmem.h
#include xgpio.h
#include platform.h
void print(char *ptr);
int main()
{
static xgpio led_ptr;//定义gpio指针
int xstatus;//函数返回状态
init_platform();
print(zedboard lab3: ps_axi_lds
);
print(超群天晴 2012年10月7日22:12:31
);
xstatus = xgpio_initialize(&led_ptr,xpar_axi_lds_device_id);
if(xst_success != xstatus)
print(gpio init failed
);
xgpio_setdatadirection(&led_ptr, 1,0x00);//通道1;设置方向 0 输出 1输入
xgpio_discretewrite(&led_ptr, 1,0xaa);
cleanup_platform();
}
在下载软件程序前,需要将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模板,然后再加以修改
15V 1A稳压对称电源电路图及PCB布局设计
FLIR红外热像仪有什么作用?
AP5101B 高压线性 LED 恒流驱动器
3.7V锂电池充放电电路改造方案
中国半导体设备市场规模仅次于台湾和韩国
一步一步学ZedBoard Zynq(三):使用自带外设IP让ARM PS访问FPGA
移动互联网时代如何做出选择
机器视觉定位下的工业机器人系统设计
国产奥迪e-tron正式上市,搭载宁德时代三元动力电池
国家电网指导光伏等分布式电源并网,实施没那么简单
非接触CPU卡加密系统与逻辑加密系统比较
日本制成耐2万伏超高压的半导体器件
Firefly-PX3-SE主板启动介绍
电压源的概念及特点介绍
没有威纶通触摸屏和西门子1200PLC硬件的仿真方法
e络盟启动新合作项目满足客户开发创新嵌入式解决方案增长性需求
vivo展示120W充电技术 13分钟便充满电
常用的滤波器的介绍
电源反接制动的原理
浅论发烧技术