芯片设计工程师常常需要根据输入输出信号(Input and Output, I/O)实现管脚电平数字逻辑。例如,系统工程师利用微控制器进行时钟增殖时常常需要创建时钟树,将输入时钟输入至多个缓冲时钟(具有适当的驱动能力),和/或倒转时钟极性。还有许多场景下,系统工程师必须对I/O信号进行逻辑组合。 他们通常的方案是利用离散组合逻辑模块等外置元件实施最后时刻的改变,使用“蓝线(blue wire)”将元件连接起来。这不仅提高了物料成本,而且还会影响生产PCB时耗时的自转步骤。
图1.MCU + 离散逻辑芯片
随着电池供电设备的快速增长,功耗已成为系统工程师关心的重要问题。每节省一点电能都将延长电池一次充电的使用时间。因此,系统工程师尝试在硬件上完成一些简单的I/O信号处理任务来降低CPU负载——CPU是系统的主要耗电部件。例如,将两个脉宽调制(PWM)信号输入到异或门,,输出信号即可实现呼吸灯。两个PWM信号拥有微小的频率差,频率差产生的拍频就是呼吸灯期望的呼吸频率。在这个方案中,如果固件中实现了运行逻辑,CPU将无需定时启动。
图2.8个呼吸灯的硬件实现
今天的微控制器已经可以在I/O口上提供可编程逻辑功能以集成板级胶合逻辑I/O功能,如与门、或门和异或门。图3显示了Smart I/O模块的集成方式。Smart I/O模块放在微控制器(MCU)的外设(如TCPWM、UART和 SPI)和I/O口之间的信号路径上。I/O口的输入信号可以先进行逻辑操作,然后路由到MCU的外设和芯片的连接单元。同样地,外设的输出信号和芯片的内部连接信号可以先进行逻辑操作,然后路由到GPIO端口。Smart I/O模块甚至可以在低功率模式下运行,并在必要时使用端口中断唤醒芯片。
图 3.MCU中Smart I/O的示例
每个Smart I/O模块与端口绑定,可以对该端口输入输出信号进行操作。以赛普拉斯的PSoC 4为例,Smart I/O模块由具有互联矩阵的8个三输入查找表(Look-Up Table, LUT)组成,如图4所示。
图4.Smart I/O查找表
Smart I/O可利用互联矩阵灵活地进行互联。用户无需编写任何代码即可配置Smart I/O模块。MCU设计工具链(具体到本文情况是PSoC Creator)利用图形用户界面(GUI)简化了Smart I/O模块的配置。
查找表的输入输出信号可以在GUI的下拉列表中选择来轻松配置。Smart I/O查找表的真值表可以通过限定输出值为所有可能的输入组合进行配置,如图5所示:
图5. 在PSoC Creator中配置Smart I/O查找表
有许多应用都可以利用Smart I/O减少物料成本、降低CPU负载和设备功耗。下面介绍其中两个应用:
利用Smart I/O实现逻辑功能-Smart I/O查找表可用作通用逻辑元件来构建定制逻辑功能,比如逻辑门、4线-2线优先编码器、移位寄存器和脉冲干扰滤波器。
图6 是通过将2个具有微小频率差的PWM信号连接至异或门,实现一个呼吸灯。图7是利用PSoC 4 MCU中的Smart I/O达到的呼吸灯效果。这里,通过配置查找表真值表在Smart I/O执行异或操作,如图8所示:
图6. 使用逻辑门实现呼吸灯
图7. 利用PSOC 4 Smart I/O实现呼吸灯效果
图8. 使用Smart I/O实现异或门
模式检测 – Smart I/O可配置为检测输入信号具体模式(比如,检测是否3路输入信号都为低电平)的功能。电池供电嵌入系统将微控制器调成低功耗模式,当指定事件触发时,产生中断唤醒CPU来处理事件。
在一些应用中,必须根据多个事件的具体组合来唤醒设备和处理事件。今天市场上的MCU要求CPU处于工作状态以检测模式和处理事件。这导致CPU在每次发生事件时都被唤醒以检查事件的组合,从而增加功耗。
Smart I/O可工作在低功耗状态中,根据多个事件的具体组合唤醒设备。在图9的应用中,根据多个事件的具体组合,MCU从深睡眠中被唤醒。在这种情况下,只有当两个输入都处于高电平时(即处于黑暗且窗口打开),设备醒来,并将传感器状态发送至接收器或是启动警报通知用户关闭窗口。
图9. 使用PSoC 4Smart I/O检测具体模式
该系统的实现方案如图10所示。两个I/O管脚的输入信号在Smart I/O模块进行与操作,然后发送给CPU唤醒中断控制器,将设备从深睡眠中唤醒。只有当两个条件均为真才唤醒CPU,从而减少设备功耗,延迟电池寿命。
图10. 检测具体的输入模式 – PSoC Creator的实现方案
图11. 使用Smart I/O执行与门