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