This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[FAQ] [参考译文] [常见问题解答]配置 Sitara GPMC 寄存器的提示

Guru**** 653850 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1186148/faq-tips-for-configuring-sitara-gpmc-registers

您好!

为了更轻松地配置 Sitara GPMC 寄存器、您是否可以提供任何其他信息?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    GPMC 数据路径概述


    下图给出了 GPMC 数据路径的简化概述。 在同步模式下、首先在 GPMC_CLK 上升沿捕获来自闪存的数据、然后在 GPMC_FCLK 上升沿捕获数据。 第二个捕获由考虑 RDACCESSTIME、WAITMONITORING 和 GPMCFCLKDIVIDER 的逻辑启用。

    注意: 当 GPMC 配置为同步模式时、GPMC_CLK 信号( 即输出)也必须设置为输入(CONTRAL.CONTINL_PADCONF_GPMC_NCS7[24] INPUTENABLE1 = 1)。 GPMC_CLK 在 器件边界通过相应 GPMC_CLK 焊盘的输出和输入缓冲器环回。 环回时钟用于 同步存储器信号的采样。

    重要的一点是、第二次捕获将在周期编号:·RDACCESSTIME+1、如果 GPMCFCLKDIVIDER 为0 (GPMC_CLK = GPMC_FCLK)、·RDACCESSTIME+2、如果 GPMCFCLKDIVIDER 大于0 (GPMC_CLK = GPMC_FCLK = GPMC_FCLK 除以3或2)时发生。

    由于 GPMC_CLK 的最大速度为100MHz、因此第一个采样触发器(在 GPMC_CLK 上)和第二个采样触发器(在 GPMC_FCLK 上)之间的逻辑路径的持续时间为10ns。

    设置同步访问的规则


    第1条.  PAGEBURSTACCESSTIME 必须是 GPMCFCLKDIVIDER+1的倍数。

    对于同步访问、每次突发的访问时间必须考虑 GPMC 模块的时钟分频器。

    例如、如果 L3时钟为166MHz、则必须通过设置 GPMCFCLKDIVIDER=1 (即2分频)来降低 GPMC_CLK。

    GPMC_FCLK = 166MHz GPMC_CLK = 83MHz

    因此,PAGEBURSTACCESSTIME 必须是2的倍数(这也意味着至少2的倍数)。 因此、如果将 PAGEBURSTACCESSTIME 设置为4、则突发周期将为2个 GPMC_CLK 周期长。

    第2条.  (RDCYCLETIME–CLKACTIVATIONTIME)必须是 GPMCFCLKDIVIDER+1的倍数。

    与规则1类似、这也可确保同步访问在 GPMC_CLK 和 GPMC_FCLK 上都以上升沿结束。

    第3条.  (RDACCESSTIME–CLKACTIVATIONTIME)模数(GPMCFCLKDIVIDER + 1)必须不同于 GPMCFCLKDIVIDER

    这是 OMAP3内部采样方案的结果(请参阅上面的方框图)。 违反此规则不会导致功能中断、而是会限制最大 GPMC_CLK 频率。

    图1说明了遵循规则3时的采样时序。 蓝色轨迹显示的是(RDACCESSTIME - CLKACTIVATIONTIME)%2 = 0时的情况、红色轨迹显示的是(RDACCESSTIME - CLKACTIVATIONTIME)%2 = 1时的情况。

    图2显示了违反规则3的示例。 数据在初始采样后仅在一个时钟周期内重新采样。

    图3显示了违反规则3的示例。 同样、数据在初始采样后仅在一个时钟周期内重新采样。

    第4条.  如果 GPMCFCLKDIVIDER 大于0、RDCYCLETIME 必须大于或等于  RDACCESSTIME+2。  如果 GPMCFCLKDIVIDER 为0、RDCYCLETIME 必须大于或等于 RDACCESSTIME+1。

    这也是上述采样方案的结果。 如果未遵守规则4、则访问结束(由 RDCYCLETIME 确定)将在第二个触发器上的最后一个数据采样之前发生(在 RDACCESSTIME+1或 RDACCESTIME+2、取决于 GPMCFCLKDIVIDER)。 这将导致 GPMC 状态机未定义的行为。

    第5条.  如果 GPMCFCLKDIVIDER 大于0且 WAITREADMONITORING 被启用、则 CSRDOFFTIME 必须大于或等于 RDACCESSTIME+2。  如果 GPMCFCLKDIVIDER 为0且 WAITREADMONITORING 被启用、则 CSRDOFFTIME 必须大于或等于 RDACCESSTIME+1

    此规则是上述采样方案的另一个结果。 在 GPMC 的同步模式下、启用等待监控后、内部 GPMC 状态机会查找等待置位/置位。 在这种情况下、状态机被设计成需要一个额外的时钟周期。 如果 CSRDOFFTIME 不考虑这个额外的时钟周期、GPMC 状态机将进入一个未定义状态。

    第6条.  如果 GPMCFCLKDIVIDER 大于0且 WAITREADMONITORING 被启用、OEOFFTIME 必须大于或等于 RDACCESSTIM+2。  如果 GPMCFCLKDIVIDER 为0且 WAITREADMONITORING 被启用、OEOFFTIME 必须大于或等于 RDACCESSTIME+1。

    其原因与规则5相同、但它适用于 OE 信号。

    第7条.  无论 WAITREADMONITORING 和 GPMCFCLKDIVIDER 如何、OEOFFTIME 和 CSRDOFFTIME 必须大于或等于 RDACCESSTIME+1。

    此规则是 GPMC 状态机实现的结果:对于同步突发访问、GPMC 状态机在 AccessTime 后花费一个周期来冻结控制 CsRdOffTime 和 OeOffTime 的计数器。

    以软件执行双字突发为例、RDACCESSTIME = OEOFFTIME。 在 RDACCESSTIME+1时、GPMC 状态机将 PAGEBURSTACCESSTIME 添加到 OEOFFTIME 中、但在该周期结束时将 OE 置为无效已经太晚了。 这会导致 OE 在周期之后失效。 CS 和更长的突发访问也是如此。

    更多提示


    • 如果您需要延长时序参数、请考虑将 TIMEPARAGRANULARITY 位设置为1。 这使以下每个参数的编程时间加倍:RD/WRCYCLETIME、RD/WRACCESSTIME、PAGEBURSTACESSTIME、CSONTIME、CSRD/WROFFTIME、 ADVONTIME、ADVRD/WROFFTIME、OEONTIME、OEOFFTIME、WEONTIME、 WEOFFTIME、CYCLE2CYCLEDELAY、BUSTURNAROUND、TIMEOUTSTARTVALUE。
    • 如果您正在进行多路复用地址和数据(例如 MUXADDATA=1)、请确保 WRDATAONADMUXBUS 被适当设置、以告知控制器何时在多路复用总线上输出数据。
    • 对于带脉冲的写操作、重要参数是 WRDATAONADMUXBUS 和 WRACCESSTIME。 WRDATAONADMUXBUS 将定义总线从地址转换为数据的时钟周期。 WRACCESSTIME 应设置为在突发中的第一个写入数据结束。 当 WRACCESSTIME 完成时,PAGEBURSTATIME 应该接管并且控制信号时序被“冻结”直到突发完成。 因此、即使您将 WEOFFTIME 设置为6个周期、例如、如果它与突发一起下降、它将自动扩展、直到突发结束。 OEOFFTIME 的工作方式相同。
    • 所有规则同样适用于写入事务。 GPMCCLKDIVIDER 与 WRCYCLETIME 和 WRACCESSTIME 之间保持类似的关系。