本主题中的教程介绍了为一个简单FPGA VI创建测试台的步骤,该VI用于值的取反。尽管该测试台中的逻辑可能与您测试的FPGA VI中的逻辑不同,本指南将列出通用的步骤。指南假设用户已经掌握了创建VI的知识。

创建一个用于测试的FPGA VI

完成下列步骤以创建一个用于在本指南中进行测试的FPGA VI。

  1. 创建一个LabVIEW项目,并将项目保存为inverter.lvproj
  2. 添加FPGA终端至项目。
  3. 右键单击FPGA终端,从快捷菜单选择新建»VI,新建一个FPGA VI。
  4. 将该FPGA VI另存为Inverter.vi
  5. 分别创建两个名为输入输出的数字FPGA I/O项。
  6. 项目浏览器窗口拖拽FPGA I/O项至Inverter VI的程序框图,以创建相应的FPGA I/O节点。
  7. 右键单击FPGA I/O节点的输出,从快捷菜单中选择转换为写入
  8. 将FPGA I/O节点放置在While循环内然后连线所有节点,如下列程序框图所示:

Inverter VI的作用是读取数字线的值然后取反,并将取反后的值写入另一数字线。注意该程序框图中包含一个错误。程序框图在两个FPGA I/O节点间缺少了一个非函数。

在开发计算机上使用随机数据测试FPGA VI。

按照下列步骤使用随机数据作为输入,测试FPGA VI的逻辑。

  1. 右键单击FPGA终端,从快捷菜单中选择属性
  2. FPGA终端属性对话框中,从类别列表中选择执行模式,显示执行模式页面。
  3. 仿真下拉菜单中,选择使用仿真I/O
  4. 单击OK按钮。
  5. 在FPGA VI程序框图上,右键单击连接两个FPGA I/O节点的连线,从快捷菜单中选择探头,新建一个探头。
  6. 运行FPGA VI。注意探针随机显示TRUE或FALSE的值。
  7. 停止运行FPGA VI。

在开发计算机上使用自定义VI测试FPGA VI。

按照下列步骤使用自定义VI测试台测试FPGA VI。

  1. FPGA终端属性对话框的执行模式页面,从仿真下拉菜单中选择将自定义VI用于FPGA I/O
  2. 单击基于模板新建VI按钮,将自定义VI另存为Simulated IO for Inverter.vi
  3. 单击对话框中的添加按钮,对话框将提示您是否将该VI添加至当前项目。注意,LabVIEW将该自定义VI添加在了项目中的我的电脑下。
  4. 打开"Simulated IO for Inverter"VI的程序框图,阅读VI中的注释,然后删除注释以降低程序框图的杂乱。"Simulated IO for Inverter"VI的程序框图如下图所示:

  5. 右键单击I/O项名称条件结构,从快捷菜单中选择复制分支
  6. 在选择器标签中键入input。FPGA VI调用输入I/O项的FPGA I/O节点时,输入条件结构会执行。
    注: 如果使用CLIP将数据传输至FPGA VI,必须在CLIP I/O名称的选择器标签中额外添加一个反斜杠。例如,如果CLIP I/O项是CLIP\Port A,则必须在选择器标签中输入CLIP\\Port A。第一个反斜杠用作名称中第二个反斜杠的转义符。
  7. 右键单击节点或元素类型条件结构,从快捷菜单中选择复制分支。注意此时已选中读取I/O条件分支。该条件分支用于配置的FPGA I/O节点读取输入I/O项。
  8. 从该条件分支中删除“报告支持的错误”VI,穿过该条件结构连线仿真I/O信息输入错误输出
  9. 使用真常量、“转换为变体”函数和“创建数组”函数替换空的数组,如下列程序框图所示:

  10. 运行Inverter VI。注意两个FPGA I/O节点间的连线的探针指示TRUE值,因为在用于反转VI的仿真I/O中包含了一个真常量。LabVIEW还将返回错误消息,指示用户未指定配置用于输出I/O项的FPGA I/O节点的行为。

测试输出I/O项

  1. 项目浏览器窗口中,选择我的电脑,然后选择文件»新建,显示新建对话框。
  2. 其他文件文件夹中选择全局变量,新建一个全局VI。
  3. 将全局VI另存为Test Bookkeeping
  4. 将一个名为失败的布尔显示控件添加至Test Bookkeeping VI的前面板。失败显示控件为一个全局变量。
  5. 在Simulated IO for Inverter VI的程序框图上,右键单击I/O项名称条件结构的输入条件分支,然后从快捷菜单中选择复制分支。命名该条件分支为output
  6. 节点或元素类型条件结构中,选择读取I/O条件分支,双击选择器并输入Write I/O。该条件分支用于输出I/O项的FPGA I/O节点。
  7. 删除进入变体隧道的代码,添加“索引数组”函数、“变体至数据转换”函数和一个带有失败全局变量的条件结构,如下列程序框图所示。由于输入I/O项的值指定为TRUE,在Inverter VI中代码正确的情况下,Inverter VI写入输出I/O项的值应为FALSE。因此,如果Inverter VI将TRUE写入输出I/O项,测试则失败。

  8. 运行Inverter VI并监控Test Bookkeeping VI。注意,失败显示控件的值为TRUE表明测试失败。
  9. 停止运行Inverter VI。
  10. 如要修复Inverter VI的问题,可在下列程序框图中添加一个“非”函数:

  11. 在Test Bookkeeping VI中,右键单击失败显示控件,从快捷菜单中选择数据操作»重新初始化为默认值。当前如运行Inverter VI,请注意失败显示控件的值保持为FALSE,表明测试未失败。

使用更为复杂的自定义VI测试FPGA VI

按照下列步骤测试Inverter VI对于10个选中的顺序输入值均能够正确操作。

  1. 项目浏览器窗口中,右键单击我的电脑,从快捷菜单中选择新建»VI
  2. 将该VI保存为Test Stimulus.vi
  3. 按照下列程序框图更新Test Stimulus VI:

  4. 为Test Stimulus VI创建连线板,以便在后续章节将其用作子VI。
  5. 在Test Bookkeeping VI中,添加一个32位有符号整数的激励索引输入控件。同时添加一个测试完成布尔显示控件,如下列前面板中所示:

  6. 在Inverter VI的仿真I/O中,更新执行阶段条件结构的初始化条件分支,以初始化来自Test Bookkeeping VI的值,如以下程序框图中所示。LabVIEW为执行阶段条件结构的每个条件分支创建一个自定义VI的副本。如要在不同的分支间共享数据可使用全局变量。如下列程序框图所示;或使用某些包含副本条件分支的机制。例如,非重入子VI。

  7. 执行阶段条件结构中选择运行条件分支,从I/O项名称条件结构中选择输入条件分支,从节点或元素类型条件结构中选择读取I/O条件分支。
  8. 更新节点或元素类型条件结构的读取I/O条件分支的代码,如以下程序框图中所示:

  9. I/O项名称条件结构中选择输出条件分支,从节点或元素类型条件结构中选择写入I/O条件分支。
  10. 更新节点或元素类型条件结构的写入I/O条件分支的代码,如以下程序框图中所示。下列程序框图与输入的读数具有相同的激励、激励取反、比较FPGA I/O节点接收到的值的激励并在值不同时声明测试失败。程序框图还将递增激励索引,直至索引到达9。此时程序框图会将测试完成全局变量的值设为TRUE。

  11. 运行Inverter VI并监控Test Bookkeeping VI中的全局变量。注意,激励索引递增至9,失败保持为FALSE,且测试完成保持为FALSE,直至激励索引的值到达9。
  12. 停止运行Inverter VI。

使用主VI自动执行测试台

上述所创建的测试台需要手动执行某些操作,以运行中断结果。如要简化测试的重复性,请按照下列步骤创建一个主VI自动执行测试台操作。

  1. 项目浏览器窗口中,右键单击我的电脑,从快捷菜单中选择新建»VI
  2. 将VI另存为Test Controller.vi,并按照以下程序框图中所示更新VI:

Test Controller VI打开一个指向Inverter VI的引用并通过全局变量监控Inverter VI的执行。测试完成或生成错误后,将TRUE写入停止控件将停止Test Controller VI。配置用于“获取FPGA VI执行模式”方法的调用方法不会影响执行。但调用方法不提供访问发生在开发计算机上的FPGA VI执行过程中可能生成的错误的途径。