摘要:提出一种基于SOPC实现片内嵌入的通用在线仿真器体系结构:利用IPcore易于下载更新的特性,在一片FPGA上实现对多种嵌入式CPU的在线仿真支持,体现通用的概念。本仿真器的具体实现采用了ALTERA公司的NIOS开发套件,自主研发出In—CircuitEmulator知识产权核,以及其他商业IPcores。简单描述了其设计与实现的思路及过程。
关键词:可编程片上系统;NIOS;知识产权核;通用在线仿真器
中图分类号:TP39文献标识码:A
0引言
嵌入式系统的开发与实现,已在逐渐步入利用SOC(SystemOnaChip)技术的软硬件协同设计阶段,其中的SOPC(SystemOnaProgrammableChip)技术能避免传统设计软硬件分开开发的弊端,使整个开发过程中软硬件功能划分能清晰、轻易地完成,并且同步地开发,甚至在需要时能互相转化。如从成本考虑,在效率可以接受的情况下将原本由硬件实现的功能改由软件实现。SOPC技术正在逐步改变嵌入式开发人员设计系统的思考方式,同时,它缩短了开发周期,节约了成本。
在线仿真器(In—CircuitEmulator,ICE)在嵌入式开发中已经成为必不可少的调试工具之一,但目前国内生产的ICE大都是针对某种或某一系列处理器芯片,缺乏通用性。国外公司已经研究开发了一些通用ICE产品,如BDI2000、TRACE32等。但在国内,尚没有相关的研究和产品发布。
本文利用SOPC技术的特点,设计出一种通用在线仿真器的结构,根据待调试目标板的CPU型号将相应的ICEIPcore和其他IPcores一起编译组合成一个嵌入式系统,集成下载到一片FPGA上,实现一个ICE仿真器。所使用的ICEIPcore可以自主开发,也可以由第三方提供。该方法在设计灵活性、开发成本、开发周期、工作性能等多方面都有很好的效果,体现了SOPC设计的优越与高效,具有良好的应用前景。本文具体的实现采用了CYCLONE开发板和ALTERA开发套件。
1在线仿真器及通用在线仿真器
1.1在线仿真器
嵌入式系统开发中,在线仿真调试技术应用十分普遍。新型嵌入式处理器的贴装式封装、上百条引脚以及近百兆主频已使得传统插入式仿真器设计无能为力,取而代之的是一种嵌入到处理器芯片内部的在线仿真调试器设计。这种ICE既能适应处理器发展特性,又可更有效地实现传统在线仿真器的系统调试功能,如运行、停止、单步、跟踪、查看寄存器和读写目标存储器等。这样做可以降低成本、简化ICE与目标机连接引脚等。
将ICE嵌入到处理器内部的方法有两种:边界扫描(BoundaryScan)技术和后台调试模式BDM(BackgroundDebugMode)。前者通过微处理器芯片内部的JTAG(JointTestActionGroup)边界扫描口与CPU通信,对其进行仿真调试[3]。基于JTAG技术的在线仿真器占用处理器芯片资源极少,一般使用处理器的5个引脚,4个寄存器和几路I/O口逻辑电路,因此价格比较便宜,连接比较方便,属于完全非插入式(即不使用片上资源)调试,无需目标存储器,不占用目标系统的任何端口。后者利用处理器内部提供的BDM,增加一个可插入后台模式指令激活后台处理的串行口作为在线仿真接口,在定义的执行点上,由在线仿真器将后台调试指令覆盖在原代码上,控制目标处理器的运行与停止。
目前国内生产的ICE大都是针对某种或某一系列处理器芯片,而缺乏通用性。
1.2通用ICE设计
如图1所示,本文设计了一个通用的在线仿真器,在面对不同的嵌入式处理器芯片时,只需重新向ICE的FPGA中下载相应芯片的调试IPcore,即可对该芯片进行在线仿真调试。从理论上说,只要开发出相应的调试IPcore,它就能够仿真任何一种处理器芯片。在用户看来,这个过程没有引起硬件环境和调试集成环境的变化,FPGA中IPcore的更改能够通过工具下载轻易实现,可以节约开发成本,缩短开发周期。
图片图1通用ICE的体系结构
图1中JTAGIPcore是最重要的部分,它被集成到FPGA中,用于调试某种MCU;通讯连接部分是指ICE和PC间的连接方式,用于数据的回显,可以选择各种连接方式,如以太网、串口、并口等;RAM是ICE的动态内存部分,用于存放ICE软件程序的数据段、堆栈段;存储器用来存放操作系统、网络协议栈以及ICE的软件控制程序,可以选用Flash、硬盘等非易失性存储介质;CPU可以选择硬核或者软核处理器,处理器速度应该比待仿真的嵌入式芯片快,否则会影响到调试速度。
图片图2JTAGIPcore设计模型
图2为JTAGIPcore的设计模型。其中TCK为时钟输入信号,由CPU分频产生;TMS、TDO、TDI直接连接到JTAG针脚上;BUSY信号可以连到一个发光二极管上表示IPcore是否正在工作。
2NIOS系统简介[4]
NIOS嵌入处理器是用户可配置的通用RISCCPU,它结合丰富的外设、专用指令和硬件加速单元提供片上系统可编程(SOPC)解决方案。NIOS处理器可以容易地与用户逻辑结合并使用SOPCBuilder工具编译,使用Quartus下载到FPGA里面。它的设计目的是低成本地提供相当灵活和功能强大的处理器解决方案,具有高度的系统可定制性、丰富的IPcore库[4]及多种网络协议栈等特性。
3设计与实现
3.1基本硬件结构
基于图1的结构,当需要调试不同的CPU时,仅需更换JTAGIPcore即可。本文采用Altera系统具体实现了一个这样的结构,如图3所示。
图3中列出了所需要的各类IPcore,其中大部分在ALTERA的开发包中可以找到[2],主要包括:
1)NIOSII/fCPU,50MHz,Altera提供的免费软核CPU
2)AMD29LV065D–120RFLASHMEMORY,8M,对各个IPcore的驱动、操作以及US/OS、lwip协议栈等程序代码都将放在这个Flash中。
3)1MSRAM,Flash中程序会在这片RAM内运行。
4)Ethernet接口,程序会使用这个以太网口与PC部分的IDE通讯。
5)ARM7TDMIJTAGIPcore,仿真调试IPcore,完成全部调试功能。
6)TCKGENERATOR,TCK脉冲产生逻辑。
使用Quartus的SOPCBuilder选择、修改IPcore并编译,即能生成一个包含所选IPcore的模块。
图3中的ARM7TDMIJTAGIPcore是要自主开发的IPcore,其内部逻辑是用Verilog语言实现的,然后按照ALTERAIPcore的标准编写IPcore描述文件,最后挂在三态总线上,形成一个ICE片上系统,用于调试ARM7TDMI芯片。
图2中的TCKGenerator是自行开发的一个时钟驱动逻辑,它利用NIOS的clock来生成一个TCK,作为时钟来驱动ARM7TDMIJTAGIPcore。它被做成一个小的功能模块通过PIO与三态总线通讯。
这个硬件结构很好地体现了SOPC的概念,所有的IPcore(包括ALTERA发布的和自主开发的)最后都生成到一片FPGA上,而一个片上系统就基本上包含了在线仿真器的绝大部分功能,任何硬件结构设计的变化都只产生在这片FPGA中。这也使得通用在线仿真器这个概念得以实现,对其他芯片的在线仿真,只需更改ARM7TDMIJTAGIPcore这个模块,再重新下载到FPGA中,便可以对另一种处理器芯片进行在线仿真了。
3.2软件结构
分区图片整个系统的软件结构如图4所示。本ICE的软件分为两个部分:一部分为PC机上的集成开发环境,也是用户唯一能操作的界面;另一部分为Flash中的程序,通过网络协议与PC部分通讯,将来自用户的命令翻译传送给ARM7TDMIJTAGIPcore,并将结果返回给用户界面。
PC上的调试集成开发环境在接受了用户输入后,将命令和参数转换为简洁的格式,通过TCP传递给Flash中的程序,然后等待返回结果。
Flash中程序接到命令和参数后,直接向总线发起数据传输,产生ARM7TDMIJTAGIPcore的使能信号,然后等待结果;ARM7TDMIJTAGIPcore收到总线数据和使能信号后开始工作,直至收到返回的结果,并将结果放到总线上传回,最终显示在用户界面上。
集成开发环境中还提供一个下载工具,针对不同的处理器芯片,下载相应的IPcore到FPGA中。
本系统设计的通用在线仿真器既可以使用上文所述的调试开发环境,也提供接口以方便地集成到已有开发环境中。
3.3软硬件协同设计
整个系统中,PC部分程序、Flash部分程序和JTAGIPcore三部分需要研发人员自主开发,涵盖了软件和硬件实现。整体设计时,会对软硬件进行功能划分,在具体开发过程中,这二者又是互相依赖的,并且同步开发,并根据实际需要随时互相转化,这与传统嵌入式开发模式有很大的不同。过于依赖硬件实现,会导致设计复杂,成本增加,开发周期过长,也难于维护,效率反而变低。而过于依赖软件实现,会浪费硬件的高效性能,使整体系统性能降低,没能充分发挥FPGA的优势。因此这三部分的分工是至关重要的:PC机的性能相对要优越得多,用户数据的录入,整理,最后结果数据的筛选、处理和显示都应当在这部分实现;Flash中的程序在50Mhz的NIOS、1M的RAM中运行,应当尽量避免任何数据计算、大量数据存取等操作,只应起到数据中转的作用;JTAGIPcore不应从总线接收过多的数据量,因此在本设计中采用了牺牲空间获得效率的办法,在IPcore中存储了JTAGTMS的序列表,总线只传送命令号,在IPcore存储的表中找到对应TMS序列后,立即在每个时钟周期向端口发出1位数据,速度得到很大的提高;如果将TMS序列表存于Flash中再由总线传向IPcore,虽然体现了更好的通用性,但效率的降低是远远不能接受的。
4结语
阐述了一个基于SOPC的通用在线仿真器的设计方案与基本实现过程。整个过程中既利用了一些现成的商业IPcore,也自主开发了IPcore,最终按照JTAGICE结构,配置实现了一种能支持多种嵌入式处理器应用开发的通用在线仿真器原型。本文介绍的设计实践过程体现了基于SOPC先进技术的嵌入式系统开发思路,开发出的通用在线仿真器也具有较大的应用价值。
本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
推荐访问: 在线 仿真 通用 调试器 设计