0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

支持片上测试和调试功能的在线调试模块的应用设计

电子设计 来源:微计算机信息 作者:杨金华;杨松华;张 2021-03-23 14:55 次阅读

1 引言

集成电路制造工艺的飞速发展推动了信息技术的发展,而信息技术的核心是微处理器技术。微处理器的总体发展趋势是功能越来越强大,工作频率越来越高。由于微处理器芯片从设计过程到生产过程中都可能产生一些缺陷,这些缺陷都将最终影响微处理器的功能和性能,为了保证微处理器功能的正确性,减少设计风险,对其进行测试和调试是必不可少的。但是微处理器的发展趋势也导致了微处理器芯片的测试与调试变得更加复杂,板级调试系统设计和调试软件的开发也越来越困难。特别是进入21世纪,集成电路进入了高度集成的系统芯片SoC(System-On-Chip)时代,而嵌入式微处理器是系统芯片的核心。传统的微处理器的调试方法采用监测并控制其地址与数据总线的方法。对于高度集成化的系统芯片,由于封装尺寸的限制,不可能将嵌入片内的微处理器信号引出片外,通过外部直接测试和调试。在板级,通过软件模拟、验证和分析等系统功能调试已经远远不能满足功能正确性调试和故障定位等要求,所以微处理器芯片,特别是嵌入式微处理器,硬件上支持片上测试和调试功能显得十分重要。

为了能让嵌入式微处理器的片上调试功能也能够像高级语言编程工具那样支持断点设置、单步执行、寄存器内容的查看和内存内容查看等功能,文章提出了一种在线调试模块设计,此设计为嵌入式微处理器增加了一些专用的调试引脚,通过这些引脚可以响应硬件和软件触发,提供开始/停止调试模试,单步调试操作以及程序执行的跟踪。有了这些引脚,还可以对微处理器做调试接口,提供更好的调试性能,查错功能,从基本停止/ 开始或单步执行到硬件、软件断点支持再到对数据存储区、程序存储区和SFRs的访问和修改以及对程序进行跟踪。

2 嵌入式微处理器的片上调试原理

为微处理器增加的调试引脚及其功能如表1所示。

支持片上测试和调试功能的在线调试模块的应用设计

可实现的调试功能:

⑴ 开始/停止debug模式

可以通过两种方式进入调试模式即硬件请求或者软件中断指令TRAP。硬件请求进入到debug模式将发出一个DebugReq信号。这个信号在核运行的每个指令操作的最后一个周期的第一个阶段进行采样,若是采样信号为高,核将完成当前指令,插入一个NOP指令。在NOP指令的第一阶段的最后核将发出一个DebugAck信号然后进入debug模式。它的时序图见图1。当TRAP指令被执行的时候,核只是简单的发送一个DebugAck信号,然后在这个单一周期指令第一个阶段的结束进入debug模式。

在debug模式,核在每个机器周期的第一阶段的最后采样DebugReq信号,当DebugReq信号为高之后采样一个机器周期的信号,如果为低则离开调试模式(置DebugAck信号无效)。它的时序图见图2。注意:如果在TRAP下进入调试模式,外部硬件必须在重新置信号为低之前置DebugReq信号为高一个机器周期才可以离开试模式。

图1 进入debug模式的时序图 图2 退出debug模式的时序图

①DebugReq采样信号为高电平。① DebugRep采样信号为高电平。

②微处理器内核进入调试模式,置DebugAck 为高电平。 ② DebugRep 采样信号为低,CPU核置DebugAck为低并离开调试模式。

其中 PROGA 为程序存储器的地址总线,PROGA_EN 为程序存储器的地址总线使能。它们是微处理器内核已经设计好的。

⑵单步调试

在调试模式下,把DebugReq 置成无效的低信号,微处理器执行一个用户指令,等待DebugAck 信号无效的时候指出离开了调试模式,再把DebugReq 信号置成高电平。

⑶程序执行的跟踪信号 DebugPFetch 和Debug Vector 支持程序追踪。当程序代码在下一个上升缘被读取的时候DebugPFetch信号发出,它并不发送程序数据提取的信号。(例如使用MOVC 指令读取数据)。当在程序计数器里的下一个代码表现为一个间断性程序的时候DebugVector 被发送,(例如Jump,Call 或者Return 指令)。

⑷外部数据存储器、SFR、内部数据存储器的读和写

提供了一个时序发生器一个RAM,它包含了一些访问存储器的指令。当一个时序开始的时候,DebugStep信号发送直到时序结束。因此时序指令以全速的处理器速度运行。在微处理器程序输入端设计了一个多路选择器允许时序发生器的指令给内核执行。时序发生器中的指令总是把想访问的存储器和SFRs 中的数据加载到累加器A 中,因此只要把XRAMD0 总线的状态存储到结果储存器中,然后通过JTAG 接口把结果储存器读出就可以得知存储器和SFRs 中的数据。给出一个读内部数据存储器的时序发生器中的程序。其中Temp1,Temp 是时序发生器中定义的存放中间数据的寄存器。

3 微处理器的在线调试模块的结构设计

在微处理器内核中设计的调试部分为DebugReq 信号锁存器、调试状态机、操作码指示器。

调 试 状 态 机 是 有 DebugReq 、DebugAck、DebugStep、TRAP 信号来控制的。它有4 种状态:00、01、10、11。00 表示用户状态。01 表示调试开始状态,此状态时已检测到DebugReq 信号有效,插入NOP 指令。01 表示单步调试模式,已检测到DebugStep 信号有效。11 为调试模式。状态机为10、11 时都要置DebugAck 为有效信号,进入Debug 模式。

操作码指示器是有指令译码器和状态机译码器控制的。当程序代码在下一个上升缘被读取的时候(而不是程序数据的读取), 操作码指示器就置DebugPFetch 为有效信号,以实现对程序的跟踪。当操作码指示器检测到程序计数器为不连续数值时置DebugVector 为有效信号。

外部数据存储器、SFR、内部数据存储器的读和写是基于1149.1 JTAG 的设计。IEEE 1149.1 JTAG 接口是专门为集成电路测试和电路板系统测试制定的国际标准。TDI(数据输入),TMS(TAP 模式选择),TCK(测试时钟输入),TRST(测试接口复位),TDO(数据输出)是JTAG 的5 个外部管脚。调试部分电路为:调试扫描链、调试数据寄存器、指令译码器、时序发生器和多路选择器(MUX)。时序发生器是一个RAM,它包含了一些访问存储器的指令。指令010110xx 表示启动时序发生器,把预先存好的访问程序送到微处理器的程序输入端(PROGDI),微处理器执行这些程序,实现对存储器、SFR 的访问。指令译码器对调试指令进行译码,并发出调试控制信号,比如:设置DebugReq 为有效,进入Debug 模式;启动时序发生器,控制多路选择器(MUX),让PROGDI 上的信号为时序发生器中的指令。调试数据寄存器是为存放中间数据和访问结果数据的。调试扫描链对中间数据和访问结果进行查看。

4 结论

此设计给微处理器内核增加了一些调试引脚。实现了开始/停止调试模试,单步调试操作以及程序执行的跟踪的调试功能。这些引脚使内核具有很好的可扩张性,可对芯片增加调试接口,实现更强大的调试功能。基于1149.1 JTAG 接口的对存储器、SFR 访问,既可以使芯片原有的测试功能不受影响,又可以节省硬件,减少开销。带Debug 模块的微处理器在SMIC 的0.25um 标准单元库映射综合后,可工作在120MHz。仿真的结果表明,扩充Debug 功能的JTAG 接口所增加的芯片面积很少,而且在对存储器、SFR 进行访问时不影响处理器的工作速度。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    452

    文章

    50117

    浏览量

    420325
  • 嵌入式
    +关注

    关注

    5056

    文章

    18950

    浏览量

    301472
  • 微处理器
    +关注

    关注

    11

    文章

    2241

    浏览量

    82241
收藏 人收藏

    评论

    相关推荐

    基于SoPC的通用在线调试器设计

    目前,国内生产的部分在线仿真调试器可以对部分嵌入式芯片进行仿真调试。但从本质,这些仿真调试器无法对所有带
    发表于 01-16 11:02 851次阅读
    基于SoPC的通用<b class='flag-5'>在线</b><b class='flag-5'>调试</b>器设计

    接口调试测试工具postman安装说明与基础功能

    postman是一款支持http协议的接口调试测试工具,其主要特点就是功能强大,使用简单且易用性好 。
    发表于 07-15 09:24 1078次阅读

    单片机串口模块调试方法

    笔者在调试某Cortex-M3内核单片机时遇到一个问题,此单片机不具备在线仿真功能,因此调试代码时只能使用UART输出Log的方式调试
    发表于 07-28 15:48 1446次阅读
    单片机串口<b class='flag-5'>模块</b><b class='flag-5'>调试</b>方法

    英创Eclipse支持在线调试Linux应用程序

    加快了应用程序的开发进度。除此之外,为方便习惯在图形界面进行调试的客户,此Eclipse也提供了在线调试功能,只要进行相应设置,就能在Eclipse中
    发表于 03-24 16:28

    玩转Zynq连载5——基于Vivado的在线板级调试概述

    我们看看Vivado中支持的一些重要调试方式。ILA(Integrated LogicAnalyzer),即内嵌逻辑分析仪。可以在FPGA器件对已实现的设计进行板级在线
    发表于 05-24 15:16

    一种嵌入式微处理器中的在线调试模块设计

    文章提出了一种嵌入式微处理器的在线调试模块。这个模块可以用较少的硬件开支实现一些强大的调试功能
    发表于 08-14 09:17 24次下载

    嵌入式处理器在调试功能的设计

    以 龙芯1号 处理器为研究对象,探讨了嵌入式处理器中在调试功能的设计实现方法。大大方便了软件开发与系统调试
    发表于 06-29 17:45 48次下载
    嵌入式处理器在<b class='flag-5'>片</b><b class='flag-5'>调试</b><b class='flag-5'>功能</b>的设计

    总线实现内硬件调试支持单元设计

    本文所提出的一种硬件调试单元完全自主实现,且顺利通过Modelsim 的功能仿真,所以它不但能够有效的完成对处理器的诊断与调试,而且其拥
    发表于 08-11 11:04 1768次阅读
    总线实现<b class='flag-5'>片</b>内硬件<b class='flag-5'>调试</b><b class='flag-5'>支持</b>单元设计

    调试模块(可按键调试

    飞思卡尔单片机 调试模块(可按键调试)源程序
    发表于 01-13 15:18 11次下载

    总线实现内硬件调试支持单元设计

    系统的出现使得芯片可以实现更加复杂的功能,获取更高的性能,但同时其内部信号也变得越来越难以观察和控制,相应的测试调试工作也遇到了难以克
    发表于 12-01 02:01 377次阅读
     总线实现<b class='flag-5'>片</b>内硬件<b class='flag-5'>调试</b><b class='flag-5'>支持</b>单元设计

    基于双端口RAM中多行代码设置断点功能实现新型通用调试模块的设计

    执行、查看处理器内部状态、查看和修改Memory空间中的数据等基本的在线调试功能。上述基本的在线调试功能
    发表于 03-10 10:43 871次阅读
    基于双端口RAM中多行代码设置断点<b class='flag-5'>功能</b>实现新型通用<b class='flag-5'>调试</b><b class='flag-5'>模块</b>的设计

    FPGA开发在线调试和配置过程

    在线调试也称作板级调试,它是将工程下载到FPGA芯片后分析代码运行的情况。
    的头像 发表于 11-01 10:00 4426次阅读
    FPGA开发<b class='flag-5'>在线</b><b class='flag-5'>调试</b>和配置过程

    PLC编程中模拟调试在线调试

    plc应用程序的调试可分为模拟调试在线调试两个步骤。 1.模拟调试 模拟调试是指在没有输出设备
    发表于 01-06 11:28 5532次阅读

    EB-USB-DA 调试适配器带编程功能调试仿真器用户手册

    EB-USB-DA 调试适配器带编程功能调试仿真器用户手册
    发表于 04-21 19:18 0次下载
    EB-USB-DA <b class='flag-5'>调试</b>适配器带编程<b class='flag-5'>功能</b>的<b class='flag-5'>片</b>上<b class='flag-5'>调试</b>仿真器用户手册

    PLC远程调试模块是什么?PLC远程调试模块功能

    PLC(可编程逻辑控制器)远程调试模块是一种设备或软件功能,它允许工程师或技术人员在远离实际现场的情况下,通过网络对PLC进行编程、监控、故障诊断和参数调整。这对于分布广泛或难以直接接触的工业
    的头像 发表于 05-22 14:53 622次阅读
    PLC远程<b class='flag-5'>调试</b><b class='flag-5'>模块</b>是什么?PLC远程<b class='flag-5'>调试</b><b class='flag-5'>模块</b>的<b class='flag-5'>功能</b>