基于TMS320C6455的高速SRIO接口設計
引 言
??????? 數字信號處理技術已廣泛應用于通信、雷達、聲納、遙感、圖形圖像處理和語音處理等領域。隨著現代科技的發展,尤其是半導體工藝的進入深亞微米時代,新的功能強勁的高性能數字信號處理器(DSP)也相繼推出,如ADI(美國模擬器件)公司的TigerSHARC系列和TI(德州儀器)公司的C6000系列,但是,要實現對運算量和實時性要求越來越高的DSP 算法,如對基于分數階傅立葉變換的Chirp信號檢測與估計,合成孔徑雷達(SAR)成像,高頻地波雷達中的自適應濾波和自適應波束形成等算法,單片 DSP 仍然顯得力不從心。這些挑戰主要涉及兩個主題:一是計算能力,指設備、板卡和系統中分別可用的處理資源。采用多DSP、多FPGA系統,將是提高運算能力的一個有效途徑。二是連接性,從本質上說就是實現不同設備、板卡和系統之間的“快速”數據轉移。對于一些復雜的信息系統,對海量數據傳輸的實時性提出了苛刻的要求,多DSP之間、DSP與高速AD采集系統、DSP與FPGA間的高速數據傳輸,是影響信號處理流程的主要瓶頸之一。TI公司最新推出的高性能 TMS320C6455(下文稱C6455)處理器,具有高速運算能力的同時集成了高速串行接口SRIO,方便多DSP以及DSP與FPGA之間的數據傳輸,在一定程度上滿足了高速實時處理和傳輸的要求。本文在多DSP+FPGA通用信號處理平臺的基礎上,深入研究了多DSP間,DSP與FPGA間的SRIO的數據通信和加載技術的軟硬件設計與實現。這些技術包括了目前SRIO接口的各種應用方式,可作為SRIO接口及C6455開發提供參考[1-3]。
1 C6455特性及SRIO標準介紹
??????? C6455是目前單片處理能力最強的新型高性能定點DSP,它是TI 公司基于第三代先進VeloviTI VLIW(超長指令字)結構開發出來的新產品。最高主頻為1.2GHz,16位定點處理能力為9600MMAC/s。C6455建立在增強型C64x+ DSP內核基礎之上,代碼尺寸平均縮短了20%至30%,周期效率提高了20%。C6455不僅是內核的增強和運算速度的提升,相比以前的芯片,集成了豐富的外圍接口,如千兆以太網控制器,66 MHz PCI總線接口,最重要的是增加了新的外設接口SRIO,全雙工工作時,四個端口峰值速率每秒高達25 Gbits,解決了DSP高速數據傳輸的瓶頸,降低了開發多處理器系統的難度[4-5]。
???????? RapidIO是新一代高速互連技術,已于2004年被國際標準化組織(ISO)和國際電工協會(IEC)批準為ISO/IEC DIS 18372標準。RapidIO互連定義包括兩類技術:面向高性能微處理器及系統互連的Parallel RapidIO接口;面向串行背板、DSP和相關串行控制平面應用的Serial RapidIO接口。SRIO支持編程模型包括基本存儲器映射IO事務、基于端口的消息傳遞和基于硬件一致性的全局共享分布式處理器。
??????? SRIO互連架構是一個開放的標準,滿足了嵌入式基礎實施在應用方面的廣泛需要。可行的應用包括多處理器、存儲器、網絡設備中的存儲器映射I/O器件、存儲子系統和通用計算平臺。這一互連技術主要作為系統內部互連,支持芯片到芯片和板到板的通信,可以實現從1Gbps到60Gbps的性能水平,在高速互連方面將會有廣闊的發展前景[6]。
2 C6455間的SRIO通信
2.1 C6455間的接口互連
?????? C6455內嵌了SRIO模塊,擁有4個全雙工的port(端口),支持SRIO 1x/4x串行協議。每個port支持1.25Gbps、2.5Gbps、3.125Gbps的波特率,每個port可以單獨構成1x模式,也可以四個 port共同構成4x模式。SRIO采用的是CML(電流型邏輯)電平,布線時必須遵循布線約束。為了最小化來自接收方100歐終端電阻的反射,差分對應該具有50歐的阻抗,并且差分走線必須等長。在接收端串接耦合電容,隔離直流偏置。圖1是兩片C6455之間SRIO接口設計。
2.2 包格式
??????? SRIO的傳輸操作是基于請求和響應機制,包(packet)是系統中端點器件的通信單元。圖2是一次傳輸操作的流程圖。首先由發起者產生一個傳輸請求,請求包被傳輸到相鄰的交換器件,從而進入交換結構,通過交換機構這個完整的請求包被轉發到目標器件。目標器件根據請求完成相應操作后,發送相應的響應包,經過交換機構傳回到發起者。此時一個完整的傳輸過程完成。
??????? SRIO有三個層的協議共同組成,每層協議在包中都有體現。圖3給出典型的請求包和響應包的包格式示意圖。
??????? 請求包以物理層字段開始。S位指示這是一個包還是一個控制符號,AckID表明交換結構器件將使用控制符號來確認哪一個包,Prio字段指示用于流量控制的包優先級,TT為目標地址和源地址字段指示傳輸地址的機制類型、報應被遞送到的器件的地址和產生包的器件的地址,Ftype表示正被請求的事務,長度字段等于編碼后事務的長度,SRIO事務數據的有效載荷長度從1到256字節不等,源事務ID指示發送器件的事務ID,SRIO器件在兩個端點器件間最多允許256個未完成的事務。對于存儲器映射事務,跟隨在源事務ID后面的是器件偏移地址字段,用于指示數據的存放地址,CRC為校驗碼。
??????? 響應包與請求包類似,狀態字段指示是否成功完成了事務,目標事務ID字段的值與請求包中斷事務ID字段的值相等。
2.3 SRIO基本讀寫和門鈴操作
??????? 根據包的格式的不同,將事務劃分成很多類型,其中最重要的類型有三種:NREAD(基本讀操作)、NWRITE(基本寫操作)、DOORBELL(門鈴操作)。 通過這三種類型的組合就可以完成所有的存儲器讀寫操作。在介紹讀寫操作之前,先介紹一下與SRIO有關的DMA操作。
??????? 在C6455上,SRIO數據傳輸和DMA傳輸是結合的。此DMA與EDMA方式是獨立的,當進行SRIO傳輸時,DMA以自動方式啟動。對與發送方來說,DMA將數據從L2 SRAM搬移到SRIO端口,對于接收方來說,DMA將數據從SRIO端口搬移到L2 SRAM內存。因此,在進行傳輸時,讀寫地址是直接顯示在包里的,而且此地址就是被讀寫的DSP的地址。換句話說,DSP可以對另一片DSP的L2 SRAM直接進行讀寫操作。圖4就是自動DMA的傳輸操作。
??????? 讀寫操作和門鈴操作主要由圖5中的7個寄存器進行控制,這些寄存器里的值會自動加入到包中。在SRIO總線上,每個SRIO設備都有一個相應的設備地址,設備地址好比一個SRIO設備的ID,用于區別不同的SRIO設備。當SRIO總線上的一個SRIO設備進行讀寫訪問時,它發送的包就含有設備地址,只有自身設備地址與包的設備地址符合的SRIO設備才會對此次傳輸做出響應。SRIO Address MSB和SRIO Address LSB共同構成64-bit尋址,指示的是被訪問SRIO設備的地址。開發板上只用到32-bit尋址,因此,SRIO Address MSB為0,SRIO Address LSB指示的是被訪問的DSP的地址。DSP address指示的是本地DSP的地址。Byte_count這一項給出的是傳輸字節數,一次讀寫操作(可以是很多包)最多可以傳送4Kbytes的數據。DestID是目標設備的ID號,用來區分SRIO總線上的設備。Drbll Info用于門鈴事件,通過此位段的設置,從而向目標DSP產生中斷。Packet Type用來指示此次傳輸的類型,例如NREAD、NWRITE和DOORBELL等。
???????? 圖6是SRIO模塊的NREAD、NWRITE和DOORBELL程序編寫流程圖。首先初始化SRIO端口,此過程主要需要配置和使能PLL模塊,使能并配置接收模塊,使能并配置發送模塊,使能并配置中斷模塊。配置這些模塊特別要注意的是使主DSP和從DSP的時鐘模塊工作在相同的波特率。初始化完成后,查詢SRIO鏈路是否成功建立,如果SRIO鏈路沒有建立,則重新初始化SRIO端口,直到SRIO鏈路建立為止。鏈路建立后就可以進行讀寫操作和門鈴操作,兩片DSP之間可以進行高速的數據傳輸。實際測試表明,DSP間的數據傳輸可工作于1x和4x模式,每種模式可以正常工作于每通道3.125Gbps 的傳輸速率。
3 C6455間的SRIO加載
3.1 C6455引導模式
??????? 在C6455的地址空間0x00100000到0x00107FFF集成了32K的內部ROM。此ROM中固化了一段 “boot loader”的引導代碼,它主要作用是在DSP上電時,對DSP進行必要的配置,以便輔助HPI/PCI/SRIO等接口進行加載;另外,它還可以將代碼從外部存儲器讀到內部L2 SRAM,以完成代碼加載。
??? C6455復位和上電時的引導模式主要有:NO BOOT模式,主機引導模式,FLASH引導模式,主I2C引導模式,從I2C引導模式,SRIO引導模式。C6455的EMIFA端口引腳EMIFA [0:19]和ABA[1:0]被復用作配置引腳,和專用引腳PCI_EN一起構成C6455的硬件配置引腳。采用哪種引導模式,由復位或上電時采樣管腳 BOOTMOOD[3:0]來決定[7-9]。表1是引導模式選擇方式。
??????? 對被加載的從DSP來說,設置BOOTMOOD[3:0]=1x00,此時為SRIO引導模式,SRIO被配置成四個1x端口,由port0對從DSP進行加載。另外,差分晶振選擇125M的時鐘源。上電后,固化在從DSP內部ROM的“boot loader”對從DSP進行一些必要的初始化配置:
使能全局中斷,SRIO的中斷管腳被使能,使從 DSP可以接收來自主DSP的中斷;
?????? boot loader配置PLL1模塊為15倍頻,也就是使內核工作在750MHz;
?????? boot loader初始化從 DSP的SRIO端口,使SRIO的時鐘模塊配置成1.25G。
?????? 主DSP對SRIO端口進行初始化配置,并將時鐘模塊配置成1.25G。此時主DSP與從DSP之間互相發送同步信息,直到鏈路建立。鏈路成功建立以后,主DSP執行NWRITE操作,將待加載程序裝載到L2 SRAM內存中。代碼裝載完成后,執行門鈴操作,向從DSP發送中斷,從DSP收到中斷后脫離“掛起”狀態,從地址0x800000處運行程序,加載過程結束。圖7便是SRIO引導過程。實測表明,主DSP通過FLASH加載完成后,可通過SRIO接口對從DSP完成加載。
4 C6455與FPGA等構建SRIO網絡
??????? SRIO與微處理器總線類似,它在硬件中完成存儲器和器件尋址以及分組處理,降低了用于I/O處理的開銷,減小了延遲。一個運行于3.125 Gbps的4通道SRIO鏈路能在完全保持數據完整性的前提下提供25 Gbps的流量,保障了海量數據傳輸的實時性。
SRIO網絡建立在兩個“基本模塊”基礎之上:端點設備(Endpoint)和交換設備(Switch)。有兩種連接方式,一種是簡單的端點到端點互聯,一種是端點到交換設備的互聯,端點設備負責收發數據包,交換設備負責在端口之間傳遞數據包,但不負責數據包的解釋。通過Switch交換,可以構建一個 CPU,DSP以及FPGA不同平臺互聯互通的數據傳輸網,進行共享式或分布式處理。圖8給出了SRIO網絡的構建模塊。
??????? C6455具有很強的處理能力,但對于并行算法,采用FPGA可以達到更高的效率。本文以SRIO為橋接,設計了一個C6455和Xilinx Virtex-4 FPGA兩者相結合的處理平臺,C6455和Virtex-4都有豐富的接口,該平臺不但實現了C6455與Virtex-4之間的數據傳輸,還實現了 PCI、網絡MAC、USB等不同協議域之間建立數據流。結構如圖9所示。
SRIO系統由一塊主C6455管理,可加載另外2片C6455,也可建立SRIO到SRIO,PCI到SRIO,MAC到SRIO等數據流。 Xilinx公司根據最新的RapidIO v1.3規范設計了其端點IP解決方案,同時集成了PCIe,以太網MACs等IP核,PCIe的32/64位地址空間(基地址)可自動映射至34/66 位SRIO地址空間(基地址)。PCIe應用程序通過內存或I/O讀寫與C6455通信。這些事務均可通過流寫入、原語和確認讀/寫事務 (SWRITEs, ATOMIC, NREADs, NWRITE/NWRITE_Rs)等I/O操作映射至SRIO空間。以實現從PCIe到SRIO或從SRIO向PCIe的轉換,從而在各個協議域之間建立數據流。
5 結 論
????? 在C6455等高端DSP中,SRIO已逐漸成為主流數據互連方式之一。SRIO具有引腳少、I/O處理開銷低、可達3.125Gbps高速率等優勢, C6455間的SRIO通信設計和基于SRIO的加載技術提高了系統設計的靈活性,而基于DSP和FPGA的SRIO網絡設計降低了多處理器集成的難度,可方便進行共享式或分布式處理,構成具備共享帶寬和強大處理能力的通用處理平臺,從而更好地解決“強大計算能力”和“快速數據傳輸”兩大挑戰。
評論
查看更多