你的位置:EETOP 赛灵思(Xilinx) 社区 >> >> 全部 >> 详细内容

亚当泰勒玩转MicroZed连载35:用MicroZed驱动Adafruit RGB NeoPixel LED阵列(第6节)

发布者:jackzhang 时间:2014-07-27 07:58:46

作者:Steve Leibson, 赛灵思战略营销与业务规划总监

我们已经完成了以下工作:设计Adafruit NeoPixel LED驱动器、把它集成到Vivado框图中以及和系统的其它部分相连接,现在,我们需要思考一下将要采用什么样的验证方案,也就是说,我们需要做哪些测试来证明这个设计可以成功的工作?通常情况下,这个阶段的复杂程度要超过设计本身。

这是一个相当简单的设计案例,所以我将要采用的验证方案需要完成以下任务:
1. 验证MicroZed、I/O载体板卡以及NeoPixel阵列之间的硬件接口。
2. 使用VHDL仿真器对NeoPixel驱动器进行仿真。
3. 开发测试软件对BRAM所有的地址进行读写操作,保证PS(处理器系统)能够正确地访问存储器。
4. 开发测试软件去驱动阵列中的第一个NeoPixel,验证NeoPixel驱动器的功能,然后使用示波器验证发送到NeoPixel阵列的时序波形。
5. 开发测试软件去驱动NeoPixel阵列中不同位置上的一些像素点(比如阵列中的第二个像素点、中间的像素点以及最后的像素点)。
6. 使用一个终端程序去验证最终版本的软件是否能对正确的命令、错误的命令以及乱序的命令等做出正确的反应。
7. 使用一个开发好的GUI来执行最终的功能验证,保证最终的设计可以按照最初的说明那样进行工作。

上面的这些步骤可能看起来比较复杂。然而,在许多类似这个简单应用的情况下,实现起来相对来说是比较简单的。

通常情况下,任何测试的第一要素就是要保证硬件能正确工作。(参见我在Xcell第82期发表的文章“设计一个FPGA硬件的基本要素”,以及第85期的文章“进行硬件设计的一种无痛的方法”)。使用MicroZed系统带来的一个好处是,Zynq SoC中的底层硬件、MicroZed板以及MicroZed I/O载体板卡其本身都是验证成熟的,这就减少了需要用在系统测试上的时间,可以开始验证我们的功能需求。(但是,这并不意味这我们将正确地实现SoC的功能)

在开始验证过程(上面的第1点)之前,我们还需要在硬件层次上去验证下面几个方面:
1. 从IO载体板卡的PMOD连接器输出到NeoPixel的信号的正确性:最好是在MicoZed板没有上电的时候,使用万用表去测量。我们一定要保证NeoPixel阵列的VCC和GND信号是正确连接的。

2. 用于对NeoPixel阵列进行驱动和供电的IO bank的电压设置正确性:这也可以简单地用万用表来测量电压是否是3.3V。

3. 当我们证明了物理连接和电源连接后,一个不错的想法是把MicroZed板子上电,用万用表检查NeoPixel阵列供电的稳定性。

3v3 Bank 35供电测试点

3v3 Bank 35供电测试点

我上一篇博文主要讲的是设计NeoPixel驱动器以及使用ModelSim来对其进行仿真,这已经完成了验证方案中第2点描述的内容,这样就可以进行到第3点:验证Zynq SoC的PS和PL的功能性能以及它们两者之间的交互。

因为我们这许多周—35周,一直在使用MicroZed PS设计,我很有信心把PS正确配置成从SD卡进行boot,以及从DDR RAM执行程序。然而,在这个系列博文中,这是第一次使用BRAM控制器和BRAM,这也是为什么我要开发测试软件来保证PS能正确地对存储器进行读写的原因。

对驱动NeoPixel阵列的系统能力的测试,到了验证方案的第4和第5点时,已经基本成型了。这两点有着密切的联系,是一个测试到另一个测试的自然演进。第一个测试软件仅仅对一个NeoPixel进行写操作并检查时序,我在示波器上看到的波形与VHDL仿真产生的波形具有对应关系,并且NeoPixel能用正确的颜色点亮。测试成功。

然后我修改了这个测试代码,用全色度的红、绿和蓝去驱动一个像素点,保证驱动器能够正确地设置像素点的颜色。一旦一个像素点可以被驱动,这个程序就很容易修改成用不同颜色驱动特定的像素点,这个是测试控制器能够正确地驱动LED条上一个特定的像素点。最后,把测试软件修改成在相同时间,把LED条上所有的像素点都驱动成同样的颜色,在这个测试中,我选择使用白色,因为这个颜色需要打开NeoPixel阵列中所有红色、绿色以及蓝色的LED,因此,可以保证从I/O载体板卡驱动过来的最大电流能够支持这个LED条工作。

当这一系列测试结束时,我们有信心能够驱动NeoPixel阵列。然而,我们还没有验证将要用来控制NeoPixel颜色设置的命令接口,我将在下一篇博文中描述测试方案中最后两点关于串行接口和GUI的测试步骤,在文章中,我将要介绍一个简单的串行通信协议,我将要用它来实现对Zynq SoC PS和PL NeoPixel驱动器的控制。

原文链接:
http://forums.xilinx.com/t5/Xcell-Daily-Blog/Adam-Taylor-s-MicroZed-Chro...

© Copyright 2014 Xilinx Inc.
如需转载,请注明出处

最新课程

  • 深入浅出玩儿转FPGA

    本视频基于Xilinx公司的Artix-7FPGA器件以及各种丰富的入门和进阶外设,提供了一些典型的工程实例,帮助读者从FPGA基础知识、逻辑设计概念

  • 从零开始大战FPGA基础篇

    本课程为“从零开始大战FPGA”系列课程的基础篇。课程通俗易懂、逻辑性强、示例丰富,课程中尤其强调在设计过程中对“时序”和“逻辑”的把控,以及硬件描述语言与硬件电路相对应的“

  • Verilog基础及典型数字

    课程中首先会给大家讲解在企业中一般数字电路从算法到流片这整个过程中会涉及到哪些流程,都分别使用什么工具,以及其中每个流程都分别做了