多核处理器是最近快速发展的电子器件,单个芯片内集成了多个同构或者异构的处理器,使得其计算处理能力得到较大幅度的提高。DSP处理器由于其具有较高的数字处理能力,得到较广泛的应用。多核DSP芯片以目前性能较高的TMS320C66系列为例,其中TMS320C6678(以下简称C6678)含有8个处理器。这些处理器可以独立工作,也可以并行联合工作。当它们联合工作时,相互之间通信和握手就非常重要,尤其是在对时间要求较高的场合,时钟的稳定和同步就非常关键。时钟的稳定和同步对系统设计、时钟源、时钟分配、电路布线、时钟线屏蔽等都提出较高的要求。 本文利用CDCM6208时钟分配芯片,以此输出多路时钟,提供到8核DSP芯片C6678,提供出DSP核工作时钟、DDR3数据读写时钟、RapidIO和PCIe数据传输时钟、千兆网络加速器等时钟信号。文中介绍了详细的电路设计、时钟芯片配置以及多核DSP的配置,相关片内设备的初始化等。
1C6678及其结构
C6678是TI公司多核处理器中的一款8核浮点型DSP,最高工作频率达到1.25GHz,单核可以提供40GMAC定点计算或者20GFLOP浮点计算能力,单个芯片可以提供320GMAC或者160GFLOP计算能力。C6678的片内结构如图1所示。
C6678的每个核具有32KB的程序、32KB的数据以及512KB的2级Cache存储空间,芯片片内具有一个4MB的共享SRAM。C6678具有DDR3控制器接口,可以外接DDR3,直接寻址范围达到8GB。C6678的片内外设有RapidIO、PCIe、EMIF以及SPI、I2C总线等接口。这些接口通过片内的高速互联总线和各个处理器交互数据。
和网络相关的片内设备如图1右下角灰色模块所示,主要包括两个对外的SGMII接口、以太交换和网络交换模块,以及用于数据管理的安全加速器和包加速器,是为了快速检测数据的校验以及协议是否遵循网络标准,对于错误的数据直接丢弃.降低CPU的负担。为了加快网络和CPU的数据交换,片内的队列管理器用于管理网络包或者网络帧的缓存,分发等功能。这些数据都采用数据包DMA读/写,不需要CPU参与。
C6678的其他片内设备包括PLL、仿真口、信号量、电源管理和复位管理等模块。其中PLL配置CPU和外设的工作时钟;仿真口用于连接仿真器,实现对软件运行的监控;信号量实现对DSP/BIOS操作系统中信号量的控制;电源管理实现整个芯片电流电压的控制;复位管理配
置启动的方式,硬复位进行全启动,软复位进行部分启动。
2CDCM6208及其结构
CDCM62xx系列芯片是TI公司针对多核处理器专门开发的时钟产生、驱动和分配芯片。CDCM6208是该系列的第二代产品,相比于第一代CDCM6208的最大优点就是功耗大幅度降低,从第一代的2~3W降低到0.5W左右。而其功能、指标和体积没有弱化。CDCM6208有两路可选时钟输入,8路时钟输出。8路输出中的4路只能做整数倍分频,另外4路可以做小数倍分频,满足多核芯片的各种不同的时钟需求。8路时钟支持LVPECL、CML、HCSL以及LVDS信号电平,最大支持800MHz的时钟频率,满足RapidIO和PCIe这些高速接口需求。时钟抖动小于265fs。其控制可以通过标准的SPI或者I2S接口实现,非常方便灵活。TI公司提供针对该芯片专门开发的图形化控制软件,用户选择所要设置的时钟工作方式、输出频率等参数,该软件生成其内部寄存器的值,通过SPI或I2S接口写入就完成整个芯片的配置。
CDCM6208的内部结构如图2所示。从图中可以看出,可选两路时钟输入后,首先经过一个14倍频器,作为参考时钟驱动片内VCO产生时钟信号。为了提高时钟相位噪声,倍频后信号经过一个片内的滤波器,该滤波器可以由片内提供阻容电路设置。VCO时钟功分到两路预分频器,预分频器只能4、5或者6分频。预分频后时钟再次进入后期的分频器。每个预分频器功分到两个小数分频器和一个整数分频器。分频后信号驱动后输出。从图2右边输出可以看出,整数分频器输出的Y0和Y1两路时钟频率一样,Y2和Y3时钟频率一样。小数分频的Y4~Y7可以各自设置CDCM6208的这种时钟配置限制了其应用,但好处是降低了功耗,目前这种配置满足绝大部分多核处理器的要求,尤其是TI公司的C66系列以及AK2系列多核DSP可以实现无缝连接。
3硬件设计
根据TMS320C6678的应用,所需要的时钟如图3所示。
其主要时钟包括:①内核运行时钟,该时钟输入是100MHz,DSP片内PLL将其锁定到工作频率,最高为1GHz,最低为700MHz。②RapioIO接口和HyperLink超级连接接口工作时钟,这两路时钟输入都为312.5MHz,RapioIO倍频4、8、10、16,工作在1.25GHz、2.5GHz、3.125GHz和5GHz。HyperLink倍频到40、80、100、160,工作在12.5GHz、25GHz、31.25GHz和50GHz。
③PCIe接口时钟和PA_SS网络加速器时钟,这两路时钟都是输入100MHz,内部倍频后相应的工作时钟,满足各自接口传输时钟要求。④DDR3时钟,该时钟输入为66.667MHz,倍频20或者25倍,工作在1333.33MHz或者1666.7MHz。这些时钟在DSP片内都各有独立的PLL电路设置,其工作原理和设置方法基本一致。图3中的单独25MHz是专门为千兆网提供的工作时钟,由一个单独的晶体提供。C6678还提供一路时钟输出信号,默认输出为核时钟的1/6,图中为16.667MHz,输出时钟可以检测C6678是否正常工作。
由于C6678的核时钟由CDCM6208提供,所以对CDCM6208的设置只能由另外一个处理器完成,只要该处理器具有SPI或者I2S接口即可。本文使用低功耗的DSP芯片C6747来实现多CDCM6208的设置。C6747和CDCM6208的接口如图4所示,采用标准4线制SPI接口控制,为了避免干扰提高传输可靠性,在SPI的片选信号的写信号分别上拉和下拉,这样在空闲下其引脚状态不会被干扰。在控制CDCM6208之前,需要对其进行复位,图中使用一个通用GPIO引脚控制,当CDCM6208配置成功后,会提供一个状态检测信号,该信号连接到C6747的GPIO引脚,用来判断是否正确配置。图中C6747还使用一个引脚控制CDCM6208的低功耗设置,当该引脚为高时,CDCM6208进入低功耗模式。
4软件设计
由于系统采用C6747控制CDCM6208时钟信号,所以C6747的软件是系统整个初始化的关键,C6747的初始化软件主要包括对CDCM6208的复位、配置和检测以及对C6678的复位、C6678外挂Flash的复位等工作。整个系统的软件流程如图5所示。
上电启动后,C6747软件加载成功后,复位CDCM6208,为确保复位成功,C6747要等待10ms才能通过SPI接口配置CDCM6208。配置完成后,C6747可以查询CDCM6208的状态输出引脚,检测是否配置成功。如果配置失败,重复复位、配置、检测这几个步骤。配置成功后,表明CDCM6208已经输出准备时钟到C6678,但在此之前,C6678仍然处于复位状态。由于C6678的程序保存在片外Flash中。所以,C6747要首先复位Flash,等待其复位后,再复位C6678,查询C6678的输出状态,确定C6678是否正常下作。如果输出不正常,仍然重复复位Flash、复位C6678和检测这几个步骤,直到初始化成功。
结语
多核处理器由于其接口丰富,运行频率较高,对时钟设计要求较高,一般要求一个高精度的时钟通过分频/倍频方式产生多路时钟到相应的接口。本文以多核数字信号处理器C6678为应用对象,通过CDCM6208产生多路时钟,提供到多核DSP的核时钟、DDR3、RapidIO等时钟信号。通过单核低功耗小成本处理器C6747实现对整个时钟电路的复位、设置和检测。本文介绍的时钟配置方法具有通用性,对同类产品的时钟设计方案具有一定的参考价值。
|