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