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