深入浅出FPGA-16-xilinx_zynq7000_EPP上一个简单实验(PS)
2012-11-05 19:34
453 查看
引言
现在的FPGA都很强大了,不仅有丰富的LE(LC),高端的还集成了CPUcore。这样,从硬件上就能做SOC,从软件上可以做嵌入式。
本节就做一个简单的实验,主要熟悉这个板子的PS资源。
15.1 实验目的
1》 熟悉zynq7000 EPP资源和design suite
2》 SDK编码,实现一个简单逻辑。
15.2 实验环境
Board :ZYNQ7000 EPP
Device:XC7Z020CLG484ACX1221
Design suite:14.1 (PlanAhead+XPS+SDK)
15.3 实验准备
a) 会planAhead创建工程
b) 简单了解和使用XPS和SDK
15.4 实验内容
a) 在XPS添加GPIO,此GPIO连到外部一个LED上。
b) 在SDK编写C代码控制GPIO来控制此LED的闪烁。
15.5 实验步骤
a) 打开planAhead,创建embedded新工程,添加PS7。
b) 打开XPS,添加GPIO。注意port名称,ucf文件里要用。
c) 添加UCF文件,内容:simple_led.ucf。
d) Create TOP HDL,然后生成bitstream。
e) 导出hardware,launch SDK。
f) 在SDK里创建helloword工程。
g) SDK编码,内容:helloworld.c。
h) Program FPGA
i) Run AS,configure
j) Run
15.6 实验结果
看板子,DS18这个led会闪烁。下图是串口打印信息:可以看到,可以通过软件来控制GPIO,就像在单片机上开发一样。
附:
SDK 代码:
现在的FPGA都很强大了,不仅有丰富的LE(LC),高端的还集成了CPUcore。这样,从硬件上就能做SOC,从软件上可以做嵌入式。
本节就做一个简单的实验,主要熟悉这个板子的PS资源。
15.1 实验目的
1》 熟悉zynq7000 EPP资源和design suite
2》 SDK编码,实现一个简单逻辑。
15.2 实验环境
Board :ZYNQ7000 EPP
Device:XC7Z020CLG484ACX1221
Design suite:14.1 (PlanAhead+XPS+SDK)
15.3 实验准备
a) 会planAhead创建工程
b) 简单了解和使用XPS和SDK
15.4 实验内容
a) 在XPS添加GPIO,此GPIO连到外部一个LED上。
b) 在SDK编写C代码控制GPIO来控制此LED的闪烁。
15.5 实验步骤
a) 打开planAhead,创建embedded新工程,添加PS7。
b) 打开XPS,添加GPIO。注意port名称,ucf文件里要用。
c) 添加UCF文件,内容:simple_led.ucf。
d) Create TOP HDL,然后生成bitstream。
e) 导出hardware,launch SDK。
f) 在SDK里创建helloword工程。
g) SDK编码,内容:helloworld.c。
h) Program FPGA
i) Run AS,configure
j) Run
15.6 实验结果
看板子,DS18这个led会闪烁。下图是串口打印信息:可以看到,可以通过软件来控制GPIO,就像在单片机上开发一样。
附:
SDK 代码:
/* * Copyright (c) 2009 Xilinx, Inc. All rights reserved. * * Xilinx, Inc. * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" AS A * COURTESY TO YOU. BY PROVIDING THIS DESIGN, CODE, OR INFORMATION AS * ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION OR * STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS IMPLEMENTATION * IS FREE FROM ANY CLAIMS OF INFRINGEMENT, AND YOU ARE RESPONSIBLE * FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE FOR YOUR IMPLEMENTATION. * XILINX EXPRESSLY DISCLAIMS ANY WARRANTY WHATSOEVER WITH RESPECT TO * THE ADEQUACY OF THE IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO * ANY WARRANTIES OR REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE * FROM CLAIMS OF INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. * */ /* * helloworld.c: simple test application */ #include <stdio.h> #include "platform.h" #include "../../hello_world_bsp_0/ps7_cortexa9_0/include/xgpio.h" #include "../../hello_world_bsp_0/ps7_cortexa9_0/include/xparameters.h" #define MY_GPIO_DEVICE_ID XPAR_AXI_GPIO_0_DEVICE_ID void my_process(void); void led_flash(XGpio* led_p,unsigned int time,int count); void my_delay(int times); int main() { init_platform(); my_process(); printf("my_process end!\r\n"); cleanup_platform(); return 0; } //========================== void my_process(void) { XGpio led; int ret = 0; int read_led = 0; printf("my_process start...\n"); ret = XGpio_Initialize(&led,MY_GPIO_DEVICE_ID);//led init if(0 != ret) { printf("led init error:%d\n",ret); } else { printf("led init ok!%d \n\n",ret); } XGpio_SetDataDirection(&led,1,0x00000000); printf("setdir: input!\n\n"); led_flash(&led,0xffffff,100); #if 0 read_led = XGpio_DiscreteRead(&led,1);//init read printf("before led read:%d\n\n",read_led); XGpio_DiscreteWrite(&led,1,0);//write 0 printf("write 0!\n\n\n"); read_led = XGpio_DiscreteRead(&led,1);//read again printf("led read:%d\n\n",read_led); XGpio_DiscreteWrite(&led,1,1);//write 1 printf("write 1!\n\n\n"); read_led = XGpio_DiscreteRead(&led,1);//read again printf("led read:%d\n\n",read_led); #endif return; } void my_delay(int times) { while(times--) { ;//do nothing. } } void led_flash(XGpio* led_p,unsigned int time,int count) { int loop = 0; for(loop=0;loop<count;loop++) { XGpio_DiscreteWrite(led_p,1,1);//write 0 my_delay(time); XGpio_DiscreteWrite(led_p,1,0);//write 0 my_delay(time); } }
相关文章推荐
- 深入浅出FPGA-17-xilinx_zynq7000_EPP上一个简单实验(PS+PL)
- 深入浅出FPGA-15-xilinx_zynq7000_EPP上一个简单实验(PL)
- Xilinx ZYNQ 7000+Vivado2015.2系列(三)之HelloWorld实验(最小系统)(纯PS)
- PS教程!教你快速简单打造一个元气满满的彩虹糖果字效
- [原创]java WEB学习笔记12:一个简单的serlet连接数据库实验
- 【iOS开展-50】使用它来创建一个新的类的实现代码包,因此,不自觉地练习简单MVC实验,附带动画
- 《第五周实验报告2-1》---设计一个简单的分数类,完成对分数的几个运算
- 深入浅出C#2008从入门到提高Step By Step(三)一个简单的控制台程序
- 从HSPICE代码修改的PSPICE忆阻器仿真的一个简单实验
- 一个简单的实验,Java数组遍历
- 深入浅出编译原理-4-一个简单词法分析器的C语言实现
- 【实验】【PROCEDURE】一个最简单的oracle存储过程"proc_helloworld"【转】
- PS简单制作一个旋转的风车
- 深入浅出linux之如何打开文件1(写一个最简单文件系统)
- 深入浅出linux之如何打开文件2(写一个最简单文件系统) .
- 在Eclipse下,采用mulan多标签分类软件进行一个简单的测试实验
- PS简单绘制一个虚线圆
- 16—【Android游戏开发十六】Android Gesture之【触摸屏手势识别】操作!利用触摸屏手势实现一个简单切换图片的功能
- 一个简单的ns2实验全过程
- ps_mem:一个用于精确报告 Linux 核心内存用量的简单 Python 脚本