用于測(cè)試SDRAM控制器的PDMA
掃描二維碼
隨時(shí)隨地手機(jī)看文章
1引言
現(xiàn)代電子信息設(shè)備往往需要保存和處理大量的數(shù)字信息,一個(gè)高性能的memory控制器可以大大提高系統(tǒng)的性能。在進(jìn)行sdram控制器的設(shè)計(jì)時(shí),需要考慮很多因素,設(shè)計(jì)完成以后還要進(jìn)行多項(xiàng)測(cè)試看是否完全滿足所要求的各項(xiàng)性能,為此我們?cè)O(shè)計(jì)了一個(gè)pdma(programmable direct mem o ry access)用于測(cè)試sdram控制器的性能。在soc中,sdram控制器往往跟多個(gè)ip模塊(圖形處理單元,音頻處理單元等)交換數(shù)據(jù),采用多個(gè)pdma通道同時(shí)訪問(wèn)memory可以真實(shí)模擬sdram控制器在soc環(huán)境中被多個(gè)ip隨機(jī)訪問(wèn)的情形。
2 pdma的結(jié)構(gòu)及工作原理
pdma是可編程直接存儲(chǔ)器存取的簡(jiǎn)稱。圖1 虛中框內(nèi)是pdma的內(nèi)部模塊結(jié)構(gòu),它主要由寄存器組和控制器兩大部分構(gòu)成,寄存器組用于保存配置參數(shù)和pdma對(duì)sdrma控制器訪問(wèn)后的狀態(tài)信息及接收、啟動(dòng)、停止等控制信息。圖2是 pdma寄存器組的內(nèi)部結(jié)構(gòu)。
寄存器組模塊里包含了一個(gè)同步模塊、控制寄存器、狀態(tài)寄存器和各通道的寄存器組。每一個(gè)子通道的寄存器組又包含訪問(wèn)基址寄存器、訪問(wèn)模式寄存器、周期計(jì)數(shù)器等三個(gè)寄存器。各寄存器的功能描述如表1所示。
pdma的控制器主要由:產(chǎn)生寫數(shù)據(jù)的狀態(tài)機(jī)、地址譯碼模塊、fifo以及讀數(shù)據(jù)校驗(yàn)?zāi)K四部分構(gòu)成。各模塊的功能由表2描述。
pdma控制器的結(jié)構(gòu)如圖3所示,其核心邏輯是一個(gè)狀態(tài)機(jī),我們采用一個(gè)兩層嵌套的狀態(tài)機(jī)來(lái)實(shí)現(xiàn)控制功能,如圖4所示。
3 測(cè)試系統(tǒng)的結(jié)構(gòu)和工作原理
在本設(shè)計(jì)中,pdma用于仿真多個(gè)ip核對(duì)sdram控制器進(jìn)行讀寫訪問(wèn)以驗(yàn)證sdram控制器的設(shè)計(jì)是否高效合理,性能是否穩(wěn)定等指標(biāo)。
pdma整個(gè)測(cè)試系統(tǒng)由pci接口模塊、pdma 以及sdram控制器三大部分構(gòu)成(見(jiàn)圖1)。pci接口模塊與pdma之間以內(nèi)部io總線相連接。 pdma與sdram控制器之間以內(nèi)部memory總線連接。pci接口模塊連接外部pci總線與內(nèi)部的 pdma,轉(zhuǎn)換由外部發(fā)起的pci io訪問(wèn)對(duì)pdma進(jìn)行參數(shù)配置以及對(duì)命令、狀態(tài)等寄存器進(jìn)行讀寫。pdma在得到了配置參數(shù)及啟動(dòng)訪問(wèn)的命令信息后啟動(dòng)對(duì)sdram控制器的訪問(wèn)(寫然后讀),并把測(cè)試的結(jié)果反映到pdma的狀態(tài)寄存里。
測(cè)試用pdma的具體工作過(guò)程如下:
(1)pci接口模塊對(duì)pdma各通道進(jìn)行參數(shù)配置(如訪問(wèn)長(zhǎng)度、訪問(wèn)基址、訪問(wèn)方式等);
(2)pci接口模塊寫pdma的控制寄存器,啟動(dòng)對(duì)sdram的讀寫;
(3)pci接口模塊讀pdma的狀態(tài)寄存器,探測(cè)訪問(wèn)是否完成,如完成,則讀取完成后的狀態(tài)信息(如錯(cuò)誤位,發(fā)生錯(cuò)誤的地址)。
4 rtl仿真
完成rtl級(jí)的設(shè)計(jì)后,我們利用cadence公司的仿真工具verilogxl對(duì)設(shè)計(jì)進(jìn)行了功能仿真。仿真的環(huán)境是基于pci的,所以其仿真順序如下:
(1)配置pci配置空間的io base 及 mem o ry base寄存器;
(2)寫pci配置空間54h,58h等寄存器,配置sdram 控制器及sdram芯片的參數(shù);
(3)寫pci配置空間的命令寄存器(offset==04h),使能該設(shè)備;
(4)訪問(wèn)pci io空間中的pdma配置寄存器,設(shè)定各個(gè)pdma通道的配置參數(shù);
(5)寫入相應(yīng)的命令,啟動(dòng)pdma訪問(wèn)內(nèi)新路子sdram控制器;
(6)檢測(cè)pdma的狀態(tài)寄存器,根據(jù)設(shè)定的條件(正常結(jié)束或者發(fā)生錯(cuò)誤)退出仿真程序;
(7)打開(kāi)波形文件,檢查是否有錯(cuò)誤發(fā)生。
圖5是由pci發(fā)起的一次寫io寄存器訪問(wèn)的仿真波形,pdma的配置數(shù)據(jù)就是通過(guò)若干這樣的操作完成的。
相對(duì)而言,我們更關(guān)注pdma是如何訪問(wèn)memory的。圖6是由一個(gè)pdma發(fā)起的寫讀模式下的訪問(wèn)時(shí)序。group1