作者: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供电测试点
我上一篇博文主要讲的是设计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.
如需转载,请注明出处