《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 業(yè)界動態(tài) > 基于CPCI總線多DSP系統(tǒng)的高速主機接口設計

基于CPCI總線多DSP系統(tǒng)的高速主機接口設計

2008-07-18
作者:張 騁,蔡惠智,何國建

??? 摘 要: CPCI總線是一種成熟全面的計算機總線,通過它主機可以方便地為DSP加載程序,進行調試和監(jiān)控工作;另外還能在主機和DSP系統(tǒng)間完成高速數(shù)據(jù)傳輸工作。本文結合一個已經(jīng)成功應用的設計,闡述了基于雙狀態(tài)機+Cache結構的主機接口設計" title="接口設計">接口設計,并給出了邏輯框圖。利用PLX公司的PCI9656接口芯片" title="接口芯片">接口芯片,F(xiàn)PGA提供了高達90MB/s的主機訪問DSP和SDRAM的速度。
??? 關鍵詞: CPCI總線? FPGA? DSP? SDRAM? Cache

?

??? 在現(xiàn)代通信、雷達和聲納系統(tǒng)中,隨著實時處理要求的不斷提高,對數(shù)字信號處理系統(tǒng)也提出了更高的要求。板載多片高性能的DSP芯片,配合大容量" title="大容量">大容量的SDRAM,可以很好地滿足上述要求,并且已經(jīng)成為了數(shù)字信號處理系統(tǒng)發(fā)展的趨勢。采用CPCI總線集成系統(tǒng),可以方便主機進行調試,控制和管理DSP系統(tǒng)。系統(tǒng)中的主機接口可以使主機通過CPCI總線訪問板上的DSP和SDRAM芯片,這是多DSP系統(tǒng)設計的關鍵點之一。
??? 不同于以往簡單地使用一個CPLD進行粘合邏輯設計" title="邏輯設計">邏輯設計,本文提出了一種基于雙狀態(tài)機+Cache,預存預取的主機接口設計結構。在主機接口中設立了一個Cache,降低了CPCI總線與板上DSP和SDRAM芯片的耦合度,并且設計了兩個獨立狀態(tài)機分別進行控制。這顯著提高了主機訪問DSP和SDRAM的速度,為DSP系統(tǒng)的應用提供了更廣闊的平臺。本文詳細闡述了如何完成CPCI總線和DSP、SDRAM芯片間的數(shù)據(jù)傳輸,分析了設計難點,并給出了邏輯框圖。
1 系統(tǒng)設計方案
??? 圖1是系統(tǒng)設計框圖,系統(tǒng)采用PLX公司的PCI9656接口芯片,它可以很方便地將時序相對復雜的PCI協(xié)議轉化為相對簡單的局部端訪問協(xié)議。在基本不損失性能的同時,簡化了邏輯設計要求,使開發(fā)者可以更為關注后端數(shù)據(jù)接口問題。

????????????????????????
??? FPGA采用Xilinx公司的X2V1000,它有近100萬門的邏輯資源和720KB的BlockRAM,可以靈活搭建控制邏輯和Cache緩存。
??? DSP采用ADI公司的ADSP-TS201S,共有4片,工作頻率是600MHz,總共可以提供14.4GFLOPS的運算能力[1]。
??? SDRAM采用Hynix公司的HY57V561620C,容量共有128MB,可以基本滿足數(shù)據(jù)存儲的要求。
2 FPGA的接口設計
2.1 FPGA在系統(tǒng)中的作用

??? FPGA主要實現(xiàn)如下功能接口:(1)DSP接口。提供一個PCI Local總線到DSP共享總線的界面,完成兩套總線之間的邏輯仲裁及讀寫控制信號等;(2)SDRAM接口。提供一個PCI Local總線到SDRAM總線的界面;(3)FLASH接口;(4)鏈路口;(5)Register管理模塊。圖2給出了FPGA的各種接口與系統(tǒng)其他部分的關系圖。本文將重點討論主機和DSP、SDRAM間的訪問。

???????????????????????????
2.2 設計思想
?? ?PCI局部端的時鐘是66MHz,而DSP共享總線為100MHz,時鐘的不匹配會給邏輯設計提出很多時序方面的問題。另外,PCI局部端數(shù)據(jù)總線是32位,而SDRAM數(shù)據(jù)總線是64位,如何匹配數(shù)據(jù)寬度也是一個問題。而且PCI局部端和DSP、SDRAM在控制時序上也有很大差別。
??? 圖1中顯示的是共享總線結構,DSP、SDRAM和FPGA都掛在DSP的外部總線上。DSP之間的通訊可以使用DSP總線;各個DSP訪問SDRAM時,也要選擇DSP總線;而且當主機訪問DSP通訊時,也會不可避免地使用DSP總線。因此不難得出這樣的結論:DSP總線將可能成為系統(tǒng)的瓶頸所在。所以在設計主機接口時,必須提高總線的使用效率,減少申請DSP總線的次數(shù),每次申請使用DSP總線時都要盡可能多地傳輸數(shù)據(jù)。
??? 在微處理器設計中,Cache被用來緩存數(shù)據(jù)、解決高速CPU訪問低速存儲器時的瓶頸問題。為了解決上述兩大問題,在FPGA的設計中也采用了類似Cache的結構來隔離不同總線間的傳輸。在Cache的兩邊有兩個狀態(tài)機來控制Cache的讀寫和總線數(shù)據(jù)的訪問。使用Cache后,DSP共享總線和PCI局部端總線將被去耦合,這樣可以使兩級總線的數(shù)據(jù)吞吐量都盡量達到自己的峰值速度。FPGA內部有豐富的存儲資源,大塊的BlockRAM可以方便地搭建成Cache;而且Cache越大,越能提高主機訪問DSP和SDRAM的效率,減小占用DSP總線的時間,從而可以縮短DSP間通過DSP總線互訪時的等待時間。
??? 圖3是DSP/SDRAM接口框圖,都是基于雙狀態(tài)機加上Cache結構[2]。兩個狀態(tài)機同時監(jiān)測Cache當前空、滿或是數(shù)據(jù)個數(shù)等狀態(tài),以決定其動作;另外狀態(tài)機間還有命令通道,局部端狀態(tài)機用它向DSP/SDRAM端狀態(tài)機發(fā)出命令。由于這部分跨越了兩個不同頻率的時鐘域,因此必須加上同步電路以防止寄存器不定態(tài)的產(chǎn)生。

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

本站內容除特別聲明的原創(chuàng)文章之外,轉載內容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內容無法一一聯(lián)系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。