基于FS2在系统分析仪实现复杂SoPC系统的方案设计

作者:Judd Heape,Neal Stollon将可编程逻辑和CPU子系统集成在同一芯片上,使系统设计者可以在一定范围内决定某些功能的实现方式。AES高级加密标准算法的硬件实现就是这样一个特殊的应用例子。加密是互联网协议安全规范(IPsec)的基本模块,提供增强无线连接安全性的IEEE802.11i规范也采用AES作为其加密算法。因此,传统通信设备供应商需要添加AES模块,以提供更全面的VPN服务。由于AES算法直接面向位操作,因此可以非常高效地在可编程逻辑中实现。

分析仪及其工作环境

FS2(第一硅解决方案)公司的系统内分析仪支持基于QuickLogic公司的单片系统硬件和软件的开发嵌入式标准产品QuickMIPS。该分析仪除了完全支持QuickMIPS芯片上MIPS处理器的所有调试功能外,还内置了可配置逻辑分析监控单元(CLAM),可以从片外跟踪触发QuickMIPS可编程逻辑的1024个指定信号。FS2检测器可以通过14针EJTAG调试连接器和10针(或38针)跟踪电缆连接到目标系统。QuickMIPS可编程逻辑中的片上仪器应用模块(OCI)通过FS2跟踪电缆与用户指定的内部信号相连,用于跟踪和触发。

除了可编程逻辑,QuickMIPS还集成了一个32位MIPS 4Kc处理器和一系列片内外设。这些片内外设包括两个以太网接口、两个串行端口、一个32位66MHz PCI主从接口、一个SDRAM和SRAM控制器、四个定时器和一个片内SRAM。所有外设、处理器和可编程逻辑通过AMBA总线连接(见图1)。AMBA总线为这些连接提供了五个片上可用端口,包括一个高级高性能总线(AHB)主/从接口和三个高级外设总线(APB)从接口。以可编程逻辑实现的任何电路都可以通过上述片上AMBA总线端口与处理器和片上外围设备连接。设计人员可以根据实际需要使用上述五种端口的不同组合来连接电路。QuickMIPS的片内MIPS处理器还支持增强型JTAG(EJTAG)接口。EJTAG接口不仅支持停止、单步、重启、软件断点等处理器调试功能,还包括指令/数据的虚拟地址、硬件断点和支持外部EJTAG检测器的TAP端口。

图1 quick MIPS芯片可用资源框图

图2硬件/软件交互触发示意图

AES应用示例

软硬件结合的AES算法主要由查找表和异或逻辑组成,非常适合用可编程逻辑实现。本文采用可编程逻辑实现AES的编译码算法,密钥表和轮LUT由CPU生成。一旦CPU完成查找表的生成,它就可以使用codec函数将任意大小的输入明文编码成连续的密文流以供输出。

基于连续消息流的数据吞吐量,DMA引擎也内置在可编程逻辑中,用于从/向AES内核下载/上传消息,并直接处理与系统存储器的通信。DMA引擎可以操作任何连接到QuickMIPS器件的存储器,包括片内SRAM和片外SRAM/SDRAM。使用DMA引擎可以避免无用的等待期,从而高效地使用AES核进行连续的编解码操作。

DMA引擎使用AMBA总线AHB主控制器,用于连接简单的AES内核数据输入/输出接口和相对复杂的AHB主接口。它还包含两个12832位FIFO,用于AMBA总线和AES模块之间的异步数据缓冲,以保证当AMBA总线受到CPU工作频率限制时,AES仍能独立工作在最佳频率。

存储源地址、目的地址、DMA传输块大小、DMA传输使能和AES编解码器模式转换等控制信息的寄存器也可以通过可编程逻辑实现。CPU可以使用它们来设置DMA引擎和配置AES内核。这些控制寄存器通过APB从机接口连接到AMBA总线。

除了连接DMA和AES的控制寄存器之外,APB接口还可以用来加载AES内核中具有不同查找表数据的RAM模块。这些查找表中的静态模式和密钥调度用于AES算法的不同轮次,并经过系统调试。

由于硬件和软件的调试方法往往不到位,如时间同步、调试方法不同、调试时难以交互沟通等,所以调试一个由硬件/软件模块组成的系统是非常困难的。基于QuickMIPS的FS2软硬件联合调试方案可以有效解决上述问题(见图2)。

EJTAG检测器通常用于监控CPU 的执行过程。然而,一旦集成系统被拆分成具有交互操作的硬件/软件模块,在缺乏有效的硬件监控手段的情况下,调试硬件/软件模块之间的数据交换过程的复杂度将会显著增加。

在软硬件协同的AES解决方案中,EJTAG检测器可用于监控可编程逻辑中CPU生成密钥调度和复制RAM模块数据的过程。此外,EJTAG还可以监控CPU设置DMA引擎的进程。EJTAG检测器的强大功能,保证了用户在CPU读写可编程逻辑时,可以监控源地址、目标地址和数据传输。一旦AES系统的硬件实现,CLAM可以通过AMBA总线在可编程逻辑上监控CPU的操作。在这里,CLAM将监控所有相关的AMBA总线信号,包括AHB主接口和APB从接口。被监控的总线调用事件包括:通过APB从接口加载RAM模块中的关键调度表和轮表,设置DMA地址和控制寄存器;明文由DMA通过AHB主接口从远程AMBA从设备传输到AES核,密文由AES核传输到远程AMBA从设备。

一旦OCI模块在可编程逻辑中实现,通过监控AMBA总线信号,AMBA总线上的任何事件都可以被CLAM准确地识别、触发和捕获。能够准确捕捉AMBA总线信号状态的触发器可以定义为AMBA总线信号的任意组合。例如,如果对特定AMBA地址的写操作被设置为触发事件,则可以捕获加载的RAM模块的状态;当触发点放在APB 可以捕获寄存器空间的s选择信号、DMA地址和控制寄存器的设置状态。最后,通过将触发器设置到内部AMBA仲裁单元给出的AHB主接口,可以捕获DMA传输事件。用户可以根据这些抓拍结果判断AMBA公交的运营是否符合要求。

AES应用模块的调试需要监控以下信号:AES内核的明文输入、轮表RAM模块的索引(地址)输入和数据输出、计数器输出的当前轮数和每个轮中的数据状态、密钥调度RAM模块的数据输出和128位累加器的输出。

通过OCI锁定监控上述信号,可以详细观察AES内核的运行情况。由于可以在不同的跟踪深度同时监控数百个信号,用户可以毫无困难地捕捉和观察AES编码/解码的所有44个周期。例如,如果大多数AES转换执行正确,但在某个输入消息模式下发现意外结果,这种情况下,CLAM可以在特定消息进入AES引擎时配置触发。虽然在触发产生前后会有数百次AES转换,但CLAM可以实时选择所需的事件,因此无需向系统提供输入数据。

交互式触发器

触发是EJTAG调试器和CLAM协同调试解决方案最重要的特性。互动可以分为两种方式。CLAM的触发事件可以中断CPU执行的相应一行代码,CPU执行中的断点也可以触发CLAM事件。

上述第一交互触发事件可以应用在软硬件协同的AES系统调试过程中,例如查找写入关键调度RAM的异常数据时。如果已知异常数据正在被写入RAM,并且CLAM可以观察到并触发该数据,则它可以在数据被写入时导致CPU暂停执行。因为生成密钥表并加载到RAM的过程是由CPU控制的,所以异常数据进入AES核心硬件的时刻可以在代码中找到。这样,用户就可以查询该时刻内存和寄存器中的数据,一边调试软件算法,一边在硬件上观察结果。

第二种情况适用于用户打算在指定的软件断点处观察可编程逻辑中正在传输的数据。例如,当CPU正在处理要写入RAM的数据表时,用户可能需要在数据传输到硬件之前执行一些字节交换操作。在调试过程中,用户可以在源代码的字节交换部分设置断点,或者在结果输出到AMBA总线时设置断点。当字节交换的结果写入硬件部分时,可以通过AMBA从接口观察到数据。虽然没有设置硬件触发器,但是软件中的断点可以捕获当前的硬件状态。

标签

随着嵌入式产品平台的快速发展,需要开发相应的精确、全面的调试工具。对于CPU和可编程逻辑共存的SoPC来说,传统的调试CPU的JTAG方法和FPGA的逻辑分析,更重要的是还需要一个交互式的软硬件环境来快速隔离、识别和调试复杂的问题。理想的SoPC系统分析工具应该能够处理上述问题,并提供监控系统内部总线事件的能力。

为了防止调试工具干扰系统的正常运行,对系统内部总线事件和FPGA内部信号的监视、跟踪和触发不得暂停或干扰CPU 的工作。因此,能够独立或协同调试CPU和FPGA的工具是目前最有效的SoPC系统分析方法。

本文结合FS2公司QuickLogic公司的s在系统分析器和QuickMIPS器件,以及硬件和软件系统的AES引擎的例子提供了一个精彩的案例平台,充分体现了这些先进的调试技术对复杂SoPC系统设计和分析的重要性。