摘 要:嵌入式微處理器的高速性及其實時嵌入式操作系統的實時性、多任務性等,決定了嵌入式系統發展的前景。系統以目前應用廣泛的PowerPC G4處理器MPC7410作為核心處理器,以Tsi107作為北橋芯片搭建嵌入式系統的硬件平臺。詳細介紹Tsi107芯片組中與SDRAM相關的寄存器的配置,討論SDRAM接口的VxWorks BSP開發設計。
關鍵詞:PowerPC;Tsi107芯片組;SDRAM;BSP
中圖分類號:TP368.4 文獻標識碼:B 文章編號:1004-373X(2008)02-007-03
SDRAM Interface Design in Embedded System Based on PowerPC
LIU Lijun,HE Zhanzhuang,LI Hao
(Xi′an Microelectronics Technology Institute,Xi′an,710054,China)
Abstract:The high processing speed of microprocessor and the real-time,multitask characteristics of embedded operating system decide the embedded system will have a good future.The system uses MPC7410 of PowerPC G4 processor which has been used widely as the core processor,Tsi107 as north bridge chip design an embedded system′s hardware platform.Introduc[CD*4]ing the setting of register related to SDRAM in the Tsi107 chip in detail.Discussing the design of SDRAM interface in the VxWorks BSP.
Keywords:PowerPC;Tsi107 chip;SDRAM;BSP
MPC7410是新一代G4處理器,具有高性能和低功耗的特點。通過加入A1tiVec技術,處理能力達到了4 G FLOPS。而1.8 V的低電壓操作大大降低了芯片的功耗,提高了系統的穩定性[1]。系統采用Tundra公司為PowerPC專門設計的橋芯片/存儲器控制器Tsi107的memory控制器管理SDRAM。SDRAM在嵌入式系統中占據著非常重要的地位,必須使SDRAM 能夠正常訪問。文中介紹了SDRAM接口的VxWorks BSP的開發。
1 基于PowerPC的硬件電路設計
整個電路的硬件設計如圖1所示。系統中使用了MPC7410作為核心處理器,外接一個2 MB L2 CACHE作為二級緩存,以提高運算速度。Tsi107作為北橋芯片,利用60X總線和MPC7410相接,用以把60X總線信號轉化為PCI總線信號,并管理FLASH和SDRAM[2]。SDRAM用于存放用戶的數據和代碼,為程序的運行和保存臨時文件提供空間。SDRAM 的管理由Tsi107的Memory控制器來實現,數據寬度配置為64 b。Tsi107的SDRAM接口有以下特點:SDRAM器件必須與SDRAM的JEDEC規范兼容,32位和64位數據可選寬度,支持頁面式訪問,支持8個物理bank,最大支持1 GB的存儲容量[3]。設計中采用5片MT48L32M16A2作為SDRAM,其中的一片用于校驗數據,SDRAM的總容量為256 MB,總線時鐘是100 MHz。
在布線時應注意SDRAM各個時鐘信號線必須等長。如果SDRAM的地址線和控制線采用星型布線難度會很大,因而設計中把5片SDRAM中的必2片放在頂層,剩下的3片放在底層,使5片SDRAM基本平行的放在Tsi107芯片組的Memory控制引腳周圍。芯片組的Memory地址線和控制線與中間的1個SDRAM器件相連,然后其他的SDRAM器件與中間的SDRAM器件采用菊花鏈的方式相接。SDRAM器件數據線的連接要盡量等長。由于SDRAM的頻率較高,需要注意布線的長度和路徑,以保證信號的完整性。
2 SDRAM的VxWorks BSP的開發
BSP即Board Support Package,板級支持包,是對目標系統的底層支持軟件。對于具體的硬件平臺,與硬件相關的代碼都被封裝在BSP中,由BSP向上提供虛擬的硬件平臺,BSP與操作系統通過定義的接口進行交互。BSP是所有與硬件相關的代碼體的集合,是介于底層硬件和上層操作系統之間一層,主要目的是為了支持操作系統,使之能夠更好地運行于硬件系統。
對SDRAM的BSP的開發主要是對Tsi107芯片組中與SDRAM相關的一些寄存器的設置。這些寄存器包括:Memory邊界寄存器、Memory bank使能寄存器、Memory頁面方式寄存器、Memory控制配置寄存器。
2.1 Memory邊界寄存器
擴展開始地址寄存器(EMSAR1和EMSAR2)和開始地址寄存器(MSAR1和MSAR2)為每個memory bank定義低地址邊界,計算公式如下:
bankn低邊界=0b00||<擴展開始地址n>||<開始地址n>||0x0_0000。
擴展結束地址寄存器(EMEAR1和EMEAR2)和結束地址寄存器(MEAR1和MEAR2)為每個memory bank定義高地址邊界,計算公式如下:
bankn高邊界=0b00||<擴展結束地址n>||<結束地址n>||0xF_FFFF。
Tsi107提供了8個片選信號CS[0:7],每個片選信號控制1個物理bank,每個物理bank的大小和類型可不相同,每個bank的大小可配置為1~512 MB。因設計中SDRAM的總容量為256 MB,故只使用1個bank0,該物理bank由CS[0]控制。SDRAM的開始地址為0x0000_0000,結束地址為0x0FFF_FFFF。bank1~bank7都映射到0x3FF0_0000~0x3FFF_FFFF。在設置memory bank使能寄存器時將會關閉bank1~bank7。memory邊界寄存器將分別設置為:
MSAR1:0xFFFF_FF00;MSAR2:0xFFFF_FFFF;EMSAR1:0x0303_0300; EMSAR2:0x0303_0303; MEAR1:0xFFFF_FFFF; MEAR2:0xFFFF_FFFF;
EMEAR1:0x0303_0300; EMEAR2:0x0303_0303。
2.2 memory bank使能寄存器
該寄存器的大小為1個字節,用于使能各個Memory bank,寄存器的每一位用于使能一個Memory bank,如果只使能bank0,則寄存器被設置為00000001。
2.3 memory頁面模式寄存器
該寄存器的大小也是1個字節,包含的PGMAX參數控制Tsi107訪問當前頁面的時間。PGMAX定義了從激活到預先加電的時間間隔,也稱作tRAS。PGMAX參數值乘以64產生實際時間間隔的周期數。當PGMAX被設置為0x00,頁模式不被使能。
PGMAX的值與使用的SDRAM,ROM系統和Tsi107的頻率有關。當PGMAX定義的時間間隔到達,Tsi107需使用一個預先加電命令關閉當前頁面;在進行memory訪問時,如果PGMAX時間到達,Tsi107須等到訪問完成再對SDRAM進行預先加電;如果ROM連接在memory總線上,則潛在的延遲一個預先加電命令的最長操作是對ROM的突發讀操作;如果ROM連接在PCI總線上,則最長的Memory訪問是對SDRAM的突發讀操作;Tsi107發送一個預先加電命令到SDRAM器件需要兩個時鐘周期[3]。于是,PGMAX的計算公式為:
PGMAX<[tRAS(MAX)-(memory訪問的最長時間)-2]/64
2.4 Memory控制配置寄存器
Memory控制配置寄存器包含4個32位寄存器(MCCRs),用于設置所有的RAM和ROM參數。在所有的Memory配置參數設置完后,初始化軟件使用MCCR1中的MEMGO位啟動Memory接口。首次向MCCR1,2,3和4中寫時,先不設置MEMGO位,然后執行一個read-modify-write操作設置MEMGO[3]。
[BT4]2.4.1 Memory控制配置寄存器1
下面只介紹和SDRAM有關的一些重要寄存器位的設置:
SREN位設置為0,表示在睡眠模式時禁止SDRAM的self 刷新。RAM_TYRE位設置為0,表明RAM類型是SDRAM。MCCR1[15:0]用于bank0~bank7的行參數的設置,其表明每一個bank的行地址位多少。因為只使用bank0,所以只設置MCCR[1:0],MCCR[15:2]使用默認值即可。對于器件MT48L32M16A2使用了13個行地址位,4個邏輯bank[4],故MCCR[1:0]設置為10。
[BT4]2.4.2 Memory控制配置寄存器2
INLINE_PAR_NOT_ECC: In-line奇偶校驗——不是ECC。執行Memory讀時在in-line數據通路的ECC和奇偶校驗/糾正裝置中選擇其一,該位置0。INLINE_WR_EN:使能In-line奇偶校驗錯誤報告??刂圃谙騇emory寫時是否Tsi107使用in-line奇偶校驗電路報告60X總線上的奇偶校驗錯誤,該位置1。INLINE_RD_EN: In-line讀操作奇偶或ECC校驗/糾正使能??刂剖欠馮si107在in-line數據通路使用ECC/奇偶校驗和/或糾正電路報告Memory系統讀操作時的ECC或奇偶校驗錯誤,該位置1。
REFINT:Tsi107的Memory接口為SDRAM提供CBR刷新,該位表明了CBR刷新周期之間的時鐘周期數。REFINT的值與使用的RAM器件和Tsi107的操作頻率有關。當REFINT時間到達且Memory總線空閑,Tsi107向SDRAM發送一個預先加電命令和一個刷新命令。當Memory總線正忙,刷新請求將不被執行,一個內部的、4位、未執行刷新計數器將加1,刷新間隔計時器恢復到REFINT中的值,被中斷的操作將繼續進行。當REFINT時間到達并且總線空閑,Tsi107將執行所有的未執行的刷新操作,未執行刷新計數器將清零。如果未執行的刷新次數超過16,計數器溢出并產生一個刷新溢出錯誤[3]。REFINT值通過下面的公式計算可得:[HJ1]
[JZ]REFINT