《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技术 > 业界动态 > DSP接口效率的分析与提高

DSP接口效率的分析与提高

2008-09-03
作者:胡荣强  胡 鹏

  摘? 要: 分析了導(dǎo)致DSP系統(tǒng)接口效率低下的幾種情況,重點(diǎn)敘述了相應(yīng)的提高效率的設(shè)計(jì)方法,并提供了電路圖和源程序。

  關(guān)鍵詞: DSP? 接口電路? CAN控制器

?

  近幾年來,數(shù)字信號(hào)處理器(DSP)得到了廣泛的應(yīng)用。由于DSP采用程序空間和數(shù)據(jù)空間分離的哈佛結(jié)構(gòu),對(duì)程序和數(shù)據(jù)并行操作,使之成倍地提高了處理速度;再加上流水線技術(shù),使得DSP的指令周期多為10ns級(jí)。而與之配套的外圍器件卻沒有像DSP那樣迅猛地發(fā)展。首先,DSP與外圍器件之間的速度差異日益顯著,大部分外圍器件的讀寫周期" title="讀寫周期">讀寫周期在50ns以上,即使是最快的靜態(tài)RAM,其讀寫周期亦為8ns左右,也只能與50MHz以下的DSP直接接口;其次,一些領(lǐng)域的器件在設(shè)計(jì)時(shí)并沒有考慮與DSP接口,以至于不能直接接入DSP總線,如CAN總線控制器SJA1000采用地址總線與數(shù)據(jù)總線分時(shí)復(fù)用" title="復(fù)用">復(fù)用的總線接口。這使得DSP與許多外部器件難以接口,特別是在與多個(gè)外部器件接口或者與總線不兼容的外部器件接口時(shí),常常會(huì)出現(xiàn)因接口處理不當(dāng)而導(dǎo)致接口效率低下的情況。當(dāng)DSP對(duì)外部器件的操作頻率很高時(shí),接口效率的高低將對(duì)系統(tǒng)的運(yùn)行速度產(chǎn)生不可忽略的影響。

1 多個(gè)外設(shè)的情況

  當(dāng)DSP與低速器件接口時(shí),可以通過設(shè)置DSP片內(nèi)的等待狀態(tài)產(chǎn)生控制寄存器(WSGR),在相應(yīng)的程序空間、數(shù)據(jù)空間或I/O空間產(chǎn)生1~7個(gè)等待周期,以使DSP的訪問速度能和低速器件相匹配。當(dāng)在同一空間內(nèi)既有低速器件又有高速器件" title="高速器件">高速器件時(shí),通常WSGR的延時(shí)值被設(shè)置成與速度最慢的器件相一致,以保證DSP對(duì)所有的器件都能進(jìn)行正確的訪問。若對(duì)高速器件的操作很頻繁,則這種對(duì)整個(gè)空間的延時(shí)將極不合理地降低系統(tǒng)速度。例如,有些系統(tǒng)在數(shù)據(jù)空間同時(shí)擴(kuò)展有RAM和ROM。而ROM的速度一般遠(yuǎn)遠(yuǎn)低于RAM,其訪問周期一般為100~200ns,即使DSP和RAM的訪問速度均可達(dá)到25ns,但對(duì)整個(gè)數(shù)據(jù)空間進(jìn)行延時(shí)后,DSP也只能以ROM的訪問速度(100~200ns)對(duì)RAM進(jìn)行訪問。

  在這種情況下,首先應(yīng)考慮使用軟件方法提高效率。其方法是在默認(rèn)的情況下將WSGR設(shè)置成與高速器件一致,當(dāng)要訪問低速器件時(shí)再修改WSGR的值。DSP常常對(duì)外部器件進(jìn)行連續(xù)操作,在這種情況下,軟件方法還是比較有效的。但最大問題在于增加了軟件負(fù)擔(dān)和不穩(wěn)定因素。

  顯然,效率最高的情況是,既不需要修改WSGR,DSP又能以外部器件本身的速度對(duì)它們進(jìn)行訪問。事實(shí)上,只要能夠產(chǎn)生適當(dāng)?shù)男盘?hào)控制DSP的READY端,就可以達(dá)到這個(gè)目的。DSP在開始一個(gè)外部總線的操作后,會(huì)在每一個(gè)CLKOUT信號(hào)(DSP的時(shí)鐘輸出)的上升沿時(shí)刻對(duì)READY端進(jìn)行查詢,若READY為低,則保持總線的狀態(tài)不變,然后在下一個(gè)CLKOUT上升沿時(shí)刻再次查詢,直至查詢到READY為高時(shí)結(jié)束本次總線訪問。

  下面的設(shè)計(jì)實(shí)例中介紹的硬件等待電路(見圖1)能夠?qū)崿F(xiàn)這個(gè)功能。它針對(duì)不同的外部器件產(chǎn)生相應(yīng)的等待信號(hào)送到DSP的READY端,實(shí)現(xiàn)硬等待。其核心器件采用了廣泛應(yīng)用的通用邏輯陣列(GAL),GAL的引腳定義與圖1相對(duì)應(yīng)。使用GAL器件使硬件設(shè)計(jì)變得簡(jiǎn)單而靈活,可以完成比較復(fù)雜的邏輯關(guān)系。

?

  例如,頻率為50MHz的DSP在數(shù)據(jù)空間外擴(kuò)有RAM和ROM各一片,訪問周期分別為70ns和150ns,地址空間分別為0x8000~0x8fff和0x9000~0x9fff。由DSP的主頻可知,對(duì)RAM和ROM的訪問各需插入3個(gè)和7個(gè)等待周期。下面給出GAL源文件的關(guān)鍵部分(它們使用匯編程序FM的格式編寫):

  Q0:=/Q0*/RD+/Q0*/WR??????????????????????????????????????

????Q1:=/Q0*Q1*/RD+Q0*/Q1*/RD+/Q0*Q1*/WR+Q0*/Q1*/WR

  Q2:=/Q1*Q2*/RD+/Q0*Q1*Q2*/RD+Q0*Q1*/Q2*/RD+/Q1*Q2*/WR+/Q0*Q1*Q2*/WR+Q0*Q1*/Q2*/WR

?????????????????????????????????? ;構(gòu)成一個(gè)三位的二進(jìn)制計(jì)數(shù)器

?????????????????????????????????? ;Q2為最高位、Q0為最低位

?????????????????????????????????? ;對(duì)讀信號(hào)或?qū)懶盘?hào)的寬度進(jìn)行計(jì)數(shù)

  GAL_READY.OE=VCC

????/GAL_READY=/DS*A15*/A14*/A13*/A12*/Q1

??????????????????????????? +/DS*A15*/A14*/A13*/A12*Q1*/Q0

?????????????????????????????????? ;為RAM的訪問插入3個(gè)周期

??????????????????????????? +/DS*A15*/A14*/A13*A12*/Q0

??????????????????????????? +/DS*A15*/A14*/A13*A12*/Q1

??????????????????????????? +/DS*A15*/A14*/A13*A12*/Q2

?????????????????????????????????? ;為ROM的訪問插入7個(gè)周期

  圖2是一個(gè)與寫時(shí)序?qū)?yīng)的時(shí)序圖,其中在下三角符號(hào)標(biāo)出的時(shí)刻,DSP對(duì)READY端進(jìn)行查詢。

?

  這種方法能夠充分使用硬件的速度,并且對(duì)軟件是透明的,不會(huì)增加編程人員的負(fù)擔(dān)。

2 總線不兼容的情況

  有一類芯片的總線接口是分時(shí)復(fù)用的,如CAN總線控制器SJA1000。SJA1000有8位的數(shù)據(jù)和地址復(fù)用的總線,可以和多種MCU直接相連。一次總線操作開始時(shí),總線先傳遞此次操作訪問的地址,在ALE信號(hào)將地址鎖存" title="鎖存">鎖存后,再進(jìn)行數(shù)據(jù)讀寫。而DSP的數(shù)據(jù)總線和地址總線被并行地引出,這種并行結(jié)構(gòu)比分時(shí)復(fù)用的串行結(jié)構(gòu)先進(jìn),有著高一倍的帶寬。但DSP被設(shè)計(jì)時(shí)并沒有考慮過會(huì)在芯片外將并行的總線再串行化,也就沒有設(shè)計(jì)相應(yīng)的輔助信號(hào)來完成這種轉(zhuǎn)換。這使得完全使用硬件方法進(jìn)行串行轉(zhuǎn)換比較困難。

  此類問題通常使用軟件和硬件配合解決,并不真正地靠硬件進(jìn)行轉(zhuǎn)換,而是把一次總線操作分解成兩步。先把此次操作的目標(biāo)地址作為數(shù)據(jù)送到總線上,同時(shí)通過硬件產(chǎn)生一個(gè)鎖存信號(hào)將其鎖存。然后再進(jìn)行讀寫操作" title="讀寫操作">讀寫操作,讀寫操作的目標(biāo)地址就是上一步被鎖存的地址。

  使用這種辦法,硬件和軟件都不需要進(jìn)行復(fù)雜的變換。唯一的缺點(diǎn)是指令的效率變低了。由于SJA1000的讀寫周期一般是DSP的指令周期的幾倍,一次訪問被分解成兩次后多消耗的時(shí)間不能忽略。還有一個(gè)更重要的影響是,這種轉(zhuǎn)換方法在尋址時(shí)無法使用DSP的并行尋址功能,必須使用另外的變量獨(dú)立運(yùn)算。在多數(shù)的CAN總線應(yīng)用中,這種處理方法不會(huì)對(duì)系統(tǒng)的整體性能產(chǎn)生太大的影響。但在有的系統(tǒng)中,這種低效是不可容忍的,如由DSP和SJA1000組成的CAN總線網(wǎng)關(guān),它含有多個(gè)SJA1000芯片,并且在SJA1000之間需要經(jīng)常進(jìn)行數(shù)據(jù)塊的搬移。對(duì)于次數(shù)頻繁并且尋址有規(guī)律的操作,利用DSP的并行尋址功能將極大地提高程序的效率。以下程序段可在兩個(gè)不同網(wǎng)段的SJA1000之間完成一幀消息搬移功能(它在每次操作的同時(shí)對(duì)下次操作的地址進(jìn)行并行尋址):

    Lar? ar0,mlength?    ;取消息的長(zhǎng)度

  ????Lar? ar1,#SJA1_A?????? ;一個(gè)SJA1000中接收郵箱的首地址

    Lar? ar2,#SJA2_S?????? ;另一個(gè)SJA1000中發(fā)送郵箱的首地址

    Mar *,ar0

    Mar *-,ar1

  Loop:??????????????????????;復(fù)制一幀消息

??????? Lacl??????? *+,ar2

??????? Sacl??????? *+,ar0

??????? Banz?????? loop,*-,ar1?????????????????????

  如果按上述方法改寫這段程序,不僅對(duì)SJA1000的操作時(shí)間要增加一倍,而且每次操作前都要對(duì)地址進(jìn)行運(yùn)算,使得完成同樣功能的程序運(yùn)行時(shí)間要增加到原來的3~4倍。

????這時(shí),只有使用純硬件的解決方法才能獲得理想的效果。設(shè)計(jì)的關(guān)鍵是生成合適的鎖存信號(hào)ALE,使它能夠滿足SJA1000的時(shí)序要求。通過研究DSP控制信號(hào)的時(shí)序可以發(fā)現(xiàn),從地址建立到讀寫控制信號(hào)有效大約要經(jīng)歷二分之一個(gè)CPU時(shí)鐘的時(shí)間,而SJA1000的ALE信號(hào)要求的最小寬度為8ns,因此對(duì)于主頻在50MHz(CPU時(shí)鐘為20ns)以下的DSP,可以利用這二分之一個(gè)CPU時(shí)鐘的時(shí)間間隙生成ALE信號(hào)。圖3給出了含兩片SJA1000的接口電路圖。除了片選信號(hào)外,這兩片SJA1000的總線和其它控制信號(hào)都連在一起。

?

?

  假設(shè)SJA1000的片選地址為0X8xxx和0X9xxx,各引腳定義與圖中對(duì)應(yīng),則GAL中的邏輯關(guān)系如下:

  /ADDR_G=DSP_RD*DSP_WR*RD*WR

  /DATA_G=/DSP_DS*DSP_A15*/DSP_A14*/DSP_A13*ADDR_G

  /WR=/DSP_WR*/ALE

  /RD=/DSP_RD*/ALE

  ALE=/DSP_DS*DSP_A15*/DSP_A14*/DSP_A13 *DSP_RD*DSP_WR

  /CS1=/DSP_DS*DSP_A15*/DSP_A14*/DSP_A13*/DSP_A12*ADDR_G

  /CS2=/DSP_DS*DSP_A15*/DSP_A14*/DSP_A13*DSP_A12*ADDR_G

  對(duì)其中一片進(jìn)行讀寫操作,則時(shí)序關(guān)系如圖4所示。

?

?

  其中,twr、tww分別為DSP讀、寫時(shí)的ALE信號(hào)寬度,它們都接近1/2個(gè)CLKOUT的周期。t為ALE的下降沿到RD、WR有效的時(shí)間,它由GAL翻轉(zhuǎn)的延時(shí)產(chǎn)生,為10ns以上(注:本圖中DSP的時(shí)序來自TMS320C24xxA系列,不同系列的DSP產(chǎn)品之間時(shí)序可能有細(xì)微的差別)。

  對(duì)于主頻高于50MHz的DSP,應(yīng)當(dāng)使用有更高工作頻率的可編程邏輯器件,并將前面介紹的計(jì)數(shù)器引入可編程邏輯器件內(nèi),來產(chǎn)生滿足時(shí)序要求的鎖存信號(hào)。

  本文介紹的兩種高效率的DSP接口的設(shè)計(jì)方法,去掉了在DSP訪問外設(shè)時(shí)任何不必要的時(shí)間消耗。當(dāng)然,效率的提高是以增加硬件的復(fù)雜度為代價(jià)的,在能夠滿足設(shè)計(jì)要求的前提下,設(shè)計(jì)者應(yīng)該選擇簡(jiǎn)單的設(shè)計(jì)方案。而對(duì)于頻繁進(jìn)行外設(shè)訪問的高性能系統(tǒng),本文提供了理想的接口方案。

?

參考文獻(xiàn)

1 張雄偉, 曹鐵勇.DSP芯片的原理與開發(fā)應(yīng)用, 北京: 電子工業(yè)出版社,2000

2 TMS320LF24xxA Datasheet, Texas Instruments,2002

3 SJA1000 Product Specification. Philips Semiconductors,2000

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。

相關(guān)內(nèi)容