精品采用USB接口的高速数据采集器硬件设计毕业论文设计.docx
《精品采用USB接口的高速数据采集器硬件设计毕业论文设计.docx》由会员分享,可在线阅读,更多相关《精品采用USB接口的高速数据采集器硬件设计毕业论文设计.docx(36页珍藏版)》请在冰豆网上搜索。
精品采用USB接口的高速数据采集器硬件设计毕业论文设计
毕业设计(论文)原创性声明和使用授权说明
原创性声明
本人郑重承诺:
所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:
日 期:
指导教师签名:
日 期:
使用授权说明
本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:
按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:
日 期:
1绪论
1.1课题的提出及意义
在工业生产和科研的各行业,常常利用PC或工控机对各种数据进行采集这其中有很多地方需要对各种数据进行采集,如液位、温度、压力、频率等。
现在常用的采集方式是数据采集板卡,常用的有422、485等总线板卡。
采用板卡不仅安装麻烦,容易受机箱内环境的干扰,而且由于受计算机插槽数量和地址、中断资源的限制不可能挂接很多设备。
在目前PC的IO模式中,外围设备通常被映射为CPU的IO地址,并且被分配一个指定的IRQ(中断请求),在某些情况下也可以是一个DMA通道。
这种地址分配的方法已经成为一种标准,软件开发者要根据指定的设备进行访问。
这给编程者带来了不便,同时消耗了PC的许多系统资源,使许多系统资源不可使用,并且产生了很多冲突,由此造成了很多问题。
根据调查显示,70%的严重系统错误和系统崩溃是由硬件冲突引起的。
通用串行总线(UniversalSerialBus,简称USB)的出现,很好的解决了以上这些问题。
他不仅解决了I/O插口不够的问题,而且建立了一条连接和访问外设的方法。
这些方法可以有效的减少总体成本,减少硬件冲突。
因此,我们能够利用USB总线接口比较容易的实现低成本、高可靠性的多点数据采集系统。
这种采集系统由于采用了USB总线接口而具备了如下优点:
1)设备安装和配置容易。
USB设备支持即插即用,安装USB设备不必再打开机箱,加减已安装过的设备,完全不用关闭计算机。
所有USB设备支持热拔插,系统对其进行自动配置,不再占用中断资源或者DMA资源,彻底抛弃了过去的跳线和拨码开关设置。
USB为接缆和连接头提供了单一模型,解决了外设越来越多造成的插槽紧张问题。
2)接口数目多,每个USB主机通过USB集线器,可以同时挂接最多127个外围设备,有效地解决了多点数据采集系统I/O口不够用的问题。
3)数据传输速度比一般的串行总线(如RS232,RS485等)快,USB1.1标准的接口最快可以达到12Mbps,可以满足绝大多数多点数据采集系统的要求。
在PC主机和采集系统都具备支持USB2.0标准的接口芯片时,最快可以达到480Mbps,可以满足高速数据采集系统的要求。
4)有总线电源保护,系统连续3ms没有总线活动,USB自动进入刮起状态。
1.2课题研究状况
USB在1995年被提出,并由Compaq、DigitalEquipmentCorp(现在属于Compaq)、IBM、Intel、Microsoft、NEC和NorthernTelecom七个计算机与通信工业领先的公司所组成的联盟所定义和加以推广。
同一年,该联盟建立了实施者论坛(以下简称USB-IF)来加速USB标淮的高质量兼容设备的开发。
在1996年,USB-IF公布了USB规范1.0,这是第一个为所有的USB产品提出设计请求的标淮。
1998年,在进一步对以前版本的标准进行阐述和扩充的基础上,发布了USB标准的1.1规范。
第三个版本的USB2.0是发布于1999年。
之后,随着USB的普及与推广,USB的成员一直持续不断地增加,如今已是非常庞大的推广组织了。
历经8年的发展,USB技术已经非常成熟,也得到了lT业各硬件及件厂商的广泛支持。
尤其是Microsoft公司在其WIN98之后的操作系统中加强了对USB的系统支持后,USB总线迅速发展起来。
目前,USB总线的协议版本已经达到了2.0,支持的最高速度达到了480Mbps,远远超过了一般并行总线的数据传输速度。
随着USB总线的发展,USB总线接口在嵌入式系统以及个人电脑的外围设备中的应用发展非常迅速。
计算机外围设备的市场上使用USB接口的数码相机、扫描仪、移动硬盘、鼠标、键盘等设备随处可见。
但是USB接口在工业控制领域、数据采集系统以及只能仪器仪表中的应用还不多见。
因此,我们提出了基于USB总线接口的数据采集系统。
数据采集是信息科学的一个重要分支,是信息处理系统的最前端。
它是以传感器、信号测量与处理、微型计算机等技术为基础而形成的一门综合应用技术,主要研究信息数据的采集、存储、处理以及控制等作业,具有很强的实用性。
在工业生产和科学研究中经常需要对一些物理量进行采集,为提高产品质量、降低成本提供信息和手段。
在自动飞行控制和航天器的遥测、遥控中以及在国民经济的各个领域中,数据采集技术具有很重要的地位。
随着大规模集成电路与计算机科学技术的发展,数据采集技术将在雷达、通信、水声、遥感、语音处理、智能仪器、工业自动化以及生物医学工程等众多领域得到广泛的应用。
数据采集技术的发展是人机交互、状态监测、设备控制的基础。
随着电子工业的发展,尤其是PC机的出现,大大地促进了工业自动化的程度,现在越来越多设备实现了自动控制和无人职守,而这一切又促进了数据采集技术的发展。
在科学技术研究的各行各业中,常常利用PC机或工控机对各种数据进行采集,如液位、温度、压力、频率等。
1.3本课题的主要内容
本课题的内容按章节大致可以分为4个方面:
(1)了解基于USB接口的数据采集系统的研究背景,提出课题的研究意义,指出了用USB接口相较于其他接口的优势:
易实现、成本低、快速、兼容性强。
另外还指出了USB接口和数据采集系统的研究现状。
(2)具体地从USB系统组成、USB的传输、USB的数据单元、USB的设备请求等方面讨论了USBI.0、USB2.0、USBOTG协议。
(3)提出系统总体设计方案。
对PC机与数据采集器的接口方式和USB控制芯片的选取进行了分析,并说明了选用USB主控芯片PDIUSBD12和USB接口方式原因及其优势。
同时简单介绍了PDIUSBD12和单片机AT89C51的特性和功能。
最后,阐述了数据采集器的设计实现。
(4)系统硬件电路设计。
详细叙述别介绍低通滤波器电路、采样保持电路、AT89C51和PDIUSBD12连接电路、USB接口硬件设计。
2USB软件通信协议
2.1USB系统构成
一个USB系统由以下几部分构成:
主机和设备:
是指USB系统中的主要构件;
物理构成:
是指USB元件的连接方法;
逻辑构成:
不同的USB元件所担当的角色和责任,以及从主机和设备的角度出发USB所呈现的结构;
客户软件与设备功能接口的关系。
整个USB系统通信模块具体的参考模型如图2.1所示
图2.1通信模块具体的参考模型
从图2.1中可以看出USB通信的数据流结构。
主机和设备被分成如图2.1所示的几层。
实箭头表示主机上的实际通信,设备上的相应接口根据不同的仪器而不同。
主机和设备间的通信最终发生在物理线路上,然而,在每一水平层之间存在着逻辑接口。
主机中客户程序软件与设备功能间的通信代表了设备需求与设备能力之间的约定。
其中USB系统软件是由主控制器驱动程序(HCD)、USB驱动程序(USBD)和主机软件组成。
主控制器驱动程序能够更容易的将不同的主控制器设备影射到USB系统中,因此客户可以在不知其设备连接在那个主控制器的情况下与设备相互作用。
HCD与USBD间的接口叫HCDI,特定的HCDI由支持不同主控制器的操作系统定义。
通用主控制器驱动器(UHCD)处于软结构的最底层,由它来管理和控制主控制器。
USB主控制器定义了一个标准硬件接口,以提供一个统一的主控制器可编程接口。
UHCD实现了与USB主控制器通信和控制USB主控制器的一些细节,它对系统软件的其它部分是隐蔽的。
系统软件中的更高层通过UHCD的软件接口与主控制器通信。
USB驱动程序(USBD)位于UHCD之上,它提供驱动器级的接口,满足现有设备驱动器设计的要求。
USBD所实现的准确细节随不同操作系统环境而有所不同,但USBD在不同操作系统环境下完成的是一样的工作。
USBD以I/O请求包(IRPS)的形式提供数据传输构架,它由通过特定管道(PIPE)传输数据的需求组成。
客户软件位于软件结构的最高层,它负责处理特定USB设备的设备驱动器,客户程序层描述了所有直接作用于设备的软件入口。
当设备被系统检测到时,这些客户程序将直接作用于外围硬件,这个共享的特性将USB系统软件置于客户和它的设备之间,也就是说,一个客户程序不能直接访问设备硬件,而是根据USBD在客户端形成的设备映像由客户程序对它进行处理。
2.2USB的数据传输方式
虽然USB设备的软硬件会自动处理所有传输的细节,但是如果想要设计USB设备,我们仍然需要对接口的内部工作原理有相当程度的了解。
每一次传输是由事务(transaction)所组成,每一笔事务都是由信息包(packet)所组成,每一个信息包则是包含传输的信息。
为了满足不同外设和用户的要求,USB提供了四种传输方式:
控制传输(Controltransfers)、块传输(Bulktransfers)、中断传输(Interrupttransrers)和等时传输(Isochronoustransfers)。
它们在数据格式、通信流方向、数据包容量限制、总线访问限制、所要求的数据顺序等方面有着各自不同的特征。
控制传输主要用于命令、控制、状态操作(如获取设备的设备描述符,设置设备的USB地址等,可以通过控制传输来定义自己对设备的控制操作,设置采样参数、开始或停止采样等),是由主机软件发起的请求/响应通信过程,具有突发性、非周期性的特点,每个USB设备都必须有控制传输的通道。
块传输主要用于完成主机和设备之间的大批量数据传输,这种传输方式可以利用任何可用的带宽进行传输,或可以延迟到有可利用的带宽时再进行传送数据。
由于块传输在硬件级上对传输数据进行错误检测(若发生错误,它支持“重传”功能),因此它能保证数据传输的可靠性。
块传输支持两个方面的数据传输(即主机到设备和设备到主机),适用于打印机、调制解调器等不定期传送大量数据的中速设备,具有非周期性和突发性强的特点。
中断传输用来完成设备到主机的少量数据传输,它只支持设备到主机方向数据传输(中断传输与我们平常说的“中断”概念没有任何联系),适用于人工输入设备。
具有数据量小、非周期性、低频率、延时一定等特点。
等时传输亦称同步传输,主要用于主机和设备与时间有关的信息传输,比如,实时数据的传输(如多媒体、音、视频数据)。
同步传输不对传输数据进行错误检测,它主要保证数据的连续传输,适用于实时性要求比较高的场合,具有周期性、连续性的特点。
这种传输类型保留了数据中时间压缩的概念,但并不意味着这一类数据传输都是实时的。
在实际开发过程中,我们可以采用其中的一种或几种方式来设计我们的系统。
2.3USB的数据单元
USB的通信结构一般是以同步域SYNC开始的,接着是PID域,后面紧跟着数据或控制信息,最后是CRC校验。
所有的数据通讯过程都可以归结为三种包的传输:
令牌包、数据包和应答包,这些包都是由不同的域组成的,格式如表2-1所示。
表2-1各种包的格式
令牌包
SYNC
PID
ADDR
ENDP
CRC5
数据包
PID
DATA
CRC16
握手包
PID
帧开始
PID
帧标号
CRC5
同步域(SYNCfield):
所有的包都起始于同步域,它被用于本地时钟与输入信号的同步,并且在长度上定义为8位,SYNC的最后两位作为一个记号,表明PID域(标识域)的开始。
标识域(PIDPaeketIdentifierField):
是由一个4位的分组类型码加上4位类型码的反码组成,其格式如图2.2所示。
对于每个包(PID)都是紧跟着SYNC的,PID指明了包的类型及其格式。
主机和所有的外设都必须对接收到的PID域进行解码,如果出现错误或者解码为未定义的值,那么这个包就会被接收者忽略,如果外设接收到一个PID,它所指明的操作类型或者方向不被支持,外设将不做出响应。
图2.2PID分组码格式
PID可以分成4个码组:
令牌、数据、握手和特定类型,如表2-2所列。
表2-2PID类型
PID类型
PID名称
PID[3…0]
说明
令牌
(Token)
OUT
0001b
地址+端点号
IN
1001b
地址+端点号
SOF
0101b
帧标志,表示帧标号开始
SETUP
1101b
地址+端点号
数据
(DATA)
DATA0
0011b
数据分组偶PID
DATA1
1011b
数据分组奇PID
握手
(Handsake)
ACK
0010b
接收器接受到无误的数据分组
NAK
1010b
接受设备不能接受数据或发送设备不能发送的数据
SALL
1110b
端点被静止
特殊
PRE
1100b
主机发出低速通信的前导信号
地址域(AddressField):
外设端点都是由地址域指明的,它包括两个子域:
地址域和端点域,外设必须解读这两个域,其中有任何一个不匹配,这个令牌就会被忽略。
外设地址域(ADDR)指定了外设,它根据PID所说明的令牌的类型指明了外设是数据包的发送者或接收者,ADDR共7位,因此最多可以有127个地址。
一旦外设被复位或上电,外设的地址被缺省为0,这时必须在主机枚举过程中被赋予一个唯一的地址。
0地址只能用于缺省值而不能分配作一般的地址。
端点域(ENDP)有4位,它使设备可以拥有几个子通道,所有的设备必须支持一个控制端点0(endpoint0)。
低速的设备最多支持2个端点0和一个附加端点,高速设备可以支持最多16个端点。
.端点域:
附加的4位的端点(ENDP)字段允许对那些需要不只一个子信道的功能部件进行更灵活的寻址。
除了端点地址0之外,端点个数是由功能部件决定的。
规定端点域只能供IN、SETUP和OUT令牌的PID使用。
所有的功能部件都必须在端点0提供一个控制管道(缺省控制管道)。
对于低速(LowSpeed)设备,每个功能部件最多提供3个管道:
在端口0的控制管道加上2个附加管道(或是2个控制管道,或是1个控制管道和1个中断端口,或是2个中断端口)。
全速(Fullspeed)功能部件可以支持最多可达16个任何类型的端点。
帧号域(FrameNumberField:
帧号字段是一个11位的字段,主机每过一帧就将其内容加一。
帧号字段达到其最大值OX7FFH时归零,这个域只存在于每帧开始时的SOF令牌中。
数据域(Data):
数据字段可以在0到1,023字节之间变动,但必须是整数个字节。
图2.3为多字节显示格式,每个字节的范围内的数据位移出时都是最低位(Lsb)在前。
图2.3数据域格式
CRC校验:
包括令牌校验和数据校验。
循环冗余校验(CRC)被用来在标记和数据包中保护所有的非PID字段。
CRC也必须满足位填充的要求,这意味着如果前6位都是1的话,就必须在CRC的最后插入一个零。
(1)令牌CRC
标记使用了5位的CRC字段,它覆盖了输入,建立和输出令牌的ADDR和ENDP字段,或SOF标记的时间戳字段。
生成多项式如下:
G(X)=X5+X2+1
这个多项式的二进制位组合是00101B。
如果所有的标记位都被准确无误地收到,接收机中的5位剩余将是01100B。
(2)数据CRC
数据CRC是作用于数据包的数据字段上的16位多项式。
产生的多项式是如下:
G(X)=X16+X15+X2+1
2.4USB标准设备请求
USB标准设备请求是用来完成USB设备枚举的命令,USB设备必须对标准请求做出响应,不管该设备是否己经被分派了一个默认的地址或该设备目前正在配置。
所有的标准设备请求都是使用默认管道来传输的。
USB设备的请求由8个字节组成,格式定义如表2-3所列。
表2-3USB设备请求格式
偏移量
域
大小
值
描述
0
bmRequestType
1
位图
请求特征:
D7:
传输方向
0=主机至设
1=设备至主
D6..5:
种类
0=标准
1=类
2=厂商
3=保留
D4..0:
接受者
0=设备
1=接口
2=端点
3=其他
1
bRequest
1
数值
USB设备请求
2
wValue
2
值
字长域,根据不同的请求含义改变
4
wIndex
2
索引和偏移
字长域,根据不同的请求含义改变。
典型用于传送索引或偏移
6
wLength
2
计数
如有数据传送阶段,此为数据字节数
USB设备要想工作,必须对USB协议的标准命令请求做出正确响应,只有对标准的请求正确响应,设备才能枚举成功,才能和上位机通信。
一般情况下,USB设备必须支持的标准请求有11个命令,对应的代码和说明如表2-4所列。
表2-4USB标准设备请求
bmRequestType
bRequest
wValue
wIndex
wLength
Data
CLEAR_FEATURE
特性选择符
0
接口号
端点号
0
无
GET_CONFIGURATION
0
0
1
配置值
GET_DESCRIPOTR
描述表种类和索引
零或语言标志
描述表长
描述表
GET_INTERFACE
0
接口号
1
可选设置
GET_STATUS
0
0
接口号
端点号
2
设备,接口或端点状态
SET_ADDRESS
设备地址
0
0
无
SET_CONFIGURTION
配置值
0
0
无
SET_DESCRIPTO
描述表
0或语言标志
描述表长
描述表
SET_FEATURE
描述表种类和索引
0
接口号
端点号
0
无
SET_INTERFACE
可选设置
接口号
0
无
SYNCH_FRAME
0
端点号
2
帧标号
2.5USB设备的描述符
USB设备利用描述符来报告其属性。
一个描述符是具有一个确定格式的一个数据结构。
每个描述符都以一个一字节宽并包含了该描述符中所有字节数的域为开始,再跟上一个说明描述符类型的一字节宽的域。
使用描述符使得单个配置的特性存储变得简明,因为每个配置可能会重复使用其它有相同特性的配置描述符的部分或全部,用这种方法,描述符用一个关系数据库来表绘一个个的单独数据记录。
标准的USB设备有5种USB描述符,分别是设备描述符、配置描述符、接口描述符、端点描述符和字符串描述符。
USB的描述符是通过GetDeseriptor来读取的。
设备描述符:
是说明整个设备的信息,包括设备描述符长度、描述符类型、USB版本号、设备类、设备子类、设备协议、端点0的最大分组尺寸、厂商ID、产品ID和设备支持的配置数等。
它用来配置设备,一个设备只能有一个设备描述符。
配置描述符:
定义了设备的配置信息,一个设备对它支持的每一种配置都有一个配置描述符,包括关于配置的一般信息,并且定义了当使用这些配置时接口的数量。
一个设备可以有多个配置描述符。
接口描述符:
说明了关于接口的一般信息,它指出了特定的接口所支持的设备类,此外,它指出了该接口进行通信时所使用的端口数量。
一个设备接口包含一个或多个端点描述符。
端点描述符:
包括了端点所支持的传输类型、大小、方向等信息。
USB设备的每一个端点都有自己的描述符。
字符串描述符:
是可有可无的。
但是,如果一个设备无字符串描述符,所有其它描述符中有关字符串描述符的索引都必须为0。
它可以为所有的设备定义,描述了配置和接口,并且字符串是以UNICODE的形式给出的,它们可以显示出来,而且用户可以读取它们。
在程序设计时,各种描述符的每一个字段必须正确无误,尤其是描述符的长度和类型,否则设备枚举必将失败。
2.6USB2.0协议的介绍
USB2.0协议是在USB1.1协议的基础上发展起来的,由7家公司在2000年4月份共同制定的,是版本更新的一大跃进,它加入了许多高速传输特性。
原来的预测是希望提高到20倍的传输速度,实际上达到了40倍的传输速度(480Mb/s)。
对打印机、扫描仪、硬盘、影像设备和高速数据采集系统等,无疑是一大福音,使得原来不能使用USB的视频传输都可以使用了。
USB2.0协议除了满足USB1.1协议的一些特性外,还增加了一些新的特性。
在描述符方面,USB2.0除了支持USB1.1的几种标准描述符外,还增加了新的描述符:
Device_Qualifier、Other_Speed_Configuration和Interface_Power,这些描述符包含了使用非目前选择的速度时设备的行为,只有同时支持全速与高速的设备才需要。
Device_Qualifier描述符:
当设备转换速度时候,设备描述符中的某些字段可能改变。
Device_Qualifier描述符储存目前不使用的速度的字段数值。
设备描述符与Device_Qualifier描述符中的字段数值,视所选择的速度来做交替。
Other_Speed_Configuration描述符:
此描述符的结构与配置描述符相同,唯一的差别是Other_Speed_Configuration描述符描述的是当设备在非作用中速度时的配置。
Other_Speed_Configuration描述符的附属描述符与设备配置描述符相同。
Interface_Power描述符:
这是USB2.0新增的一个描述符,这个功能使得除了设备层级外,接口层级也能够启用电源管理。
USB2.0完全兼容USB1.1和USB1.0,他们使用相同的连接器与电缆。
不过如果要使用最新的高速传输,则必须使用与USB2.0兼容的主机与集线器。
USB2.0兼容的主机与集线器,同时也能够与USB1.1的外围设备沟通。
如果您将较慢的外围设备连接到USB2.0兼容的集线器上,集线器会自动转换外围设备的速度。
2.7USBOTG协议的介绍
USB的广泛应用正在成为外设与PC及笔记本电脑连接的工业标准。
我们开发了基于USB1.1协议的数据采集和控制系统以及USB和串行口通信板,取得了满意的效果。
但这些设备都是由一个主计算机来管理所有的通信,外围设备不能够直接彼此沟通。
在2001年,USB开发者论坛(USBImplementersForum,USBIF)发布了专门用于USB外设间可移动互联的USB2.0补充规范USBOTG(On-The-Go)V1.0。
USBOTG为外设之间点对点通信的实现提供了一个完善而经济的解决方案,突破了主PC机的约束,允许一个USB外设拥有受限的主机功能,实现与其它选择的USB外设通信;利用小型的连接器来满足外设接口外形多变的要求;小功率特性延长了电池的使用寿命。
USBOTG并没有影响外设到PC的连接能力和要求,而是为在PC机连接不可行或不能实现的情况下提供一