文獻標識碼: A
文章編號: 0258-7998(2012)08-0126-03
一般而言,在線編程ISP(In System Programming)是指依靠某種外部工具(除了常規的并行編程器以外)直接給處理器內部集成的程序存儲器編程[1-2]。隨著片上系統(SoC)設計的流行,IP核復用逐漸成為研究的重點[3-4]。為SoC配置在線編程IP核,將極大方便系統的調試與運行。MV10微處理器是本課題組自主開發,擁有完全知識產權的專用集成電路芯片[5],它適用于汽車電子領域,主要用于汽車車身的控制。該芯片具有INTEL8051指令架構內核,并且嵌入了PWM、ADC、CAN等IP核,具有數?;旌瞎δ艿腟oC系統。本文以MV10片上系統為目標對象,給出了一種在線編程的IP核實現方案。
1 MV10微處理器
MV10微處理器已通過硅驗證,使用GLOBAL FOUNDRY公司的0.35 μm、2層多晶硅、4層金屬混合信號工藝,3.3 V電源,運行頻率可達24 MHz,具有64 KB存儲器尋址空間,8 KB×8片內OTP程序存儲空間,256 B的內部數據存儲器,內置4個模擬量輸入的10位模數轉換通道,1個單獨的UART通信模塊,5個16位的定時器計數器,11個兩級優先級中斷源,支持睡眠空閑模式,復位可從睡眠模式中喚醒芯片,采用DIP52封裝。
2 在線編程IP核設計
MV10片上系統嵌入在線編程IP核,上位機通過串口對其片上SRAM進行程序燒寫,使MV10具有在線調試、編程的功能,圖1為在線編程系統結構圖。
2.1 頂層設計
在線編程IP核包含了時序控制模塊、位流接收模塊、位流發送模塊及SRAM接口管理模塊。圖1中,pc_data_in是一個接收上位機數據的串行端口,pc_data_out是一個向上位機返回數據幀驗證信息的串行端口。通過Start口切換MV10的狀態(0為程序燒寫模式,1為正常工作模式)。
2.2 時序控制模塊
時序控制模塊采用了兩級同步、逐幀校正及中間采樣三種方法,保證了數據采樣的高精確性。
如圖2所示,上位機發送的數據流pc_data_in經過兩級同步產生了穩定的數據流pc_data_in_reg,有效地避免了亞穩態的傳播。第三級同步產生的pc_data_in_reg_reg信號用以檢測數據幀起始位。
2.3 位流接收模塊
在線編程模塊中設定的數據幀格式為:1位起始位,8位數據位,1位校驗位與1位停止位。
位流接收模塊的主要功能:
(1)根據數據幀的打包格式對時序控制模塊采樣到的位流進行解包,提取每一幀中的串行數據轉換為并行數據寫入內部寄存器,再由SRAM接口管理模塊將其寫入片上SRAM。
(2) 對每一幀數據進行奇校驗與幀校驗,產生校驗標志。
錯誤檢驗機制RTL實現:
If(bit_cnt==4’d11)
error<=(parity_error|frame_error)
else
error<=1’b0;
其中bit_cnt是數據流位計數器,當檢測到數據起始位時從“0”開始計數,一幀數據從“0”計到“10”,“11”時返回錯誤標志,即寫入一幀數據實際需要12個采樣周期。parity_error為奇校驗錯誤標志,“1”表示有奇校驗錯誤;frame_error為幀錯誤校驗標志,“1”表示有幀錯誤;error是總校驗標志,“1”表示此幀數據錯誤,使發送數據模塊向上位機發送00H,SRAM接口管理模塊在檢測到error信號為“1”時地址位不增加。
2.4 位流發送模塊
位流發送模塊的主要功能:
(1)MV10上電或者復位后,該模塊自動向上位機發送55H以檢測MV10與上位機之間的通信是否正常。如上位機顯示55H,即表示下位機已準備好接收上位機發送的數據。如果無法顯示55H,則需要檢查上位機是否配置正確、下位機是否切換到程序燒寫模式以及它們之間的連接是否正確。
(2)位流接收模塊接收到一幀數據后,會對該幀數據進行校驗,并發送校驗標志。位流發送模塊根據校驗標志作出判斷,若校驗正確,則向上位機發送FFH,否則發送00H。
2.5 SRAM接口管理模塊
參考Memory Compiler生成的RA_512x8模型設計SRAM寫操作時序。其中addr[8:0]為9位地址信號,CEB為片選信號(低電平有效),WEB為讀寫選擇信號(高讀低寫),data_final[7:0]為8位數據信號。如圖4所示。
當MV10模式開關Start為“0”時,MV10工作在編程模式,此時SRAM片選信號與寫使能信號有效,將校驗正確的一幀數據寫入SRAM,地址自動加“1”(地址初始化或復位后為00H)。如數據校驗錯誤,則數據不會被寫入SRAM,地址位保持不變。
當MV10模式開關Start為“1”時,MV10工作在運行模式,此時SRAM片選信號與寫使能信號無效,即使數據接收模塊正確接收到數據,也不會寫入到SRAM中。
3 上位機軟件設計
3.1 MV_IDE概述
上海大學MV系列MCU匯編程序開發軟件[6]使用Windows平臺應用程序開發環境:Visual Studio 2010進行開發,采用C++語言作為主要開發語言。上海大學MV系列MCU匯編程序開發軟件作為MV系列微控制器(MCU)的開發匯編程序開發平臺,設計了基于INTEL8051指令的匯編程序編輯器和編譯器,并針對新一代MV系列MCU中的在線編程模塊,設計了相應的程序燒寫功能,可將編譯后的機器碼燒寫到MV10內部的程序SRAM中。
3.2 燒寫功能程序設計
上位機程序中的燒寫功能可以將MV_IDE編譯后產生的BIN文件通過串口發送給MV10,MV_IDE根據在線編程模塊的校驗返回標志決定發送下一幀數據或者重新發送當前數據幀。
選擇主界面的燒寫按鍵打開燒寫界面,在燒寫文件選框選擇需要燒寫的BIN文件。由于BIN文件是特殊的二進制格式文件,所以在點擊燒寫文件確定后MV_IDE會讀取BIN文件并將其轉化為16進制單字節的形式,并在工程目錄下保持為bin.txt文本文件,便于以單字節進行發送。
在燒寫界面中,“串口號”用于選擇PC機的串口,“串口設置”第一位設置波特率;第二位設置校驗位,N表示沒有校驗位,O表示奇校驗,E表示偶校驗;第三位設置數據位數;最后一位設置停止位數。實際燒寫時選擇9600,O,8,2。串口配置界面如圖5所示。
4.2 板級驗證
對包含在線編程IP核的芯片進行板級測試,將事先經過片外EEPROM驗證的項目程序通過上位機寫入目標板,均可實現相應的功能,目標測試板界面如圖7所示。
本文提出的在線編程模塊IP核具有高采樣精度并帶有錯誤檢測校正機制,是一種簡易可靠的在線程序調試實現方法。該IP核通過了Modelsim仿真、FPGA驗證及芯片板級驗證,并已應用在MV10的程序開發中。本文給出的在線編程IP核的方法,雖然是基于MV10片上系統提出的,但亦可用于其他片上系統。
參考文獻
[1] Hu Yueli, Xiong Bing. Design of an embedded on-chip debug support module of an MCU[C]. The 8thIEEE CPMT Conference on High Density Microsystem Design and Packaging and Component Failure Analysis(HDP’06), IEEE, June 2006.
[2] 楊朝陽,羅永革 一種基于軟件SCI的在線編程方法[J]. 蘇州大學學報,2010,30(2):45-48.
[3] 胡越黎, 周諶. 基于IP復用的片上級系統的構建與驗證[J].計算機測量與控制,2010,18(3):629-631.
[4] Hu Yueli, Xu lei. Reusable design of CAN bus controller IP core[C]. 4th International Conference on Measuring Technology and Mechatronics Automation, ICMTMA 2012.
[5] 黃俊良,胡越黎,王昆. MV10微處理器與APB總線的接口設計[J]. 計算機測量與控制, 2011,19(12):89-95.
[6] 上海大學.MCU匯編程序開發平臺軟件(MV_IDE)V1.0用戶手冊[M].2012.