低功耗设计方法--低功耗IP设计(二)

2.USB OTG 中的电源控制器设计

电源控制器是一个简单的状态机,它控制以下信号:

pwr_reset_n // 协议引擎的复位

gate_hclk,// 控制 AHB 域中时钟的关闭

h2pd_stop_pclk //控制PHY域中时钟的关闭

bius_pwr_clamp //控制AHB域的钳位输出

h2pl_pwr_clamp //控制PHY域的钳位输出

pwr_dwn_req_n //控制请求断电信号(低电平有效 )

retain_n // 下降沿是保存;上升沿恢复

并且它接收以下输入:

• pwr_dwn_ack_n // pwr_dwn_req 的确认

• stop_pclk_ack // h2pd_stop_pclk 的确认

• pwr_clamp_ack // h2pl_pwr_clamp 的确认

• suspend_detected // 表示 3ms 内没有 USB 活动

• fifo_flushed // 表示所有挂起的 USB事务完成

• wkup_res_det //表示在USB总线上的活动已检测

• enable_power_gating //从CPU使能电源门控


当电源控制器看到 suspend_detected 被激活(并且在状态寄存器中设置了电源门控启用位)时,它会启动掉电序列。该序列如图 8-2 所示,描述如下:

• 等待 fifo_flushed 激活。这表明所有待处理事务都已完成,存储待处理事务的先进先出是空的。

• 然后它激活 bius_pwr_clamp(到 AHB 时钟域)和 h2pl_pwr_clamp(到 PHY 时钟域)以钳位 USB OTG 电源门控部分的输出。 

• 然后等待 pwr_clamp_ack(来自 PHY 时钟域)。这告诉控制器隔离单元都被钳位(在 USB OTG 中,它们都被钳位为“0”。) 

• 然后它置位 gate_hclk 和 h2pd_stop_pclk 以停止 AHB 和 PHY 时钟。 

• 然后等待stop_pclk_ack(来自PHY 时钟域)以指示PHY 域中的时钟已停止。由于同步器,PHY 时钟总是在 AHB 时钟之后关闭。

• 然后置位retain_n(异步信号,因此不需要握手)。这会导致保留寄存器保存其内容。

• 然后置位reset_n(异步信号,因此不需要握手)。

• 然后置位pwr_dwn_req_n,导致USB OTG 的电源门控部分掉电。

• 然后等待 pwr_dwn_ack_n 置位,表明 USB OTG 已完全断电。一旦收到此确认,电源控制器就会进入空闲状态,等待被告知唤醒 USB OTG。


当电源控制器发现 enable_power_gating 已被清除(表明 CPU 要为 USB OTG 供电)或在 USB 总线上检测到活动时,电源控制器状态机启动唤醒序列:

• 它取消 pwr_dwn_req_n,导致 USB OTG 的电源门控部分上电。

• 然后等待 pwr_dwn_ack_n 指示 USB OTG 已完全通电。 

• 然后它取消置位reset_n,因此协议引擎中的所有触发器都恢复为复位状态。

• 然后它取消置位retain_n,以便恢复控制和状态寄存器块中的所有保留触发器。

• 然后它取消声明gate_hclk 和h2pd_stop_pclk 以启动两个时钟。 

• 然后等待stop_pclk_ack 指示时钟正在运行。

• 然后它取消bius_pwr_clamp 和 h2pl_pwr_clamp 以释放对 USB OTG 电源门控部分输出的钳位。 

• 然后等待 pwr_clamp_ack。这告诉控制器隔离单元都已释放。

收到此确认后,电源控制器进入空闲状态,USB OTG 恢复正常操作。

全部评论

相关推荐

我已成为0offer的糕手:别惯着,胆子都是练出来的,这里认怂了,那以后被裁应届被拖工资还敢抗争?
点赞 评论 收藏
分享
1 1 评论
分享
牛客网
牛客企业服务