1. 程式人生 > >TMS320C6678外部儲存器DDR3硬體設計以及軟體除錯

TMS320C6678外部儲存器DDR3硬體設計以及軟體除錯

文章主要介紹了一下,TMS320C6678 DSP的DDR3的硬體設計需要注意的問題以及相應的軟體除錯的問題。 ------作者:jiangwenj02【轉載請註明】 一、硬體設計 本設計參考TI公司的樣板設計,在樣板的基礎上,為了節約成本和空間,刪除了DDR3的ECC。只留下4Samsung公司的K4B1G1646G,總記憶體為512MBDDR3擁有800106613331600等多個數據傳輸頻率,設計使用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