微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于SOPC的通用型JTAG调试器的设计

基于SOPC的通用型JTAG调试器的设计

时间:01-07 来源:互联网 点击:

SOPC技术的发展,给仿真器指出了新的发展方向。所谓SOPC技术,就是指用可编程技术将整个系统放在一块硅片上。在传统设计中电路级相互独立的各个系统被集成到一块FPGA芯片中。

SOPC的可重用性是一种先进的设计思想。为了降低用户的负担,避免重复劳动,将一些在数字电路中常用但比较复杂的功能模块,比如SDRAM控制器等,设计成可修改参数的模块,用户在设计系统时可以直接调用这些模块。这些特定的功能模块被称为IPcore(知识产权核)。由于IPcore通常是很成熟的,因此降低了开发风险。

本文利用SOPC技术的特点,设计一种通用型调试器。根据待调试目标板的CPU型号,将相应的调试IPcore和其他通用IPcore一起编译生成一个嵌入式调试系统,下载到FPGA上,实现一个通用型调试器。在使用同一个硬件系统的情况下,可以选择不同的调试IPcore来调试不同的CPU,而不同的IPcore可以方便的互相替换。该方法在设计灵活性、开发成本、开发周期、工作性能等方面都具有优越性。具体的实现采用了Cyclone开发板和Altera开发套件。

1 JTAG调试原理

目前在线仿真调试器中使用最多的调试方法都是基于JTAG标准。1986年,联合测试行动组发表了最早的边界扫描测试规范(Boundary Scan Testing),经不断改进,1990年被批准为IEEE Std 1149.1a标准,简称JTAG标准。现在大多数复杂的IC芯片都带有JTAG调试接口。本文所讨论的调试方法也基于JTAG标准。下面首先简单介绍一下JTAG调试原理。

JTAG调试原理的基础是边界扫描测试。它通过在芯片的每个I/0脚附加一个边界扫描单元(BoundaryScan Cell,BSC)以及一些附加的测试控制逻辑来实现。每个BSC有两个数据通道:一个是测试数据通道——测试数据输入TDI(Test Data Input)、测试数据输出TD0(Test Data 0utput);另一个是正常数据通道——正常数据输入NDI(Normal Data Input)、正常数据输出ND0(Normal Data Output)。在正常工作状态,输入和输出数据可以自由通过每个BSC,正常工作数据从NDI进,从NDO出。在测试状态,可以选择数据流动的通道:对于输入引脚,可以选择从NDI或从TDI输入数据;对于输出引脚,可以选择从BSC输出数据至NDO或至TDO。芯片输入输出引脚上的边界扫描寄存器单元可以相互连接起来,在芯片周围形成一个扫描链。利用边界扫描链就可以控制芯片的输入,观察芯片的输出。一般来说,芯片都提供了若干条扫描链来完成测试功能。例如ARM7TDMI核提供了3条扫描链。

JTAG控制器主要由3部分组成:测试端口控制器(Test Access Port,TAP)、指令寄存器和数据寄存器。其中,TAP控制器是JTAG的核心控制器,需要以下5个控制信号:TCK(边界扫描时钟)、TMS(JTAG测试模式选择)、TDI(串行边界扫描输入数据)、TDO(串行边界扫描输出数据)和TRST(JTAG测试逻辑复位)。正是通过TAP控制器状态的不断变化,JTAG控制器得以控制CPU的运行。TAP控制器的状态机如图1所示。

2 系统设计与实现

2.1 硬件设计与实现

本文采用A1tera的FPGA器件实现了图2所示的硬件结构。

上图列出了所需要的各类IPcore,其中大部分在Altera的开发包中可以找到,主要包括:

Nios II/f CPU,50 MHz,Altera提供的免费软核CPU。

Avalon总线,用于数据通信。

Flash控制器,用于控制和操作Flash芯片。Flash芯片中静态存放操作系统、1wIP协议栈及其他调试代码。本系统中使用的Flash芯片为Am29LVl60D,容量为2MB。

SDRAM控制器,用于控制和操作SDRAM芯片。SDRAM芯片用于动态执行调试程序。本系统中使用的SDRAM芯片为三星公司的K4S640432,容量为8 MB。

Ethernet控制器,用于控制和操作网卡芯片。仿真器使用这个以太网口与PC部分的集成开发环境通信。本系统中使用的网卡芯片为LAN91C111。

ARM7TDMI JTAG IPcore,仿真调试IPcore,需要自主开发。其内部逻辑用Verilog语言实现,然后按照Altera IPcore的标准编写IPcore描述文件,最后挂在三态总线上,完成全部调试功能。

TCK发生器,TCK脉冲产生逻辑,需要自主开发。它利用Nios的时钟生成TCK信号,作为时钟来驱动ARM7TDMI JTAG IPcore。它被做成一个小的功能模块,通过PIO与三态总线通信。

上述所介绍的IPcore使用Altera公司的开发工具Quartus II编译,最后下载到Altera FPGA中。本系统使用的CPGA芯片是Cyclone系列的EPlCl2。该芯片包含12 060个逻辑单元,具有239 616位RAM,片上集成2个锁相环,最大用户I/O引脚达到249个。

该硬件结构很好地体现了SOPC的概念,所有的IPcore(包括Altera公司发布和自主开发的)集成在一片FPGA上

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top