??? 摘 要: CPCI總線是一種成熟全面的計(jì)算機(jī)總線,,通過它主機(jī)可以方便地為DSP加載程序,進(jìn)行調(diào)試和監(jiān)控工作;另外還能在主機(jī)和DSP系統(tǒng)間完成高速數(shù)據(jù)傳輸工作,。本文結(jié)合一個(gè)已經(jīng)成功應(yīng)用的設(shè)計(jì),,闡述了基于雙狀態(tài)機(jī)+Cache結(jié)構(gòu)的主機(jī)接口設(shè)計(jì)" title="接口設(shè)計(jì)">接口設(shè)計(jì),并給出了邏輯框圖,。利用PLX公司的PCI9656接口芯片" title="接口芯片">接口芯片,,F(xiàn)PGA提供了高達(dá)90MB/s的主機(jī)訪問DSP和SDRAM的速度。
??? 關(guān)鍵詞: CPCI總線? FPGA? DSP? SDRAM? Cache
?
??? 在現(xiàn)代通信,、雷達(dá)和聲納系統(tǒng)中,,隨著實(shí)時(shí)處理要求的不斷提高,對(duì)數(shù)字信號(hào)處理系統(tǒng)也提出了更高的要求,。板載多片高性能的DSP芯片,,配合大容量" title="大容量">大容量的SDRAM,可以很好地滿足上述要求,,并且已經(jīng)成為了數(shù)字信號(hào)處理系統(tǒng)發(fā)展的趨勢(shì),。采用CPCI總線集成系統(tǒng),可以方便主機(jī)進(jìn)行調(diào)試,,控制和管理DSP系統(tǒng),。系統(tǒng)中的主機(jī)接口可以使主機(jī)通過CPCI總線訪問板上的DSP和SDRAM芯片,這是多DSP系統(tǒng)設(shè)計(jì)的關(guān)鍵點(diǎn)之一,。
??? 不同于以往簡(jiǎn)單地使用一個(gè)CPLD進(jìn)行粘合邏輯設(shè)計(jì)" title="邏輯設(shè)計(jì)">邏輯設(shè)計(jì),,本文提出了一種基于雙狀態(tài)機(jī)+Cache,預(yù)存預(yù)取的主機(jī)接口設(shè)計(jì)結(jié)構(gòu),。在主機(jī)接口中設(shè)立了一個(gè)Cache,,降低了CPCI總線與板上DSP和SDRAM芯片的耦合度,并且設(shè)計(jì)了兩個(gè)獨(dú)立狀態(tài)機(jī)分別進(jìn)行控制,。這顯著提高了主機(jī)訪問DSP和SDRAM的速度,,為DSP系統(tǒng)的應(yīng)用提供了更廣闊的平臺(tái)。本文詳細(xì)闡述了如何完成CPCI總線和DSP,、SDRAM芯片間的數(shù)據(jù)傳輸,,分析了設(shè)計(jì)難點(diǎn),并給出了邏輯框圖,。
1 系統(tǒng)設(shè)計(jì)方案
??? 圖1是系統(tǒng)設(shè)計(jì)框圖,,系統(tǒng)采用PLX公司的PCI9656接口芯片,它可以很方便地將時(shí)序相對(duì)復(fù)雜的PCI協(xié)議轉(zhuǎn)化為相對(duì)簡(jiǎn)單的局部端訪問協(xié)議,。在基本不損失性能的同時(shí),,簡(jiǎn)化了邏輯設(shè)計(jì)要求,使開發(fā)者可以更為關(guān)注后端數(shù)據(jù)接口問題,。
????????????????????????
??? FPGA采用Xilinx公司的X2V1000,,它有近100萬門的邏輯資源和720KB的BlockRAM,,可以靈活搭建控制邏輯和Cache緩存。
??? DSP采用ADI公司的ADSP-TS201S,,共有4片,,工作頻率是600MHz,總共可以提供14.4GFLOPS的運(yùn)算能力[1],。
??? SDRAM采用Hynix公司的HY57V561620C,,容量共有128MB,可以基本滿足數(shù)據(jù)存儲(chǔ)的要求,。
2 FPGA的接口設(shè)計(jì)
2.1 FPGA在系統(tǒng)中的作用
??? FPGA主要實(shí)現(xiàn)如下功能接口:(1)DSP接口,。提供一個(gè)PCI Local總線到DSP共享總線的界面,完成兩套總線之間的邏輯仲裁及讀寫控制信號(hào)等,;(2)SDRAM接口,。提供一個(gè)PCI Local總線到SDRAM總線的界面;(3)FLASH接口,;(4)鏈路口,;(5)Register管理模塊。圖2給出了FPGA的各種接口與系統(tǒng)其他部分的關(guān)系圖,。本文將重點(diǎn)討論主機(jī)和DSP,、SDRAM間的訪問。
???????????????????????????
2.2 設(shè)計(jì)思想
?? ?PCI局部端的時(shí)鐘是66MHz,,而DSP共享總線為100MHz,,時(shí)鐘的不匹配會(huì)給邏輯設(shè)計(jì)提出很多時(shí)序方面的問題。另外,,PCI局部端數(shù)據(jù)總線是32位,,而SDRAM數(shù)據(jù)總線是64位,如何匹配數(shù)據(jù)寬度也是一個(gè)問題,。而且PCI局部端和DSP,、SDRAM在控制時(shí)序上也有很大差別。
??? 圖1中顯示的是共享總線結(jié)構(gòu),,DSP、SDRAM和FPGA都掛在DSP的外部總線上,。DSP之間的通訊可以使用DSP總線,;各個(gè)DSP訪問SDRAM時(shí),也要選擇DSP總線,;而且當(dāng)主機(jī)訪問DSP通訊時(shí),,也會(huì)不可避免地使用DSP總線。因此不難得出這樣的結(jié)論:DSP總線將可能成為系統(tǒng)的瓶頸所在,。所以在設(shè)計(jì)主機(jī)接口時(shí),,必須提高總線的使用效率,,減少申請(qǐng)DSP總線的次數(shù),每次申請(qǐng)使用DSP總線時(shí)都要盡可能多地傳輸數(shù)據(jù),。
??? 在微處理器設(shè)計(jì)中,,Cache被用來緩存數(shù)據(jù)、解決高速CPU訪問低速存儲(chǔ)器時(shí)的瓶頸問題,。為了解決上述兩大問題,,在FPGA的設(shè)計(jì)中也采用了類似Cache的結(jié)構(gòu)來隔離不同總線間的傳輸。在Cache的兩邊有兩個(gè)狀態(tài)機(jī)來控制Cache的讀寫和總線數(shù)據(jù)的訪問,。使用Cache后,,DSP共享總線和PCI局部端總線將被去耦合,這樣可以使兩級(jí)總線的數(shù)據(jù)吞吐量都盡量達(dá)到自己的峰值速度,。FPGA內(nèi)部有豐富的存儲(chǔ)資源,,大塊的BlockRAM可以方便地搭建成Cache;而且Cache越大,,越能提高主機(jī)訪問DSP和SDRAM的效率,,減小占用DSP總線的時(shí)間,從而可以縮短DSP間通過DSP總線互訪時(shí)的等待時(shí)間,。
??? 圖3是DSP/SDRAM接口框圖,,都是基于雙狀態(tài)機(jī)加上Cache結(jié)構(gòu)[2]。兩個(gè)狀態(tài)機(jī)同時(shí)監(jiān)測(cè)Cache當(dāng)前空,、滿或是數(shù)據(jù)個(gè)數(shù)等狀態(tài),,以決定其動(dòng)作;另外狀態(tài)機(jī)間還有命令通道,,局部端狀態(tài)機(jī)用它向DSP/SDRAM端狀態(tài)機(jī)發(fā)出命令,。由于這部分跨越了兩個(gè)不同頻率的時(shí)鐘域,因此必須加上同步電路以防止寄存器不定態(tài)的產(chǎn)生,。
????????????????????????????????
??? SDRAM接口與DSP接口不同處是它還有一個(gè)標(biāo)準(zhǔn)的SDRAM控制器,,負(fù)責(zé)將自定義的SDRAM讀寫命令翻譯成SDRAM控制信號(hào)線RAS#、CAS#和WE#的組合,。將SDRAM控制器獨(dú)立出來可以使得設(shè)計(jì)更加模塊化,,避免SDRAM端狀態(tài)機(jī)過于龐大[3]。
2.3 DSP/SDRAM接口的實(shí)現(xiàn)
??? 主機(jī)訪問DSP時(shí),,必須遵守DSP的流水線協(xié)議,,其中重要的是讀寫時(shí)的流水深度:讀操作時(shí)流水深度始終為四個(gè)周期,寫操作時(shí)流水深度始終為一個(gè)周期,。主機(jī)執(zhí)行來自或去往DSP的突發(fā)操作時(shí),,支持超過四字的連續(xù)突發(fā)操作。當(dāng)主機(jī)發(fā)出突發(fā)首地址,,只要BRST#信號(hào)有效,,DSP就在內(nèi)部對(duì)地址累加,。首次傳送的起始地址和最后一次傳送的結(jié)束地址必須四字對(duì)齊。這里只支持DSP端4字突發(fā),。
??? 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的存在顯得很簡(jiǎn)單[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ù)后開始申請(qǐng)DSP共享總線,,按照協(xié)議規(guī)定的時(shí)序要求將數(shù)據(jù)寫到DSP/SDRAM中,。對(duì)DSP的寫操作就像寫SRAM一樣簡(jiǎn)單方便;寫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ù)的測(cè)試環(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)中的位置和作用,。然后簡(jiǎn)要介紹了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),,取得了良好的效果。
參考文獻(xiàn)
[1] 劉書明,,羅勇江.ADSP TS20XS系列DSP原理與應(yīng)用設(shè)計(jì).北京:電子工業(yè)" title="電子工業(yè)">電子工業(yè)出版社,,2007.
[2] GOLSON S.State machine design techniques for Verilog?and VHDL.Synopsys Journal of High-Level Design,1994,,(9):1-48.
[3] Altera.SDR SDRAM Controller White Paper V1.1.2002,,5.
[4] 楊宗凱.數(shù)字專用集成電路的設(shè)計(jì)與驗(yàn)證.北京:電子工業(yè)出版社,2004.