《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于TS201的信號(hào)處理軟件設(shè)計(jì)
基于TS201的信號(hào)處理軟件設(shè)計(jì)
2014年微型機(jī)與應(yīng)用第22期
朱啟強(qiáng)
(中國(guó)電波傳播研究所,山東 青島 266107)
摘要: 基于TS201處理器的軟件優(yōu)化設(shè)計(jì),對(duì)于提高運(yùn)算效率和運(yùn)行穩(wěn)定性是非常關(guān)鍵的。結(jié)合具體項(xiàng)目和實(shí)際工作經(jīng)驗(yàn),對(duì)如何正確利用TS201處理器的各種資源進(jìn)行了分析,并提出了優(yōu)化設(shè)計(jì)方法。按此方法設(shè)計(jì)的信號(hào)處理軟件已成功應(yīng)用到了某探測(cè)系統(tǒng)中,實(shí)現(xiàn)了系統(tǒng)提出的各種功能,并滿足實(shí)時(shí)性要求,軟件運(yùn)行穩(wěn)定,驗(yàn)證了所提方法的正確性。
Abstract:
Key words :

  摘  要: 基于TS201處理器軟件優(yōu)化設(shè)計(jì),對(duì)于提高運(yùn)算效率和運(yùn)行穩(wěn)定性是非常關(guān)鍵的。結(jié)合具體項(xiàng)目和實(shí)際工作經(jīng)驗(yàn),對(duì)如何正確利用TS201處理器的各種資源進(jìn)行了分析,并提出了優(yōu)化設(shè)計(jì)方法。按此方法設(shè)計(jì)的信號(hào)處理軟件已成功應(yīng)用到了某探測(cè)系統(tǒng)中,實(shí)現(xiàn)了系統(tǒng)提出的各種功能,并滿足實(shí)時(shí)性要求,軟件運(yùn)行穩(wěn)定,驗(yàn)證了所提方法的正確性。

  關(guān)鍵詞: 軟件優(yōu)化設(shè)計(jì);TS201處理器;信號(hào)處理

0 引言

  TS201是美國(guó)ADI公司生產(chǎn)的一款高性能數(shù)字信號(hào)處理器,主頻高達(dá)600 MHz,24 MB內(nèi)存,集成雙運(yùn)算單元、4條獨(dú)立128 bit寬內(nèi)部總線、14個(gè)DMA通道控制器和一個(gè)SDRAM控制器;具有64 bit外部總線接口及4個(gè)Link接口。TS201處理器因其運(yùn)算速度快、內(nèi)存容量大、接口豐富、擴(kuò)展能力強(qiáng)等特點(diǎn)被廣泛應(yīng)用到現(xiàn)代雷達(dá)、無(wú)線通信、圖形圖像處理等信號(hào)處理系統(tǒng)中[1-2]。

  目前,基于TS201的硬件設(shè)計(jì)文章較多,如參考文獻(xiàn)[3-5]均是關(guān)于硬件系統(tǒng)設(shè)計(jì)的,而有關(guān)軟件設(shè)計(jì)卻很少。如何利用好TS201處理器的各種資源進(jìn)行應(yīng)用軟件的優(yōu)化設(shè)計(jì),對(duì)于實(shí)現(xiàn)系統(tǒng)功能、提高軟件運(yùn)行效率及穩(wěn)定性是至關(guān)重要的。本文結(jié)合具體項(xiàng)目,對(duì)如何正確利用處理器的各種資源及其優(yōu)化設(shè)計(jì)進(jìn)行了分析,并在實(shí)際項(xiàng)目的信號(hào)處理軟件設(shè)計(jì)中進(jìn)行了應(yīng)用,驗(yàn)證了設(shè)計(jì)方法的正確性。

1 系統(tǒng)及算法介紹

  在某探測(cè)系統(tǒng)中共使用4片TS201處理器用于完成信號(hào)處理功能。4個(gè)處理器之間通過(guò)Link口互聯(lián),每個(gè)處理器外掛256 MB的SDRAM,并通過(guò)FPGA與3個(gè)光纖接口連接。

  處理器的任務(wù)是通過(guò)光纖接口完成對(duì)基帶數(shù)據(jù)的接收,并通過(guò)Link口將數(shù)據(jù)分發(fā)到不同的處理器;在不同的處理器上同時(shí)對(duì)基帶數(shù)據(jù)進(jìn)行實(shí)時(shí)處理,最后將處理結(jié)果合成并進(jìn)一步處理后通過(guò)光纖接口輸出。信號(hào)處理算法包括通道校準(zhǔn)、波束合成和脈沖壓縮,在處理器中實(shí)現(xiàn)這些算法所涉及的運(yùn)算包括FFT、復(fù)數(shù)向量乘法、復(fù)數(shù)矩陣乘法、復(fù)數(shù)向量加法以及IFFT等,用到的處理器資源包括Link口、存儲(chǔ)器、中斷、定時(shí)器等。

2 軟件設(shè)計(jì)

  2.1 Link口數(shù)據(jù)傳輸

  2.1.1 Link口初始化

  處理器之間的數(shù)據(jù)傳輸均是利用Link口進(jìn)行的,在處理器復(fù)位之后,首次使用Link口傳輸數(shù)據(jù)之前必須先對(duì)其初始化。Link口初始化主要包括收、發(fā)Link口之間握手、數(shù)據(jù)位模式選擇和傳輸時(shí)鐘頻率設(shè)置。握手是發(fā)送Link口在初始化時(shí)將一信號(hào)置成高電平,向接收Link口表明收發(fā)已連接;Link口數(shù)據(jù)線由4對(duì)LVDS信號(hào)線組成,可以使用4對(duì)同時(shí)傳輸,也可以只使用1對(duì)數(shù)據(jù)線傳輸,分別稱為4位傳輸模式和1位傳輸模式;Link口的數(shù)據(jù)傳輸時(shí)鐘頻率由處理器的核心頻率分頻得到,分頻系數(shù)可以為1、1.5、2和4。初始化步驟如下:

  (1)設(shè)置發(fā)送Link口功能無(wú)效;

 ?。?)使能發(fā)送Link口,并設(shè)置傳輸模式為4位,分頻系數(shù)為1.5;

 ?。?)等待2 500個(gè)時(shí)鐘周期以上;

 ?。?)設(shè)置接收Link口無(wú)效;

 ?。?)使能接收Link口,傳輸模式與發(fā)送設(shè)置相同。

  實(shí)際探測(cè)項(xiàng)目中的系統(tǒng)時(shí)鐘頻率為50 MHz,處理器的核心時(shí)鐘頻率為600 MHz,由系統(tǒng)時(shí)鐘經(jīng)過(guò)鎖相環(huán)12倍倍頻得到。Link口時(shí)鐘頻率經(jīng)過(guò)分頻之后可以為600 MHz、400 MHz、300 MHz和150 MHz,考慮到穩(wěn)定性問(wèn)題,這里選用400 MHz作為L(zhǎng)ink口的時(shí)鐘頻率。

  Link口初始化時(shí)的握手需要兩個(gè)處理器程序同步運(yùn)行,這就需要上位機(jī)的參與。由于上位機(jī)同步不是十分精確,一旦同步出現(xiàn)問(wèn)題,Link口初始化就會(huì)失敗,數(shù)據(jù)傳輸就會(huì)出現(xiàn)錯(cuò)誤。

  為了解決同步問(wèn)題,可以采用另外一種Link口初始化方式。這種初始化方式是利用軟件設(shè)置寄存器強(qiáng)制接收Link口處于接收狀態(tài),而不再需要硬件握手,即發(fā)送Link口和接收Link口初始化不再有聯(lián)系,可以分別獨(dú)自初始化。發(fā)送Link口初始化步驟如下:

 ?。?)設(shè)置發(fā)送Link口無(wú)效;

 ?。?)使能發(fā)送Link口,并同時(shí)設(shè)置4位傳輸模式和發(fā)送時(shí)鐘頻率。

  接收Link口初始化步驟如下:

 ?。?)設(shè)置接收Link口無(wú)效,同時(shí)設(shè)置接收控制寄存器中RINIF和RINIV位為1;

 ?。?)等待2 500個(gè)時(shí)鐘周期以上;

 ?。?)使能接收Link口,并設(shè)置傳輸模式與發(fā)送設(shè)置相同。

  2.1.2 Link口傳輸配置

  處理器為每個(gè)Link口配備了兩個(gè)DMA通道控制器,專門(mén)用于Link口發(fā)送和接收數(shù)據(jù)。每個(gè)DMA通道都有一個(gè)配置塊(TCB),配置塊包含若干寄存器。利用Link口DMA通道進(jìn)行一維發(fā)送或者接收數(shù)據(jù)時(shí)需要配置3個(gè)寄存器:DI、DX和DP。

  DI寄存器用于存儲(chǔ)發(fā)送數(shù)據(jù)時(shí)的源地址或者接收數(shù)據(jù)時(shí)的目的地址,可以是內(nèi)存也可以是外存。DX低16 bit表示源地址或者目的地址的增量,高16 bit用于存儲(chǔ)傳送數(shù)據(jù)的長(zhǎng)度,由于只有16 bit,因此啟動(dòng)一次DMA所能傳送數(shù)據(jù)的最大長(zhǎng)度為65 536,如果傳送的數(shù)據(jù)長(zhǎng)度大于65 536,需要分多次進(jìn)行傳輸。在DP中需要進(jìn)行的設(shè)置為:源地址或者目的地址是內(nèi)存還是外存,一次讀取或者存放數(shù)據(jù)的寬度(單位為字,必須設(shè)置成4),以及DMA結(jié)束中斷是否打開(kāi)。數(shù)據(jù)寬度設(shè)置成4后,地址增量也必須設(shè)置成4。發(fā)送數(shù)據(jù)時(shí)DMA一次讀取4個(gè)字,并通過(guò)Link口發(fā)送給接收方,接收DMA接收到4個(gè)字后將其寫(xiě)入到目的地址,源地址和目的地址都會(huì)自動(dòng)增加4,為下次數(shù)據(jù)傳輸做好準(zhǔn)備。每發(fā)送一次數(shù)據(jù),發(fā)送方和接收方都會(huì)將數(shù)據(jù)長(zhǎng)度減去4,當(dāng)數(shù)據(jù)長(zhǎng)度為0時(shí)表明發(fā)送和接收都已完成。如果DMA結(jié)束中斷被使能,那么在發(fā)送結(jié)束和接收完成后都會(huì)收到DMA完成中斷。由于Link口DMA通道采用4字操作,因此傳送數(shù)據(jù)的長(zhǎng)度必須為4的整數(shù)倍,且至少應(yīng)為4。源地址和目的地址必須4字對(duì)齊。

  2.2 中斷設(shè)計(jì)

  在TS201處理器中有很多中斷源,有硬件中斷也有軟件中斷,經(jīng)常用到的中斷源包括4個(gè)Link口請(qǐng)求中斷,8個(gè)Link口DMA通道發(fā)送或者接收完成中斷,4個(gè)外部端口DMA通道發(fā)送或者接收完成中斷,4個(gè)外部中斷,4個(gè)定時(shí)器中斷,其中2個(gè)中斷優(yōu)先級(jí)較低,另外兩個(gè)中斷優(yōu)先級(jí)較高。

  利用這些中斷之前必須先要編寫(xiě)中斷服務(wù)程序,并與中斷源進(jìn)行關(guān)聯(lián)。

  在用DMA進(jìn)行數(shù)據(jù)傳輸時(shí),必須等到本次DMA完成才能啟動(dòng)下一次DMA,否則DMA通道將會(huì)阻塞,導(dǎo)致無(wú)法正常傳輸數(shù)據(jù)。可以在DMA完成中斷服務(wù)程序時(shí)設(shè)置一個(gè)標(biāo)志,通過(guò)該標(biāo)志來(lái)判斷DMA是否已經(jīng)完成。

  當(dāng)Link口接收緩沖滿時(shí)會(huì)發(fā)起一個(gè)請(qǐng)求接收中斷,可以根據(jù)該中斷進(jìn)行數(shù)據(jù)接收。

  外部中斷可由外設(shè)發(fā)起,處理器收到外設(shè)中斷后與外設(shè)進(jìn)行通信。

  向定時(shí)寄存器中寫(xiě)入定時(shí)值,并啟動(dòng)定時(shí)器,定時(shí)器按一定時(shí)鐘周期對(duì)定時(shí)值循環(huán)減一,當(dāng)減到零時(shí)就會(huì)產(chǎn)生一個(gè)定時(shí)中斷。

  Link口請(qǐng)求中斷是電平觸發(fā)方式,外部中斷可設(shè)置成沿觸發(fā)也可設(shè)置成電平觸發(fā),其他中斷均為沿觸發(fā)。在本系統(tǒng)中有3個(gè)外部中斷源通過(guò)復(fù)用連接到處理器的中斷信號(hào)IRQ2上,同一時(shí)刻可能有兩個(gè)或者3個(gè)中斷產(chǎn)生,如果將該中斷的觸發(fā)方式設(shè)置成沿觸發(fā),勢(shì)必會(huì)造成中斷丟失。為了解決這個(gè)問(wèn)題可以將中斷設(shè)置成電平觸發(fā)方式,一旦中斷產(chǎn)生只有處理器響應(yīng)之后并由處理器自己撤銷已經(jīng)響應(yīng)的中斷;沒(méi)有響應(yīng)的中斷會(huì)繼續(xù)產(chǎn)生,處理器退出前一個(gè)中斷服務(wù)程序之后會(huì)繼續(xù)響應(yīng)下一個(gè)中斷,并進(jìn)行撤銷處理,直到處理完所有的中斷。

  Link口請(qǐng)求中斷的觸發(fā)方式固定為電平觸發(fā),一旦此中斷產(chǎn)生,處理器就必須馬上響應(yīng),否則頻繁的中斷產(chǎn)生會(huì)耽誤處理器的正常運(yùn)行。對(duì)Link口請(qǐng)求中斷的響應(yīng)就是啟動(dòng)DMA接收由Link發(fā)送來(lái)的數(shù)據(jù)。需要特別注意的是,配置完Link口DMA接收通道后,到DMA啟動(dòng)有一定時(shí)間延遲,而請(qǐng)求中斷只有在DMA啟動(dòng)后才會(huì)自動(dòng)撤銷。所以在配置完DMA通道后需要再等待約1 ?滋s才能進(jìn)行其他處理,否則,請(qǐng)求中斷會(huì)再次產(chǎn)生,造成中斷重入錯(cuò)誤。

  每個(gè)中斷都有自己的優(yōu)先級(jí),低優(yōu)先級(jí)的中斷可以被高優(yōu)先級(jí)的中斷打斷,進(jìn)入中斷嵌套,低優(yōu)先級(jí)中斷不能打斷高優(yōu)先級(jí)的中斷。特別是對(duì)于電平觸發(fā)的中斷,如果不能及時(shí)處理,中斷會(huì)持續(xù)不斷地產(chǎn)生,不但影響處理器的正常運(yùn)行,低優(yōu)先級(jí)的中斷也將一直無(wú)法進(jìn)入。

  2.3 存儲(chǔ)器訪問(wèn)

  很多系統(tǒng)對(duì)信號(hào)處理的實(shí)時(shí)性要求較高,在硬件資源一定的情況下,就需要通過(guò)優(yōu)化軟件設(shè)計(jì)來(lái)滿足實(shí)時(shí)性要求。下面以通道校準(zhǔn)算法為例來(lái)介紹使用存儲(chǔ)器的優(yōu)化方法。

  通道校準(zhǔn)算法可分解成兩次FFT運(yùn)算和一次向量乘法運(yùn)算。在實(shí)現(xiàn)本系統(tǒng)的信號(hào)處理算法時(shí)調(diào)用了第三方函數(shù)庫(kù),其FFT函數(shù)原型如下:

  ez_c2fft_f(A,BUF,TW,twstr,N,C)

  其中,A、C、BUF和twstr均為復(fù)數(shù)向量地址指針,分別指向4片存儲(chǔ)區(qū)域,可以使用內(nèi)存,也可以使用外存,但處理器訪問(wèn)外存時(shí)的速率遠(yuǎn)低于內(nèi)存。因此,為了提高運(yùn)算速度,這4片存儲(chǔ)區(qū)域應(yīng)盡量選擇內(nèi)存。

  處理器的內(nèi)存為24 Mbit,被平均分成了6塊,通過(guò)交叉點(diǎn)開(kāi)關(guān)分別與處理器內(nèi)部的4條總線相連。由于TS201處理器采用了超級(jí)哈佛結(jié)構(gòu)和靜態(tài)超標(biāo)量處理,并支持單指令多數(shù)據(jù)(SIMD)模式,使處理器每周期可同時(shí)執(zhí)行4條指令和6個(gè)浮點(diǎn)運(yùn)算[6-7];4條內(nèi)部總線可同時(shí)訪問(wèn)不同的4片內(nèi)存,訪問(wèn)寬度為128 bit。因此,在FFT運(yùn)算時(shí)為其分配的存儲(chǔ)區(qū)滿足如下要求時(shí)將會(huì)大大提高運(yùn)算效率:(1)存儲(chǔ)區(qū)位于內(nèi)存;(2)存儲(chǔ)區(qū)被分配在不同的存儲(chǔ)塊內(nèi);(3)存儲(chǔ)區(qū)首地址4字對(duì)齊。

  在通道校準(zhǔn)時(shí)需要用到通道校準(zhǔn)系數(shù),通道校準(zhǔn)系數(shù)在標(biāo)校工作狀態(tài)下求出,但由于其數(shù)據(jù)量較大,必須先搬移到外存,在通道校準(zhǔn)時(shí)再搬移到內(nèi)存使用。有4個(gè)DMA通道可以用于內(nèi)存與外存之間數(shù)據(jù)的搬移操作。在配置DMA通道時(shí),DP寄存器中的LEN可以被配置成單字、雙字或者4字,當(dāng)配置成4字時(shí),數(shù)據(jù)傳輸效率最高,源地址和目的地址也必須按4字對(duì)齊。

  2.4 定時(shí)器操作

  TS201處理器提供兩個(gè)通用定時(shí)器,存儲(chǔ)初始定時(shí)值的寄存器為64 bit寬,但配置時(shí)必須按32 bit進(jìn)行訪問(wèn)。兩個(gè)定時(shí)器都是減法定時(shí)器,設(shè)置完定時(shí)值并啟動(dòng)定時(shí)器后,定時(shí)器在每個(gè)定時(shí)時(shí)鐘周期對(duì)初始值進(jìn)行減一操作,直到減到零為止,然后重新載入初始定時(shí)值并再次按定時(shí)時(shí)鐘周期進(jìn)行減一操作。每當(dāng)定時(shí)器減到零時(shí)就會(huì)產(chǎn)生定時(shí)中斷。定時(shí)器的時(shí)鐘頻率為處理器核心時(shí)鐘頻率的一半,本系統(tǒng)設(shè)計(jì)中定時(shí)器的時(shí)鐘頻率為300 MHz,一個(gè)定時(shí)器最大定時(shí)時(shí)間很長(zhǎng),但只配置定時(shí)器低32 bit時(shí)最大定時(shí)約14.3 s。不再使用定時(shí)器時(shí)要及時(shí)關(guān)閉定時(shí)器。

  使用定時(shí)器可以測(cè)試一段代碼的運(yùn)行時(shí)間。在要測(cè)試代碼段的開(kāi)始設(shè)置定時(shí)器初始值,然后啟動(dòng)定時(shí)器,并讀取定時(shí)器的當(dāng)前計(jì)數(shù)值,在代碼段運(yùn)行結(jié)束時(shí),再次讀取定時(shí)器的計(jì)數(shù)值,兩次計(jì)數(shù)值的差值除以計(jì)數(shù)時(shí)鐘頻率300 MHz,便是代碼段的運(yùn)行時(shí)間,單位為?滋s。還可以用定時(shí)器監(jiān)測(cè)某個(gè)事件是否在規(guī)定的時(shí)間內(nèi)完成。在事件開(kāi)始之前設(shè)置好定時(shí)值,并啟動(dòng)定時(shí)器,如果事件正常完成就關(guān)閉定時(shí)器;如果事件超時(shí),就會(huì)收到定時(shí)器定時(shí)完成中斷,先關(guān)閉定時(shí)器,然后進(jìn)行相應(yīng)的超時(shí)處理。

3 結(jié)論

  本文結(jié)合具體項(xiàng)目和實(shí)際工作經(jīng)驗(yàn),對(duì)TS201處理器的各種資源進(jìn)行介紹,提出了利用這些資源進(jìn)行軟件優(yōu)化設(shè)計(jì)的方法。利用該方法設(shè)計(jì)的信號(hào)處理軟件已成功應(yīng)用到某探測(cè)項(xiàng)目中,實(shí)現(xiàn)了項(xiàng)目提出的各種功能,充分滿足了系統(tǒng)實(shí)時(shí)性要求,程序運(yùn)行穩(wěn)定,驗(yàn)證了本文所提出的基于TS201軟件設(shè)計(jì)方法的正確性。本文也為同類軟件設(shè)計(jì)的工程師提供了經(jīng)驗(yàn)和重要參考價(jià)值,能有效提高所設(shè)計(jì)軟件的實(shí)時(shí)性和穩(wěn)定性,同時(shí)節(jié)省了開(kāi)發(fā)時(shí)間和成本。

  參考文獻(xiàn)

  [1] Analog Devices, Inc.ADSP-TS201 TigerSHARC processor hardware reference[EB/OL]. [2014-07-01]. Revision1.1,  December 2004.

  [2] 王菲,汪學(xué)剛.ADSP-TS201的系統(tǒng)設(shè)計(jì)及外部總線接口技術(shù)[J].現(xiàn)代電子技術(shù),2007(11):53-55.

  [3] 冼友倫,盧護(hù)林,蘇濤.基于FPGA的多通道高速實(shí)時(shí)信號(hào)處理系統(tǒng)設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2008,34(9):21-24.

  [4] 顧穎,張雪婷,張飚.基于ADSP-TS201S的通用雷達(dá)信號(hào)處理機(jī)的設(shè)計(jì)[J].現(xiàn)代雷達(dá),2006,28(6):49-51.

  [5] 宋思盛,肖開(kāi)?。赥S201的通用并行信號(hào)處理板設(shè)計(jì)[J].火控雷達(dá)技術(shù),2008,37(2):65-68.

  [6] 李冬仙,王斌,吳瑛.短波寬帶陣列信號(hào)源的設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2008,34(3):52-54.

  [7] 張澤云,趙宏生,徐朝陽(yáng).基于ADSP-TS201S的雷達(dá)信號(hào)處理研究[J].艦船電子對(duì)抗,2011,34(3):46-48.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。