隨著數字信號處理技術的快速發展,數字信號處理技術在多個領域(如通信、雷達、聲納等)得到了廣泛應用。在很多情況下,由于對信號要求實時處理并且數據量不斷增加,單片DSP芯片已不能滿足要求。AD公司推出的ADSP2106X系列,由于采用了超級哈佛結構,適用于構成各種不同的并行多處理器系統,較好地滿足了上述要求,因此在國內外得到廣泛應用。在多片并行ADSP2106x處理系統中,鏈路口的應用得到了越來越多的重視。在這方面,如何充分、有效地利用鏈路口進行數據傳輸,已成為廣大DSP應用者首先要解決的一個問題。 本文根據筆者在工程中應用和調試ADSP2106X器件的經驗,著重討論鏈路口的適用場合、使用方法,并對使用過程中常見問題進行分析,給出解決方法。 1 ADSP2106X及其鏈路口的特點和功能 ADSP2106X采用超級哈佛結構,具有體積小、速度高、內存大、訪問靈活等特點,適用于構成各種不同的并行多處理器系統,完成各種實時信號的處理功能,特別適用于雷達信號處理和聲納信號處理。 ADSP2106X提供了6個鏈路口,每個鏈路口包括4位數據線、一個雙向時鐘信號、一個雙向確認信號。鏈路握手信號包括LxCLK和LxACK,鏈路口以四位碼一組的方式傳送32位或48位字。發送方在時鐘LxCLK的上升沿送出4位碼,接收方利用時鐘下降沿鎖存4位碼,并且使LxACK有效,表示已準備接收下一個字。在每個字開始發送時,發送方如果看到LxACK無效,將使LxCLK變高,并等待LxACK有效后發送新字。當發送緩存為空時,LxCLK將保持低。如果接收時鐘不超過主時鐘(40MHz),LCOM寄存器的LCLKX2x位應設為0;若接收時鐘為主時鐘的2倍,則置為1。兩個用于數據通信的鏈路口之間的連接關系如圖1所示。 每個鏈路口還可以按2倍時鐘頻率的速率進行數據傳輸。 鏈路口有以下功能和特點: ⑴各鏈路口可以獨立工作或同時工作; ⑵鏈路數據可以打包成32位或48位數據,可以被處理器核訪問,可以與片內存儲器進行DMA傳送; ⑶外部主機可以直接訪問鏈路口; ⑷具有雙緩沖的發送和接收寄存器; ⑸可通過時鐘/確認信號在鏈路口通信時握手,每個鏈路口均可收/發數據,并分別有一個DMA通道支持; ⑹利用鏈路連接可以組成一維到多維的各種形式處理器網絡。 鏈路口有三種中斷形式: ⑴DMA使能時,DMA完成后將產生一個可屏蔽中斷; ⑵DMA禁止時,處理器核可以對存儲器映射的LBUF進行讀寫,當接收緩沖不空或發送緩沖不滿時,可產生可屏蔽中斷; ⑶當外部設備訪問一個未指定的鏈路口,或者訪問一個已指定但對應LBUF被禁止的鏈路口時,將產生可屏蔽的LSRQ中斷。 鏈路口有三個重要的寄存器:LAR寄存器、LCTL寄存器、LCOM寄存器,它們都是32位寄存器。LAR寄存器(3x~3x+2位)代表了LBUFx的指定鏈路口,x取0~5,其它位保留。LCTL寄存器主要用來對各個LBUF進行設置(是否使能、是否用DMA方式、是否用鏈式DMA、發送還是接收數據)。LCOM寄存器包含每個LBUF的狀態位(空還是滿),設置各LBUF傳送數據的速率以及其它功能。 ADSP2106X有6個獨立的鏈路緩沖LBUF5~0,每個LBUF由一個內部寄存器和一個外部寄存器組成的2級FIFO構成。當LBUF用于發送時,內部寄存器接收片內存儲器送來的數據,外部寄存器將數據字展開成4位碼,并且最高位先發送。當DMA或處理核送來的數據占滿這2級FIFO時,將送出一個“滿”標志。每當一個字展開發送后,FIFO中將空出一個位置并發出一個DMA請求。當FIFO空時,LxCLK無效。當LBUF用于接收時,外部寄存器用于數據打包,然后數據經內部寄存器以DMA方式送到片內存儲器。通過鏈路指定寄存器LAR確定LBUF5~0與LINK5~0的連接關系。存儲器之間傳送數據時可以把一個LINK指定給兩個LBUF,利用DMA通信。 直接數據傳輸(DMA)可以承擔數據傳輸任務而無需運算控制單元干預,從而提高了程序執行效率。ADSP2106X提供了10條DMA通道,其中只有LBUF0~3支持二維DMA(即以行主模式訪問一個二維陣列元素)。LBUF5~0與6個DMA通道的對應關系如下: DMA通道1 鏈路緩沖LBUF0(與串口1接收共享) DMA通道3 鏈路緩沖LBUF1(與串口1發送共享) DMA通道4 鏈路緩沖LBUF2 DMA通道5 鏈路緩沖LBUF3 DMA通道6 鏈路緩沖LBUF4(與外部口0 EPB0共享) DMA通道7 鏈路緩沖LBUF5(與外部口1 EPB1共享) 2 鏈路口的設置及應用中需要注意的問題 對于多DSP系統,為了克服多處理器之間占用總線的瓶頸問題,增強處理器之間的通信能力,一般利用各處理器的鏈路口兩兩互聯進行高速、點到點通信。處理器間的數據連接可以根據需要進行設置,多個鏈路口數據通路可以同時并行工作而互不干擾。每個鏈路口的LxCLK和LxACK提供了處理器之間進行異步數據傳輸的握手信號。因為采用鏈路口通信,所以允許發送和接收端的長距離互聯。鏈路口采用的是自同步方式,這樣時鐘和數據均只有相對延時,不存在絕對延時,這對印制板布線很重要。 如果傳輸的數據在內存中不是一段數據,而是多段數據,就可以利用鏈式DMA。先禁止鏈路口所要指定的LBUF,對LAR指定,依次設置LCOM和LCTL(置LxCHEN位為1),向CP寄存器寫入DMA控制塊(每個控制塊包含了相應收/發數據段的信息)在內存中的首地址,就可啟動鏈式DMA;而向CP寫入0則禁止鏈式DMA。當前DMA完成后,由DMA控制器自動裝入下一套參數,放在存儲器中的(DMA)參數寄存器,建立下一個DMA。CP的位17為1時表示當前DMA完成后產生一個中斷請求。DMA參數有4個: IIx 地址(存儲器起始地址) IMx 地址修改量 Cx 計數指針 CPx 鏈指針 它們在內存中的位置關系如圖2所示。 鏈式DMA方式只是對同一個LBUF口而言,多個LBUF不存在相互之間的鏈式DMA的情況。 如果兩個鏈路口之間是單次傳輸數據,那么先設置接收方DMA還是先設置發送方DMA都沒關系;但是,如果是多次循環的收發數據,一定要保證接收方的DMA設置早于發送方DMA,否則每次傳輸數據時都會丟掉前兩個32位字。這是因為發送方一旦準備好,就往接收方的緩存預先打入兩個32位字。而當接收方設置DMA接收數據時,首先要清除這個將要用到的緩存,因此這兩個32位字就丟掉了。在實際DMA傳輸數據過程中,一定不能對正在用的LBUF進行其它操作。 當鏈路口禁止時,其數據線LxDAT3~0及LxCLK、LxACK都是三態。為了允許收發雙方在被使能的時間上有先后,在鏈路口禁止時要對LPDPD清0,以使LxDAT3~0及LxCLK、LxACK被內部下拉(50kΩ)。要注意的是,這些信號線如果懸空,則必須用內部或外部下拉電阻。 通過LINK口對DSP進行程序加載,一般用host(主機)或EPROM加載模式。 3 鏈路口應用實例分析 筆者在實際工作中曾用到某型雷達信號處理系統。該系統包括4塊運算板和一塊后處理板,這5塊板子結構完全相同。單塊DSP板包括20片ADSP2106X,同時處理同一個周期的4個通道(和通道、輔助通道1、輔助通道2和差通道)的數據,每5片處理一個通道,4個通道連線關系原則上基本相同。實際工作中根據重頻來改變運算板的個數,運算板處理完數據通過鏈路口分時向后處理板傳送數據。因為在實際中將出現多個鏈路口同時工作,為了避免各鏈路口工作時之間的高頻干擾,對印制板設計的要求非常高。限于篇幅,下面只給出和通道的原理框圖,如圖3所示。 LINK0和LINK3分別接收輔助通道的數據,LINK2和LINK5把處理后的數據傳送到后處理板,4塊板子分時向后處理板匯總數據。通過調試發現,在同一塊運算板內部,各鏈路口之間的數據以80MHz的速率傳送(系統時鐘工作頻率為40MHz)時,同時工作,相互之間幾乎沒有干擾,可以保證數據傳送的準確性,大大提高了并行傳輸的能力。而在4塊運算板和后處理板之間傳送數據(即板子之間傳送數據),如果采取80MHz的速率同時傳送,則相互之間干擾比較大,很難保證傳輸的正確性;用1倍速(40MHz)的速率傳送就可減少干擾,而且在接收板(即后處理板)鏈路口的握手信號上采取加濾波電容或下拉電阻的措施可以減少信號中的毛刺。本系統本來設計為同時由和通道、輔助通道1和差通道向后處理板傳送數據,但實際工作中為了保證數據的正確性,在滿足要求的情況下,把輔助1通道的數據通過鏈路口傳送到和通道,再由和通道把數據發送出去,這樣減少了用于傳送數據的鏈路口的個數,數據可以正確地傳輸。鏈路口之間握手信號線采用電纜連接(一般用雙絞線)。目前本系統已在某型雷達中得到了很好的應用。 工程實踐表明,并行多DSP系統中充分利用鏈路口,可在保證數據傳輸可靠性的同時,克服多處理器之間占用總線的瓶頸問題,增強了處理器之間的通信能力。 |