片上SDRAM控制器的設(shè)計(jì)與集成
隨著設(shè)計(jì)與制造技術(shù)的發(fā)展,集成電路設(shè)計(jì)從晶體管的集成發(fā)展到邏輯門(mén)的集成, 現(xiàn)在又發(fā)展到IP的集成,即SoC設(shè)計(jì)技術(shù)。SoC可以有效地降低電子信息系統(tǒng)產(chǎn)品的開(kāi)發(fā)成本,縮短開(kāi)發(fā)周期,提高產(chǎn)品的競(jìng)爭(zhēng)力,是工業(yè)界將采用的最主要的產(chǎn)品開(kāi)發(fā)方式。目前國(guó)內(nèi)也加大了在SoC 設(shè)計(jì)以及IP 集成領(lǐng)域的研究。本文介紹的便是國(guó)家基金項(xiàng)目支持的龍芯SoC—ICT- E32 設(shè)計(jì)所集成的片上SDRAM 控制器模塊設(shè)計(jì)與實(shí)現(xiàn)。
1 ICT-E32 體系結(jié)構(gòu)
ICT-E32 是一款32位高性能SoC ,它集成龍芯1號(hào)CPU和自行開(kāi)發(fā)的片上總線架構(gòu),旨在推進(jìn)龍芯的產(chǎn)業(yè)化,探索SoC 設(shè)計(jì)方法。它可用于PDA、智能家電和消費(fèi)類電子產(chǎn)品等方面,其集成平臺(tái)也可用于后續(xù)芯片開(kāi)發(fā),開(kāi)發(fā)衍生產(chǎn)品。ICT-E32 采用的龍芯1 號(hào)CPU 核是一款32 位的MIPSCPU 。片上總線按照掛載IP 的帶寬分成兩級(jí),分別是高速總線和低速總線。高速總線采用地址流水和讀/ 寫(xiě)并發(fā)技術(shù),數(shù)據(jù)線寬度為64bit , 最高頻率133MHz , 掛有CPU 核、SDRAM Cont roller 和PCI Controller 等模塊;低速總線采用Wishbone體系結(jié)構(gòu),數(shù)據(jù)線寬度32bit ,最高頻率66MHz ,掛有UART、USB Host 和LIO接口等模塊。
兩級(jí)總線通過(guò)橋接器連接。還有一條穿過(guò)片上所有IP 模塊的總線—DCR(Device Cont rol Register Bus) 總線。這是一個(gè)環(huán)形的總線,CPU是DCR總線上惟一的主設(shè)備,負(fù)責(zé)對(duì)總線上其他的設(shè)備進(jìn)行讀寫(xiě)操作。DCR總線用于對(duì)各個(gè)IP 模塊的寄存器堆(Register bank) 進(jìn)行讀寫(xiě)。其大致結(jié)構(gòu)圖如圖1所示。
圖1 ICT-E32 結(jié)構(gòu)圖
2 SDRAM控制器設(shè)計(jì)與實(shí)現(xiàn)
SDRAM 控制器掛載在IC -E32 的內(nèi)部高速總線上,是總線上的Slave設(shè)備。它支持的SDRAM 大小范圍為64M~1G。通過(guò)I2C 串行總線協(xié)議訪問(wèn)DIMM 條的SPD (SerialPresence Detect) ,來(lái)配置SDRAM 控制器的模式寄存器。它的工作頻率與高速總線同步,兼容PC100/133 。數(shù)據(jù)線寬度為64 位,支持burst 操作(1 ,2 ,4 ,8 與整頁(yè)) ,支持順序與交替訪問(wèn)。SDRAM 控制器主要由三大模塊組成,包括高速總線接口、DCR總線接口以及SDRAM控制模塊。
{{分頁(yè)}}
2. 1 高速總線接口
ICT-E32 的內(nèi)部高速總線類似于IBM 的PLB總線協(xié)議,它的地址線為32位和數(shù)據(jù)線為64位。這是一款高性能的片上同步總線,總線上的設(shè)備使用同一個(gè)時(shí)鐘源提供的時(shí)鐘。采用二級(jí)地址流水和讀寫(xiě)并發(fā)技術(shù)。由總線仲裁器控制總線上Master設(shè)備和Slave設(shè)備之間的讀/ 寫(xiě)操作??偩€上的Master設(shè)備使用獨(dú)占的地址線、讀數(shù)據(jù)線、寫(xiě)數(shù)據(jù)線以及傳輸控制信號(hào),而Slave設(shè)備則共享分隔的地址和讀/ 寫(xiě)數(shù)據(jù)線,其中讀/ 寫(xiě)數(shù)據(jù)線配有各自的傳輸控制信號(hào)。它支持SDRAM仲裁,仲裁的原則是采用帶搶占的剝奪方式,CPU訪問(wèn)的優(yōu)先級(jí)最高。
內(nèi)部高速總線仲裁使用靜態(tài)優(yōu)先級(jí),當(dāng)Master設(shè)備對(duì)某一Slave設(shè)備發(fā)出請(qǐng)求時(shí),由總線仲裁器作出仲裁,如果該Master設(shè)備的優(yōu)先級(jí)最高,則向該Master設(shè)備作出應(yīng)答,同時(shí)向Slave設(shè)備發(fā)出命令,使其獨(dú)占Slave總線。
SDRAM 控制器作為內(nèi)部高速總線上的Slave設(shè)備,只對(duì)總線發(fā)出的命令做出響應(yīng)。高速總線接口負(fù)責(zé)將總線給出的命令轉(zhuǎn)換為對(duì)SDRAM控制器的操作。當(dāng)總線發(fā)出命令時(shí),高速總線接口首先判斷SDRAM 的狀態(tài),如果內(nèi)存處于空閑狀態(tài)則給SDRAM 控制器發(fā)出讀/ 寫(xiě)指令,在SDRAM 控制器完成對(duì)內(nèi)存操作后,給總線返回應(yīng)答信號(hào)及讀數(shù)據(jù),其中讀/寫(xiě)數(shù)據(jù)分別經(jīng)過(guò)同步FIFO 與總線連接。圖2 (a) 給出了高速總線接口具體的操作流程圖。
2. 2 DCR總線接口
ICT-E32 的DCR 總線參考的是IBM 的DCR總線。這是一款32位的同步總線,用來(lái)在Master設(shè)備CPU 的通用寄存器與Slave設(shè)備的模式寄存器之間傳輸數(shù)據(jù),是一條貫穿片上所有IP模塊的環(huán)形總線。
當(dāng)CPU 配置某一Slave設(shè)備的模式寄存器時(shí),通過(guò)DCR總線給出配置數(shù)據(jù),同時(shí)給出該設(shè)備的地址。Slave設(shè)備在接受到DCR 總線上的數(shù)據(jù)時(shí),首先判斷地址是否對(duì)應(yīng),如果給出的地址為自己的地址則接受數(shù)據(jù);如果不是,則將數(shù)據(jù)旁路(bypass) 給下一個(gè)設(shè)備。
DCR 接口的功能是接收CPU寫(xiě)入的各寄存器的值,及向CPU 提供狀態(tài)寄存器及其他寄存器的內(nèi)容。通過(guò)地址比較邏輯來(lái)判斷地址是否命中,如果地址命中則接受數(shù)據(jù),同時(shí)給 出應(yīng)答信號(hào);反之,則將數(shù)據(jù)旁路給DCR 總線上的下一個(gè)設(shè)備。圖2(b) 給出了DCR 總線接口操作流程圖。
圖2 總線接口操作流程圖
2. 3 SDRAM控制模塊
SDRAM 控制模塊在接受到系統(tǒng)命令后, 負(fù)責(zé)對(duì)SDRAM 內(nèi)存條發(fā)出讀/ 寫(xiě)操作控制信號(hào)。它內(nèi)部主要包含一個(gè)控制狀態(tài)轉(zhuǎn)換的Mealy 狀態(tài)機(jī),如圖3 所示。包括空閑( Idle) 、刷新(Ref resh) 、模式寄存器配置(Mode Register Set) 、有效(Active) 、預(yù)充( Precharge) 、讀和寫(xiě)七個(gè)狀態(tài)。每個(gè)狀態(tài)對(duì)SDRAM 內(nèi)存發(fā)出不同的操作指令。
{{分頁(yè)}}
SDRAM 內(nèi)存的操作主要通過(guò)以下控制信號(hào)給出,RAS# 行地址選擇、CAS # 列地址選擇、WE # 寫(xiě)使能信號(hào)、CS #片選信號(hào)以及CKE 時(shí)鐘使能信號(hào)。表1 給出了各種指令的組合方式。
圖3 SDRAM 控制器狀態(tài)機(jī)
2. 4 性能分析
該SDRAM控制器模塊使用Micron公司提供的MT48LC2M32B2仿真模塊進(jìn)行功能仿真,仿真結(jié)果顯示設(shè)計(jì)符合規(guī)范。SDRAM 控制器是內(nèi)部高速總線上各Master設(shè)備訪問(wèn)率較高的Slave 設(shè)備,它的性能好壞直接影響整個(gè)SoC 的運(yùn)作。該控制器的讀/ 寫(xiě)操作周期數(shù)Lrw為8 ,由此可以得到該控制器的讀寫(xiě)周期為公式(1) ,其中fclk為主頻時(shí)鐘:
SDRAM 控制器中刷新周期數(shù)Lref 為4 ,刷新間隔計(jì)數(shù)tREF 可通過(guò)模式寄存器配置,表2 給出了tREF可設(shè)的4種值,及主頻時(shí)鐘為100MHz的情況下的間隔周期。這樣便可以得出控制器的刷新周期為 :
當(dāng)tREF 取最大值時(shí),可以得到每秒鐘最大的用戶可用時(shí)間為
當(dāng)SDRAM 控制器進(jìn)行4 字讀寫(xiě)操作時(shí),由于該控制器數(shù)據(jù)線為64bit ,所以可得該控制器的最大數(shù)據(jù)傳輸率DTR(data transfer rate) 為式(4) :
其中,當(dāng)主頻時(shí)鐘f clk足夠大時(shí),式(4) 便可約減為式(5) :
因此可以得到,當(dāng)主頻時(shí)鐘為100MHz 時(shí),SDRAM 控制器的數(shù)據(jù)傳輸率約為400MB/s ; 而當(dāng)主頻時(shí)鐘取133MHz時(shí),數(shù)據(jù)傳輸率可達(dá)到522MB/s。
2. 5 設(shè)計(jì)比較
參考文獻(xiàn)[1 ]中,提供了一個(gè)基于FPGA芯片實(shí)現(xiàn)試驗(yàn)性質(zhì)的SDRAM控制器。與該控制器相比,本文的設(shè)計(jì)不僅在性能上有較大改進(jìn),而且由于本文的設(shè)計(jì)是面向應(yīng)用的,已構(gòu)成獨(dú)立的IP 核,而該設(shè)計(jì)是試驗(yàn)型的,不能直接應(yīng)用于產(chǎn)品,沒(méi)有構(gòu)成IP 核的要求。表3 給出了兩個(gè)設(shè)計(jì)的性能比較。
2. 6 FPGA驗(yàn)證與ASIC實(shí)現(xiàn)
本設(shè)計(jì)使用龍芯SoC 的FPGA 驗(yàn)證平臺(tái)進(jìn)行硬件仿真,硬件仿真平臺(tái)使用的FPGA芯片是Xilinx 公司的XC2V6000 ,硬件仿真平臺(tái)實(shí)際使用的是128MB PC100現(xiàn)代內(nèi)存條。SDRAM控制器在FPGA 實(shí)現(xiàn)后接近5萬(wàn)的邏輯門(mén)。整個(gè)SoC 設(shè)計(jì)FPGA實(shí)現(xiàn)的工作主頻為24MHz ,FPGA驗(yàn)證平臺(tái)上SDRAM的時(shí)鐘也為24MHz。
驗(yàn)證表明:SDRAM 控制器在系統(tǒng)中工作正常。由于HDL 代碼采用參數(shù)化的設(shè)計(jì),ASIC實(shí)現(xiàn)的版本只要做很少的修改。與FPGA不同的是,ASIC版本實(shí)現(xiàn)了門(mén)控時(shí)鐘和功耗管理,設(shè)計(jì)中的同步FIFO采用 Artisan的雙端口RAM 庫(kù)生成。DC綜合采用的是SMIC的0.18μm工藝庫(kù),延遲反標(biāo)(back annotation) 的門(mén)級(jí)仿真的結(jié)果表明設(shè)計(jì)符合預(yù)期要求。
3 結(jié)束語(yǔ)
本設(shè)計(jì)掛載在內(nèi)部高速總線上,在具體的結(jié)構(gòu)設(shè)計(jì)方面,將系統(tǒng)的性能分析和軟硬件協(xié)同仿真相結(jié)合,優(yōu)化各模塊的設(shè)計(jì)。并且實(shí)現(xiàn)了IP的可重用設(shè)計(jì),即不需要對(duì)結(jié)構(gòu)做大的改動(dòng),就可以重構(gòu)一個(gè)適合不同需求的片上SDRAM 控制器,只需要通過(guò)替換接口模塊掛接在其他類型的片上總線。同時(shí),參數(shù)化的設(shè)計(jì)可以方便的選擇實(shí)現(xiàn)工藝。設(shè)計(jì)驗(yàn)證中IP 的功能達(dá)到預(yù)期的要求。
評(píng)論