创龙小识堂|八核 DSP C6678的时钟配置 - 创龙小识堂 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5082|回复: 0
打印 上一主题 下一主题

创龙小识堂|八核 DSP C6678的时钟配置

[复制链接]

26

主题

29

帖子

158

积分

QQ游客

积分
158
跳转到指定楼层
楼主
发表于 2016-7-13 18:17:23 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 522066584 于 2016-7-13 18:24 编辑

做MCU及其他DSP的设计时,大家可能觉得时钟的设计其实是很简单的。没错,就比如现在很热门的ARM系列的MCU,设计时没人单独提出过什么时钟设计。那么,为什么在提到TMS320C6678的时候要特别的提出时钟设计呢?
要想用好C6678,尤其是在多任务图像通信的场合,还真的得仔细研究其时钟系统。因此,在这里,我将按照我个人在工作中的理解来讲讲C6678的时钟系统。所以看起来会工程味道重一些,学术的味道少一些。

C6678的时钟系统架构

C6678的时钟系统架构,设计得非常人性化,使用也比较方便。其系统架构如下图:
从架构图中可以清晰的看出,想要理解C6678的时钟配置,就需要弄清楚图中各相关模块及其配置。尤其是对于多核配置,就显得更加重要了,后面将会告诉大家如何进行配置。
C6678的时钟架构是由PLL来控制,所以需要首先理解PLL以及PLL控制器

PLL以及PLL控制器

外部输入的时钟信号,经过PLL后输出时钟信号PLLOUT。
PLL控制器是用户软件可编程的,能为系统提供灵活多变的时钟信号,在系统架构图中表示为PLLDIV1PLLDIV16。此外,PLL控制器不仅仅只是对PLLOUT进行软件可编程的分频或者倍频等操作,同时还包含有PLLM和SECCTL控制寄存器,驱动PLLM,OUTPUT DIVIDE以及BYPASS。
整个C6678的时钟系统都统一由PLL控制器来进行调度,经过PLL控制器后分配到8个C66X内核以及系统中的各个外设以及芯片内的各相关模块。
接下来,就给大家详细介绍PLL控制器的可编程指令的一些应用。PLL控制器中应用得比较多的几个概念,主要是分频(PLLD)倍频(PLLM)无效(DISABLE)
分频(PLLD):就是将PLLOUT的频率分别除以(1到256可编程)得到得频率。
倍频(PLLM):与分频相反,是乘以可编程系数。
无效(DISABLE):其实就是停止时钟得输出。
尽管时钟是可编程的,但是需要特别注意,并非所有时钟都可以任意编程,必须遵循一定的规则。上图中已经标明。其中PLLDIV2,PLLDIV5,PLLDIV8各自的输出分频数分别为X、Y、Z。这是可以编程的,其余的就只能选定指定的数字。下面分别列出来:

参考TMS320C6678数据手册中的介绍,我们来分别了解配置mainPLL的几个关键寄存器——
分频系数:上述PLL控制器的若干输出频率是可编程的,此时钟分频系数由寄存器PLLDIV2,PLLDIV5,PLLDIV8配置。
倍频系数: PLLM寄存器控制PLL控制器的倍频值。
PLL控制寄存器(PLLCTL)和二级PLL控制器(SECCTL)复位后,PLLCTL中的PLL使能位PLLEN可被修改,且对PLL的功能没有影响,除非先将PLLENSRC控制位清零;非使能PLLEN后PLL进入旁路模式,此时,我们可以先对PLL进行配置,配置结束后PLLEN置位,PLL按照配置后的模式工作;SECCTL中的OUTPUT DIVIDE位给出PLL的次分频系数(1或2)。  
对于系统的MAIN PLL的详细配置流程,请参考TI官方的文档[url=]www.ti.com/lit/ug/sprugv2f/sprugv2f.pdf[/url]中的3.1:




寄存器RSTYPERSTCTLRSTCFGRSISO给出了PLL复位控制逻辑配置单元。

与BOOT相关联

全面理解时钟系统,还需要与BOOT相关联。需要掌握C6678的BOOT相关的配置等等。也就是说,PLL的初始配置与BOOT相关。
下表是从C6678的数据手册里面摘录下来的,便于理解前面说的那句话以及理解上面列出的PLLD和PLLM:
PLL在BOOT模式下被置于PLL的状态下,PLL的初始参数是由BOOTMODE【12:10】决定。
TMS320C6678 main PLL初始化配置在TI的Demo程序中main函数调用KeyStone_main_PLL_init (10, 1)函数里的参数配置过程。
例程对应硬件的输入时钟CORECLK为100MHz;
PLLM设置为10*2-1=20-1(PLLM寄存器,20倍频);
PLLD设置为1-1(MAINPLLCTN0中的PLLD字段,1分频);
OUTPUT  DIVIDE(SECCTN)设置为2-1(对应2分频),可以计算PLL输出时钟PLLOUT=CORECLK*(PLLM+1)/(PLLD+1)/(OUTPUTDIVIDE+) = 100MHz *20 / 1/2=1GHz。
例程所对应的DSP CorePac主频(SYSCLK1)为1GHz;相应外设控制器时钟SYSCLK2~11是在此基础上的分频。
上述寄存器设置,可参看TMS320C6678数据手册及用户手册。

DDR3的时钟配置

DDR3 PLL为DDR3存储控制器提供接口时钟;C6678上电复位后正常工作前需要为DDR3PLL编程配置有效的时钟频率。DDR3 PLL的框图:
该PLL输入时钟DDRCLK为外部输入差分时钟; 输出时钟PLLOUT驱动DDR3接口,控制DDR3的数据读写速率。
DDR3 PLL配置不需要专用PLL 控制器,只需位于 BootCfg模块中的DDR3PLLCTN0和DDR3PLLCTN1,参考TMS320C6678数据手册7.7 DDR3PLL部分的说明。在对该寄存器写入配置前,需要先解锁(un-locking)KICK0/KICK1寄存器;同样,修改配置寄存器后,需要锁定(locking)KICK0/KICK1寄存器。

关于DDR3 PLL配置寄存器的各参数描述,请参考TMS320C6678数据手册;寄存器与Main PLL配置寄存器PLLCTN和SECCTN相似。

DDR3 PLL的初始化流程


到此为止,完成了对DDR3工作时钟频率的初始化。




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2024-4-28 00:14 , Processed in 0.039342 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表