Android设备通过usb控制zedboard产生pwm波实验
一、实验目的
安卓设备如安卓平板,通过usb与zedboard通信,在安卓设备端控制zedboard端产生的pwm波的频率和占空比。
示意图如下图所示:
图1. 实验示意图
二、实验方案
安卓设备作为usbhost,在安卓端开发一个简单的app,带有简单的UI,如pwm波频率、占空比设置按钮。该app检测usb设备是否插入,若有设备插入,获取端点号,通过收发信息。
Zedboard作为usb device。Zedboard官方给出的资料比较散和少(相对其他嵌入式学习套件),故通过修改ZedBoard_Standalone_USB_Device_Tutorial_14_6_01(zedboard设计案例,在zedboard.org可以下)来实现。在ZedBoard_Standalone_USB_Device_Tutorial_14_6_01中,zedboard模拟一个usb massstorage类设备(U盘)。故本实验安卓设备和zedboard的通信过程模拟读写U盘的过程。
在Zedboard的zynq芯片PS部分实现pwm波比较简单,为了了解zynq芯片软硬件的协同开发流程,决定在PL(FPGA)部分实现PWM。
实验方案框图如下图所示:
图2.方案框图
三、实验过程
1. zedboard端
1.1 用户IP核设计
该部分主要参考陆佳华的《嵌入式系统软硬件协同设计实战指南》一书和网上的一些blog。但是在做的过程中还是有很多需要注意的地方。
1.1.1 AXI PWM设计
在vivado2014.2中建立RTLproject,目标板选择zedboard.
在Tools->Create and Package创建用户ip.
创建完在IP Catalog中打开IP管理器,可以看到添加的AXI PWM。编辑用户IP。
编辑完用户IP记得要Review and Package。
1.1.2 &nb