基于SOPC的USB密码模块硬件与固件设计
本文将介绍基于SOPC(System On a Programmable Chip)的USB密码模块设计思想,其目标是设计一款集加密存储、安全认证等功能于一体的基于SOPC的USB密码模块应用系统。
2、硬件设计
2.1硬件架构模型
本文在研究了应用需求的基础上,提出了图2所示的硬件架构模型。

它主要包括如下5部分:
①嵌入式微控制器:主要负责模块的整体协调以及与外部通信接口的处理,实现系统控制、安全协议等功能。
②内部安全控制引擎:为了减少中心控制模块的工作,加快密码运算处理速度,专门设计一个专用的微控制器来进行调度密码运算处理。
③密码运算IP核:面向信息安全领域的安全应用,集成对称、非对称、杂凑等密码运算单元,通过内部安全控制引擎控制。
④总线桥:为让外部接口与内部运算模块更为高效地通信,通过总线桥使两条总线连接起来,较好地实现时序匹配和数据传输。
⑤数据存储模块:为了让密码运算处理模块与外部接口之间的通信同步,需设计一个数据存储模块来存储外部来的数据以及加密后来不及输出的数据。
2.2 内部硬件电路关键部件设计
2.2.1 内部安全控制引擎MCU的设计
根据密码处理的特殊性,MCU一方面要实现两个设备之间的数据直接交换;另一方面要及时对运算完成标志作出快速响应,以减少不必要的时间延迟。因此,MCU除具备通用微控制器的数据传输指令之外,还要增加如下2类指令:
①直接数据传输指令:实现外部存储器与密码模块之问的直接数据传输。不同于通用微处理器的DMA功能,它通过专用指令实现两个外部缓冲区之间的数据交换。
②输入判断分支指令:按位对外部输入信号进行判断,无须微处理器执行算术运算或逻辑运算,即可直接判断外部引脚电平,决定程序分支。
MCU设计:
◆采用哈佛结构模型来实现;
◆MCU为了与嵌入式控制器NiosII更好地协调工作,采用32位宽指令;
◆可以同时读取指令和数据,使流水设计变得简单易行;
◆指令和数据都存放在内嵌的存储器中,使控制器、运算器和程序存储器的处理效率较高;
◆主要进行数据传输指令和跳转指令设计。
微控制器主要由取指电路、译码电路、执行部件3部分组成,实现各项功能。其电路整体框架如图3所示。

2.2.2嵌入式控制器NiosII与内部安全控制引擎
MOU的协调控制设计
由于本密码模块系统较为复杂,内嵌的NiosII需要完成数据的传输、控制、通信、调度等任务。若采用传统的单CPU结构进行控制,因受到CPU速度和自身资源的影响,系统很可能出现任务过于繁重的情况。一旦出现故障,系统将不能正常工作。因此,在本设计中采用双CPU设计方案。其相互的协调控制模型如图4所示。

对于NiosII而言:
外部如有数据要进行加/解密处理,NiosII首先写命令到MCU命令接收寄存器,待MCU明确表示接收到命令后,返回一个确认信号给:NiosII;NiosII接收到确认信号后,则转入到写数据状态。在写数据状态,NiosII把数据按一定长度分组进行填充,输入到桥接器的输入FIFO。待数据输入完后,发出输入FIFO有效信号到MCU,转入判断IP运算核是否有效;若未完成,则继续在该状态进行等待。当IP运算完后,MCU置读FIFO信号有效,NiosII判断这个信号有效后直接从桥接器的输出FIFO,把数据从输出FIFO送到外部接口部件,完成一次数据加/解密过程;否则,继续等待,超出规定时限后,发出错误警告。
对于MCU而言:
MCU接收到NiosII过来的命令,对命令进行解析后,向NiosII发出确认收到命令信号,并判断输入FIFO里有没有数据。若有数据,则转入从输入FIFO取数据状态,分组送入密码运算IP核进行处理,待一组处理完后,送数据到输出FIFO,置读信号有效,完成一次数据加/解密过程;若输入FIFO为空,则等待。当所有数据全部处理完成后,做出完成标志。
2.2.3总线桥的设计
本密码模块包括Avalon总线和自行设计的总线,两条总线通过一个桥模块进行连接,完成总线与总线的数据通信。外部接口模块通过Avalon总线与NiosII进行通信,自行设计的总线主要负责密码专用控制器MCU与密码运算IP核之间的通信。为使这两条总线实现时序匹配,能够较好地数据传输,设计了总线桥。
总线桥的总体结构如图5所示。它包括地址译码和外设IP选择模块、写数据寄存器模块、读数据寄存器模块和状态机模块。

状态机模块主要协调两侧总线的协议时序,从而满足数据的正确传输要求;同时,还将根据MCU发送过来的传输命令得到外设IP相关的特征信息,产生用于NiosII的控制信号。地址译码和外设IP选择模块根据自定义总线发出的地址信号,译码后选择待操作的外设IP,并获取该IP的特征信息。
- 本文关键词:

