显卡|第三章 逻辑函数编程 (3)( 二 )


控制AV接收器 , 通过其自身的静音按钮 , 每发送一次指令 , 设备会在静音和解除静音之间切换 。 这种情况下
不需要锁定的静音信号 , 而应该直接将静音按钮发出的信号连接到红外指令上 。 可能您希望用Toggle函数为触摸屏提供实际反馈 , 让用户了解接收器实际的状态 。 这里要非常注意 , 通常不建议提供状态反馈 , 除非您能确定反馈是正确的 。 如果您认为反馈和接收器实际状态之间可能会出现不同步 , 最好使用瞬时反馈 。

Toggle函数举例:设备电源开关
在上一个例子中 , 仅仅用了Toggle函数的Out输出端来控制静音状态 。 有时需要用到Out和Out*两个输出端 , 比如用RS-232控制的投影机 。 通常这种设备的开关机指令是分开的 。 下面的程序说明用Toggle函数的两个输出端去驱动开关机指令 。“vproj_Power”信号的每个上升沿都会触发一条电源指令 。 当然要注意的是Toggle的输出端是锁定的 , 但RS-232指令是在驱动信号的上升沿发出 , 所以这不会出现问题 。 但是 , 如果投影机是由红外控制的 , 我们就不能这样编程了 , 因为相应的红外指令会不断的发送到设备 。 而我们可以增加另外的逻辑通过Toggle的输出端产生脉冲 。 这在本书的后面将会涉及到 。


Interlock函数
Interlock函数输入端出现上升沿时会使对应的输出端锁定为高电平 。 另外 , 其它先前为高电平的输出端解除锁定变为低电平 。 这样 , Interlock函数在任何时刻只有一个输出端为高电平 , 其余都为低电平(除了“set all”输入端 , 后面讨论) 。 该属性叫做break before make 。 事实上Toggle函数将记住最后变为高电平的输入端 。 这在当用户想在多个选项中间选择控制时十分方便 。 Interlock函数也有两个特殊的输入端“clear”和“set all” 。 “clear”将使先前为高电平的输出端变为低电平 ,“set all”使所有输出同时变为高电平 , 这是不只一个输出端为高的唯一场合 。 这在涉及一些非易失内存的特定应用时有用 。

【显卡|第三章 逻辑函数编程 (3)】Interlock举例: (音/视频)源选择反馈
许多音视频系统组成一组源选择 。 用户可以在一系列的音视频源中选择观看和收听 。 典型的例子是在会议
室中 , 可能有录像机、影碟机、幻灯机或者计算机 , 可以通过向矩阵或投影机发送指令选择音视频源 。 下面所示为使用Interlock函数实现反馈显示 , 提示用户当前选定的音视频源 。



?注意:在这个例子中的输出信号仅仅用做反馈 , 并没有连接到矩阵去做源选择 。 这是因为Interlock的输出端是锁定的 , 编程时通常很少用锁定的信号去做瞬时的控制功能(像RS232指令) , 即使有些情况下这种方式也可以正常工作 。 因为我们在这个函数的输入端已经有瞬时信号 ,“clear”使用它们去驱动矩阵更简洁 。 用Interlock的输入信号去驱动矩阵而不用输出信号还有一个原因 。 如果我们用输出信号去控制 , 可能因为某种原因需要再次选择同一个信号源(比方说 , 有人手动切换过矩阵) , 这时就不能正常工作 , 除非先选择另一个信号源再选择您想要的源 。 这是因为RS-232驱动器是在驱动信号的上升沿发送数据的 , 一旦Interlock的一个输出端变高 , 它不会再次提供上升沿 , 除非首先关闭(通过选择另外的输入端)然后再次打开 。