基于CPCI總線多DSP系統(tǒng)的高速主機(jī)接口設(shè)計(jì)
SDRAM的訪問協(xié)議很常見,限于篇幅,不再贅述。
每次主機(jī)開始訪問DSP/SDRAM時(shí),PCI局部端使用LHOLD和ADS#來啟動(dòng)一次傳輸,LWR=0表明是讀過程。局部端狀態(tài)機(jī)向DSP/SDRAM端狀態(tài)機(jī)發(fā)出start命令。開始時(shí)Cache為空,而且DSP/SDRAM提供數(shù)據(jù)要超過一段時(shí)間,所以在讀操作的開始階段要無效ready_n使局部端等待。DSP/SDRAM端狀態(tài)機(jī)接收到局部端狀態(tài)機(jī)的start信號(hào)后,開始從DSP/SDRAM讀出數(shù)據(jù),填入Cache中。
當(dāng)預(yù)定義的數(shù)目被滿足后,局部端狀態(tài)機(jī)使ready_n有效以允許當(dāng)前的讀操作。DSP/SDRAM端將會(huì)根據(jù)用戶設(shè)定是否突發(fā)讀寫DSP/SDRAM的方式,一直連續(xù)地讀DSP/SDRAM數(shù)據(jù),寫入Cache中。除非接收到stop命令才回到IDLE狀態(tài),或是在Cache快要填滿進(jìn)入等待狀態(tài),放棄DSP共享總線,這樣可以使4片DSP之間的數(shù)據(jù)傳輸盡可能少地被干擾。每次主機(jī)讀DSP/SDRAM時(shí),都會(huì)直接從這個(gè)Cache中讀出數(shù)據(jù)。如果Cache中的數(shù)據(jù)少于預(yù)定義的數(shù)目,則ready_n將被無效,以使當(dāng)前的數(shù)據(jù)傳送等待。一旦LHOLD信號(hào)無效(當(dāng)前這段PCI傳送結(jié)束)或是局部端地址不連續(xù)了(局部端有一個(gè)地址寄存器,它標(biāo)志Cache中下一個(gè)數(shù)據(jù)的地址,如果它和當(dāng)前局部端地址不同表示預(yù)取的Cache已經(jīng)無效),局部端狀態(tài)機(jī)就向DSP/SDRAM端狀態(tài)機(jī)發(fā)出stop命令。DSP/SDRAM端狀態(tài)機(jī)清空Cache,準(zhǔn)備下一次訪問。讀SDRAM的同時(shí)開啟一個(gè)定時(shí)器,一定的時(shí)間間隔內(nèi)要在讀命令中插入刷新命令,防止數(shù)據(jù)丟失。
主機(jī)寫DSP/SDRAM的操作過程因?yàn)橛蠧ache的存在顯得很簡單[4]。因?yàn)榫植慷撕虳SP/SDRAM端之間有Cache完全隔離,所以局部端狀態(tài)機(jī)只要判斷Cache中還有足夠的空余位置就開始往Cache中分別寫入地址和數(shù)據(jù)(兩者是一一對(duì)應(yīng)的)。局部端狀態(tài)機(jī)在寫的過程中,根據(jù)PCI9656的blast#信號(hào)來判斷單次還是突發(fā)以及突發(fā)是否結(jié)束;如果Cache中空余位置少于4個(gè)則進(jìn)入等待狀態(tài)。DSP/SDRAM端狀態(tài)機(jī)一旦看到Cache不為空,便從Cache中讀出地址和數(shù)據(jù),整合了一段數(shù)據(jù)后開始申請DSP共享總線,按照協(xié)議規(guī)定的時(shí)序要求將數(shù)據(jù)寫到DSP/SDRAM中。對(duì)DSP的寫操作就像寫SRAM一樣簡單方便;寫SDRAM稍微復(fù)雜一些,除了要像讀一樣插入刷新命令外,每次寫SDRAM到了頁末時(shí)必須及時(shí)發(fā)出預(yù)
充電命令,防止地址錯(cuò)誤地回轉(zhuǎn)到頁首;另外每次寫完SDRAM后同樣發(fā)出預(yù)充電命令,關(guān)閉本頁,防止在同一個(gè)Bank內(nèi)打開兩頁。
2.4 DSP/SDRAM接口性能
33MHz、32位的PCI總線理論極限速度是132MB/s,實(shí)際速度要有一些折扣。由于FPGA訪問DSP和SDRAM理論帶寬分別有300MB/s和600MB/s,因此DSP/SDRAM接口的瓶頸在PCI端。在研華MIC3358主板上,主機(jī)無其他任務(wù),重復(fù)訪問DSP內(nèi)部一段64KB數(shù)據(jù)的測試環(huán)境下,接口的DMA讀速度有90MB/s,DMA寫有38MB/s。與此同時(shí),Bittware的同類型板卡Tiger-6U-cPCI的DMA讀速度是86MB/s,DMA寫速度最高可以達(dá)到40MB/s。兩者的DSP接口訪問速度基本相同,但是在Bittware的設(shè)計(jì)里,主機(jī)要訪問SDRAM,必須要借助DSP的SDRAM控制器,占用DSP的一個(gè)FLYBY通道,會(huì)影響DSP的正常運(yùn)轉(zhuǎn)。本系統(tǒng)提供了一個(gè)主機(jī)直接訪問SDRAM的接口。
本文首先提出了一個(gè)通用DSP系統(tǒng)的設(shè)
計(jì)方案,主要給出了FPGA在系統(tǒng)中的位置和作用。然后簡要介紹了FPGA的各個(gè)功能模塊,著重針對(duì)DSP和SDRAM接口進(jìn)行了討論,針對(duì)數(shù)據(jù)寬度和時(shí)鐘速率不匹配的特點(diǎn),提出雙狀態(tài)機(jī)+Cache的設(shè)計(jì)結(jié)構(gòu),給出相應(yīng)的FPGA設(shè)計(jì)框圖和設(shè)計(jì)思路。比較國際上知名的其他板卡,本系統(tǒng)的DSP接口的訪問速度已經(jīng)達(dá)到了較高水平;一個(gè)高訪問速率的主機(jī)接口的建立,可以使得系統(tǒng)運(yùn)行中的主機(jī)控制DSP過程盡可能少地影響DSP系統(tǒng)的運(yùn)行。而一個(gè)高訪問速率的SDRAM接口的建立,也為主機(jī)和處理板間大容量數(shù)據(jù)交換提供了可能,這一點(diǎn)在進(jìn)行數(shù)據(jù)存儲(chǔ)和雷達(dá)信號(hào)處理中尤其有用。該設(shè)計(jì)已經(jīng)被應(yīng)用于某大型信號(hào)處理系統(tǒng),取得了良好的效果。
評(píng)論