基于MV10微處理器的在線編程IP核設(shè)計(jì)與驗(yàn)證
摘 要: 基于MV10微處理器設(shè)計(jì)了一個(gè)簡單可靠的在線編程IP核,可以將BIN文件直接寫入其片上SRAM進(jìn)行程序調(diào)試。該IP核嵌入在MV10中 0.35 ?滋m工藝線上流片成功并通過了板級(jí)驗(yàn)證。
關(guān)鍵詞: MV10; 在線編程; 高采樣精度; 錯(cuò)誤檢測; 上位機(jī)程序
一般而言,在線編程ISP(In System Programming)是指依靠某種外部工具(除了常規(guī)的并行編程器以外)直接給處理器內(nèi)部集成的程序存儲(chǔ)器編程[1-2]。隨著片上系統(tǒng)(SoC)設(shè)計(jì)的流行,IP核復(fù)用逐漸成為研究的重點(diǎn)[3-4]。為SoC配置在線編程IP核,將極大方便系統(tǒng)的調(diào)試與運(yùn)行。MV10微處理器是本課題組自主開發(fā),擁有完全知識(shí)產(chǎn)權(quán)的專用集成電路芯片[5],它適用于汽車電子領(lǐng)域,主要用于汽車車身的控制。該芯片具有INTEL8051指令架構(gòu)內(nèi)核,并且嵌入了PWM、ADC、CAN等IP核,具有數(shù)模混合功能的SoC系統(tǒng)。本文以MV10片上系統(tǒng)為目標(biāo)對(duì)象,給出了一種在線編程的IP核實(shí)現(xiàn)方案。
1 MV10微處理器
MV10微處理器已通過硅驗(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 在線編程IP核設(shè)計(jì)
MV10片上系統(tǒng)嵌入在線編程IP核,上位機(jī)通過串口對(duì)其片上SRAM進(jìn)行程序燒寫,使MV10具有在線調(diào)試、編程的功能,圖1為在線編程系統(tǒng)結(jié)構(gòu)圖。
2.1 頂層設(shè)計(jì)
在線編程IP核包含了時(shí)序控制模塊、位流接收模塊、位流發(fā)送模塊及SRAM接口管理模塊。圖1中,pc_data_in是一個(gè)接收上位機(jī)數(shù)據(jù)的串行端口,pc_data_out是一個(gè)向上位機(jī)返回?cái)?shù)據(jù)幀驗(yàn)證信息的串行端口。通過Start口切換MV10的狀態(tài)(0為程序燒寫模式,1為正常工作模式)。
2.2 時(shí)序控制模塊
時(shí)序控制模塊采用了兩級(jí)同步、逐幀校正及中間采樣三種方法,保證了數(shù)據(jù)采樣的高精確性。
如圖2所示,上位機(jī)發(fā)送的數(shù)據(jù)流pc_data_in經(jīng)過兩級(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)用以檢測數(shù)據(jù)幀起始位。
2.3 位流接收模塊
在線編程模塊中設(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ù)寫入內(nèi)部寄存器,再由SRAM接口管理模塊將其寫入片上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)檢測到數(shù)據(jù)起始位時(shí)從“0”開始計(jì)數(shù),一幀數(shù)據(jù)從“0”計(jì)到“10”,“11”時(shí)返回錯(cuò)誤標(biāo)志,即寫入一幀數(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接口管理模塊在檢測到error信號(hào)為“1”時(shí)地址位不增加。
2.4 位流發(fā)送模塊
位流發(fā)送模塊的主要功能:
(1)MV10上電或者復(fù)位后,該模塊自動(dòng)向上位機(jī)發(fā)送55H以檢測MV10與上位機(jī)之間的通信是否正常。如上位機(jī)顯示55H,即表示下位機(jī)已準(zhǔn)備好接收上位機(jī)發(fā)送的數(shù)據(jù)。如果無法顯示55H,則需要檢查上位機(jī)是否配置正確、下位機(jī)是否切換到程序燒寫模式以及它們之間的連接是否正確。
(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寫操作時(shí)序。其中addr[8:0]為9位地址信號(hào),CEB為片選信號(hào)(低電平有效),WEB為讀寫選擇信號(hào)(高讀低寫),data_final[7:0]為8位數(shù)據(jù)信號(hào)。如圖4所示。
當(dāng)MV10模式開關(guān)Start為“0”時(shí),MV10工作在編程模式,此時(shí)SRAM片選信號(hào)與寫使能信號(hào)有效,將校驗(yàn)正確的一幀數(shù)據(jù)寫入SRAM,地址自動(dòng)加“1”(地址初始化或復(fù)位后為00H)。如數(shù)據(jù)校驗(yàn)錯(cuò)誤,則數(shù)據(jù)不會(huì)被寫入SRAM,地址位保持不變。
當(dāng)MV10模式開關(guān)Start為“1”時(shí),MV10工作在運(yùn)行模式,此時(shí)SRAM片選信號(hào)與寫使能信號(hào)無效,即使數(shù)據(jù)接收模塊正確接收到數(shù)據(jù),也不會(huì)寫入到SRAM中。
3 上位機(jī)軟件設(shè)計(jì)
3.1 MV_IDE概述
上海大學(xué)MV系列MCU匯編程序開發(fā)軟件[6]使用Windows平臺(tái)應(yīng)用程序開發(fā)環(huán)境:Visual Studio 2010進(jìn)行開發(fā),采用C++語言作為主要開發(fā)語言。上海大學(xué)MV系列MCU匯編程序開發(fā)軟件作為MV系列微控制器(MCU)的開發(fā)匯編程序開發(fā)平臺(tái),設(shè)計(jì)了基于INTEL8051指令的匯編程序編輯器和編譯器,并針對(duì)新一代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會(huì)讀取BIN文件并將其轉(zhuǎn)化為16進(jìn)制單字節(jié)的形式,并在工程目錄下保持為bin.txt文本文件,便于以單字節(jié)進(jìn)行發(fā)送。
在燒寫界面中,“串口號(hào)”用于選擇PC機(jī)的串口,“串口設(shè)置”第一位設(shè)置波特率;第二位設(shè)置校驗(yàn)位,N表示沒有校驗(yàn)位,O表示奇校驗(yàn),E表示偶校驗(yàn);第三位設(shè)置數(shù)據(jù)位數(shù);最后一位設(shè)置停止位數(shù)。實(shí)際燒寫時(shí)選擇9600,O,8,2。串口配置界面如圖5所示。
4.2 板級(jí)驗(yàn)證