作者:Steve Leibson, 赛灵思战略营销与业务规划总监
By Adam Taylor
我们采用基于Zynq的MicroZed板来实现Adafruit NeoPixel驱动器,前后花了8周的时间,在这个过程中,我们齐心协力地解决了许多问题。我想现在是时候来回顾一下这个例子所覆盖的内容了:
1) 系统的模块化方法
2) 在Zynq SoC的PS(处理器系统)和PL(可编程逻辑)间通信
3) 使用IP库来减少我们需要实现的定制模块的数量
4) 在Zynq SoC的PL中,实现一个Neo Pixel驱动器
5) 采用的验证方法
6) 定义了一个串行协议,用于和Zynq SoC进行通信
在我们继续探讨Zynq SoC的其它方面之前,NeoPixel系列最后的这篇博文简要地介绍了TCL/TK GUI的开发,通过这个GUI,你可以在笔记本电脑上或者其它的远程设备上控制一个阵列中的每一个独立的NeoPixel。我开发这个GUI的目的,是让用户可以在NeoPixel 24位色彩深度所表示的1600万种颜色中任意选择。
这个GUI非常简单,LED条中的每一个像素点都有一个按钮与之对应。每个按钮在点击之后,都会弹出一个窗口,你可以选择这个像素点所需要的颜色。一旦你做出了选择,颜色信息就会被下载到Zynq SoC中,该像素点的颜色也将随之改变。
设计这个GUI主要的挑战是要保证传送到MicroZed板的数据的二进制格式的正确性以及和所选择颜色的一一对应性。因为这个原因,GUI的第一个版本要显示每一个被选择颜色的十六进制字,同时,Zynq上的软件也被设计成要把它接收到的数据进行回传,GUI接收回传的数据,并保存成文本文件,这样通过比较,就能保证Zynq SoC接收的数据和GUI发送数据之间的一致性。下面是一个回传的例子。
当GUI工作正常后,布局就被改成仅仅显示LED编号和选择的像素点。
然后,我使用这个GUI驱动器对系统进行验证,确保可以从GUI来对每个像素点进行定位,并能把像素点设置成红色、绿色、蓝色、白色以及许多不同的随机选择的颜色。
这是系统在工作时的一个视频:
已经到了这个例子结束的时候了,我们继续探讨一下Zynq SoC的其它一些方面,举个例子,我们可以考虑一下这个驱动Neo Pixel的问题还有什么其它的解决方法。这篇博文的连载17章介绍了Triple Timer Counter,它能够产生一个PWM波形,这个输出可以被用来驱动Neo Pixel阵列。但是,处理器的负载就会更高。
在我的下一篇博文中,我们将要开始探讨Zynq SoC上能够运行的操作系统。在此期间,如果你想要得到我在这个例子中使用的代码,请给我发送电子邮件。
原文链接:
http://forums.xilinx.com/t5/Xcell-Daily-Blog/Adam-Taylor-s-MicroZed-Chro...
© Copyright 2014 Xilinx Inc.
如需转载,请注明出处