隨著科技的進(jìn)步,對DSP 的處理速度以及相互之間的通信速度要求越來越高。ADI 的TS201 是目前業(yè)界性能最高的DSP 處理器之一,具有極強(qiáng)的數(shù)據(jù)處理能力和豐富的硬件資源, 其主頻可高達(dá)600MHz ,總體性能可以達(dá)到3GFLOPS 或者12GOPS ,外部數(shù)據(jù)通信速度就成為發(fā)揮其性能的瓶頸。為了配合發(fā)揮其強(qiáng)大的處理能力,TS201 專門為高速通信設(shè)計(jì)了基于LVDS 技術(shù)的LinkPort 口。LVDS 是一種小振幅差分信號技術(shù),使用非常小的幅度信號(350mV) 通過一對差分PCB 走線來傳輸數(shù)據(jù),在兩條平行的差分信號上流經(jīng)的電流和電壓幅度相反,噪聲同時(shí)耦合到兩條線上,于是噪聲被抵消。LVDS差分信號技術(shù)降低了對噪聲的關(guān)注。TS201 使用LinkPort 進(jìn)行高速通信,解決了TS201 之間的通信瓶頸問題,但無法和需要高速通信的實(shí)時(shí)系統(tǒng)之間實(shí)現(xiàn)連接。FPGA 具有接口靈活,硬件設(shè)計(jì)軟件化的功能,可以方便的實(shí)現(xiàn)各種數(shù)據(jù)接口和協(xié)議的對接。本文介紹了用FPGA 與DSP 的LinkPort 的對接原理和實(shí)際應(yīng)用,在實(shí)時(shí)系統(tǒng)和TS201 之間搭起了一條高速通道。
1 LinkPort 介紹
TS201 上有4 個(gè)LinkPort 口,每個(gè)LinkPort 口有24 根線,包含收發(fā)兩個(gè)模塊,每個(gè)模塊中包含了5對差分?jǐn)?shù)據(jù)線和兩個(gè)控制線,分別是LxDATO3 - 0P ,LxDATO3 - 0N , LxCLKOUTP , LxCLKOUTN , LxACKI ,LxBCMPO , LxDATI3 - 0P , LxDATI3 - 0N , LxCLKINP ,LxCLKINN , LxACKO , LxBCMPI。其中接收和發(fā)送數(shù)據(jù)的數(shù)據(jù)線以及時(shí)鐘線都是使用LVDS ,這樣有利于實(shí)現(xiàn)高速的數(shù)據(jù)傳輸,在應(yīng)用中,DSP 之間的Link2 Port 傳輸數(shù)據(jù)可高達(dá)每對線500MHz。
LinkPort 通信協(xié)議:LinkPort 口發(fā)送和接收數(shù)據(jù)的邏輯是很直接的,但是通過采用LVDS 技術(shù),可以運(yùn)行在很高的速度上。TS201 處理器所使用的Link2 Port 協(xié)議的一個(gè)簡化說明如圖1 所示。
數(shù)據(jù)幀的開始是由LinkPort 時(shí)鐘的上升沿來指示的,在時(shí)鐘的上升沿和下降沿分別傳送數(shù)據(jù),時(shí)鐘結(jié)束,則數(shù)據(jù)傳送也停止。所以LinkPort 口上的時(shí)鐘是不連續(xù)的。TS201 的LinkPort 發(fā)送數(shù)據(jù)是以128bit 為基本單位的,所以一次發(fā)送數(shù)據(jù)至少需要16 個(gè)時(shí)鐘周期來完成。
2 在FPGA 中實(shí)現(xiàn)LinkPort 口
Xilinx 的Virtex - II 系列的FPGA 是一款高性能,資源豐富的產(chǎn)品,它支持和TS201 DSP 之間的LinkPort 互聯(lián)。由于LinkPort 口具有收發(fā)兩個(gè)模塊,所以在FPGA 中要實(shí)現(xiàn)和LinkPort 口的對接,需要在其內(nèi)部實(shí)現(xiàn)收發(fā)兩個(gè)模塊來分別和DSP 的LinkPort 口相對應(yīng)。
2. 1 FPGA 中的時(shí)鐘以及DCM
要在FPGA 中實(shí)現(xiàn)LinkPort 口的收發(fā)功能,就必須要進(jìn)行復(fù)雜的時(shí)序控制,Virtex 系列的FPGA 中提供了功能強(qiáng)大的DCM(數(shù)字時(shí)鐘管理器) 模塊,它可以實(shí)現(xiàn)延遲鎖相環(huán),數(shù)字頻率合成器,數(shù)字移相器,數(shù)字?jǐn)U頻。在LinkPort 的實(shí)現(xiàn)中,至少要用到兩個(gè)DCM,其中一個(gè)DCM 作為延遲鎖相環(huán),另一個(gè)作為移相器。利用這兩個(gè)DCM 模塊,可以給LinkPort 的實(shí)現(xiàn)提供同頻率的,相位分別是0 度,90 度,180 度和270 度的時(shí)鐘供LinkPort 口實(shí)現(xiàn)的時(shí)候使用。
FPGA中實(shí)現(xiàn)LinkPort 涉及到多個(gè)時(shí)鐘: FPGA的外部輸入時(shí)鐘,F(xiàn)PGA 的LinkPort 口的發(fā)送時(shí)鐘,F(xiàn)PGA 的LinkPort 口的接收時(shí)鐘。對于這些不同的時(shí)鐘采取了不同的處理方法。FPGA 的外部輸入時(shí)鐘是由外部的時(shí)鐘輸入管腳經(jīng)過FPGA 的全局時(shí)鐘緩沖IBUFG模塊送到DSP 內(nèi)部的DCM 模塊供內(nèi)部系統(tǒng)使用。FPGA 的LinkPort 口的接收時(shí)鐘直接使用Xilinx 所提供的差分接收模塊ibufds_lvds_25_dt 直接轉(zhuǎn)換成內(nèi)部的單端時(shí)鐘信號使用。使用這個(gè)時(shí)鐘以及它的反向時(shí)鐘來鎖定LinkPort 口上的上升沿?cái)?shù)據(jù)和下降沿?cái)?shù)據(jù)。LinkPort 口的發(fā)送時(shí)鐘則是由Xilinx 的FDDRRSE 模塊來實(shí)現(xiàn)的。
2. 2 LinkPort 接收模塊的設(shè)計(jì)
接收模塊首先調(diào)用FPGA 內(nèi)部的差分信號轉(zhuǎn)單端的模塊ibufds_lvds_25_dt ,把外部傳輸線上的LinkPort 口差分信號轉(zhuǎn)換成內(nèi)部的處理信號。由于LinkPort 口在LinkPort 時(shí)鐘的上升沿和下降沿分別傳送4 位的數(shù)據(jù), 同時(shí)一次LinkPort 傳送最少是
128bit 的數(shù)據(jù),也就是一次LinkPort 傳送至少需要16個(gè)LinkPort 的時(shí)鐘周期。因此需要將接收的數(shù)據(jù)進(jìn)行拼裝組合并保存。為了實(shí)現(xiàn)這個(gè)功能,利用雙端口RAM采用了兩級緩沖的機(jī)制,先用8 個(gè)16 位深度的1bit 小的數(shù)據(jù)緩沖模塊RAM16X1D 將數(shù)據(jù)從LinkPort 口接收下來,然后以8bit 為單位寫到FPGA內(nèi)部內(nèi)建的一個(gè)較大的非對稱雙口RAM 模RAM16_S9_S18 中。這個(gè)小的數(shù)據(jù)緩沖區(qū)利用一個(gè)狀態(tài)機(jī)控制它的地址變化,形成一個(gè)循環(huán)的數(shù)據(jù)緩沖區(qū)。使用以下語句實(shí)現(xiàn)了一個(gè)類似乒乓緩沖的小的數(shù)據(jù)緩沖區(qū):
數(shù)據(jù)接收的時(shí)候,開始接收的數(shù)據(jù)超過8 個(gè)的時(shí)候,就開始從RAM16X1D 的這個(gè)小的數(shù)據(jù)緩沖區(qū)中讀取數(shù)據(jù)。當(dāng)接收的數(shù)據(jù)收全之后,wr_addrp =“0000”,接收停止,而rd addr 此時(shí)處于高的緩沖區(qū),這個(gè)時(shí)候程序會自動的讀取剩下的8 組數(shù)據(jù),將其送到大的數(shù)據(jù)緩沖區(qū)RAM16_S9_S18 ,保證接收的數(shù)據(jù)全部正確地放到內(nèi)部的RAM 中去,此時(shí)rdaddr 也為“0000”,接收模塊停止工作。
發(fā)送模塊的關(guān)鍵是如何控制時(shí)鐘和數(shù)據(jù)的發(fā)生以及保證他們之間的相位關(guān)系,使得在時(shí)鐘的上升沿和下降沿都可以進(jìn)行數(shù)據(jù)傳輸,同時(shí)數(shù)據(jù)是穩(wěn)定的。實(shí)現(xiàn)這個(gè)功能的關(guān)鍵是使用了FPGA 內(nèi)部的帶有兩個(gè)相位相差180 度的獨(dú)立時(shí)鐘的雙數(shù)據(jù)速率的D 觸發(fā)器(FDDRRSE) 。保證數(shù)據(jù)的穩(wěn)定性是靠前面所提到的DCM模塊所提供的不同相位的時(shí)鐘信號,LinkPort 模塊發(fā)送時(shí)鐘使用90 度和270 度相位的時(shí)鐘,要發(fā)送的數(shù)據(jù)使用的是0 度和180 度的時(shí)鐘。LinkPort 發(fā)送模塊的數(shù)據(jù)和相位之間90 度的相差可以保證LinkPort 的時(shí)鐘發(fā)送時(shí)的數(shù)據(jù)是穩(wěn)定的。
FDDRRSE 模塊有一個(gè)復(fù)位輸入R ,一個(gè)置位輸入S ,一個(gè)時(shí)鐘使能輸入CE ,兩組數(shù)據(jù)和時(shí)鐘對D0與C0 和D1 與C1 ,一個(gè)數(shù)據(jù)輸出Q。復(fù)位輸入R ,當(dāng)它為高的時(shí)候,重載所有的輸入,并在時(shí)鐘(C0 或者C1) 從低到高的過程中,將Q 的輸出置為低(復(fù)位的優(yōu)先級比置位的優(yōu)先級要高) 。當(dāng)S 的輸入是高而R 的輸入是低的時(shí)候,觸發(fā)器被置位,在時(shí)鐘(C0 或者C1) 從低到高的時(shí)候輸出高電平。當(dāng)R 和S 為低,CE 為高,C0 時(shí)鐘從低到高的時(shí)候D0 上的數(shù)據(jù)加載到D 觸發(fā)器中。當(dāng)R 和S 為低,CE 為高,C1 時(shí)鐘從低到高的時(shí)候D1 上的數(shù)據(jù)加載到D 觸發(fā)器中。調(diào)用FDDRRSE 產(chǎn)生LinkPort 口的發(fā)送時(shí)鐘時(shí),
R和S 為低, CE 為高,D0 為時(shí)鐘產(chǎn)生控制信號CLOCKOE ,D1 為低,C0 為90 度相位的時(shí)鐘txclk90 ,C1 為270 度相位的時(shí)鐘txclk90not 。正常工作的時(shí)候,在txclk90 的上升沿將D0 的clockoe 的信號輸出到lxclkout ,在txclk90not 的上升沿將D1 的低電平輸出到lxclkout 。這樣當(dāng)clockoe 為低的時(shí)候, lxclkout就一直為低,需要傳輸數(shù)據(jù)的時(shí)候,將clockce 設(shè)置為高- 這樣就可以根據(jù)需要產(chǎn)生非連續(xù)的LinkPort時(shí)鐘。
當(dāng)雙口RAM 中存在要發(fā)送的數(shù)據(jù)的時(shí)候,LinkPort 的發(fā)送模塊先從雙端口RAM 中取一個(gè)16位的數(shù)據(jù),通過內(nèi)部的時(shí)鐘控制和時(shí)序調(diào)整,將這個(gè)16 位的數(shù)據(jù)串行化成LinkPort 上傳輸?shù)? 位一組的數(shù)據(jù),這些數(shù)據(jù)分批以txclk ,txclk180 的時(shí)鐘發(fā)送到LinkPort 口,同時(shí)以txclk90 ,txclk90not 的時(shí)鐘產(chǎn)生相應(yīng)的LinkPort 時(shí)鐘。在FPGA 的輸出到管腳之前,調(diào)用FPGA 內(nèi)部的obufds_lvds_25 模塊將內(nèi)部的單端信號轉(zhuǎn)換成差分信號。
3 工程應(yīng)用及性能指標(biāo)
采用LinkPort 通訊的技術(shù)在DSP 處理板上已經(jīng)得到了應(yīng)用,該板的結(jié)構(gòu)如圖2 所示。
在這個(gè)實(shí)時(shí)處理系統(tǒng)中,利用FPGA 提供的高速LinkPort 數(shù)據(jù)接口,實(shí)現(xiàn)了雷達(dá)測速系統(tǒng)和DSP處理器之間的無縫連接,很好地滿足了應(yīng)用的要求。
要求該板上的FPGA 和DSP 之間的LinkPort 口上的時(shí)鐘能夠達(dá)到200MHz。板上的時(shí)鐘同時(shí)提供給TS201 芯片和FPGA ,使用一個(gè)DSP 的LinkPort 口和FPGA 進(jìn)行測試,由于FPGA 內(nèi)部的LinkPort 接收數(shù)據(jù)是以8 位為單位進(jìn)行處理,發(fā)送數(shù)據(jù)是以16 位為一組進(jìn)行處理的,把LinkPort 口的接收模塊稱為rx_8 模塊,發(fā)送模塊稱為tx_16 模塊。FPGA 內(nèi)部的數(shù)據(jù)流程如圖3 所示。
經(jīng)過實(shí)際驗(yàn)證, 在LinkPort 口上的時(shí)鐘達(dá)到300MHz 及300MHz 以下的頻率時(shí)可以可靠收發(fā)數(shù)據(jù)。而LinkPort 口每個(gè)時(shí)鐘可以傳送1Byte 數(shù)據(jù),也就是說FPGA 和TS201 之間的LinkPort 的通信速度已經(jīng)達(dá)到雙向2. 4GbitPs。對于目前的應(yīng)用來說已經(jīng)足夠了。
FPGA 中的接收模塊和發(fā)送模塊是可以分別使用的,通過和FPGA 內(nèi)部不同模塊進(jìn)行組合以及時(shí)序控制就可以應(yīng)用到實(shí)際系統(tǒng)中,在西部某雷達(dá)測速系統(tǒng)中已經(jīng)將方案進(jìn)行了實(shí)際應(yīng)用,實(shí)際應(yīng)用中FPGA 的內(nèi)部框架及接口如圖4 所示。
4 結(jié)束語
本文介紹了TS201 的LinkPort 口的協(xié)議以及在Xilinx V2Pro20 FPGA 中實(shí)現(xiàn)該協(xié)議的原理, 并給出了該方案的具體指標(biāo)和典型應(yīng)用。因?yàn)镕PGA 具有很強(qiáng)的靈活性,可以很方便地實(shí)現(xiàn)各種數(shù)據(jù)接口格式和協(xié)議的對接,根據(jù)實(shí)際系統(tǒng)的需要實(shí)現(xiàn)FPGA 與系統(tǒng)的對接,就可以利用FPGA 和DSP 之間的LinkPort 高速通道,實(shí)現(xiàn)DSP 和系統(tǒng)之間數(shù)據(jù)交換的無縫連接。
評論
查看更多