<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > DSP接口效率的分析與提高

DSP接口效率的分析與提高

作者: 時(shí)間:2012-04-14 來(lái)源:網(wǎng)絡(luò ) 收藏

2總線(xiàn)不兼容的情況

有一類(lèi)芯片的總線(xiàn)接口是分時(shí)復用的,如CAN總線(xiàn)控制器SJA1000。SJA1000有8位的數據和地址復用的總線(xiàn),可以和多種MCU直接相連。一次總線(xiàn)操作開(kāi)始時(shí),總線(xiàn)先傳遞此次操作訪(fǎng)問(wèn)的地址,在ALE信號將地址鎖存后,再進(jìn)行數據讀寫(xiě)。而DSP的數據總線(xiàn)和地址總線(xiàn)被并行地引出,這種并行結構比分時(shí)復用的串行結構先進(jìn),有著(zhù)高一倍的帶寬。但DSP被設計時(shí)并沒(méi)有考慮過(guò)會(huì )在芯片外將并行的總線(xiàn)再串行化,也就沒(méi)有設計相應的輔助信號來(lái)完成這種轉換。這使得完全使用硬件方法進(jìn)行串行轉換比較困難。此類(lèi)問(wèn)題通常使用軟件和硬件配合解決,并不真正地靠硬件進(jìn)行轉換,而是把一次總線(xiàn)操作分解成兩步。先把此次操作的目標地址作為數據送到總線(xiàn)上,同時(shí)通過(guò)硬件產(chǎn)生一個(gè)鎖存信號將其鎖存。然后再進(jìn)行讀寫(xiě)操作,讀寫(xiě)操作的目標地址就是上一步被鎖存的地址。

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

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

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

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

按此在新窗口瀏覽圖片

其中,twr、tww分別為DSP讀、寫(xiě)時(shí)的ALE信號寬度,它們都接近1/2個(gè)CLKOUT的周期。t為ALE的下降沿到RD、WR有效的時(shí)間,它由GAL翻轉的延時(shí)產(chǎn)生,為10ns以上(注:本圖中DSP的時(shí)序來(lái)自TMS320C24xxA系列,不同系列的DSP產(chǎn)品之間時(shí)序可能有細微的差別)。對于主頻高于50MHz的DSP,應當使用有更高工作頻率的可編程邏輯器件,并將前面介紹的計數器引入可編程邏輯器件內,來(lái)產(chǎn)生滿(mǎn)足時(shí)序要求的鎖存信號。

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


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: DSP 接口效率 CAN控制器

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>