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.

请教TI工程师

Other Parts Discussed in Thread: TMS320C6678

我们有一个采用 4 TMS320C6678 DSP 的定制电路板,输入时钟以 156.25MHz 运行。我们需要内部时钟正好运行在 1GHz 左右。在修改了随 EVMC6678 一起提供的 #defines the GEL 函数后,我可以轻松地让时钟运行在大约 937MHz。不过,由于该函数使用定点数学函数,而 6.4 的值是维持 1GHz 所必需的,所以 GEL 文件中的这个算法对我们来说不能用。因此,我只能对 PLL 寄存器进行硬编码,但是存在一些问题,而且在重新阅读产品说明书后,我有几个问题:

1.
首先,也是最重要的,由于我已经有一个 156.25MHz 的时钟,那么我应该怎样设置 PLL 寄存器才能让 CorePac 时钟运行在1GHz
2.
用于 CorePac 的输出时钟分割器是否可以被设置为固定值 2

谁能帮我解读下?

  • 我检查了 GEL,它需要专门依靠乘法器才能达到目标频率。对您问题的答复是:是的,输出时钟分割器被设置为固定值 2,这与 PLLD 不同。

    有一个在 MAINPLLCTL0 内部提供的除法器 (PLLD),您可以将其与乘法器 PLLM 结合在一起使用。敬请参考 C6678 数据手册 (SPRS691) 的表 2 至表 13,以查阅可能的组合。

    要通过 156.25MHz 的参考时钟获得 1GHz 的核心频率,请选择 PLLM=63、PLLD=4。

    然后,按下列方式设置各个字段:

    PLLM = 0x3F(请注意,PLLM 是一个 13 位的字段,在 MAINPLLCTL0 中按 [12:6] 拆分位,在 PLLM 寄存器中按 [5:0] 拆分位。这里您可能需要编程)

    在 MAINPLLCTL0 寄存器中设置 PLLD = 0x4。

    在 MAINPLLCTL0 寄存器中设置 BWADJ = [7:0] = (PLLM+1)/2 = 0x20。

    您的寄存器现在应该这样设置:

    PLLM = 0x3F;

    MAINPLLCTL0 = 0x20000004;

    看看有没有帮助。