DSP和80C196雙CPU構成的高速實(shí)時(shí)控制系統
DSP也稱(chēng)數字信號處理器。TMS320C31是TI公司的第三DSP芯片,它的基本結構包括:(1)程序文憑間與數據空間分開(kāi)的總線(xiàn)結構,可以對程序存儲器和數據存儲器這兩個(gè)獨立的存儲器進(jìn)行獨立編址、獨立訪(fǎng)問(wèn);(2)流水線(xiàn)結構,以三級流水線(xiàn)操作為例,在每個(gè)指令周期內,三條不同的指令都處于激活狀態(tài),但處于不同的階段,分別為取指、譯碼和執行;(3)專(zhuān)用的硬件乘法器,使乘法可以在單周期內完成;(4)特殊的DSP指令;(5)快速的指令周期,可以達到33.3ns,即每秒能執行60M條指令。
由一片TMS320C31加上存儲器、模/數轉換單元和外設接口就可以構成一個(gè)完整的控制系統,但這種方案若要達到高速實(shí)時(shí)控制則是不可行的。因為T(mén)MS320C31除要完成復雜的算法,還要采集處理數據、控制外部系統中的執行機構和實(shí)現人機接口等功能,而這些工作勢必會(huì )大大延長(cháng)系統對控制對象進(jìn)行控制的周期。所以我們采用TMS320C31和一個(gè)通用微處理器80C196一起來(lái)作為這個(gè)高速實(shí)時(shí)控制系統的CPU。其中80C196作為主機,負責數據的采集處理、外部系統中執行機構的控制和驅動(dòng)以及人機接口等功能;TMS320C31作為從機,負責復雜算法的實(shí)現。這樣可以使TMS320C31專(zhuān)注于算法的計算,充分利用它高速數據處理的能力。TMS320C31與80C196之間通過(guò)雙口RAM進(jìn)行高速數據通信,之所以采用雙口RAM是因為這種通信方式數據傳輸的速率很高,并且抗干擾性能較好。
1 系統構成
系統主要由兩大模塊組成:算法模塊和輸入輸出控制模塊。算法模塊以TMS320C31為核心構成,是整個(gè)系統的計算中心,負責復雜算法的實(shí)現;輸入輸出控制模塊以80196為中心構成,負責數據的采集處理、外部系統中執行機構的控制和驅動(dòng)以及人機接口等功能。算法模塊與輸入輸出控制模塊之間通過(guò)雙口RAM IDT7140進(jìn)行高速數據通信。算法通過(guò)從輸入輸出控制模塊處獲得算法所需的輸入數據(即實(shí)時(shí)采樣到的數據),然后將計算結果送給輸入輸出控制模塊,最后再由輸入輸出控制模塊控制各執行機構。
2 TMS320C31、80C196與雙口RAM IDT7140之間的接口電路
如圖1所示,IDT7140有兩組完全對稱(chēng)的地址線(xiàn)數據線(xiàn)和控制線(xiàn),
TMS320C31與左邊這組線(xiàn)相連,80C196與右邊的那組線(xiàn)相連。TMS320C31給IDT7140分配的地址空間為0x20000H~0x1003ffH。通過(guò)GAL16V8對A[20,23]和外部存取選通信號/STRB進(jìn)行譯碼,給出IDT7140的片選信號/CEL。IDT7140通過(guò)/BUSYL和/BUSYR引腳接高電平,工作在中斷方式。IDT7140的中斷信號/INTL可以與TMS320C31的某個(gè)外部中斷引腳直接相連(這里將外部中斷1即INT1分配給雙口RAM IDT7140),具體原因將在第3部分進(jìn)行說(shuō)明。80C196給IDT7140分配地地址空間為0xA000H~0xA3ffH。通過(guò)GAL16V8對AD[12,15]和外部存儲器讀信號/RD進(jìn)行譯碼,給出IDT7140的片選信號/CER。80C196的/WE在寫(xiě)周期為低電平,讀周期為高電平,與IDT7140的R/WR定義一致,所以/WE可直接與R/WE可直接與R/WR相連,作為IDT7140右邊的讀之所以控制信號。IDT7140的中斷引腳/INTR接到80C196的外部中斷。
3 雙口RAM IDT7130/40的中斷邏輯設計
雙口RAM必須采用一定的機制來(lái)協(xié)調左右兩邊CPU對它的讀寫(xiě)操作。IDT公司的雙口RAM系列用口斷、硬件、令牌和軟件這四種方式來(lái)協(xié)調雙方。在TMS320C31和80C196雙CPU構成的高速實(shí)時(shí)控制系統中,IDT7140采用的是中斷方式。下面介紹IDT雙口RAM系列的中斷邏輯設計。
如圖2所示,IDT雙口RAM的中斷邏輯實(shí)際上是由與非門(mén)組成的兩個(gè)基本RS觸發(fā)器所構成。在所有的IDT雙口RAM芯片中,內存的最高兩個(gè)單元被用作為左右兩邊CPU的中斷信箱。以1K雙口RAM為例,這兩個(gè)單元為3FEH和3FFH。其中3FEH為左邊CPU的中斷信箱,3FFH為右邊CPU的中斷信箱。各CPU只能讀自己的中斷信箱,寫(xiě)對方的中斷信箱;而不能寫(xiě)自己的中斷信箱,讀對方的斷信箱。當左邊CPU中右邊CPU的中斷信箱3FFH單元寫(xiě)入數據時(shí),圖2中/WR置0,IRn+1置1,指向右邊CPU的中斷信號有效;當右邊CPU從自己中斷信箱3FFH單元讀數據時(shí),圖2中/RR置0,則IRn+1置0,指向右邊CPU的中斷信號被清除。同樣地,右邊CPU對左邊CPU中斷信號的設置和清除也是如此,只不過(guò)把上面的3FFH單元換為3FFH單元。其真值表如表1所示。
表1 雙口RAM中斷邏輯真值表
/WR | /RR | IRn | IRn+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來(lái)讀3FFH單元。TMS320C31要求一個(gè)外部中斷必須至少持續一個(gè)H1周期保持為低電平,以便讓TMS320C31來(lái)確認。如果外部中斷信號在一到三個(gè)H1周期之內保持為低,那么只有一個(gè)中斷被確認;如果在三個(gè)或更多個(gè)周期內保持為低,則可以確認多于一個(gè)中斷。所以IDT7140提供的中斷信號的有效時(shí)間可以滿(mǎn)足TMS320C31的要求,這樣IDT7140的/INTL引腳就可以和TMS320C31的INT1直接相連。但與此同時(shí)也要求TMS320C31盡快地服務(wù)IDT7140的中斷申請,以免一個(gè)中斷申請被誤認為多個(gè)中斷申請。
4 TMS320C31與80C196之間采用雙口RAM進(jìn)行高速數據通信的軟件實(shí)現
從圖2中我們得知,左邊CPU寫(xiě)右邊CPU的中斷信箱3FFH單元時(shí),雙口RAM會(huì )給右邊CPU發(fā)一中斷信號;同樣,右邊CPU在寫(xiě)左邊CPU的中斷信箱3FFH單元時(shí),雙口RAM也會(huì )給左邊CPU發(fā)一中斷信號。以左邊的TMS320C31為例,在它獲得外部中斷信號INT1后,它并不知道右邊的80C196是剛開(kāi)始占用雙口RAM還是用完了要釋放使用權,或者是其它別的意思。所以雙方事先應有一個(gè)簡(jiǎn)單的協(xié)議,例如右邊CPU在3FEH單元中(或右邊CPU在3FFH單元中)寫(xiě)“FFH”代表右(左)邊正占用雙口RAM,定“11H”代表要釋放使用權,或者還可以有更多的數據含義的定義,視兩邊CPU通信內容的復雜程度而定。例如在這個(gè)高速實(shí)時(shí)控制系統中,還定義了“88H”和“55H”來(lái)表示其它的含義。這樣,在中斷服務(wù)程序里,就可以做相應的操作。下面以TMS320C31為例來(lái)說(shuō)明數據通信的軟件實(shí)現,程序流程如圖3和圖4所示。
隨著(zhù)各種復雜算法的應用越來(lái)越廣泛,DSP的應用也會(huì )越來(lái)越普及,各種不同的多CPU系統不斷涌現。在這些系統中,雙口RAM以它方便、快速的特點(diǎn)將成為很多多CPU系統中的通信途徑。
評論