一、USB技术背景与片上系统 USB是Universal Serial Bus的英文缩写,即通用串行总线接口。它为以上问题提供了一种解决途径,是一种新的外围设备连接技术,它为个人电脑与其外围设备之间的连接提供了一种标准化、单一化的接口。其主要的特征是高速、双向、同步、低成本、可动态连接,并且可以与当今乃至将来的计算机平台兼容。 USB的众多优势将会它的应用越来越广泛,越来越多的控制芯片、开发工具、操作系统支持USB接口,USB已成为外围设备的最新标准接口。一些业界人士预测,未来的PC将是一个密封设备,所有外设都将通过USB或其他外部接口连接。 SoC(System on a Chip)被我国专业研究的学者译为片上系统,是指以嵌入式系统为核心,集软、硬件于一体,并追求产品系统最大包容的集成芯片,是目前嵌入式应用领域的热门话题。 在SOC设计中功能组装正在逐渐代替功能设计,成为主流的设计方法。在传统的设计方法中,无论是HDL还是原图设计,重点都在于设计新的电路来实现系统功能。现在,集成电路中包含了各种IP模块如微处理器、DSP、存储器等,对于这些电路,人们关注的焦点是应该选择哪些功能块、功能模块如何使用、如何进行软硬件的功能划分、如进行模块互联、如何进行系统验证等。因而,以功能组装以设计复用为基础的方法更能适应SOC的设计需要。 SOC设计方法与传统设计方法之间有4个主要的区别:第一,对系统设计阶段的要求更严格,软硬件开发人员必须起深入分析软硬件的功能划分,合理选择IP模块并仔细安各个设计阶段的接口;第二,以SOC为中心的嵌入式软件设计;第三,多层次的验证方法:充分利用设计前期阶段的真技术,进行软硬件并行设计与验证,将分析调试工作对期设计验证的依赖程度降到最低;第四,由于IP模块、EDA工具或者模型技术还处于不断改进的阶段,通过专业厂商的咨询服务来弥补工具和设计经验等方面的不足。 系统开发的第一步就是系统分析。在这一阶段需要分析统需求,探讨可能的体系结构,并最终确定软硬件的功能分配。体系结构方面的考虑主要包括:确定芯片内部的总线构、系统平台、测试与调试结构、IP模块的选择。这个过程的结果就是形成一组设计规格。规格的一部分成为软件开发的指导文档,另一部分定义了硬件需要实现的功能。系统设计阶段的工作由体系结构设计工程师、软件和硬件设计人员完成。 在当前的设计环境中,许多系统构件要么由已有的IP模块组成,要么由它们衍生而来。选择IP模块的一个重要因素是IP与目标系统的配合程度。目前的大多数情况是设计人员在获得了IP模块后必须进行修改,修改的范围包括各个设计层次上的IP模型。为了尽可能少修改IP模块,可在相对某个系统来说不太重要的功能上作出妥协,如牺牲一点芯片面积或者是功耗或者是延时,以便直接使用一些功能模块。如果目标系统中含有可以编程的IP模块,就必须考虑嵌入式软件的设计,在SOC领域,软件开发必须与硬件同步进行。利用面向SOC的嵌入式软件开发工具,可以在设计的早期阶段进行软件开发与验证。如功能验证、建立原型环境、基于测试与调试结构的硬件原型开发等。 二、USB安全钥芯片的设计方法与实现 目前,SOC设计所关注的不再是某个新功能的设计实现,而是如何去评估、验证和集成多个已经存在的软硬件模块。SOC的设计方法将以组装为基础,形成自己的鲜明特色,包括更深入的系统设计、软硬件并行设计与验证、在设计流程的所有层次上进行验证以及合理利用外界的设计咨询服务等。 本文拟采用已有的第三方提供的IP模块和自己开发IP模块相结合的方式和自顶向下(Top-Down)的设计方法来完成USB安全钥芯片的设计,基于所选IP模块与目标系统的配合程度和实用程度的考虑,本文将所选择的IP模块进行个别修改,修改的范围包括各个设计层次上的IP模型,以使所设计系统的规模和性能达到最佳。但大规模对成熟的IP模块修改又会造成开发周期过长和修改后IP模块的不稳定性,因此,本文将在相对某个系统来说不太重要的功能上作出妥协,如牺牲一点芯片面积或者是功耗或者是延时,以便直接使用一些功能模块。 考虑当前片上系统设计方法的优缺点,本论文采用自顶向下(Top-Down)的设计方法。自顶向下(Top-Down)方法整体考虑了片上系统(SOC)芯片软、硬件系统设计的要求。把系统需求、处理机制、芯片体系结构、各层次电路及器件、算法模型、软件结构、协同验证等紧密结合起来,从而用极少几个IP模块完成整个芯片的功能,其设计流程如图1所示,分为以下几个主要步骤: 1. 系统总体方案设计:芯片系统功能、指标定义、需求分析、产品市场定位,软/硬件划分、指标分解等整体方案论证; 2. 软、硬件方案设计:确定软、硬件体系结构,模块功能的详细描述及技术指标要求,时序及接口定义等工作; 3. 模块设计开发:完成硬件模块的开发,行为及时序仿真测试,底层硬件驱动程序编写,算法设计及仿真,协议和应用软件的设计与开发。对于复杂的功能模块,可进一步划分成子模块。在算法仿真时,根据系统指标的要求划分出信号处理硬件加速模块;
|