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