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