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