TMS320C6678外部存储器DDR3硬件设计以及软件调试

文章主要介绍了一下,TMS320C6678 DSP的DDR3的硬件设计需要注意的问题以及相应的软件调试的问题。
------作者:jiangwenj02【转载请注明】
一、硬件设计
本设计参考TI公司的样板设计,在样板的基础上,为了节约成本和空间,删除了DDR3的ECC。只留下4 Samsung 公司的 K4B1G1646G ,总内存为 512MB DDR3 拥有 800 1066 1333 1600 等多个数据传输频率,设计使用 1333 数据传输频率的 DDR3 ,在调试的时候可以使用低频率的传输频率进行逐步调试。
DDR3数据传输速率最高达到1333MHz,属于高速传输线。所以布线的需要进行阻抗匹配。单线阻抗50欧姆,差分线阻抗100欧姆。
DDR3的传输线主要分为数据线,地址线,其它。4片DDR3拥有8组数据线,1组地址线。其中DDR3第n组(n=0...7)数据线包括DQ[8×n......8×(n+1)-1],DQSnP,DQSnN,DMn。剩余的EA[0..15],EBA0,EBA1,ECAS,ECKE,ECS0,EODT0,ERAS,EWE都是地址线。VREFSSTL为电源参考电压线。EMRESETN为复位线。DDRSLRATE0,DDRSLRAT1为控制速率线。
在绘制PCB板时,需要设置约束文件。DDR3的约束有数据线等长,地址线等长,单线阻抗50欧姆,差分线阻抗100欧姆。所以DDR3一共有12组等长约束,8组数据线,4组地址线(DSP DDR3 CONTROL到每个单片DDR3都有一个约束),外加相关差分线的约束。同一组数据线必须在同一个平面,数据线之间的长度相差不能超过20mil,差分线之间的长度相差不能超过2mil。地址线之间的长度相差不能超过20mil。DDR3数据线和地址线布线过程最好只打两个过孔。DDR3高速线不能跨平面分割。做好这几点,DDR3跑在1333MHz的速率基本没问题。
DDR3的连接方式使用fly-by的形式进行连接。注意其他无关的电路线,远离DDR3高速线,个人做的第一版只能跑在800MHz的原因,就是这个地方没做好,第二版改过来之后就可以跑在1333MHz了。
二、软件调试
软件调试,选择K1_STK_v1.1提供的开源代码。K1_STK_v1.1中对DDR3的测试代码为Memory_Test工程。因为DDR3的布线长度和官方不一样,所以需要修改DDR3对每组地址线的配置寄存器。寄存器中的数据用DDR3 PHY Calc v10.xlsx计算。

填写内容有,DDR CLOCK FREQUENCY(时钟频率 1333/2,跑在其它速率只需要修改这个值)。修改DQS,CK中Stripline length (inches)(布线线长) 的值。没有DDR ECC就不需要填最后的值。可以得到每个数据通道控制寄存器的值。

修改 Memory_Test工程中,KeyStone_DDR_Init.c文件中的C6678_EVM_DDR_Init函数中对应寄存器的值,如下。
//initial vale for leveling
/*WRLVL_INIT_RATIO*/
gpBootCfgRegs->DDR3_CONFIG_REG[2] = 0x89;
gpBootCfgRegs->DDR3_CONFIG_REG[3] = 0x8D;
gpBootCfgRegs->DDR3_CONFIG_REG[4] = 0x87;
gpBootCfgRegs->DDR3_CONFIG_REG[5] = 0x7B;
gpBootCfgRegs->DDR3_CONFIG_REG[6] = 0x75;
gpBootCfgRegs->DDR3_CONFIG_REG[7] = 0x72;
gpBootCfgRegs->DDR3_CONFIG_REG[8] = 0x64;
gpBootCfgRegs->DDR3_CONFIG_REG[9] = 0x5C;
gpBootCfgRegs->DDR3_CONFIG_REG[10] = 0x83;

/*GTLVL_INIT_RATIO*/
gpBootCfgRegs->DDR3_CONFIG_REG[14] = 0xD4;
gpBootCfgRegs->DDR3_CONFIG_REG[15] = 0xD0;
gpBootCfgRegs->DDR3_CONFIG_REG[16] = 0xBB;
gpBootCfgRegs->DDR3_CONFIG_REG[17] = 0xC7;
gpBootCfgRegs->DDR3_CONFIG_REG[18] = 0xB1;
gpBootCfgRegs->DDR3_CONFIG_REG[19] = 0xB3;
gpBootCfgRegs->DDR3_CONFIG_REG[20] = 0xA5;
gpBootCfgRegs->DDR3_CONFIG_REG[21] = 0xAD;
gpBootCfgRegs->DDR3_CONFIG_REG[22] = 0xC4;
修改完毕后,就可以运行DDR3测试程序。
注意:该工程会测试TMS320C6678,LL1、LL2、OTHER_L1、OTHER_L2、SL2 。如果只是测试DDR3,可以修改mem_test_main.c文件中的测试选项定义。
#define LL1_MEM_TEST 0
#define OTHER_L1_TEST 0
#define LL2_MEM_TEST 0
#define OTHER_L2_TEST 0
#define SL2_MEM_TEST 0
#define EXTERNAL_MEM_TEST 1
#define TEST_BY_DSP_CORE 1
#define TEST_BY_DMA 1

程序下载地址: http://download.csdn.net/detail/a137376864/9795887

  • 9
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
4 JTAG KeystoneⅠ上的JTAG接口用于和测试仿真系统通信,尽管JTAG对于系统运行不是必须的,但是强烈推荐所有设计上都使用JTAG接口。 4.1 JTAG/Emulation JTAG/Emulation相关的文档: Emulation and Trace Headers Technical Reference Manual (SPRU655) (but note differences defined below) Boundary Scan Test Specification (IEEE-1149.1) AC Coupled Net Test Specification (IEEE-1149.6) Clocking Design Guide for KeyStone Devices Application Report (SPRABI4) 4.1.1 JTAG/Emulation的配置 IEEE1149.1-1990标准,IEEE标准测试访问端口和边界扫描结构(JTAG)接口可以用于边界扫描和仿真。 边界扫描的实现和IEEE-1149.1以及IEEE1149.6(用于SerDes端口)。不管器件是什么样的配置,边界扫描都可以使用。 作为仿真接口,JTAG端口可以用于多种模式: 标准仿真模式:只需要5个标准JTAG信号【TCK,TDI,TD0,TMS,TRST】 HS-RTDX仿真模式:需要5个标准JTAG信号,加上EMU0 和/或 EMU1。在这种模式下,EMU0 和/或 EMU1在这种模式下是双向的。 Trace port:trace port支持实时复制特定的内部数据。Trace port使用EMU[18:00]引脚来输出trace数据,但是,使用的引脚数是可以配置的。 不管器件是什么样的配置,仿真功能都可以使用。 任何未使用的仿真信号可以悬空。 4.1.2 JTAG/Emulation 的系统实现 对于大多数的系统层次的实现细节,查看Emulation and Trace Headers Technical Reference Manual (SPRU655),不过KeystoneⅠ器件的实现和该文档中说明的有所不同。 尽管上述文档暗示了3.3V的信号,不过只要TVD源是1.8V的,1.8V的信号也是支持的。 【TVD全称Target Voltage Detect,对应于14针的JTAG的第5个引脚,较新的仿真器硬件可以调整电压以匹配目标器件的电压。所以对于6678,这个引脚接1.8V,给较新的仿真器来检测。】 对于未使用trace特性的单个器件的连接,可以使用标准14引脚的连接器以及非缓冲的连接【评估板上没有使用缓冲,但是没有14引脚连接器】。如果使用了trace特性(需要60引脚的仿真器连接),5个标准JTAG信号需要被缓冲并且TCLK和RTCLK需要被分别缓冲。建议在TCLK上接上并联交流终端匹配。EMU0和EMU1不能被缓冲,因为在HS-RTDX模式下,它们是双向信号。 对于有多个DSP而没有使用trace分析特性的系统,JTAG信号需要如上述一样被缓冲,但是可以使用14引脚连接。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值