關鍵詞:Flash存儲器 DSP 嵌入式算法 Am29F010B
國內的電動機保護裝置種類繁多,但隨著現代大中型電動機對保護要求的不斷提高和VLSI技術的不斷進步,傳統(tǒng)的基于熱敏電阻、機械式繼電器和電子式等保護模式均因可靠性不高,容易出現誤操作等缺點已不能滿足需要;而以單片機為核心的數字或保護裝置的運算速度不高、資源有限、數據處理能力和可擴展性不好等問題日益突出。新的相關理論和技術(如小波變換、自適應保護、故障診斷、模糊整定等)的出現加速了高性能和綜合型微機保護的發(fā)展,但這不僅要求更高性能的CPU(如近年飛速發(fā)展的系列DSP芯片)的支持,而且還要有與之相適應的外圍存儲器的支持。鑒于此,筆者在開發(fā)基于DSP的大中型智能電動機保護裝置(系統(tǒng)結構功能如圖1)時,在外擴存儲器方面采用了AMD公司生產的Flash芯片Am29F010B。該Flash memory因容量大、體積小、功耗低、成本低等優(yōu)點而被廣泛應用于消費類電子、軍事、航空航天等領域。它可以在線更新,并具有較高的靈活性,因而可與高性能CPU芯片TMS320C32達到良好的配合,從而可顯著提高系統(tǒng)性能和可靠性。
1 硬件設計
1.1 TMS320C32芯片的特點
美國TI公司生產的TMS320系列DSP芯片以其改進的哈佛總線結構、獨立的指令系統(tǒng)、專用硬件乘法器、多種尋址方式等優(yōu)點以及高速數據處理能力廣泛應用在通訊、雷達、工業(yè)控制等領域。TMS320C32是TI的第一代浮點DSP芯片TMS320C3X系列中的一款高性能浮點芯片,是對TMS320C30、TMS320C31中的不常用資源進行簡化、并對其性能進一步改進后的高性價比處理器。它具有增強的外部存儲器接口,可以靈活方便地存取8/16/24/32位數據。它支持16/32位外部程序,從而為其外圍接口電路設計提供了很大的靈活性;其硬件上增加的一個非常有用的程序引導(Bootloader)功能使其程序可以從低速EPROM、PROM或串口裝入到系統(tǒng)的高速RAM中全速運行;它所配備的C編譯器具有很高的效率,可直接用匯編語言或兩者相結合使用,因而靈活性和實時性都很強;由于中斷矢量表可重設位,因此,將其應用到電動機保護中可以大大提高整個保護裝置的各項性能。
1.2 Flash Memory芯片Am29F010B
Am29F010B是AMD公司生產的多功能閃爍內存,它的主要技術特點如下:
*可單電壓(5V)進行讀、寫操作;
*高性能,最大存取時間為45ns;
*可靠性極高,可重復編程不小于10萬次,數據保持大于100年;
*低功耗(讀操作,寫/擦除操作以及空閑狀態(tài)的電流典型值分別為12mA、30mA和1μsA);
*具有扇區(qū)擦除能力,對于所分成的8個完全一樣的分扇區(qū),既可以塊擦除,也可以整個芯片一起擦除;
*嵌入式擦除算法可自動地預編程和擦除芯片,它可以將設好的扇區(qū)用嵌入式編程算法自動地編程以把數據寫到特定的地址;
*帶有JEDEC標準的Flash EEPROM管腳輸出和命令集;
*具有編程周期結束檢測功能,可縮短等待時間;
Am29F010B存儲器采用PDIP,PLCC,TSOP封裝,圖2給出了Am29F010B的PDIP封裝引腳圖,各引腳的功能如下:
DQ7~DQ0:雙向數據線,可用于輸出數據或寫入命令和數據。
A0~A16:地址線,其中A16~A14為扇區(qū)地址,可用000~111代表8個扇區(qū),A13~A0為扇區(qū)內的字節(jié)地址。
CE:片選線,低電平有效,高電平時芯片處于空閑狀態(tài);
OE,WE:分別為讀、寫控制線。圖3給出了對FLASH編程時,CE、OE和WE的狀態(tài)時序。
其中,PD為編程數據,tch為CE持續(xù)時間,tcs為CE建立時間,tDS為數據建立時間,tDH為數據維持時間,twp為寫脈沖寬度。
1.3 Am29F010B與TMS320C32的硬件接口
Am29F010B與TMS320C32的硬件接口電路原理圖如圖4所示。圖中,Am29F010B的17根地址線A0~A16分別與TMS320C32的A0~A16相連。每片Am29F010B的容量為128k×8B。在本開發(fā)系統(tǒng)中,數據采用的是32位浮點數,連接方法是將四片8位數據寬的Am29F010B一起與TMS320C32連接,即將四片Am29F010B的D0~D7依次與TMS320C32的D0~D7、D8~D15、D16~D23及D24~D31連接,總容量為128k×32B。
TMS320C32的外擴存儲器的尋址空間范圍由三組相互獨立的控制信號STRB0、STRB1和IOSTRB來控制,可用于對相互獨立的存取空間進行操作而不會出現端口沖突。所不同的是,IOSTRB只能用32位寬的程序或數據存儲器進行存操作;STRB0和STRB1由各自的四個控制引腳來實現,可以用8/16/32位寬的存儲器存取8/16/32位數據,還可以用16或32位寬的程序存儲器進行存取操作,因而比較靈活。
圖4的設計中使用的是STRB0,Flash所占的128k×32B存取空間的地址范圍為000000H~01FFFFH,外圍程序存儲器配置為32位,可由PRGW置低電平來實現。此時各片的片選信號CE分別由STRB0-B0、STRB0-B1、STRB0-B2、STRB0-B3控制。上電復位后,外部總線接口控制寄存器STRB0可根據PRGW引腳電平的高低來決定存儲器的寬度控制位和數據位數控制位的復位值。
2 Am29F010B的在系統(tǒng)編程技術
2.1 Am29F010B的基本編程操作
對FLASH的基本操作主要有讀、字節(jié)編程、復位、扇區(qū)擦除、片擦除等。Am29F010B閃爍存儲器的讀操作與普通的存儲器操作相同,它不需要特定的時序,在電路上電或內部編程等操作后可自動進入讀數據狀態(tài)。而擦除和寫操作相對復雜一些,它不能簡單的直接寫入,同時,out文件不能load到FLASH中,且CCS和CSource Debugger中的load命令均不能對flash寫入,而需要專門的程序才能寫入一系列Flash Memory的命令寄存器中,然后調用嵌入式算法的內部程序來完成相應的命令。Am29F010B編程的一般步驟是復位、擦除、字節(jié)編程等。
(1)復位操作
復位命令用以取消擦除或寫入操作而使存儲器復位。復位操作不影響各單元的數據。在編程、擦除或正常操作出現錯誤時都要使用復位命令。向FLASH存儲器的任意一個地址寫入0F0H均可使其復位并進入讀數據狀態(tài)。
(2)擦除操作
擦除操作的具體軟件命令序列如表1所列。該操作包括按扇區(qū)擦除和整片擦除兩種方式。二者均為6總線周期操作。使用片擦除操作則可一次清除FLASH芯片內的所有數據。扇區(qū)擦除操作則用于清除某一個扇區(qū)的所有數據,這在僅需要改動少量數據而不是整片數據時特別方便。
(3)字節(jié)編程操作
該操作是一個4總線周期指令,可將任意數據寫入Am29F010B獨立使用的編程,只能寫入8位寬的數據,而本開發(fā)系統(tǒng)每次可寫入32位寬數據。具體軟件命令序列如表1所列。
2.2 Am29F010B的編程注意事項及操作技巧
在對Am29F010B進行編程操作時,三條關鍵控制檢測線OE、CE和WE都必須處于正確狀態(tài),當CE或WE不是低電平或OE不是高電平時,編程操作將被禁止。
由于在32位浮點芯片TMS320C32進行硬件連接時,采用的是4片數據寬度為8位的Flash來作為一片數據寬度為32位的Flash使用,所以在實際的總線操作過程中,向對應地址寫入的數據應為8位16進制數據。例如芯片復位操作時,寫入某一地址的數據應該是0xF0F0F0,而不應是單片時寫入的0xF0。其軟件命令序列可同時參見表1。
表1 Am29F010B編程命令序列表
命令序列 | Flash復位 | 扇區(qū)擦除 | 整片擦除 | Flash燒錄 | |
總線寫周期1 | 地址 | 5555H | 5555H | 5555H | 5555H |
數據 | 0AAAAAAAAH | 0AAAAAAAAH | 0AAAAAAAAH | 0AAAAAAAAH | |
總線寫周期2 | 地址 | 2AAAH | 2AAAH | 2AAAH | 2AAAH |
數據 | 55555555H | 55555555H | 55555555H | 55555555H | |
總線寫周期3 | 地址 | xxxx | 5555H | 5555H | 5555H |
數據 | 0F0F0F0F0H | 80808080H | 80808080H | 0A0A0A0A0H | |
總線寫周期4 | 地址 | 5555H | 5555H | ||
數據 | 0AAAAAAAAH | 0AAAAAAAAH | |||
總線寫周期5 | 地址 | 2AAAH | 2AAAH | ||
數據 | 55555555H | 55555555H | |||
總線官周期6 | 地址 | SA | 5555H | ||
數據 | 30303030H | 10101010H |
在Am29F010B擦除及編程操作中使用檢測機制可確保操作的正確性和有效性。其核心代碼如下:
flash_rase:
……
check_rase:LDI *AR0,R0
NOP
NOP
XOR *AR2,R0
BNZ check_rase
……
RETS
flash_prog:
……
check_prog:LDI * -AR1,R0
NOP
NOP
XOR *-AR1,R0
BNZ check_prog
……
RETS
在將數據或程序燒寫到Am29F010B時,應先單步執(zhí)行燒寫程序,同時應觀察燒寫程序執(zhí)行過程中有無異常。筆者曾遇到過的FLASH的操作指令代碼執(zhí)行后變成.word XXH的情形,后來經檢查發(fā)現是由于芯片Am29F010B的地址線引腳再現虛焊所致;另一方面,還要觀察在仿真開發(fā)環(huán)境的存儲區(qū)查看窗口,以觀察FLASH內相應單元內容的變化有否異常。
圖4 Am29F010B與TM320C32的硬件接口電路原理圖
3 結束語
本文討論的方法在軟、硬件上均已得到實現,對高性能Flash存儲器芯片Am29F010B和高速DSP處理器TMS320C32優(yōu)點的充分利用,使得在硬件和軟件上保證了裝置的先進性和高可靠性;目前,該裝置已成功用于WSM2000電動機智能保護裝置系統(tǒng)中,而且效果理想。