一种用于ice的mcu仿真方法

文档序号:9579436阅读:1750来源:国知局
一种用于ice的mcu仿真方法
【技术领域】
[0001] 本发明属于仿真器的技术领域,特别涉及集成模拟电路仿真功能的ICE在线仿真 器。
【背景技术】
[0002] ICE在线仿真器(In-CircuitEmulator,ICE)是嵌入式系统领域使用得最多,也 是功能最强大的调试器之一。ICE是一个用来设计其他计算机系统的计算机,它代替了目标 机上物理的处理器或MCU,其表现与被代替的目标机处理器完全一样,但是他允许用户查看 处理器内部的数据或代码并控制CPU的运行。一个在线仿真器通常由仿真探头和仿真器主 板组成。传统的ICE技术有B0ND0UT专用仿真芯片技术、HOOKSI/O复用的仿真技术等,但 这些技术都无法实现0ΤΡ类型的MCU仿真,以及存在成本高、实时性差等各种问题。目前主 流ICE大多是采用FPGA实现,这样对于MCU的数字部分,如CPU、串口、SPI等串口外设可以 轻松的在FPGA重构。对CPU进行改造,并在FPGA上集成类似SWD、JTAG等调试协议的处理 模块,即可以实现MCU的在线仿真。如专利1提出S0C仿真架构。
[0003] 然而,目前MCU的集成度越来越高,如各类ADC、IXD驱动、LED驱动等模拟模块。这 些模拟模块无法在FPGA上实现,这对于基于FPGA的ICE来说是非常棘手的问题。如何保 证模拟仿真的实时性和准确性,如何保证尽可能的集成所有模拟电路仿真等,成为迫切要 解决的技术问题。

【发明内容】

[0004] 为解决上述问题,本发明的目的在于提供一种用于ICE的MCU仿真方法,该方法能 够保证仿真实时性和准确性,还可以集成多个模拟电路仿真。
[0005] 为实现上述目的,本发明的技术方案如下。
[0006] 一种用于ICE的CS_SIM(ChipseaSimulation)仿真方法,该方法通过CS-SIM总 线、CS-S頂主模块和CS-S頂从模块来实现,其中ICE的CPU以及CS-S頂主模块集成在FPGA 中,CS-S頂从模块集成于目标芯片中;CS-S頂主模块通过监控CPU的SFR总线,在CPU读写 模拟相关寄存器的同时,将SFR信息通过CS-S頂总线写入到目标芯片当中;目标芯片中通 过CS-S頂从模块接收SFR信息完成SFR配置,最终将模拟输出映射到10 口上,实现芯片内 部数模接口到ICE数模接口的等效替换。它的本质是使用实际的目标芯片来实现ICE模拟 电路的仿真。
[0007] 所述CS-S頂总线执行的是CS-S頂总线协议,具体地说,所述CS-S頂总线包含使 能线sm_ENB、时钟线sm_CLK以及数据线sm_DATA。每次发送数据时,要先将使能线拉低, 然后将数据高位在左的方式移位输出。1次传输包含2个字节数据。其定义如下:
[0008]
[0009] 其中,RWF:读写控制位,1代表写,0代表读;ADDR:读写地址位,即CS-S頂主模块 需要发送和读取SFR的地址;DATA:读写数据位,即CS-S頂主模块要读写的SFR数据。 [0010] 通过发送2个字节组成的命令包,可以完成对芯片所有寄存器的读写操作。目标 芯片端接收到1个命令包后,首先判断读写标志位。如果是写操作,则通过间接寻址的方式 将SFR数据写到相应的地址中。如果是读操作,则通过间接寻址的方式将SFR数据从相应 的地址中读出,然后串行输出到SHLDATA。
[0011] 优选地,数据传输采用一种主从同步模式,即CS-S頂主模块和CS-S頂从模块同步 运行。主从同步模式下能保证模拟电路与CPU的同步,同时在CPU本身时钟频率不高的情 况下实现较高的数据传输速率。
[0012] 同时,采用3线串行协议。3线包含使能线、时钟线和数据线。串行协议能尽可能 的减少PIN脚的占用。这使得本身引脚紧张的MCU也能实现兼容该模式,提高了ICE的扩 展性。同时片选线也保证了 1对多的模式能够实现。
[0013] 所述CS-S頂主模块在FPGA中实现,它通过监控CPU内核SFR总线来完成SFR的 分发。CS-S頂主模块和CS-S頂从模块需要匹配,如果各目标器件的CS-S頂从模块是兼容 的,则只需要一个CS-S頂主模块完成SFR的传输,否则需要多个CS-S頂主模块分别对应其 匹配的CS-SIM从模块。
[0014] 所述CS-S頂主模块通过监控仿真CPU的SFR总线,实时的判断是否需要将该SFR 同步写入到目标芯片当中。由于CPU运行速度较快,一般8位MCU时钟频率能达到32MHz。 而CS-S頂从模块如果采用硬件集成的方式,最高也只有1/4的时钟频率,还要实现并行到 串行。因此,CS-SIM主模块内部需要插入FIFO存储器(FirstInputFirstOutput),完成 数据缓冲。
[0015] 所述CS-S頂主模块包含1个FSM状态机、1个FIFO存储器、1个并转串的sim_ master模块。SFR总线接入FIFO存储器,FIFO存储器又与sim_master模块进行连接,FSM 状态机则分别与FIFO存储器和sim_master模块进行通讯,当CPU在操作SFR时,CS-S頂主 模块将需要的SFR信息写入到FIFO存储器当中。如果FIFO非空,FSM状态机一直读取SFR 信息并通过simjnaster模块串行的移出。随后再读回进行比较确认写入正确。
[0016] 所述CS-S頂从模块在各个目标芯片中实现。它即可以是一块芯片集成的硬件外 设模块,也可以是运行在目标芯片中的监控程序。不管哪种形式,都必须要满足CS-S頂协 议。
[0017] CS-S頂从模块可以采取硬件或者软件的方式实现。硬件实现方式如下:CS_S頂从 模块包含1个FSM状态机处理CS-S頂协议,然后SiPo模块在通过内核的SFR总线写入到 相对应的外设当中。为了避免总线冲突,目标芯片必须要配置成仿真模式,使得内核CPU释 放对SFR总线的控制权。
[0018] 具体的控制流程如下:
[0019] 101、目标芯片上电后即配置成仿真模式。仿真模式下,模拟电路的数模接口被映 射到10 口。
[0020] 102、检查SHLENB。先等待SHLENB为高,再等待SHLENB为低,以检查是否出现 下降沿。否,则返回继续检查,是则进行下一步。
[0021] 103、然后接收地址包。接收地址包实际上是连续读取8个Sm_DATA。每次读取都 要先检测到SIM_CLK出现了上升沿,然后通过对该字节的最高位RWF进行判断,可以确定当 前CS-S頂主控方式要写SFR还是读SFR。
[0022] 是,则进入104步骤,否则进入105步骤。
[0023] 104、接收数据包。在接收数据包时,同样是连续读取8个数据。然后将数据写入 SFR〇
[0024] 105、发送数据包。在读取SFR后,需要先发1个数据到Sm_DATA,然后检测Sm_ CLK是否出现上升沿,直到数据发送完毕。
[0025] 106、检查Sm_ENB。最后还要检查Sm_ENB出现了上升沿后,再回到检查Sm_ENB 出现下降沿的状态,一直循环下去。
[0026] 是出现上升沿则回到102步骤进行循环,否则重新检查Sm_ENB。
[0027]总之,本发明采用CS-S頂主模块与从模块的结构形式,将从模块与目标芯片结 合,且数模接口采用直接映射到10的方式,所以仿真精度的问题只与SFR写入延迟相关,能 够保证仿真实时性和准确性,还可以集成多个模拟电路仿真。
[0028] 且本发明已经实现Sigma-Delta ADC、SAR ADC、LCD、LED等多种模拟电路的同时 仿真。其中,SAR ADC的转换速率差异在10us以内,其他模块都能与实际结果一致。
【附图说明】
[0029] 图1是本发明所实施的结构示意图。
[0030]图2是本发明所实施的CS-S頂主模块的结构示意图。
[0031] 图3是本发明所实施的CS-S頂总线协议波形图。
[0032] 图4本发明所实施的CS-S頂从模块的结构示意图。
[0033]图5是本发明所实施的软件控制流程图。
【具体实施方式】
[0034] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对 本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并 不用于限定本发明。
[0035] 请参照图1所示,为本发明所实施的结构框图,本发明提出一种用于ICE的CS-S頂 仿真方法,其是通过CS-S頂总线、CS-S頂主模块以及CS-S頂从模块来实现的。它的本质 是使用实际的目标芯片来实现ICE模拟电路的仿真。如图1所示,ICE的CPU以及CS-S頂 主模块集成在FPGA中,CS-S頂从模块集成于目标芯片中。CS-S頂主模块通过监控CPU的 SFR总线,在CPU读写模拟相关寄存器的同时,将SFR信息通过CS-S頂总线写入到目标芯片 当中。目标芯片中通过CS-S頂从模块接收SFR信息完成SFR配置,最终将模拟输出映射到 10 口上,实现芯片内部数模接口到ICE数模接口的等效替换。
[0036] 一、CS-S頂总线协议。
[0037] 如图3所示,cs-s頂总线包含使能线Sm_ENB、时钟线Sm_CLK以及数据线sm_ DATA。每次发送数据时,要先将使能线拉低,然后将数据高位在左的方式移位输出。1次传 输包含2个字节数据。其定义如下:
[0038]
[0039] 其中,RWF:读写控制位。1代表写,0代表读。
[0040] ADDR:读写地址位,即CS-S頂主模块需要发送和读取SFR的地址。
[0041] DATA:读写数据位,即CS-S頂主模块要读写的SFR数据。
[0042] 通过发送2个字节组成的命令包,可以完成对芯片所有寄存器的读写操作。芯片 端接收到1个命令包后,首先判断读写标志位。如果是写操作,则通过间
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1