摘 要:嵌入式微處理器的高速性及其實(shí)時(shí)嵌入式操作系統(tǒng)的實(shí)時(shí)性、多任務(wù)性等,決定了嵌入式系統(tǒng)發(fā)展的前景。系統(tǒng)以目前應(yīng)用廣泛的PowerPC G4處理器MPC7410作為核心處理器,以Tsi107作為北橋芯片搭建嵌入式系統(tǒng)的硬件平臺(tái)。詳細(xì)介紹Tsi107芯片組中與SDRAM相關(guān)的寄存器的配置,討論SDRAM接口的VxWorks BSP開發(fā)設(shè)計(jì)。
關(guān)鍵詞:PowerPC;Tsi107芯片組;SDRAM;BSP
中圖分類號(hào):TP368.4 文獻(xiàn)標(biāo)識(shí)碼:B 文章編號(hào):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處理器,具有高性能和低功耗的特點(diǎn)。通過(guò)加入A1tiVec技術(shù),處理能力達(dá)到了4 G FLOPS。而1.8 V的低電壓操作大大降低了芯片的功耗,提高了系統(tǒng)的穩(wěn)定性[1]。系統(tǒng)采用Tundra公司為PowerPC專門設(shè)計(jì)的橋芯片/存儲(chǔ)器控制器Tsi107的memory控制器管理SDRAM。SDRAM在嵌入式系統(tǒng)中占據(jù)著非常重要的地位,必須使SDRAM 能夠正常訪問(wèn)。文中介紹了SDRAM接口的VxWorks BSP的開發(fā)。
1 基于PowerPC的硬件電路設(shè)計(jì)
整個(gè)電路的硬件設(shè)計(jì)如圖1所示。系統(tǒng)中使用了MPC7410作為核心處理器,外接一個(gè)2 MB L2 CACHE作為二級(jí)緩存,以提高運(yùn)算速度。Tsi107作為北橋芯片,利用60X總線和MPC7410相接,用以把60X總線信號(hào)轉(zhuǎn)化為PCI總線信號(hào),并管理FLASH和SDRAM[2]。SDRAM用于存放用戶的數(shù)據(jù)和代碼,為程序的運(yùn)行和保存臨時(shí)文件提供空間。SDRAM 的管理由Tsi107的Memory控制器來(lái)實(shí)現(xiàn),數(shù)據(jù)寬度配置為64 b。Tsi107的SDRAM接口有以下特點(diǎn):SDRAM器件必須與SDRAM的JEDEC規(guī)范兼容,32位和64位數(shù)據(jù)可選寬度,支持頁(yè)面式訪問(wèn),支持8個(gè)物理bank,最大支持1 GB的存儲(chǔ)容量[3]。設(shè)計(jì)中采用5片MT48L32M16A2作為SDRAM,其中的一片用于校驗(yàn)數(shù)據(jù),SDRAM的總?cè)萘繛?56 MB,總線時(shí)鐘是100 MHz。
在布線時(shí)應(yīng)注意SDRAM各個(gè)時(shí)鐘信號(hào)線必須等長(zhǎng)。如果SDRAM的地址線和控制線采用星型布線難度會(huì)很大,因而設(shè)計(jì)中把5片SDRAM中的必2片放在頂層,剩下的3片放在底層,使5片SDRAM基本平行的放在Tsi107芯片組的Memory控制引腳周圍。芯片組的Memory地址線和控制線與中間的1個(gè)SDRAM器件相連,然后其他的SDRAM器件與中間的SDRAM器件采用菊花鏈的方式相接。SDRAM器件數(shù)據(jù)線的連接要盡量等長(zhǎng)。由于SDRAM的頻率較高,需要注意布線的長(zhǎng)度和路徑,以保證信號(hào)的完整性。
2 SDRAM的VxWorks BSP的開發(fā)
BSP即Board Support Package,板級(jí)支持包,是對(duì)目標(biāo)系統(tǒng)的底層支持軟件。對(duì)于具體的硬件平臺(tái),與硬件相關(guān)的代碼都被封裝在BSP中,由BSP向上提供虛擬的硬件平臺(tái),BSP與操作系統(tǒng)通過(guò)定義的接口進(jìn)行交互。BSP是所有與硬件相關(guān)的代碼體的集合,是介于底層硬件和上層操作系統(tǒng)之間一層,主要目的是為了支持操作系統(tǒng),使之能夠更好地運(yùn)行于硬件系統(tǒng)。
對(duì)SDRAM的BSP的開發(fā)主要是對(duì)Tsi107芯片組中與SDRAM相關(guān)的一些寄存器的設(shè)置。這些寄存器包括:Memory邊界寄存器、Memory bank使能寄存器、Memory頁(yè)面方式寄存器、Memory控制配置寄存器。
2.1 Memory邊界寄存器
擴(kuò)展開始地址寄存器(EMSAR1和EMSAR2)和開始地址寄存器(MSAR1和MSAR2)為每個(gè)memory bank定義低地址邊界,計(jì)算公式如下:
bankn低邊界=0b00||<擴(kuò)展開始地址n>||<開始地址n>||0x0_0000。
擴(kuò)展結(jié)束地址寄存器(EMEAR1和EMEAR2)和結(jié)束地址寄存器(MEAR1和MEAR2)為每個(gè)memory bank定義高地址邊界,計(jì)算公式如下:
bankn高邊界=0b00||<擴(kuò)展結(jié)束地址n>||<結(jié)束地址n>||0xF_FFFF。
Tsi107提供了8個(gè)片選信號(hào)CS[0:7],每個(gè)片選信號(hào)控制1個(gè)物理bank,每個(gè)物理bank的大小和類型可不相同,每個(gè)bank的大小可配置為1~512 MB。因設(shè)計(jì)中SDRAM的總?cè)萘繛?56 MB,故只使用1個(gè)bank0,該物理bank由CS[0]控制。SDRAM的開始地址為0x0000_0000,結(jié)束地址為0x0FFF_FFFF。bank1~bank7都映射到0x3FF0_0000~0x3FFF_FFFF。在設(shè)置memory bank使能寄存器時(shí)將會(huì)關(guān)閉bank1~bank7。memory邊界寄存器將分別設(shè)置為:
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個(gè)字節(jié),用于使能各個(gè)Memory bank,寄存器的每一位用于使能一個(gè)Memory bank,如果只使能bank0,則寄存器被設(shè)置為00000001。
2.3 memory頁(yè)面模式寄存器
該寄存器的大小也是1個(gè)字節(jié),包含的PGMAX參數(shù)控制Tsi107訪問(wèn)當(dāng)前頁(yè)面的時(shí)間。PGMAX定義了從激活到預(yù)先加電的時(shí)間間隔,也稱作tRAS。PGMAX參數(shù)值乘以64產(chǎn)生實(shí)際時(shí)間間隔的周期數(shù)。當(dāng)PGMAX被設(shè)置為0x00,頁(yè)模式不被使能。
PGMAX的值與使用的SDRAM,ROM系統(tǒng)和Tsi107的頻率有關(guān)。當(dāng)PGMAX定義的時(shí)間間隔到達(dá),Tsi107需使用一個(gè)預(yù)先加電命令關(guān)閉當(dāng)前頁(yè)面;在進(jìn)行memory訪問(wèn)時(shí),如果PGMAX時(shí)間到達(dá),Tsi107須等到訪問(wèn)完成再對(duì)SDRAM進(jìn)行預(yù)先加電;如果ROM連接在memory總線上,則潛在的延遲一個(gè)預(yù)先加電命令的最長(zhǎng)操作是對(duì)ROM的突發(fā)讀操作;如果ROM連接在PCI總線上,則最長(zhǎng)的Memory訪問(wèn)是對(duì)SDRAM的突發(fā)讀操作;Tsi107發(fā)送一個(gè)預(yù)先加電命令到SDRAM器件需要兩個(gè)時(shí)鐘周期[3]。于是,PGMAX的計(jì)算公式為:
PGMAX<[tRAS(MAX)-(memory訪問(wèn)的最長(zhǎng)時(shí)間)-2]/64
2.4 Memory控制配置寄存器
Memory控制配置寄存器包含4個(gè)32位寄存器(MCCRs),用于設(shè)置所有的RAM和ROM參數(shù)。在所有的Memory配置參數(shù)設(shè)置完后,初始化軟件使用MCCR1中的MEMGO位啟動(dòng)Memory接口。首次向MCCR1,2,3和4中寫時(shí),先不設(shè)置MEMGO位,然后執(zhí)行一個(gè)read-modify-write操作設(shè)置MEMGO[3]。
[BT4]2.4.1 Memory控制配置寄存器1
下面只介紹和SDRAM有關(guān)的一些重要寄存器位的設(shè)置:
SREN位設(shè)置為0,表示在睡眠模式時(shí)禁止SDRAM的self 刷新。RAM_TYRE位設(shè)置為0,表明RAM類型是SDRAM。MCCR1[15:0]用于bank0~bank7的行參數(shù)的設(shè)置,其表明每一個(gè)bank的行地址位多少。因?yàn)橹皇褂胋ank0,所以只設(shè)置MCCR[1:0],MCCR[15:2]使用默認(rèn)值即可。對(duì)于器件MT48L32M16A2使用了13個(gè)行地址位,4個(gè)邏輯bank[4],故MCCR[1:0]設(shè)置為10。
[BT4]2.4.2 Memory控制配置寄存器2
INLINE_PAR_NOT_ECC: In-line奇偶校驗(yàn)——不是ECC。執(zhí)行Memory讀時(shí)在in-line數(shù)據(jù)通路的ECC和奇偶校驗(yàn)/糾正裝置中選擇其一,該位置0。INLINE_WR_EN:使能In-line奇偶校驗(yàn)錯(cuò)誤報(bào)告。控制在向Memory寫時(shí)是否Tsi107使用in-line奇偶校驗(yàn)電路報(bào)告60X總線上的奇偶校驗(yàn)錯(cuò)誤,該位置1。INLINE_RD_EN: In-line讀操作奇偶或ECC校驗(yàn)/糾正使能。控制是否Tsi107在in-line數(shù)據(jù)通路使用ECC/奇偶校驗(yàn)和/或糾正電路報(bào)告Memory系統(tǒng)讀操作時(shí)的ECC或奇偶校驗(yàn)錯(cuò)誤,該位置1。
REFINT:Tsi107的Memory接口為SDRAM提供CBR刷新,該位表明了CBR刷新周期之間的時(shí)鐘周期數(shù)。REFINT的值與使用的RAM器件和Tsi107的操作頻率有關(guān)。當(dāng)REFINT時(shí)間到達(dá)且Memory總線空閑,Tsi107向SDRAM發(fā)送一個(gè)預(yù)先加電命令和一個(gè)刷新命令。當(dāng)Memory總線正忙,刷新請(qǐng)求將不被執(zhí)行,一個(gè)內(nèi)部的、4位、未執(zhí)行刷新計(jì)數(shù)器將加1,刷新間隔計(jì)時(shí)器恢復(fù)到REFINT中的值,被中斷的操作將繼續(xù)進(jìn)行。當(dāng)REFINT時(shí)間到達(dá)并且總線空閑,Tsi107將執(zhí)行所有的未執(zhí)行的刷新操作,未執(zhí)行刷新計(jì)數(shù)器將清零。如果未執(zhí)行的刷新次數(shù)超過(guò)16,計(jì)數(shù)器溢出并產(chǎn)生一個(gè)刷新溢出錯(cuò)誤[3]。REFINT值通過(guò)下面的公式計(jì)算可得:[HJ1]
[JZ]REFINT