论文部分内容阅读
随着微处理器内部设计的复杂度越来越高,在芯片级和板级测试中,软件模拟、软件监控和软件分析等调试手段已经远远不能满足功能正确性调试和故障准确定位等要求,所以微处理器支持硬件片上测试和调试就显得十分重要。现阶段,嵌入式系统开发与实现已逐步进入利用SOC(System On Chip)片上技术进行软硬件协同设计的阶段。高集成度、高时钟频率的高性能嵌入式微处理器芯片在设计时大多引入片上调试逻辑。调试器在系统开发过程中变得愈加重要,越来越多的微处理器集成了片上调试支持结构来减轻嵌入式系统软件开发人员的负担。
本文首先介绍嵌入式微处理器调试的研究现状、现在常用的调试方法和手段以及被业界广泛接受的应用于芯片级和板级测试和调试的JTAG标准。分别比较了软件调试手段和硬件调试手段的优缺点以及硬件调试手段中最常用的在线仿真和片上调试技术的差别,从而得出针对采用FPGA(Field Programmalbe Gate Arrayl器件的目标处理器平台,集成片上调试器更有利于实现目标处理器的调试。
通过对各调试手段方法以及JTAG标准的研究,为自主设计的应用于教学的一款CISC处理器设计了一个基于JTAG标准的片上调试器。处理器和片上调试器的设计采用Verilog硬件描述语言,并在FPGA平台上实现。该片上调试器不仅提供了机器指令级单步、断点调试、程序计数器(PC)的设置以及处理器复位等常用调试功能的硬件支,还支持微指令级的单步、断点调试,这使得调试更加灵活,在教学实验应用中可以很大程度的促进学生对CISC处理器工作原理的掌握。
本设计采用边界扫描结构来实现寄存器的读出和写入操作,从而实现信息的传递。根据不同的调试需要,本设计构建了三条扫描链,分别用于读取处理器内部寄存器和总线信息、设置硬件断点值和设置程序计数器的值。采用边界扫描技术使得片上调试器可以直接与处理器内部的硬件逻辑实现信息传递。在使用FPGA的硬件课程实验平台中,传统的信息传递通常都需要附加单片机等构成的控制台,本文通过自定义的扫描链结构,不需要附加控制台,并且只需要利用FPGA的普通IO口即可实现信息的传递。构建的扫描链采用独立的扫描通路,不会对处理器本身做任何修改。在实践教学过程中,这些扫描结构对于学生是透明的,学生只需要关心处理器本身的结构,使得学生将更多的注意力集中到处理器原理的理解上。
为了能够验证片上调试器的调试功能,设计一个验证系统。采用常用的USB与主机进行通信,这就需要设计USB-JTAG协议转换器,负责将从USB接收到的数据按照一定的协议解析产生JTAG信号。另外为了能够在设计的过程中可以更好的观察和验证系统的运行情况,设计了一个上位机软件即片上调试器的PC机调试软件,该调试软件负责发送调试指令,接收片上调试系统返回的目标处理器当前状态并进行显示。