雙DSP電機控制的數字平臺設計
本文引用地址:http://www.ex-cimer.com/article/159731.htm
——旗語方案 同樣需要硬件和軟件的同時支持,我們也稱之為軟件仲裁。其步驟為申請獨占區(qū)域、判斷申請是否成功、釋放獨占區(qū)域。由于兩邊不同時使用同一地址,所以也可以避免爭用的發(fā)生。
本系統(tǒng)設計時綜合了各種情況最后選用了硬件方案。這是因為使用中斷方案軟件編寫復雜,頻繁中斷跳轉在算法和控制都較復雜的情況下,對于軟件的可靠性和穩(wěn)定性是不利的;采用旗語方案則控制相對復雜一些;硬件方案具有簡單可靠的特點,存儲空間的爭用完全由硬件解決,即當發(fā)生存儲空間爭用的時候,決定先行穩(wěn)定的端口優(yōu)先進行訪問,另一端口則插入等待周期。由于DSP的快速性,不同于以往的單片機將產生很長的等待周期。針對本系統(tǒng)考慮,即使是最壞的情況:每個控制周期內傳遞數據8個,LF2407A一次讀/寫周期50ns記,共需要0.4μs。當然這完全由硬件來實現,若考慮軟件上共同配合,則可以更有效地減少等待時間。而且0.4μs和20μs的控制周期相比,所占的比重非常小,并不會給系統(tǒng)性能帶來顯著影響,系統(tǒng)可靠性和穩(wěn)定性也能夠得到保證。這也正是本系統(tǒng)的特點所在。
3 TMS320C2407A/TMS320VC33與CY7C025之間通信的實現
LF2407A的數據總線寬度和地址總線寬度都是16位,單片CY7C025就足夠了。VC33的數據總線寬度是32位,可以采用兩片CY7C025以主從模式進行寬度擴展(見圖3),這樣每次VC33讀取數據時就能一次讀入兩個LF2407A的采樣數據。也可以采用單片CY7C025,雖然沒有完全利用VC33的數據寬度,但是,從電路設計上來講相對簡潔。由于本系統(tǒng)雙口RAM的作用主要是起到數據傳遞的作用,不需要保存大量的中間結果以及已經使用過的數據,因此,需要的存儲空間不是很大,單片雙口RAM就已經足夠。具體的接口電路見圖3,片選等控制信號由譯碼電路產生。
圖3 接口電路實現
地址空間分配綜合了不同DSP的空間資源分配要求,具體見表1。
表1 地址空間分配表 起始地址 終止地址
LF2407A 0X8000H 0X9FFFH
VC33 010000H 011FFFH
4 軟件功能實現
雙DSP協(xié)同工作的關鍵是相互通信和數據交流上的密切配合,可通過硬件仲裁電路來完成這一任務。但是如果僅僅用硬件完成,如上分析,畢竟等待時間還要0.4μs左右。如果輔以軟件配合,則可以有效地減少等待產生的情況。
首先,沖突可能發(fā)生在同時寫同一個存儲單元。在數據寫的時候采用如下措施可以避免這種情況的發(fā)生:如圖4所示,將讀/寫的存儲空間獨立開來,顯然LF2407A和VC33在寫的時候就不可能產生沖突,避免了等待的發(fā)生。
圖4 讀/寫存儲空間分開
其次,沖突可能發(fā)生在一讀一寫同一存儲單元的情況下。以LF2407A寫數據,VC33讀數據為例,上面分析的產生0.4μs等待時間的情況是基于如下假設:將8個數據依順序存儲于同一地址單元。即LF2407A存第一個數據時發(fā)生沖突,VC33產生等待時間50ns,等待結束VC33讀數據,此后LF2407A將第二個數據覆蓋前一個數據存儲,依次類推得出的結果就是8×50ns=400ns。事實是我們有足夠的地址空間用來存儲每批數據,將8個數據按順序存放在不同的地址空間,此時的情況如下:LF2407A存第一個數據時發(fā)生沖突,VC33產生等待時間50ns,等待結束VC33讀數據,與此同時LF2407A也開始寫第二個數據于下一個存儲單元中。兩者同時進行,我們只要保證VC33讀完的時候,LF2407A第二個數據已經寫完,則不會有沖突發(fā)生。針對本例,由于兩者時間不同(LF2407A為50ns,VC33為13.3ns),VC33讀得較快,只要在軟件編寫上增加40ns左右的循環(huán),就能保證如上的要求。當讀/寫反過來的時候,則不存在這樣的情況而能順利配合。這樣,最終的結果是只增加50ns的等待周期,對于本系統(tǒng)完全可以接受。
由于兩個DSP并不同步工作,所以,LF2407A可以采樣盡可能多的數據并保存,VC33只選用最新的數據用于計算,這樣就能保證數據的冗余。程序流程如圖5所示。
(a)LF2407A流程圖
評論