基于CPLD的高速存儲設(shè)計(jì)
O 引言
信息存儲是信息科學(xué)研究的重要內(nèi)容之一。在信號處理、智能儀器及工業(yè)自動控制等領(lǐng)域都存在著信息存儲的內(nèi)容。隨著技術(shù)的不斷發(fā)展,對數(shù)據(jù)信息存儲的速度要求越來越高,因此,數(shù)據(jù)高速存儲在系統(tǒng)設(shè)計(jì)過程中,已成為一個(gè)十分重要的問題。本文簡要介紹了一種基于可編程邏輯器件的高速存儲系統(tǒng)的設(shè)計(jì)方案,并給出了其軟件及硬件設(shè)計(jì)思路。
1 系統(tǒng)設(shè)計(jì)
目前常用的可編程邏輯器件主要有FPGA與CPLD。它們都是可編程ASIC器件,有很多共同特點(diǎn),但二者在結(jié)構(gòu)上有一定差異:FPGA在結(jié)構(gòu)上主要分為可編程I/O單元、基本可編程邏輯單元、嵌入式塊RAM、豐富的布線資源、底層嵌入功能單元和內(nèi)嵌專用硬核等。而CPLD則主要由可編程I/O單元、基本邏輯單元、布線池和其它輔助功能模塊構(gòu)成。二者結(jié)構(gòu)的不同使其又具有各自的特點(diǎn):FPGA更適合于完成時(shí)序邏輯,而CPLD則適合完成各種算法和組合邏輯。也就是說,F(xiàn)PGA更適合于觸發(fā)器豐富的結(jié)構(gòu),而CPLD則適合于觸發(fā)器有限而乘積項(xiàng)豐富的結(jié)構(gòu)。FPGA的分段式布線結(jié)構(gòu)決定了其延遲的不可預(yù)測性,而CPLD的連續(xù)式布線結(jié)構(gòu)則決定了它的時(shí)序延遲是均勻的和可預(yù)測的。
與FPGA相比,CPLD比較適合復(fù)雜狀態(tài)機(jī)、存儲控制器等應(yīng)用,可廣泛應(yīng)用于高速領(lǐng)域和實(shí)時(shí)測控等方面,具有高速、高可靠性的特點(diǎn)?;谝陨锨闆r,本系統(tǒng)采用CPLD作為系統(tǒng)主控制器。同時(shí)選用SRAM存儲器IC61LV2568—8T芯片。該SRAM存儲器的初始存取等待時(shí)間很短,可廣泛應(yīng)用于需要快速存取數(shù)據(jù)的場合。
2 IC61LV2568—8T的操作時(shí)序
IC6lLV2568—8T是一款高速低功耗靜態(tài)RAM存儲器。該芯片采用高性能CMOS技術(shù)制造,最小存取時(shí)間可達(dá)8ns,待機(jī)功耗為36mW,兼容TTL電平輸入輸出。該芯片工作時(shí)不需要時(shí)鐘控制及刷新。其讀寫時(shí)序圖如圖1所示。
3 硬件電路
本系統(tǒng)采用Lattice公司的ispMACH LC4526V作主控制器。這是一款高速、低功耗且配置有JTAG口,可支持ISP編程的高密度PLD。此芯片屬于ispMACH 4000V/B/C系列,其最高工作頻率可達(dá)322 MHz,傳輸延時(shí)為3.0 ns。它的靜態(tài)電流典型值為1.3 mA(對于4000C系列)。應(yīng)用時(shí),可用硬件描述語言設(shè)計(jì)程序,再借助EDA工具進(jìn)行行為仿真、功能仿真和時(shí)序仿真,最后通過綜合工具產(chǎn)生網(wǎng)表,再下載到目標(biāo)器件,從而生成硬件電路。CPLD與存儲器的硬件連接如圖2所示。
因系統(tǒng)的有源晶振頻率為200 MHz,因該頻率已是高頻,故在電路設(shè)計(jì)時(shí),要考慮一定的阻抗匹配問題。晶振輸出腳與CPLD時(shí)鐘輸入腳之間應(yīng)接有電阻R,這個(gè)電阻便是為了信號阻抗匹配而串接的。而在程序設(shè)計(jì)時(shí),可以將晶振輸入的時(shí)鐘信號分頻。
對于兩片RAM,可進(jìn)行乒乓操作。其硬件結(jié)構(gòu)如圖3所示。事實(shí)上,對于兩個(gè)數(shù)據(jù)存儲器的乒乓操作,還需要系統(tǒng)軟件來共同完成。
4 軟件設(shè)計(jì)
對于高速RAM的讀寫控制,可采用狀態(tài)機(jī)的方法實(shí)現(xiàn)。狀態(tài)機(jī)有多種分類方法。根據(jù)輸出是否與輸入信號同步,狀態(tài)機(jī)可以劃分為同步和異步狀態(tài)機(jī)。而根據(jù)輸出是否與輸入信號有關(guān),則可分為Mealy型和Moore型狀態(tài)機(jī)。對于Mealy型狀態(tài)機(jī),其時(shí)序邏輯輸出不僅取決于狀態(tài),還取決于輸入。通常輸出是當(dāng)前狀態(tài)值、當(dāng)前輸出值和當(dāng)前輸入值的函數(shù);而Moore型狀態(tài)機(jī)時(shí)序邏輯電路輸出只取決于當(dāng)前狀態(tài),其輸出只是當(dāng)前狀態(tài)值的函數(shù)。
在單片SRAM的讀寫設(shè)計(jì)中,可采用計(jì)數(shù)器控制SRAM讀寫信號的產(chǎn)生,并設(shè)置SRAM地址計(jì)數(shù)器,同時(shí)采用狀態(tài)機(jī)來實(shí)現(xiàn)空閑、讀狀態(tài)、寫狀態(tài)等不同狀態(tài)的相互轉(zhuǎn)換。其程序仿真結(jié)果如圖4所示。
圖4中,_RST_N為復(fù)位信號,S_ADDR為SRAM地址,S_WR_N為寫信號,低電平有效,S_DATA為SRAM數(shù)據(jù)。
有一些數(shù)據(jù)采集系統(tǒng)對速度有較高要求,而對于資源要求則相對寬松一些。此時(shí)可以考慮采用兩片SRAM進(jìn)行數(shù)據(jù)交替存儲。對于兩片SRAM,可以進(jìn)行乒乓操作來對數(shù)據(jù)存儲區(qū)進(jìn)行輪流讀寫。這種方式在EDA設(shè)計(jì)中比較常見,是控制數(shù)據(jù)流的一種方法,是以面積換取速度的典型操作。其基本思路是通過存儲器選擇單元,在數(shù)據(jù)流控制的第一個(gè)周期,將數(shù)據(jù)寫入第一塊存儲器;然后在第二個(gè)周期,將數(shù)據(jù)寫入第二塊存儲器,同時(shí)通過存儲器選擇,將第一塊存儲器的數(shù)據(jù)流讀出,送到相關(guān)處理單元,如cpu等;最后,在第三個(gè)周期,則再次切換數(shù)據(jù)讀寫,將前次的數(shù)據(jù)輸入與輸出模塊交換。數(shù)據(jù)流讀寫交替次數(shù)可以根據(jù)實(shí)際情況設(shè)定。
兩片SRAM的高速存儲系統(tǒng)程序可使用自頂向下的方法設(shè)計(jì)。可將系統(tǒng)劃分為若干個(gè)子模塊,再將子模塊向下劃分為若干個(gè)基本單元。本系統(tǒng)的結(jié)構(gòu)層次如圖5所示。
對于低速cpu如單片機(jī)等,可以考慮采用DMA的方式進(jìn)行存儲;而對于中高速cpu,則可以考慮采用總線技術(shù)及流水線方式。而且存儲器還可以采用dram、flash、FIFO、雙端口RAM甚至硬盤。在實(shí)際設(shè)計(jì)時(shí),要綜合考慮各方面因素,從而給出最適合的方案。
5 結(jié)束語
采用CPLD作為主控制器,并結(jié)合存儲器芯片IC61LV2568—8T設(shè)計(jì)的單片及兩片乒乓操作高速存儲方案,具有設(shè)計(jì)電路結(jié)構(gòu)簡單,可靠性高,軟件較易移植,通用性強(qiáng)等優(yōu)點(diǎn)。