<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > EDA/PCB > 設(shè)計應(yīng)用 > 片上SDRAM控制器的設(shè)計與集成

          片上SDRAM控制器的設(shè)計與集成

          ——
          作者: 時間:2008-01-10 來源: 收藏

            隨著設(shè)計與制造技術(shù)的發(fā)展,集成電路設(shè)計從晶體管的集成發(fā)展到邏輯門的集成, 現(xiàn)在又發(fā)展到IP的集成,即設(shè)計技術(shù)。可以有效地降低電子信息系統(tǒng)產(chǎn)品的開發(fā)成本,縮短開發(fā)周期,提高產(chǎn)品的競爭力,是工業(yè)界將采用的最主要的產(chǎn)品開發(fā)方式。目前國內(nèi)也加大了在 設(shè)計以及IP 集成領(lǐng)域的研究。本文介紹的便是國家基金項(xiàng)目支持的龍芯SoC—ICT- E32 設(shè)計所集成的片上 模塊設(shè)計與實(shí)現(xiàn)。

            1  ICT-E32 體系結(jié)構(gòu)

            ICT-E32 是一款32位高性能SoC ,它集成龍芯1號CPU和自行開發(fā)的片上總線架構(gòu),旨在推進(jìn)龍芯的產(chǎn)業(yè)化,探索SoC 設(shè)計方法。它可用于PDA、智能家電和消費(fèi)類電子產(chǎn)品等方面,其集成平臺也可用于后續(xù)芯片開發(fā),開發(fā)衍生產(chǎn)品。ICT-E32 采用的龍芯1 號CPU 核是一款32 位的MIPSCPU 。片上總線按照掛載IP 的帶寬分成兩級,分別是高速總線和低速總線。高速總線采用地址流水和讀/ 寫并發(fā)技術(shù),數(shù)據(jù)線寬度為64bit , 最高頻率133MHz , 掛有CPU 核、 Cont roller 和PCI Controller 等模塊;低速總線采用Wishbone體系結(jié)構(gòu),數(shù)據(jù)線寬度32bit ,最高頻率66MHz ,掛有UART、USB Host 和LIO接口等模塊。

            兩級總線通過橋接器連接。還有一條穿過片上所有IP 模塊的總線—DCR(Device Cont rol Register Bus) 總線。這是一個環(huán)形的總線,CPU是DCR總線上惟一的主設(shè)備,負(fù)責(zé)對總線上其他的設(shè)備進(jìn)行讀寫操作。DCR總線用于對各個IP 模塊的寄存器堆(Register bank) 進(jìn)行讀寫。其大致結(jié)構(gòu)圖如圖1所示。

            

          ICT-E32 結(jié)構(gòu)圖

            圖1  ICT-E32 結(jié)構(gòu)圖

            2  設(shè)計與實(shí)現(xiàn)

            SDRAM 掛載在IC -E32 的內(nèi)部高速總線上,是總線上的Slave設(shè)備。它支持的SDRAM 大小范圍為64M~1G。通過I2C 串行總線協(xié)議訪問DIMM 條的SPD (SerialPresence Detect) ,來配置SDRAM 控制器的模式寄存器。它的工作頻率與高速總線同步,兼容PC100/133 。數(shù)據(jù)線寬度為64 位,支持burst 操作(1 ,2 ,4 ,8 與整頁) ,支持順序與交替訪問。SDRAM 控制器主要由三大模塊組成,包括高速總線接口、DCR總線接口以及SDRAM控制模塊。

          {{分頁}}

            2. 1  高速總線接口

            ICT-E32 的內(nèi)部高速總線類似于IBM 的PLB總線協(xié)議,它的地址線為32位和數(shù)據(jù)線為64位。這是一款高性能的片上同步總線,總線上的設(shè)備使用同一個時鐘源提供的時鐘。采用二級地址流水和讀寫并發(fā)技術(shù)。由總線仲裁器控制總線上Master設(shè)備和Slave設(shè)備之間的讀/ 寫操作。總線上的Master設(shè)備使用獨(dú)占的地址線、讀數(shù)據(jù)線、寫數(shù)據(jù)線以及傳輸控制信號,而Slave設(shè)備則共享分隔的地址和讀/ 寫數(shù)據(jù)線,其中讀/ 寫數(shù)據(jù)線配有各自的傳輸控制信號。它支持SDRAM仲裁,仲裁的原則是采用帶搶占的剝奪方式,CPU訪問的優(yōu)先級最高。

            內(nèi)部高速總線仲裁使用靜態(tài)優(yōu)先級,當(dāng)Master設(shè)備對某一Slave設(shè)備發(fā)出請求時,由總線仲裁器作出仲裁,如果該Master設(shè)備的優(yōu)先級最高,則向該Master設(shè)備作出應(yīng)答,同時向Slave設(shè)備發(fā)出命令,使其獨(dú)占Slave總線。

            SDRAM 控制器作為內(nèi)部高速總線上的Slave設(shè)備,只對總線發(fā)出的命令做出響應(yīng)。高速總線接口負(fù)責(zé)將總線給出的命令轉(zhuǎn)換為對SDRAM控制器的操作。當(dāng)總線發(fā)出命令時,高速總線接口首先判斷SDRAM 的狀態(tài),如果內(nèi)存處于空閑狀態(tài)則給SDRAM 控制器發(fā)出讀/ 寫指令,在SDRAM 控制器完成對內(nèi)存操作后,給總線返回應(yīng)答信號及讀數(shù)據(jù),其中讀/寫數(shù)據(jù)分別經(jīng)過同步FIFO 與總線連接。圖2 (a) 給出了高速總線接口具體的操作流程圖。

            2. 2  DCR總線接口

            ICT-E32 的DCR 總線參考的是IBM 的DCR總線。這是一款32位的同步總線,用來在Master設(shè)備CPU 的通用寄存器與Slave設(shè)備的模式寄存器之間傳輸數(shù)據(jù),是一條貫穿片上所有IP模塊的環(huán)形總線。

            當(dāng)CPU 配置某一Slave設(shè)備的模式寄存器時,通過DCR總線給出配置數(shù)據(jù),同時給出該設(shè)備的地址。Slave設(shè)備在接受到DCR 總線上的數(shù)據(jù)時,首先判斷地址是否對應(yīng),如果給出的地址為自己的地址則接受數(shù)據(jù);如果不是,則將數(shù)據(jù)旁路(bypass) 給下一個設(shè)備。

            DCR 接口的功能是接收CPU寫入的各寄存器的值,及向CPU 提供狀態(tài)寄存器及其他寄存器的內(nèi)容。通過地址比較邏輯來判斷地址是否命中,如果地址命中則接受數(shù)據(jù),同時給 出應(yīng)答信號;反之,則將數(shù)據(jù)旁路給DCR 總線上的下一個設(shè)備。圖2(b) 給出了DCR 總線接口操作流程圖。

            

          總線接口操作流程圖

            圖2  總線接口操作流程圖

            2. 3  SDRAM控制模塊

            SDRAM 控制模塊在接受到系統(tǒng)命令后, 負(fù)責(zé)對SDRAM 內(nèi)存條發(fā)出讀/ 寫操作控制信號。它內(nèi)部主要包含一個控制狀態(tài)轉(zhuǎn)換的Mealy 狀態(tài)機(jī),如圖3 所示。包括空閑( Idle) 、刷新(Ref resh) 、模式寄存器配置(Mode Register Set) 、有效(Active) 、預(yù)充( Precharge) 、讀和寫七個狀態(tài)。每個狀態(tài)對SDRAM 內(nèi)存發(fā)出不同的操作指令。

          {{分頁}}

            SDRAM 內(nèi)存的操作主要通過以下控制信號給出,RAS# 行地址選擇、CAS # 列地址選擇、WE # 寫使能信號、CS #片選信號以及CKE 時鐘使能信號。表1 給出了各種指令的組合方式。

            

          SDRAM 控制器狀態(tài)機(jī)

            圖3  SDRAM 控制器狀態(tài)機(jī)

            

          操作指令

            2. 4  性能分析

            該SDRAM控制器模塊使用Micron公司提供的MT48LC2M32B2仿真模塊進(jìn)行功能仿真,仿真結(jié)果顯示設(shè)計符合規(guī)范。SDRAM 控制器是內(nèi)部高速總線上各Master設(shè)備訪問率較高的Slave 設(shè)備,它的性能好壞直接影響整個SoC 的運(yùn)作。該控制器的讀/ 寫操作周期數(shù)Lrw為8 ,由此可以得到該控制器的讀寫周期為公式(1) ,其中fclk為主頻時鐘:

            

          主頻時鐘

            SDRAM 控制器中刷新周期數(shù)Lref 為4 ,刷新間隔計數(shù)tREF 可通過模式寄存器配置,表2 給出了tREF可設(shè)的4種值,及主頻時鐘為100MHz的情況下的間隔周期。這樣便可以得出控制器的刷新周期為 :

            

          tREF
          {{分頁}}

            當(dāng)tREF 取最大值時,可以得到每秒鐘最大的用戶可用時間為

            

          用戶可用時間

            當(dāng)SDRAM 控制器進(jìn)行4 字讀寫操作時,由于該控制器數(shù)據(jù)線為64bit ,所以可得該控制器的最大數(shù)據(jù)傳輸率DTR(data transfer rate) 為式(4) :

            

          式

            其中,當(dāng)主頻時鐘f clk足夠大時,式(4) 便可約減為式(5) :

            

          式

            因此可以得到,當(dāng)主頻時鐘為100MHz 時,SDRAM 控制器的數(shù)據(jù)傳輸率約為400MB/s ; 而當(dāng)主頻時鐘取133MHz時,數(shù)據(jù)傳輸率可達(dá)到522MB/s。

            2. 5  設(shè)計比較

            參考文獻(xiàn)[1 ]中,提供了一個基于FPGA芯片實(shí)現(xiàn)試驗(yàn)性質(zhì)的SDRAM控制器。與該控制器相比,本文的設(shè)計不僅在性能上有較大改進(jìn),而且由于本文的設(shè)計是面向應(yīng)用的,已構(gòu)成獨(dú)立的IP 核,而該設(shè)計是試驗(yàn)型的,不能直接應(yīng)用于產(chǎn)品,沒有構(gòu)成IP 核的要求。表3 給出了兩個設(shè)計的性能比較。

            

          兩個設(shè)計的性能比較

            2. 6  FPGA驗(yàn)證與ASIC實(shí)現(xiàn)

            本設(shè)計使用龍芯SoC 的FPGA 驗(yàn)證平臺進(jìn)行硬件仿真,硬件仿真平臺使用的FPGA芯片是Xilinx 公司的XC2V6000 ,硬件仿真平臺實(shí)際使用的是128MB PC100現(xiàn)代內(nèi)存條。SDRAM控制器在FPGA 實(shí)現(xiàn)后接近5萬的邏輯門。整個SoC 設(shè)計FPGA實(shí)現(xiàn)的工作主頻為24MHz ,FPGA驗(yàn)證平臺上SDRAM的時鐘也為24MHz。

            驗(yàn)證表明:SDRAM 控制器在系統(tǒng)中工作正常。由于HDL 代碼采用參數(shù)化的設(shè)計,ASIC實(shí)現(xiàn)的版本只要做很少的修改。與FPGA不同的是,ASIC版本實(shí)現(xiàn)了門控時鐘和功耗管理,設(shè)計中的同步FIFO采用 Artisan的雙端口RAM 庫生成。DC綜合采用的是SMIC的0.18μm工藝庫,延遲反標(biāo)(back annotation) 的門級仿真的結(jié)果表明設(shè)計符合預(yù)期要求。

            3  結(jié)束語

            本設(shè)計掛載在內(nèi)部高速總線上,在具體的結(jié)構(gòu)設(shè)計方面,將系統(tǒng)的性能分析和軟硬件協(xié)同仿真相結(jié)合,優(yōu)化各模塊的設(shè)計。并且實(shí)現(xiàn)了IP的可重用設(shè)計,即不需要對結(jié)構(gòu)做大的改動,就可以重構(gòu)一個適合不同需求的片上SDRAM 控制器,只需要通過替換接口模塊掛接在其他類型的片上總線。同時,參數(shù)化的設(shè)計可以方便的選擇實(shí)現(xiàn)工藝。設(shè)計驗(yàn)證中IP 的功能達(dá)到預(yù)期的要求。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();