基于TMS320VC5410 的DES 加密系统设计

时间:2010-11-29来源:网络

  3 系统软件设计:

  选用TI 公司CCS(Code Composer Studio)作为该加密系统软件设计时的开发和调试工具, 使用C 语言和汇编混合编程的模式完成软件设计。由于C 语言编程具有便于阅读、维护、交流和可移植性好的特点,因此采用C 语言完成整个程序的主框架设计, 在对时间要求比较苛刻的地方或对代码运行效率有较大影响的场合采用汇编指令编写。

  3.1 DSP 读IC 卡软件实现:

  3.1.1 McBSP1 串口配置:

  当把卡片插入卡座时,状态开关选通,并且电路板上提示灯亮表示插卡到位,DSP 内存中的读卡状态标志位设置为‘1’。TMS320VC5410 开始初始化McBSP1,使其工作在通用IO 口状态,采用子地址寻址的方式对SPCR11(映射地址为0049h,子地址为00h)、SPCR12( 子地址为01h) 和PCR1(子地址为0Eh)等寄存器进行配置。配置代码如下:

  SPCR11=0x0000;

  SPCR12=0x0000;

  PCR1=0x3F00;

  此时FSR1、FSX1、CLKR1 和CLKX1 均用作通用输出管脚。把PCR 中的FSRP 位设置为‘0’,PCR1= 0xFFFB;则卡片VCC触点电平为低, 卡片处于掉电状态; 通过语句PCR1|= 0x0004 把FSR1 引脚置高电平给卡片上电。

  由于DSP 的FSX1 引脚与卡片的数据I/O 触点相连,要求FSX1 引脚具有双向传输的功能,但该引脚在同一时刻只能处于输入或输出一种状态, 为此定义了以下两个宏实现引脚在输入与输出状态的改变。

  #define set_IOout () SPSA1=PCR1;SPSD1|=0x0800;FSX1 引脚处于输出状态

  #define set_IOin () SPSA1=PCR1;SPSD1=0xF7FF;FSX1 引脚处于输入状态

  3.1.2 复位与复位应答:

  DSP 检测到读卡状态位为‘1’时,给卡片上电,CLK 和RST 保留于状态L,开始运行读卡程序将卡中存储的密钥读取至内存中。首先按照ISO7816-3 标准对SLE5542 卡片进行应答复位,复位可以发生在操作过程的任意时刻。之后,RST 线被置于H 状态,并维持至少15 μs。在RST 状态由高电平到低电平的转换期间CLK 提供一个时钟脉冲, 卡片内的地址计数器(address counter)清零,I/O 引脚输出有效数据的第1 位,这一数据可视为复位应答[5];在此后连续31 个时钟脉冲的作用下,主存储器中的前4 个地址中的32 位标头数据被读出; 下一个时钟脉冲使I/O 引脚变为高阻状态,此时卡片复位与复位应答完成。

  3.1.3 DSP 读卡主程序设计:

  图4 为DSP 读IC 卡主程序设计。卡片复位应答之后,则处于等待指令输入的状态。SLE5542 每个指令均由控制字节、地址字节和数据字节组成,传输时从控制字节的最低位开始。控制字节传送完毕之后,依次传送地址字节和数据字节, 均为低位在前。每个指令的传输都开始于一个Start条件(在时钟信号为高电平状态,通过DSP 发送卡片IO 口一个下降沿),结束于Stop 条件(在时钟信号为高电平状态,通过DSP 发送卡片IO 口一个上升沿)。根据指令作用的不同,SLE5542 接收完成后可能处于数据输出模式(DSP 读卡)或者内部处理模式(DSP 写卡)。


  通过TMS320VC5410 发送读卡命令和所要读取内容的地址(N=0,…,255)后,在CLK 信号的作用下卡片将主存储器中的数据按比特移至I/O 引脚发送至DSP 内存中。读取数据完成后,额外的一个时钟信号将使I/O 引脚变为高阻状态,卡片退出输出模式等待接收新的指令,也可以用Break条件(在CLK 为低时,把RST 信号由低电平变为高电平状态)结束此次操作。

  图5 显示了TMS320VC5410 对SLE5542 卡片读卡程序的调试结果,为了验证读卡功能的实现,系统读取了卡片中的所有字节的内容。其中前8 个字节为‘A2131091FFFF8115’ 为IC 卡的厂商标识; 之后地址8~20的13 个字节全为‘FF’是写保护区;地址21~26 是6 个字节的用户代码‘D27600000400’, 之后又是5 个字节的写保护区;从地址32~255 之间的数据是用户数据区,可以在这些地址里存放加密系统的密钥和其他的用户信息。


  3.2 PC 通信软件设计:

  3.2.1 McBSP0 的初始化配置:

  首先通过SPCR10=0x0000,SPCR20=0x0000 把RRST 与XRST 位设置为‘0’,使串口复位。设置PCR0=0x0B0C;采样率由DSP 内部产生,接收与发送帧同步信号为低有效,时钟上升沿发送数据、下降沿接收数据。其次通过接收控制寄存器RCR10 ( 子地址为02h) 和RCR20 ( 子地址为03h) 来对DSP 串口接收模式进行设置, 令RCR10=0x0940;RCR20=0x0004;接收帧长度10 字、每字16 bit,忽略除第一个帧同步后的其他帧同步信号。通过传输控制寄存器XCR10(子地址为04h)和XCR20(子地址为05h)来对DSP 串口发送模式进行设置, 令XCR10=0x0940;XCR20=0x0004; 使数据的发送与接收模式一致。另外, 采样率发生器控制寄存器SRGR10(子地址为06h)和SRGR20(子地址为07h)控制采用率发生器的工作模式。本系统中选择PC 机的串口工作波特率为38 400,采样率发生器计算公式为:

  CLKGDV=CPU 工作频率/(16×波特率)-1

  由于TMS320VC5410 工作频率为100 MHz, 因此CLKGDV=100 000 000/(16×38 400)-1=161, 设置SRGR1=0x00A1,SRGR2=0x2000; 最后通过SPCR1=0x0001,SRGR2=0x2000;对串口使能,处于可操作状态,至此完成了McBSP0的初始化配置。

  3.2.2 数据格式的统一

  DSP 通过McBSP0 接收外界PC 机数据采用中断方式。

  这里为了实现TMS320VC5410 同步串口与PC 机异步串口通信时数据格式的统一, 把McBSP 的1 个16 位字等效为PC 机串口传送的1 个8N1 模式数据(1 个起始位+8 个数据位+1 个停止位) 的1 位。PC 机串口每发送1 个位的数据,DSP 采样16 次暂存数据接收寄存器DRR10 (地址为21h)中。例如PC 机通过RS232 串口传送数据为‘1’,则DRR10经过16 次采用后接收一个字的数据为‘FFFFh’,同理若前者后‘0’,则后者为‘0000h’。之后触发McBSP0 串口接收中断,DSP 执行中断服务程序将DRR10 中的有效数据(除去起始位和停止位)取走至内存中,并对计数器加1。当接收到一个完整的帧后,DSP 置串口数据解码标志位为‘1’,DSP开始运行解码程序,将‘FFFFh’和‘0000h’分别等效为一个比特位‘1’和‘0’,从而恢复出原始的数据帧。

  当DSP 对接收到的数据完成加密之后需要反馈输出,TMS320VC5410 串口数据向PC 机发送的过程与数据接收的过程正好相反。每帧数据都需要进行串口编码之后通过数据发送寄存器DXR10(地址为23h)发出。即把8 位有效数据中的‘0’编码为‘0000h’,‘1’编码为‘FFFFh’,按照从低位到高位的顺序重新排列编码后的数据, 并在帧首和帧尾分别添加起始位‘0000h’和结束位‘FFFFh’,将每组10 个数据作为一帧信号发出。

  图6 显示了本文设计的加密系统的实验结果。通过PC机和RS-232 串口发送字符‘11112222’ 的十六进制形式为‘3131313132323232’共64 bit,TMS320VC5410 接收到64 bit明文数据后, 通过读取IC 卡中的64 bit 密钥‘3100000000000031’并对明文进行DES 加密后,输出密文的十六进制形式为‘9*66D*DE9A2D’。结果显示系统工作稳定可靠,符合设计要求。


  4 结论

  本文采用SLE5542 型IC 卡存储密钥,TMS320VC5410中的McBSP 引脚与卡片触点连接并实现对卡片的应答复位和内容的读取,同时通过RS232 串口与个人PC 机实时交换数据,接收PC 机发送的明文并对其DES 加密后反馈输出。

  由于McBSP 的工作机制是同步串口, 把其当作通用I/O 口和异步串口使用时必须注意内部寄存器的设置和输入输出方向的设定。经软硬件调试,实验结果表明该方案完全可以满足大数据量的加密,合理使用了硬件资源,可以进一步升级扩展作为数据采集保密系统的加密模块。

1 2

关键词: DES 加密系统 TMS320VC5410 IC卡

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版