新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > TMS320C31和80C196雙CPU構成的高速實時控制

        TMS320C31和80C196雙CPU構成的高速實時控制

        作者: 時間:2011-01-13 來源:網絡 收藏

        3 雙口RAM IDT7130/40的中斷邏輯設計

        雙口RAM必須采用一定的機制來協調左右兩邊CPU對它的讀寫操作。IDT公司的雙口RAM系列用口斷、硬件、令牌和軟件這四種方式來協調雙方。在TMS320C31和80C196雙CPU構成的高速實時控制系統中,IDT7140采用的是中斷方式。下面介紹IDT雙口RAM系列的中斷邏輯設計。

        如圖2所示,IDT雙口RAM的中斷邏輯實際上是由與非門組成的兩個基本RS觸發器所構成。在所有的IDT雙口RAM芯片中,內存的最高兩個單元被用作為左右兩邊CPU的中斷信箱。以1K雙口RAM為例,這兩個單元為3FEH和3FFH。其中3FEH為左邊CPU的中斷信箱,3FFH為右邊CPU的中斷信箱。各CPU只能讀自己的中斷信箱,寫對方的中斷信箱;而不能寫自己的中斷信箱,讀對方的斷信箱。當左邊CPU中右邊CPU的中斷信箱3FFH單元寫入數據時,圖2中/WR置0,IRn+1置1,指向右邊CPU的中斷信號有效;當右邊CPU從自己中斷信箱3FFH單元讀數據時,圖2中/RR置0,則IRn+1置0,指向右邊CPU的中斷信號被清除。同樣地,右邊CPU對左邊CPU中斷信號的設置和清除也是如此,只不過把上面的3FFH單元換為3FFH單元。其真值表如表1所示。

        表1 雙口RAM中斷邏輯真值表

        /WR/RRIRnIRn+1
        0
        0
        1
        1
        0
        0
        1
        1
        0
        0
        0
        0
        1
        1
        1
        1
        0
        1
        0
        1
        0
        1
        0
        1
        1*
        1*
        0
        0
        1
        1
        0
        1

        從圖2和表1不難看出,指向右邊CPU的中斷信號從被置為低電平那一刻起一直有效至右邊CPU來讀3FFH單元。TMS320C31要求一個外部中斷必須至少持續一個H1周期保持為低電平,以便讓TMS320C31來確認。如果外部中斷信號在一到三個H1周期之內保持為低,那么只有一個中斷被確認;如果在三個或更多個周期內保持為低,則可以確認多于一個中斷。所以IDT7140提供的中斷信號的有效時間可以滿足TMS320C31的要求,這樣IDT7140的/INTL引腳就可以和TMS320C31的INT1直接相連。但與此同時也要求TMS320C31盡快地服務IDT7140的中斷申請,以免一個中斷申請被誤認為多個中斷申請。

        4 TMS320C31與80C196之間采用雙口RAM進行高速數據通信的軟件實現

        從圖2中我們得知,左邊CPU寫右邊CPU的中斷信箱3FFH單元時,雙口RAM會給右邊CPU發一中斷信號;同樣,右邊CPU在寫左邊CPU的中斷信箱3FFH單元時,雙口RAM也會給左邊CPU發一中斷信號。以左邊的TMS320C31為例,在它獲得外部中斷信號INT1后,它并不知道右邊的80C196是剛開始占用雙口RAM還是用完了要釋放使用權,或者是其它別的意思。所以雙方事先應有一個簡單的協議,例如右邊CPU在3FEH單元中(或右邊CPU在3FFH單元中)寫“FFH”代表右(左)邊正占用雙口RAM,定“11H”代表要釋放使用權,或者還可以有更多的數據含義的定義,視兩邊CPU通信內容的復雜程度而定。例如在這個高速實時控制系統中,還定義了“88H”和“55H”來表示其它的含義。這樣,在中斷服務程序里,就可以做相應的操作。下面以TMS320C31為例來說明數據通信的軟件實現,程序流程如圖3和圖4所示。

        隨著各種復雜算法的應用越來越廣泛,DSP的應用也會越來越普及,各種不同的多CPU系統不斷涌現。在這些系統中,雙口RAM以它方便、快速的特點將成為很多多CPU系統中的通信途徑。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 新兴县| 吴桥县| 泸定县| 平远县| 彭山县| 霸州市| 榆树市| 隆化县| 鄂托克旗| 新源县| 三明市| 甘谷县| 凤庆县| 石首市| 盐城市| 阜新| 池州市| 日土县| 建平县| 田东县| 丰宁| 界首市| 日照市| 亚东县| 遵义市| 济源市| 鹿邑县| 民丰县| 兴和县| 新邵县| 崇阳县| 大厂| 秀山| 达尔| 高台县| 曲靖市| 弋阳县| 平定县| 昌黎县| 湛江市| 会昌县|