文献标识码: 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核,具有数模混合功能的SoC系统。本文以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.