>
首页 » 技术文章 » 基于USB总线的随机信源设计与实现

基于USB总线的随机信源设计与实现

作者:■ 解放军信息工程大学电子技术学院 岳云天 苏锦海 张春刚   时间:2005-05-05 10:23  来源:本站原创

摘 要:本文详细介绍了一种基于USB总线的随机信源设备的设计与实现。内容包括随机信源噪声的产生与采集、USB控制芯片AN2131SC的特点及其应用以及USB驱动、固件和客户应用软件的编写等。
关键词:USB;AN2131SC;固件;AD9281

引言
密码技术是信息安全的核心技术之一,数据加密的安全性依赖于密钥。密码学意义上好的密钥是指利用随机现象产生随机信号,再通过对其编码而生成的随机序列,它具有等概率、独立、平稳等特性。随机信源产生模拟的电子噪声,利用ADC将其数字化,并最终提供真正随机的数字序列,来产生不同格式的密钥,从而满足各种实际的应用需求。因此随机信源及其研究是信息安全领域不可或缺的部分。本文介绍了一种基于USB接口的随机信源的设计方案和实现。

硬件设计
硬件设计包括:信源噪声产生电路、A/D转换电路和USB硬件模块。图1是该随机信源的原理框图。
信源噪声产生
信源噪声产生原理是利用具有雪崩效应的齐纳二极管产生噪声,然后再将其经宽带放大器进行放大。在具体设计中,最好选用10V左右的齐纳二极管,此时按图2的接法,通过微调可调电阻来改变流过齐纳二极管的电流值,就能从耦合电容得到较平坦的频谱。可以适当调整电流值,以寻找噪声频谱既平坦、噪声电平又尽可能高的最佳点。雪崩噪声的主要成分是散弹噪声,属于高斯白噪声。
由于实际的宽带放大器都不具有理想的滤波特性,这种高斯白噪声通过宽带放大电路后,一般就不再是白噪声了。因此在设计宽带放大器时,需要增加校正网络,使输出的噪声在一定的带宽范围内接近高斯白噪声。
除了考虑足够的信号强度和频带宽度外,还要采取增益控制、阻抗匹配、电源去耦、信号屏蔽等措施,防止电路出现自激振荡,提高随机信源电路的工作稳定性。图3是通过频谱分析仪实测的信源噪声的功率谱密度图,其中3dB噪声带宽约为65MHz;等效噪声带宽约为200MHz。
A/D转换
A/D转换就是将宽带放大器输出的模拟电子噪声转化为数字噪声的过程。在噪声采集电路中,使用了AD9281芯片。该芯片内部结合了两个8bit、28MSPS的ADC,两个输入缓冲放大器,一个内部参考电压,多路复用数字输出缓冲器。采用单电源供电,工作电压范围:2.7V~5.5V,功耗低,温度适用范围宽。
AD9281有四种信号输入方式:单端输入方式、差动输入方式、交流耦合输入方式和变压器耦合输入方式。由于输入信号是宽带放大器经电容耦合进来的,没有直流成分,本方案采用交流耦合输入方式。
AD9281有五种工作模式:1V模式、2V模式、外部设置模式、外部参考电压模式和参考缓冲模式。本方案采用的是外部设置模式,如图4所示。使用内部参考电压,通过外部的电阻分压来调整参考电压:VREF=1+(Ra/Rb),其中Ra和Rb分别是可调电阻两部分的阻值,这种模式可满足输入信号电压峰-峰值从0.7V到2.5V的变化范围,避免了直接调整信号幅度所引起的负面影响。
USB硬件
USB接口控制使用的是Cypress公司的AN2131SC芯片。该芯片是一种全速USB控制器,遵循USB协议1.1版, 44个引脚,使用3.3V电源。
在整个噪声采集过程中,AN2131SC的主要作用是:利用其USB内核与主机通信并传输数据。利用其片上增强型8051作为控制器,使AD9281正常工作。具体工作过程为:AN2131SC上电复位后,芯片按照USB规范应答,提供设备标识,然后再次枚举,加载对应驱动程序,并将控制权转交给8051,8051对AD9281发采集指令,进行噪声采集,将所得的噪声数据存储到内部FIFO,当一定字节的数据采集完后,再将它们通过USB总线传至主机。噪声采集工作原理可参看图4。需要说明的是,AN2131SC实际同步传输带宽由8051能在同步端点FIFO内、输入和输出的数据速度来决定。AN2131SC 8051的时钟是24MHz(42ns),其指令周期需4个时钟:42 ns×4=168ns,将外部一个字节数据移到IN端点FIFO的典型传送循环需要9个指令周期:168ns×9≈1.5ms,环内每ms传送到IN FIFO的字节数为:1ms/1.5ms≈660字节。如果需要更快的速度,需对环内循环代码展开,但这样会增加程序代码的数量,较好的方法是对环内循环代码作部分展开。因为AN2131SC同步传输带宽决定AD9281的采样频率,根据以上分析,采样频率最好不要超过660KHz。本文实际的采样频率约为500 KHz。此时模拟噪声的带宽远大于实际的采样频率,采样时噪声的频谱会产生重叠。由于本文不考虑噪声的还原,这种影响是可以忽略的。

软件设计
系统软件包括USB总线设备驱动程序、设备固件程序和主机应用程序三部分。
USB总线设备驱动程序
为了节省开发时间,本文在设计中直接使用了EZ-USB的通用驱动程序(GPD):ezusb.sys。 EZ-USB GPD支持符合USB1.1规范的IOCTL。主机应用程序通过I/O控制来访问GPD,即先通过调用一个Win32函数CreateFile()来获得设备驱动程序的句柄,然后用函数DeviceIoControl()来提交I/O控制代码和相关的输入/输出。
设备固件程序
设备固件程序主要为AN2131SC控制器接收和传送噪声数据提供所有的操作。首先固件代码要完成设备的枚举过程,来告诉主机关于设备的重要信息,如设备的制造商号、产品号以及其它信息,并初始化USB总线设备;其次要从AD9281中获取数字化的噪声数据,传送给主机。
事实上,EZ-USB内核建立了默认的USB设备,所有描述符由内核自动处理。通过利用USB默认的机制,可用很少的固件代码,完成一定功能的USB传输。这里给出利用默认端点8-IN的采集测试固件部分代码。默认端点8-IN是同步传输端点,使用交替功能2时,信息包的长度为256字节。
;初始化
……
loop:movdptr,#USBIRQ
;等待SOF IRQ位
movxa,@dptr
jnbacc.1,loop
mova,#00000010b
;SOFIR 位
movx@dptr,a
;写1清除 SOF IRQ 位
mov r7,#100
;采集100字节数据
sample:
movdptr,#OUTA
mov a,#00010000b
;Q通道采样开始指令
movx@dptr,A
;输出至 PORTA引脚
movdptr,#PINSB
movxa,@dptr
;读PORTB引脚Q通道采样数据
movdptr,#IN8DATA
movx@dptr,a
;采样数据放入片内FIFO
movdptr,#OUTA
mov A,#00000000b
;Q通道采样结束指令
movx@dptr,A
;输出至 PORTA引脚
djnz r7,sample
; 判断是否采集了100字节数据
sjmploop
end
以上代码经编译后,可用EZ-USB控制板将生成的HEX文件下载到AN2131SC中,并用其对USB信源设备进行一些必要的测试。
主机应用程序
主机应用程序主要完成基于Windows的各种噪声数据的处理,并完成相应的功能应用,如:随机信源测试、随机密钥编制、密钥品质评价等。在Win32系统中,把每一个设备都抽象为文件,USB设备也不例外。应用程序通过文件操作API函数:CreatFile()、ReadFile()、WriteFile()、DeviceIoControl()和CloseFile(),实现与驱动程序中的设备通信。由于对功能应用需求的千差万别,这里对主

相关推荐

Teledyne LeCroy升级了超高速USB3.0协议分析仪平台

Teledyne  分析仪  USB  2013-09-17

连接器的大量生产充分满足着各行业所需

连接器  USB  2013-08-01

精密化精细化是连接器的发展趋势分析

连接器  USB  2013-06-28

USB小电器办公室受宠 插电不宜过久注意安全

USB  电器  2012-09-04

赛普拉斯宣布SuperSpeed USB 3.0控制器通过USB-IF认证

赛普拉斯  USB  2012-01-12

瑞萨USB 3.0-SATA3桥接单片系统通过USB-IF认证

瑞萨电子  USB  SoC  2011-12-26
在线研讨会
焦点