一,、背景及DSP+CPLD系統(tǒng)優(yōu)越性
作為電氣主設(shè)備,電動(dòng)機(jī)是數(shù)量最多的一種,,電動(dòng)機(jī)及其保護(hù)的運(yùn)行正常與否,,直接關(guān)系到國(guó)計(jì)民生。據(jù)統(tǒng)計(jì),,可靠的保護(hù)每年可減少約20萬(wàn)臺(tái)(次)以上的電動(dòng)機(jī)燒毀,,減少經(jīng)濟(jì)損失數(shù)億元。
傳統(tǒng)智能儀器大多數(shù)都是在單片機(jī)系統(tǒng)基礎(chǔ)上開(kāi)發(fā)的,?;趩纹瑱C(jī)的保護(hù)裝置受其內(nèi)部結(jié)構(gòu)、時(shí)鐘和總線的限制,,運(yùn)算能力弱,,實(shí)時(shí)性差,軟硬件通用性不強(qiáng),,系統(tǒng)靈活性不高,,日益不能滿足上述需要。DSP處理器因內(nèi)部采用了區(qū)別于傳統(tǒng)單片機(jī)馮·諾依曼結(jié)構(gòu)的哈佛結(jié)構(gòu)而克服了取指令和數(shù)據(jù)都通過(guò)同一條總線完成而造成的傳輸通道瓶頸效應(yīng)的問(wèn)題,??删幊踢壿嬈骷≒LD)經(jīng)歷了從PROM、PLA,、PAL,、GAL等低密度的PLD,發(fā)展到CPLD和FPGA兩種大規(guī)模的PLD,,開(kāi)發(fā)工具越來(lái)越完善,,應(yīng)用越來(lái)越普及。將CPLD/FPGA和DSP技術(shù)的結(jié)合起來(lái)實(shí)現(xiàn)DSP器件系統(tǒng)的解決方案,,為測(cè)控儀器向高層次智能化方向發(fā)展提供了充分的現(xiàn)實(shí)可行性,。
為實(shí)現(xiàn)對(duì)電力系統(tǒng)大型設(shè)備智能在線監(jiān)測(cè),本文以WSM2000 DSP智能電動(dòng)機(jī)保護(hù)裝置項(xiàng)目為背景,,對(duì)一種DSP+CPLD新型的智能儀器結(jié)構(gòu)進(jìn)行了研究和設(shè)計(jì),。
二、系統(tǒng)結(jié)構(gòu)
本系統(tǒng)采用美國(guó)TI 公司生產(chǎn)的浮點(diǎn)DSP器件TMS320C32作為底層主處理器件,,實(shí)現(xiàn)對(duì)A/D采集得到的數(shù)字信號(hào)進(jìn)行處理,,并且把所有控制電路、地址分配等設(shè)計(jì)在EPM7128S中,,使整個(gè)系統(tǒng)結(jié)構(gòu)簡(jiǎn)單化,,體積小型化,功能多樣化,。AD1674用來(lái)進(jìn)行信號(hào)的采集,,F(xiàn)LASH Memory用來(lái)存放軟件代碼,、主要功能參數(shù)、故障數(shù)據(jù)記錄等,;SRAM的功能一是程序仿真時(shí)使用,,二是在系統(tǒng)脫機(jī)運(yùn)行時(shí),,將FLASH Memory中的軟件搬運(yùn)到SRAM中運(yùn)行,,提高軟的運(yùn)行效率。系統(tǒng)功能模塊圖1所示,。
三,、 CPLD開(kāi)發(fā)流程
CPLD的開(kāi)發(fā)是指用利用CPLD芯片并借助于其開(kāi)發(fā)系統(tǒng),按照開(kāi)發(fā)系統(tǒng)的工作步驟,,將用戶設(shè)計(jì)轉(zhuǎn)化成CPLD配置數(shù)據(jù)并下載到CPLD芯片中實(shí)現(xiàn)用戶設(shè)計(jì)要求的全過(guò)程,。其設(shè)計(jì)流程圖如圖2所示。
四,、液晶顯示(LCD)模塊設(shè)計(jì)
1 硬件接口設(shè)計(jì)內(nèi)置
T6963C控制器型液晶顯示模塊接口,,由指令鎖存器、數(shù)據(jù)鎖存器,、數(shù)據(jù)緩沖器,、狀態(tài)寄存器以及數(shù)據(jù)控制電路、數(shù)據(jù)棧區(qū)等組成,。接口部實(shí)現(xiàn)了CPU和T6963C內(nèi)部寄存器及其所管理的顯示存儲(chǔ)器的存取操作,,實(shí)現(xiàn)了CPU操作時(shí)序與T6963C內(nèi)部工作時(shí)序的轉(zhuǎn)換。CPU對(duì)T6963C的每次操作時(shí),,接口部的鎖存器保留了其發(fā)來(lái)的指令代碼或顯示數(shù)據(jù),,并立即封鎖了接口部的對(duì)外電路,將后續(xù)的處理過(guò)程轉(zhuǎn)換到T6963C控制部的工作時(shí)序上,,直到處理完成,,方釋放接口部對(duì)外電路,等待下一次訪問(wèn),。T6963C與TMS320C32和EPM7128S接口如圖3所示:
TMS320C32的/IOSTROB ,、A1、A0,、引腳進(jìn)行地址譯碼,,參與系統(tǒng)的統(tǒng)一編址。/IOSTROB=0時(shí),,DSP對(duì)應(yīng)有效地址為810000H--82FFFFH,,當(dāng)?shù)刂肪€A0為1時(shí)選通LCD,地址線A1用來(lái)實(shí)現(xiàn)液晶的數(shù)據(jù)通道和指令通道的區(qū)分,,A1=1時(shí)為指令通道,,A1=0時(shí)為數(shù)據(jù)通道,。LCD接口地址為: 818003H為指令通道818001H 為數(shù)據(jù)通道。
2 軟件設(shè)計(jì)
本系統(tǒng)T6963C接口部設(shè)計(jì)了一個(gè)數(shù)據(jù)棧,,在寫(xiě)帶有參數(shù)的指令時(shí),,先向數(shù)據(jù)通道寫(xiě)入?yún)?shù),接口部將其存在數(shù)據(jù)棧中,,然后通道寫(xiě)入指令代碼,。T6963C將根據(jù)指令代碼的含義將數(shù)據(jù)棧內(nèi)最近的數(shù)據(jù)作為其參數(shù)一同進(jìn)行處理。讀顯示數(shù)據(jù)時(shí),,先寫(xiě)入操作的指令代碼,,T6963C將所需的顯示數(shù)據(jù)放入數(shù)據(jù)棧中,然后讀數(shù)據(jù)操作將數(shù)據(jù)棧中的數(shù)據(jù)讀出,。
3 內(nèi)置T696 3C液晶顯示模塊的軟件實(shí)現(xiàn)
?。?)、地址分配及定義
.data
LCDC_ADD .equ 820003H,;指令通道
LCDD_ADD .equ 820001H,;數(shù)據(jù)通道
(2),、狀態(tài)字檢測(cè)子程序
LCDR_ST: LDI @LCDC_ADD,,R0
RETS
由此程序派生出判斷有關(guān)標(biāo)志位的子程序:
<1>判斷狀態(tài)位STA1和STA0子程序,在寫(xiě)指令的讀,、寫(xiě)數(shù)據(jù)之前,,這兩個(gè)標(biāo)志位必須同時(shí)為“1”。
LCDST01: CALL LCDR_ST
LDI R0,R1
AND 01H,R1
BZ LCDST01
AND 02H,R0
BZ LCDST01
RETS
<2>判斷狀態(tài)位STA3子程序(數(shù)據(jù)自動(dòng)寫(xiě)狀態(tài))
LCDST3: CALL LCDR_ST
AND 08H,R0
BZ LCDST3
RETS
?。?),、寫(xiě)指令和寫(xiě)數(shù)據(jù)子程序
LCDPR1 : CALL LCDST01;雙字節(jié)參數(shù)指令寫(xiě)入入口
LDI AR1,R0
CALL LCDPR13
LCDPR11: CALL LCDST01 ,;單字節(jié)參數(shù)指令寫(xiě)入入口
LDI AR2,R0
CALL LCDPR13
LCDPR12: CALL LCDST01 ,;無(wú)參數(shù)指令寫(xiě)入入口
LDI AR3,R0
LCDPR14: STI R0,@LCDC_ADD ;寫(xiě)入指令操作
RETS
LCDPR13: STI R0,@LCDD_ADD,;寫(xiě)入數(shù)據(jù)操作
RETS
?。?)、讀數(shù)據(jù)子程序
LCDPR2: CALL LCDST01 ,;判狀態(tài)位
LDI @LCDD_ADD,R0 ,;讀數(shù)據(jù)操作
RETS
五、 系統(tǒng)在線編程
因系統(tǒng)最終要脫仿真器獨(dú)立運(yùn)行,,所以要把程序燒寫(xiě)到掉電非丟失存儲(chǔ)器FLASHROM中,。本系統(tǒng)開(kāi)發(fā)所采用的將存儲(chǔ)器安裝到用戶電路板上進(jìn)行編程的方法將用戶程序代碼裝入 FLASH存儲(chǔ)器的。它包括現(xiàn)在普遍采用的在系統(tǒng)編程(In System Programming,ISP),,通過(guò)系統(tǒng)的微處理器實(shí)現(xiàn)對(duì)FLASH存儲(chǔ)器的編程,。
1、 FLASH在線編 程實(shí)現(xiàn)
對(duì)FLASH的基本操作主要有讀,、字節(jié)編程,、復(fù)位、扇區(qū)擦除,、片擦除等,。Am29F010B閃爍存儲(chǔ)器讀操作與普通的存儲(chǔ)器操作相同,不需要特定的時(shí)序,,在電路上電或內(nèi)部編程等操作技術(shù)后,,自動(dòng)進(jìn)入讀數(shù)據(jù)狀態(tài)。而擦除和寫(xiě)操作相對(duì)復(fù)雜一些,。它不能簡(jiǎn)單的直接寫(xiě)入,.OUT文件不能LOAD到FLASH中,,CCS和C Source Debugger中的LOAD命令均不能對(duì)FLASH寫(xiě)入,,需要專門的程序?qū)懭胍幌盗蠪lash Memory的命令寄存器,然后調(diào)用嵌入式算法的內(nèi)部程序來(lái)完成相應(yīng)的命令,。Am29F010B編程一般步驟是復(fù)位,、擦除、字節(jié)編程等,。
2,、 系統(tǒng)軟件加載程序設(shè)計(jì)
系統(tǒng)軟件加載程序的主要作用是在系統(tǒng)上電處理器初始化后,開(kāi)始執(zhí)行的一段代碼,,將用戶實(shí)時(shí)運(yùn)行的程序和數(shù)據(jù)從外部低速FLASH Memory中加載到內(nèi)部或外部高速靜態(tài)RAM存儲(chǔ)器中,,然后跳到程序的進(jìn)入點(diǎn)開(kāi)始全速運(yùn)行。
TMS320C32 DSP芯片引導(dǎo)裝載程序的執(zhí)行過(guò)程將復(fù)位中斷向量表中存放引導(dǎo)程序的起始地址,,上電復(fù)位或手動(dòng)復(fù)位之后,,程序指針將指向引導(dǎo)程序。在運(yùn)行搬移程序之前,,要注意關(guān)中斷,。向量如果MC/MP#=1,而且系統(tǒng)沒(méi)有接在仿真器上,,那么DSP芯片自動(dòng)運(yùn)行固化在0h~0fffh中的
引導(dǎo)裝載程序,。這一程序會(huì)自動(dòng)判斷是INT0~INT2,還是INT3中斷。如果是INT0~INT2中斷,,DSP將存放在BOOT1~BOOT3中的一段程序裝載到片內(nèi)RAM或片外SRAM中,;如果是INT3中斷,則DSP將從串口中把程序裝載到片內(nèi)RAM或SRAM中。如果沒(méi)有中斷,,DSP根據(jù)0H單元中的復(fù)位矢量,,跳到該矢量所指出的單元為首地址,執(zhí)行一段引導(dǎo)裝載程序,。TMS320C32引導(dǎo)裝載程序關(guān)鍵代碼如下:
LDI 01H,AR0
LDI *AR0,AR0
LDI 02H,AR2
LDI *AR2,AR1
LDI 87,RC
RPTB dload
LDI *AR0++,R0
Dload: STI R0,*AR1++
LDI 03H,AR0
LDI *AR0,AR0
LDI 04H,AR2
LDI *AR2,AR1
LDI 4000H,RC
RPTB pload
LDI *AR0++,R0
Pload: STI R0,*AR1++
BR 900000H
六,、結(jié)束語(yǔ)
上述討論的方法在軟、硬件上都已得到實(shí)現(xiàn),,效果理想,。利用了Flash ROM的嵌入式算法,體現(xiàn)了DSP高效性和靈活性,。非常適合應(yīng)用于實(shí)時(shí)控制系統(tǒng)中,,解決了只能依賴于燒錄器的問(wèn)題,也可經(jīng)常調(diào)整系統(tǒng)的參數(shù),,降低了系統(tǒng)成本,、縮短了系統(tǒng)的開(kāi)發(fā)周期。
參考文獻(xiàn):
【1】 戴逸民,,梁曉文等.基于DSP的現(xiàn)代電子系統(tǒng)設(shè)計(jì).北京:電子工業(yè)出版,,2002.5 P1-2
【2】 王道憲.CPLD/FPGA可編程邏輯器件應(yīng)用與開(kāi)發(fā).北京:國(guó)防工業(yè)出版社,2004.1.P60-68
馮濤,,王程.可編程邏輯器件開(kāi)發(fā)技術(shù)及MAX+plusⅡ入門與提高.北京:人民郵電出版社,,2002.10