DSP中的存儲器共享與快速訪問技術(shù)設(shè)計
關(guān)鍵詞:存儲器共享;DSP;訪問競爭;SDRAM;猝發(fā)讀寫
在多任務(wù)信號處理系統(tǒng)中,為了提高信號的處理速度,往往使用幾個DSP協(xié)同工作,為此,必須要解決好幾個DSP對共享存儲器的高速訪問問題。具體來說,主要要解決好兩個問題:
?。?)通過建立競爭仲裁機(jī)制解決存儲器訪問共享競爭問題;
?。?)解決批量數(shù)據(jù)高速訪問問題。DSP對批量數(shù)據(jù)的訪問一般都是通過啟動DMA完成,而DMA一旦啟動,數(shù)據(jù)的傳輸就不受DSP控制,因此,要設(shè)計專門控制電路和緩沖區(qū)來確保高速數(shù)據(jù)傳輸?shù)姆€(wěn)定性和可靠性。
本文重點介紹了兩個TMS320C5402之間共享SRAM和DDRSDRAM的設(shè)計方法。
1 SRAM的共享訪問
圖1是2片TMS320C5402共享SRAM的原理圖。為了保證對SRAM訪問的可靠性,2片DSP共用同一個系統(tǒng)時鐘和具有相同的訪問優(yōu)先級。當(dāng)2片DSP同時對共享存儲器發(fā)出訪問需求時,F(xiàn)PGA中的共享仲裁控制邏輯會在第1個存儲器訪問周期允許第1片DSP對SRAM進(jìn)行訪問,同時向第2片DSP發(fā)出READY等待信號,然后在下一個存儲器訪問周期撤銷該等待信號,允許第2片DSP對SDRAM進(jìn)行訪問。如果進(jìn)行批量數(shù)據(jù)傳輸,則2片DSP對應(yīng)的READY信號會交替啟動。FPGA中的2個雙向緩沖器是互相禁止的。另外,在DSP的軟件編程時要注意,在軟件等待周期寄存器被寫入后至少要等待2個時鐘周期DSP才會啟動對READY信號的檢測。
2 DDRSDRAM的高速共享訪問
在上述方式中,如果2片DSP同時要對共享存儲器進(jìn)行訪問,其訪問速度將會降低一倍。在實際的信號處理系統(tǒng)中,特別是在連續(xù)視頻信號的編碼、壓縮與速訪問,如果采用大容量雙口RAM,其硬件成本開銷太大?,F(xiàn)在PC機(jī)中大量使用的雙速數(shù)據(jù)同步動態(tài)存儲器(Double Data Rate Synchronous,DRAM)具有存儲容量大、訪問速度快、價格低廉等特點,因此在大容量高速數(shù)字信號處理系統(tǒng)中,只要解決好對DDRSDRAM的讀寫訪問控制問題,就能解決好大容量高速存儲器的共享訪問問題。
2.1 DDRSDRAM的讀寫訪問特性
圖2為現(xiàn)代公司的HY5DV651622雙速同步動態(tài)存儲器的功能框圖。其存儲容量為8 Mb,數(shù)據(jù)寬度為16 B,分為4個頁面,采用行列地址復(fù)用方式。在時鐘的上升和下降沿均可以進(jìn)行數(shù)據(jù)的讀寫操作。對DRAM的控制包括命令控制和數(shù)據(jù)讀寫控制,在命令控制中主要包括模式寄存器設(shè)置、存儲器自動刷新控制等,通過模式寄存器的設(shè)置可以使存儲器工作于猝發(fā)讀寫方式,讀寫長度可以達(dá)到256個地址。
2.2 共享DDRSDRAM的工作過程
為了保證DSP對SDRAM大數(shù)據(jù)量訪問的高效性,將SDRAM設(shè)置為猝發(fā)讀寫模式,DSP設(shè)置為DMA方式,在FPGA中設(shè)置容量均為128 b的SRAM緩沖區(qū)B0和B1做為數(shù)據(jù)緩存區(qū),從SDRAM中輸出的數(shù)據(jù)或輸入至SDRAM的數(shù)據(jù)都要經(jīng)過B0和B1,通過控制寄存器的設(shè)置將B0和B1都映射到2片DSP中地址為FF00H到FF80H的數(shù)據(jù)區(qū)間,但同一時刻1片DSP只能訪問B0或B1中的1個。
在實際工作中,當(dāng)一片DSP訪問B0時,另一片DSP或SDRAM訪問B1;相應(yīng)地當(dāng)一片DSP訪問B1時,另一片DSP或SDRAM則訪問B0。如果SDRAM和DSP同時向同一個數(shù)據(jù)緩沖區(qū)B0或B1寫入或讀出數(shù)據(jù),F(xiàn)PGA會自動禁止,并通過控制寄存器向DSP傳遞數(shù)據(jù)讀寫狀態(tài)錯誤信息。這種數(shù)據(jù)傳遞方式不僅加速了DSP對數(shù)據(jù)的訪問速度,而且解決了DSP和SDRAM之間時鐘頻率不同步問題,不用像圖1那樣讓2片DSP共享同一個時鐘。SDRAM與雙DSP的接口如圖3所示?!?/FONT>
具體來說,DSP對SDRAM的訪問分以下兩種情況:
?。?)同時只有1片DSP對SDRAM訪問 此時B0,B1均屬于該DSP所有,以讀數(shù)據(jù)為例,首先DSP將需要對SDRAM訪問的首末地址通過控制寄存器寫入FPGA,并且設(shè)置B0,B1為空的標(biāo)志,然后起動數(shù)據(jù)傳送命令,F(xiàn)PGA在收到該命令后讀入128字入B0,并設(shè)置B0的標(biāo)志為滿,隨后再讀入128字入B1,并設(shè)置B1的標(biāo)志為滿;接著判斷B0的標(biāo)志是否為空,若為空則讀出128字入B0,并設(shè)置B0的標(biāo)志為滿,否則等待直到B0的標(biāo)志為空,判斷B1的標(biāo)志是否為空,若為空則讀出128字入B1,并設(shè)置B1的標(biāo)志為滿,否則等待直到B1的標(biāo)志為空。如此反復(fù),直到讀取數(shù)據(jù)結(jié)束或收到數(shù)據(jù)讀取結(jié)束命令為止。對DSP來說,他在發(fā)出起動數(shù)據(jù)傳送命令后,判斷B0標(biāo)志是否為滿,若為滿,則起動DMA讀取該128字,讀取結(jié)束后設(shè)置B0的標(biāo)志為空,然后用同樣的方法去讀取B1中的數(shù)據(jù)。如此反復(fù)直到將規(guī)定的數(shù)據(jù)讀取完畢為止。
?。?)2片DSP同時對SDRAM訪問 與單片DSP的訪問方法類似,通過B0、B1及相應(yīng)的標(biāo)志位設(shè)定完成數(shù)據(jù)的訪問。
2.3 共享DDRSDRAM的讀寫訪問邏輯設(shè)計
DSP提供下列信號給外部存儲器用以完成外部控制:CLK,CS,A0~A15,D0~D15,R/W,MSTRB,ISTRB和IS,但是DDRSDRAM使用的控制信號為:CLK,/CLK,CKE,/CS,/RAS,/CAS,/WE,數(shù)據(jù)總線DQ0~DQ15和地址總線A0~A11。由于控制信號的不同,因此在DSP和SDRAM的接口電路中需要用邏輯電路根據(jù)DSP的命令產(chǎn)生SDRAM的控制信號。正是由于接口電路的這種復(fù)雜性,在設(shè)計SDRAM和DSP的接口過程中才需要用FPGA來完成。
從圖3可以看到,F(xiàn)PGA的控制主要包含3個部分:控制寄存器接口、緩沖區(qū)接口和SDRAM控制接口。
(1)控制寄存器接口 主要包括對DSP地址信號和控制信號的解碼;SDRAM的讀寫模式選擇;B0和B1的地址、數(shù)據(jù)的切換選擇及標(biāo)志控制;讀寫首末地址的設(shè)置等。
(2)緩沖區(qū)接口 主要代表2個緩沖區(qū)B0和B1的相關(guān)信號產(chǎn)生,主要有:讀寫信號;地址信號(ADDR[6-0]);數(shù)據(jù)輸入輸出信號(DATA-IN[15-0]和DATA-OUT[15-0])等。
?。?)SDRAM控制接口 產(chǎn)生SDRAM的控制信號、地址信號與數(shù)據(jù)總線信號,完成SDRAM的3項功能:刷新、讀、寫。其中讀、寫主要通過猝發(fā)方式進(jìn)行。由于SDRAM是動態(tài)RAM,為了防止數(shù)據(jù)丟失,必須對其進(jìn)行動態(tài)刷新。在SDRAM控制接口部分設(shè)計了專門的刷新電路來完成這項功能。
3 結(jié) 論
由于FPGA內(nèi)的SRAM訪問速度可以達(dá)到10 ns以上,而DDRSDRAM的訪問速度比普通的SDRAM快一倍,因此,在采用DDRSDRAM實施存儲器共享后,不僅大大節(jié)省了系統(tǒng)成本,而且通過提高FPGA對DDRSDRAM的訪問速度后,系統(tǒng)對數(shù)據(jù)的訪問速度并沒有受到影響,可以達(dá)到100 Mb/s以上。
參考文獻(xiàn)
[2] TMS320VC5402 datasheet.TICorporation.2000(1):1~61.
[3] TMS626162,TMS626812 16Mb synchronousDRAMs technical reference,TICorporation,1996:3-1~3-52.
[4] Shared Memory Interface with theTMS320C54x DSP,TI Corporation,1998(4):1~17
評論