目录

使用握手确保CDL循环中的数据有效

版本:
    更新: 2018年3月22日

    CDL循环强制节点在每个时钟周期内返回数据。但是,一些叫做多周期的节点需要多个周期来计算有效的结果。因此,依赖于多周期节点数据的节点必须了解该数据是否有效。通过握手协议使CDL循环中的节点之间进行通信,从而验证每个时钟周期内传输的数据有效。

    使用对象

    • 以FPGA为终端的G VI文档中的CDL循环
    • 反馈节点(反向)
    • 支持握手协议的节点
      spd-note-note
      注:  

      支持握手协议的节点包括下列一个或多个握手输入或输出:输入有效输出有效输入就绪以及输出就绪

    步骤

    创建下列程序框图,确保CDL循环中的节点在每个循环迭代仅发送和接收有效的数据。

    根据您的实际需求自定义灰色部分的内容。

    使用数据交换节点或接线端将CDL循环中的代码连接到系统中的其他部分。该程序框图中的读取FIFO从主机VI接收数据数组,并将每个采样按顺序发送到代码中的下游节点。

    使用CDL选板上的节点处理输入数据。CDL选板上的所有多周期节点包括下列一个或多个握手输入或输出:输入有效输出有效输入就绪以及输出就绪

    对于所有多周期节点,将上游节点的输出有效连线到下游节点的输入有效,同时将下游节点的输出就绪通过反馈节点连线到上游节点的输入就绪

    使用数据交换节点或接线端将CDL循环中的代码连接到系统中的其他部分。程序框图上的写入FIFOCDL循环处理后的数据按照接收的顺序传回主机VI。
    将上游节点的输出有效连接到下游节点的输入有效,避免下游节点在上游节点生成新的有效结果前接受新输入。输出有效的值为False时,节点的所有数据输出都未定义。模拟设备和真实硬件的节点生成的未定义值可能有所不同。
    使用反馈节点启用下游节点与上游节点的通信,告知其是否已经准备就绪接收新输入。反馈节点输入就绪的结果发送回上游节点的输出就绪

    为了避免使用无效的输入,下游节点只有在输入就绪生成的值和输入有效接收的值都为True时才会接受新的输入数据。同时,上游节点只有在下游节点准备好接收新的输入时才会发送新数据,因此下游节点不会跳过有效数据。

    疑难解答

    • 如接收到非预期或无效的输出数据,握手信号的连线可能不正确。确保每个上游节点的输出有效连线到其附近下游节点的输入有效。同时确保每个上游节点的输出就绪通过反馈节点连线到附近下游节点的输入就绪
    • 如使用FIFO在主机VI和终端之间进行通信时,主机VI接收到非预期的数据,请确保FPGA VI和主机VI中的FIFO参考相匹配。关于使用FIFO在主机和终端之间传输数据的详细信息,请参考使用FIFO在主机和终端之间传输数据

    范例

    搜索编程环境,查看下列已安装的范例:
    • FPGA主机接口
    • FIFO
    • 多时钟域
    搜索编程环境,查看下列课程:
    • CDL中的握手
    • 使用CDL编程

    最近查看的主题