3 硬件设计
将USB接口嵌入到安全认证系统中,从图1和图2可以看出,二者的时序不匹配,不能直接连接,因此在硬件上要进行时序匹配设计,其硬件原理如图3所示。首先将地址和片选信号展宽一个周期。对于写时序,将写信号往后延迟一个时钟周期,即能满足写时序要求;对于读时序,因为读信号有效时,数据必须已出现在数据总线上。从图1(a)可看出,FIFO的数据在地址有效一个时钟周期后才出现在数据总线上,也就是说,微处理器必须先给出一个周期的地址,然后读信号有效,才能得到正确的结果。为解决这个问题,采取了读FIFO时,先写一次FIFO,紧接着读FIFO。但此时要将写信号屏蔽掉,以免影响FIFO的状态。因此设立一个读控制端口,读FIFO时,将其置1,其余时刻清零。假如MCU要从FIFO读取8个字节,则程序如下:
TMOV Z, 01H //读控制端口98置1
ZOUT 98H
MOV I, 7
TMOV MD, bmRequestType //读FIFO的数据到bmRequestType[...]
LX1: ZOUT FIFO0
ZIN FIFO0
MOV T, Z
MOV T, MD
MOV I, T
TMOV [I], T
MOV T, MD
INC
MOV MD, T
NEXT LX1
TMOV Z, 00H //数据读完,98端口清0;
ZOUT 98H
4 软件设计
USB系统通过一个列举过程来识别和配置一个新接入的USB设备,这个过程分5步来完成:
(1)用默认0地址取得设备描述;
(2)设置设备地址;
(3)用新地址取得设备描述;
(4)取得配置描述;
(5)设置配置。