摘要:使用VHDL語言實(shí)現(xiàn)MC68360微處理器和SDRAM之間的接口控制電路,為摩托羅拉68xxx CPU在開發(fā)設(shè)計(jì)中使用SDRAM提供一種靈活,高效,可靠的解決方案。文中提到的接口電路設(shè)計(jì)有別于其他IP核的SDRAM控制器,只要簡單理解計(jì)算機(jī)系統(tǒng)中片選信號(hào),讀寫信號(hào)、時(shí)鐘及數(shù)據(jù)和地址總線的含義就可以實(shí)現(xiàn)對(duì)SDRAM的多種方式的操作?梢詮V泛適用于時(shí)鐘在5MHz以上任何一種通用的微處理器和SDRAM接口設(shè)計(jì)應(yīng)用中。并在實(shí)踐中得到廣泛應(yīng)用。
關(guān)鍵詞:SDRAM MC68360 VHDL
Motorola 公司MC68XXX系列的微處理器在國內(nèi)各種通信設(shè)備中使用十分廣泛,具有很好的軟件技術(shù)基礎(chǔ)。但該系列處理器不具備同步SDRAM的電路接口。因此,設(shè)計(jì)一種接口電路,使更新一代的SDRAM , DDR SDRAM ,RDRAM廣泛應(yīng)用在各種通信設(shè)備中,提高設(shè)備運(yùn)行空間、提高產(chǎn)品性能,擴(kuò)展系統(tǒng)功能,增加各種業(yè)務(wù)具有十分重要現(xiàn)實(shí)意義。
本文章介紹使用VHDL語言實(shí)現(xiàn)MC68360和SDRAM之間的接口控制電路。文中提到的接口電路設(shè)計(jì)有別于其他IP核的SDRAM控制器,它不需要更多對(duì)SDRAM的深度掌握,只需要理解片選信號(hào),讀寫信號(hào)、時(shí)鐘及數(shù)據(jù)和地址總線的含義就可以實(shí)現(xiàn)對(duì)SDRAM的多種方式的操作?梢詮V泛適用于時(shí)鐘在5M以上任何一種通用的微處理器設(shè)計(jì)應(yīng)用中。
文章包含四個(gè)部分:SDRAM的簡介;SDRAM接口設(shè)計(jì)(設(shè)計(jì)功能框圖;SDRAM的主要操作路徑及操作過程,應(yīng)用MC68360的SDRAM接口電路的設(shè)計(jì)方法;最后給出了應(yīng)用結(jié)果和結(jié)論。
1. SDRAM簡介
SDRAM(Synchronous Dynamic Random Access Memory)因其容量大、讀寫速度快、支持突發(fā)模式讀寫及相對(duì)低廉的價(jià)格而得到了廣泛的應(yīng)用。其內(nèi)部操作是一個(gè)很復(fù)雜的狀態(tài)機(jī),包括:模式寄存器設(shè)計(jì)狀態(tài)、激活狀態(tài)、預(yù)充狀態(tài)、寫狀態(tài)、讀狀態(tài)、自動(dòng)刷新狀態(tài)、自我刷新狀態(tài)、空閑狀態(tài)等共16種狀態(tài)。
SDRAM管腳分為三類:
1) 控制信號(hào):片選、讀寫、時(shí)鐘、行地址選擇信號(hào)、行地址選擇信號(hào)、數(shù)據(jù)有效/高低字節(jié)選擇信號(hào);
2) 地址總線:時(shí)分復(fù)用信號(hào)、行地址/列地址總線;
3) 數(shù)據(jù)總線:雙向數(shù)據(jù)總線;
2. SDRAM接口設(shè)計(jì)背景和原則
設(shè)計(jì)應(yīng)用和驗(yàn)證主要依據(jù)高性能數(shù)字程控交換機(jī)為平臺(tái)進(jìn)行。其中NGL04系統(tǒng)中的交換模塊主處理機(jī)和功能處理機(jī)中CPU較多采用MC68360作為微處理器,通過邏輯設(shè)計(jì)滿足微處理器和SDRAM芯片間的時(shí)序關(guān)系,擴(kuò)大系統(tǒng)內(nèi)存。SDRAM選用HYUNDAI公司的HY57V1620芯片,SDRAM工作時(shí)鐘為66M,CPU的工作時(shí)鐘為33M。根據(jù)系統(tǒng)的要求和微處理器的特點(diǎn),本設(shè)計(jì)簡化了SDRAM的操作,如下:
不采用突發(fā)模式、讀寫的數(shù)據(jù)長度固定為1;
數(shù)據(jù)輸出延時(shí)時(shí)鐘周期數(shù)為2;
SDRAM為16位數(shù)據(jù)寬度,通過級(jí)聯(lián)方式組成32位數(shù)據(jù)端口;
初始化和模式設(shè)置有控制器上電自行完成?臻e模式由CPU控制;
采用自動(dòng)刷新模式;
完成讀寫操作后自動(dòng)完成預(yù)充;
根據(jù)上述要求,操作狀態(tài)轉(zhuǎn)移圖和狀態(tài)轉(zhuǎn)移條件如圖1:
圖1 SDRAM接口邏輯狀態(tài)轉(zhuǎn)移圖 圖2 自動(dòng)刷新設(shè)計(jì)流程圖
3. SDRAM接口時(shí)序設(shè)計(jì)
3.1. 功能模塊概述
整個(gè)設(shè)計(jì)分為四個(gè)部分Counter、DQM、Multiplex、Controller。如圖2所示。Counter實(shí)現(xiàn)一個(gè)計(jì)時(shí)器的功能,當(dāng)系統(tǒng)上電時(shí)進(jìn)行計(jì)時(shí),確保電源穩(wěn)定后SDRAM可以設(shè)置和正常工作,還包含自動(dòng)刷新定時(shí)申請(qǐng)信號(hào)的產(chǎn)生。DQM實(shí)現(xiàn)32位數(shù)據(jù)總線高低位選擇。Multiplex產(chǎn)生SDRAM的行、列地址及其內(nèi)部庫操作編碼。Controller是設(shè)計(jì)關(guān)鍵部分,實(shí)現(xiàn)的功能也最多。包含SDRAM模式設(shè)置;產(chǎn)生SDRAM的自動(dòng)刷新命令、SDRAM讀和寫操作命令、自動(dòng)刷新和讀寫操作的仲裁、數(shù)據(jù)采樣鎖存器控制信號(hào)的產(chǎn)生、并實(shí)現(xiàn)對(duì)其他幾個(gè)功能模塊的控制。
3.2. 自動(dòng)刷新邏輯設(shè)計(jì)
對(duì)HY57V561620來說,每64ms必須對(duì)4個(gè)存儲(chǔ)體8192行的存儲(chǔ)單元完成一次刷新操作,使通過對(duì)儲(chǔ)單元的電荷充電保持?jǐn)?shù)據(jù)。為滿足它的時(shí)序要求,就由邏輯每7.8us申請(qǐng)一次刷新操作,由控制器根據(jù)申請(qǐng)完成刷新操作。考慮自動(dòng)刷新和讀寫操作不能同時(shí)進(jìn)行,其原則是進(jìn)行讀寫操作時(shí),刷新操作需要等待讀寫操作結(jié)束后執(zhí)行;而在執(zhí)行自動(dòng)刷新操作時(shí),讀寫操作需要在刷新操作結(jié)束后執(zhí)行,同時(shí)向CPU申請(qǐng)等待周期。程序流程圖如圖2:
3.3. 寫操作邏輯設(shè)計(jì)
寫操作包含自動(dòng)預(yù)充功能(Auto Precharge after write burst)。數(shù)據(jù)轉(zhuǎn)移方向從CPU,經(jīng)過控制邏輯到SDRAM芯片。本設(shè)計(jì)采用32位數(shù)據(jù)線,由兩片數(shù)據(jù)寬度16位SDRAM組成數(shù)據(jù)線32位產(chǎn)生SDRAM,分高低字,支持長字,字和字節(jié)的操作。 當(dāng)SDRAM的片選信號(hào)和寫信號(hào)有效,進(jìn)入寫操作狀態(tài)。在列地址輸入時(shí),SDRAM鎖存數(shù)據(jù)。由于不考慮突發(fā)模式,所以進(jìn)行一次數(shù)據(jù)操作后,進(jìn)行自動(dòng)預(yù)充功能就進(jìn)入空閑狀態(tài),等待下一個(gè)狀態(tài)的開始。流程圖如圖3。

圖3 寫操作設(shè)計(jì)流程圖
圖4 寫操作設(shè)計(jì)流程圖
3.4. 讀操作邏輯設(shè)計(jì)
在SDRAM操作中,讀操作是最為關(guān)鍵和最重要。正確時(shí)間和方法采樣并鎖存數(shù)據(jù)是設(shè)計(jì)的難點(diǎn),100MHz時(shí)鐘下的SDRAM,數(shù)據(jù)有效時(shí)間不超過10ns。數(shù)據(jù)維持時(shí)間tOH最小3ns。本設(shè)計(jì)中突發(fā)模式設(shè)置長度為1,相對(duì)而言就簡單許多。由于固定設(shè)置CL=2,所以設(shè)計(jì)一個(gè)數(shù)據(jù)采樣鎖存器,通過時(shí)鐘的上升沿在讀命令有效2個(gè)時(shí)鐘后執(zhí)行采樣操作鎖存。CPU從數(shù)據(jù)采樣鎖存器中得到數(shù)據(jù),滿足CPU讀時(shí)序邏輯要求。
讀操作包含自動(dòng)預(yù)充功能(Auto Precharge after write burst)。數(shù)據(jù)轉(zhuǎn)移方向SDRAM芯片經(jīng)過數(shù)據(jù)采樣鎖存器緩沖后再到CPU。當(dāng)SDRAM的片選信號(hào)和讀信號(hào)有效,進(jìn)入讀操作狀態(tài)。列地址有效和寫命令有效后兩個(gè)時(shí)鐘后SDRAM輸出數(shù)據(jù),進(jìn)入自動(dòng)預(yù)充操作后就處于空閑狀態(tài),等待下一個(gè)狀態(tài)的開始。
4. 設(shè)計(jì)實(shí)現(xiàn)
本設(shè)計(jì)采用VHDL和圖形設(shè)計(jì)相結(jié)合的方式。頂層文件使用邏輯圖設(shè)計(jì)、其他部門全部采用VHDL語言設(shè)計(jì)。使用Altera公司Maxplus II和Quartus 軟件實(shí)現(xiàn)綜合、FPGA的布局布線和仿真。
以上介紹實(shí)現(xiàn)方法,可以應(yīng)用于不具備SDRAM接口的任何通用微處理器系統(tǒng)設(shè)計(jì)中CPU和SDRAM之間控制邏輯設(shè)計(jì)。簡單可靠,適用性強(qiáng)。使用該設(shè)計(jì)實(shí)現(xiàn)的FPGA接口電路在66M的時(shí)鐘頻率下數(shù)據(jù)吞吐率為在最大達(dá)到176Mbps,在100M時(shí)鐘速率下數(shù)據(jù)吞吐率最大可以到達(dá)355Mpbs。目前該設(shè)計(jì)已經(jīng)在HJD04E和后繼NGL04系列大容量混合數(shù)據(jù)程控交換機(jī)上穩(wěn)定可靠運(yùn)行將近兩年以上。






