高速USB数据记录回放电路.docx

上传人:b****7 文档编号:11200081 上传时间:2023-02-25 格式:DOCX 页数:39 大小:373.33KB
下载 相关 举报
高速USB数据记录回放电路.docx_第1页
第1页 / 共39页
高速USB数据记录回放电路.docx_第2页
第2页 / 共39页
高速USB数据记录回放电路.docx_第3页
第3页 / 共39页
高速USB数据记录回放电路.docx_第4页
第4页 / 共39页
高速USB数据记录回放电路.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

高速USB数据记录回放电路.docx

《高速USB数据记录回放电路.docx》由会员分享,可在线阅读,更多相关《高速USB数据记录回放电路.docx(39页珍藏版)》请在冰豆网上搜索。

高速USB数据记录回放电路.docx

高速USB数据记录回放电路

清华大学

综合论文训练

题目:

高速USB记录/回放装置设计——软件部分

系别:

电子工程系

专业:

电子信息工程

姓名:

姜龙

指导教师:

王劲涛

2007年6月18日

中文摘要

本文介绍的高速USB数据记录/回放电路用于实验室的遥感卫星数字信号解调项目,它用来将解调后的高速信号通过USB线传入电脑以进行相应的操作,同时还可将电脑中的数据通过USB线发送出来。

根据我国的卫星研制计划,在我国卫星更新换代的过程中,一些地面的接收站也需要进行改造——启用新的设备和方案。

实验室目前在制作满足新的要求的性能更高的接收方案。

系统方案中包括用USB技术实现数据到电脑的高速传输,即高速USB数据记录及回放电路。

该电路不仅可以应用于接收遥感卫星信号,对于其他高速信号的记录也提供了可行的方案。

文章首先介绍了题目的背景和内容,接着对系统的开发工具和相关技术进行了简要的说明。

在第三章中,具体介绍了整个设计过程,对关键算法和技术做了详细的说明。

第四章是调试过程和结果。

最后一章是总结。

关键词:

高速数据传输USB技术PC机数据记录及回放

ABSTRACT

TheHigh-speedUSBrecordandreplaydeviceintroducedinthisthesisispartoftheremotesensingsatellitedigitaldemodulationsystem.Itisusedtotransmitthehigh-speeddataintoPCthroughtheUSBwire.ItalsocantransmitdatafromPC.

AccordingtotheplanofsatelliteresearchofChina,somegroundreceivestationsshouldberebuilttousenewdevicesandtechnologies.Tomeetthenewrequires,ourlabisresearchinganewdemodulationsystemwhichincludingdatatransmissionthroughUSB.SotheHigh-speedUSBrecordandreplaydeviceispartofthesystem.

Exceptbeingusedtoreceiveremotesensingsatellitesignals,thedesignofthisdeviceprovidesafeasiblesolutionmethodforotherhigh-speedsignaltransmissions.

Thisthesisgivesaintroductionoftheproject’sbackgroundfirst.Thenitintroducesthedeveloptoolsandrelatedtechnologiesbriefly.Inthethirdchapter,thewholedesignprocessisintroduced,andsomeimportantarithmeticisexplained.Theprocessofdebuggingisinthefourthchapter.Attheendofthisthesis,itisthesummary.

Keywords:

HighspeeddatatransmissionUSBtechnology

DatarecordandreplayonPC

目录

第1章前言1

1.1课题背景介绍1

1.2毕设题目及内容1

1.3论文的结构和安排1

第2章背景知识介绍3

2.1USB技术的介绍3

2.1.1USB技术3

2.1.2Cy68013芯片介绍4

2.1.3Cy68013芯片存储空间介绍5

2.2软件开发平台6

2.3前人完成工作简介6

第3章系统软件部分的设计与实现7

3.1系统整体的设计方案7

3.1.1整体框图7

3.1.2硬件部分7

3.1.3软件部分8

3.2PC应用程序的设计8

3.2.1总体框图8

3.2.2数据管理算法设计9

3.2.3数据发送算法设计11

3.2.4传输情况的实时显示13

3.2.5界面设计14

3.3固件程序的设计16

3.3.1固件程序的组成17

3.3.2设置回放电路所需的固件程序17

3.3.3固件程序的下载20

3.4I2C相关设计22

3.4.1I2C控制信号传输24

3.4.2密码验证功能设计25

第4章调试过程及结果27

4.1在原有电路板上的调试27

4.1.1用BusHound观察数据包27

4.1.2验证FPGA接收到的数据28

4.2在记录电路板上的调试29

4.2.1无SDRAM的调试29

4.2.2加入SDRAM的调试29

4.3新的记录电路的调试30

4.4回放电路的调试31

4.5I2C相关设计的调试32

第5章总结33

插图索引I

参考文献III

致谢V

声明VII

第1章前言

1.1课题背景介绍

高速USB数据记录回放电路是用于实验室的遥感卫星数字信号解调项目的,它用来将解调后的高速信号通过USB线传入电脑以进行相应的操作。

根据我国的卫星研制计划,在我国卫星更新换代的过程中,一些地面的接收站也需要进行改造——启用新的设备和方案。

实验室目前在制作满足新的要求的性能更高的接收方案。

系统方案中包括用USB技术实现数据到电脑的高速传输,即高速USB数据记录及回放电路。

1.2毕设题目及内容

我的毕业设计的题目是:

高速USB记录/回放电路设计——软件部分。

记录电路是将遥感卫星解调得到的数字信号转换成USB芯片需要的信号,并将数据传输到电脑上(实时处理或者存入硬盘)。

在保证数据正确性的基础上达到尽量高的速率。

开题时要求速率尽量达到360Mbit/s。

回放电路与记录电路相反,它是用来实现将电脑中的数据通过USB电路传输出来,在保证正确性的前提下达到尽量高的速率。

记录电路的高速率特性使其可以满足现在的绝大部分媒体传输信号(例如数字电视信号)等的速率要求。

同时回放电路可以让电脑作为信号的产生源,使得设计和调试更加的方便。

1.3论文的结构和安排

论文的第一章介绍了毕设题目的背景和内容。

第二章介绍了系统所用到的芯片、开发工具及相关技术。

在第三章中,具体介绍了整个设计过程,对关键算法和技术做了详细的说明。

第四章是调试过程和结果。

最后一章是总结。

第2章背景知识介绍

2.1USB技术的介绍

大体介绍一下USB技术现在的发展情况以及我们所使用的芯片的相关介绍。

2.1.1USB技术

目前在人们日常生活中,电脑的用途越来越广泛,而外部设备的种类也是越来越丰富,键盘、鼠标、调制解调器、打印机、扫描仪早为人所共知,摄像头、数码相机、MP3随身听、外置硬盘、光驱等接踵而来,单凭一个并口和两个串口已经无法满足用户的需要,USB接口的推出无疑从根本上解决了这一问题。

做为新一代的外部接口,USB的优点非常多,首先它可以支持热插拔技术和高级即插即用功能,这样用户可以方便的在计算机上添加外设,而且USB接口不使用IRQ的中断控制以及输入输出的地址资源,最多可以连结127个设备。

另外USB接口最大的优点就是速度快,尤其是运用在打印机、扫描仪等设备上,它可以显著提高用户的工作效率。

随着全新的USB2.0规范诞生,输入/输出的带宽得到了显著扩展,从而进一步刺激了USB外设的发展。

USB2.0(通用串行总线)是一种计算机外设连接规范,由PC业的一系列龙头老大联合制订,包括康柏、惠普、英特尔、Lucent、微软、NEC和Philips。

USB2.0在现行的USB1.1规格上增加了高速数据传输模式。

在USB2.0中,除了USB1.1中规定的1.5Mbit/s和12Mbit/s两个模式以外,还增加了480Mbit/s(60MB/s)这一“高速”模式。

由于增加了高速模式,将会使USB的应用范围得到进一步扩大。

由于总线的整体传输速度提高,即使同时使用多个设备也不会导致各设备的传输速度减慢。

2.1.2Cy68013芯片介绍

该芯片属于Cypress公司推出的EZ-USBFX2系列芯片。

EZ-USBFX2是世界上第一款集成USB2.0的微处理器,它集成了USB2.0收发器、SIE(串行接口引擎)、增强的8051微控制器和可编程的外围接口。

FX2这种独创性结构可使数据传输率达到56Mbytes/s,即USB2.0允许的最大带宽。

在FX2中,智能SIE可以硬件处理许多USB1.1和USB2.0协议,从而减少了开发时间和确保了USB的兼容性。

GPIF(GeneralProgrammableInterface)和主/从端点FIFO(8位或16位数据总线)为ATA、UTOPIA、EPP、PCMCIA和DSP等提供了简单和无缝连接接口。

CY7C68013集成了以下特性:

    ●USB2.0收发器、SIE(串行接口引擎)和增强性8051微处理器;

    ●软件运行:

8051程序从内部RAM开始运行,可以借助下列几种方式进行程序装载:

    

(1)通过USB下载;

    

(2)从EEPROM中装载;

    (3)通过外部存储器设备。

    ●四个可编程BULK/INTERRUPT/ISOCHRONOUS端点;

    可选双、三和四缓冲

    ●8位或16位外部数据接口

    ●通用可编程接口(GPIF)

    

(1)可以直接连接到并口,8位和16位;

    

(2)可编程波形描述符和配置寄存器;

    (3)支持多个Ready输入和Control输出。

    ●集成标准8051内核,且具有下列增强特性:

    

(1)可以达到48MHz时钟;

    

(2)每条指令占四个时钟周期;

    (3)两个USARTs;

    (4)三个定时/计数器;

    (5)扩展的中断系统;

    (6)两个数据指针。

    ●3.3V电源系统;

    ●智能串行引擎(SIE);

    ●矢量USB中断;

    ●独立的数据缓冲区供SETUP和DATA包控制传输;

    ●集成I2C控制器,运行速度可达100或400KHz;

    ●四个FIFO,可与ASIC和DSP等无缝连接;

    ●专门的FIFO和GPIF自动矢量中断;

    ●可用于DSLModems、ATA接口、相机、HomePNA、WLAN、MP3播放器、网络等。

2.1.3Cy68013芯片存储空间介绍

(1)内部数据RAM

FX2的内部数据RAM被分成三个不同的区域:

低(LOW)128、高(Upper)128和特殊功能寄存器(SFR)空间。

低128和高128是通用RAM,SFR包括FX2控制和状态寄存器。

(2)外部程序存储器和数据存储器

 FX2有8K片上RAM,位于0x0000-0x1FFF;512字节ScratchRAM,位于0xE000-0xE1FF。

尽管ScratchRAM从物理上来说位于片内,但是通过固件可以把它作为外部RAM一样来寻址。

    FX2保留7.5K(0xE200-0xFFFF)数据地址空间作为控制/状态寄存器和端点缓冲器。

(3)端点缓冲区

FX2包含3个64字节端点缓冲区和4K可配置成不同方式的缓冲,其中3个64字节的缓冲区为EP0、EP1IN和EP1OUT。

EP0作为控制端点用,它是一个双向端点,既可为IN也可为OUT。

当需要控制传输数据时,FX2固件读写EP0缓冲区,但是8个SETUP字节数据不会出现在这64字节EP0端点缓冲区中。

EP1IN和EP1OUT使用独立的64字节缓冲区,FX2固件可配置这些端点为BULK、INTERRUPT或ISOCHRONOUS传输方式,这两个端点和EP0一样只能被固件访问。

这一点与大端点缓冲区EP2、EP4、EP6和EP8不同,这四个端点缓冲区主要用来和片上或片外进行高带宽数据传输而无需固件的参与。

EP2、EP4、EP6和EP8是高带宽、大缓冲区。

它们可被配置成不同的方式来适应带宽的需求。

EP2、EP4、EP6和EP8大端点缓冲区主要用来进行高速(480Mbits/s)数据传输,可以通过FIFO数据接口与外部ASIC和DSP等处理器无缝连接来实现高速数据传输。

它具有通用接口:

Slave(从)FIFO(外部主)或GPIF(内部主)、同步或异步时钟、内部或外部时钟等。

2.2软件开发平台

应用程序的编写,使用的是微软的VisualStudio6.0和VisualStudio.NET2003。

前者用来编写生成dll文件,提供有关USB操作的函数接口。

后者编写界面程序。

VisualStudio .NET是一套完整的开发工具,用于生成ASPWeb应用程序、XMLWebservices、桌面应用程序和移动应用程序。

VisualBasic .NET、VisualC++ .NET、VisualC# .NET和VisualJ# .NET全都使用相同的集成开发环境(IDE),该环境允许它们共享工具并有助于创建混合语言解决方案。

另外,这些语言利用了.NETFramework的功能,此框架提供对简化ASPWeb应用程序和XMLWebservices开发的关键技术的访问。

2.3前人完成工作简介

之前实验室的师兄设计出过USB数据记录电路,但速率还可以通过修改方案进一步提升。

我的回放电路代码也是参考之前实验室师兄所写代码编写的

第3章系统软件部分的设计与实现

3.1系统整体的设计方案

首先简要的介绍一下系统的整体设计方案,包括软件和硬件部分。

3.1.1整体框图

如下图所示,左面三个方框属于硬件部分。

PC中的应用程序负责从硬盘上的数据文件中读取数据(或者自己产生特定的数据),然后通过USB传输线将数据传到电路的USB芯片上,与此同时,FPGA芯片通过产生各种控制信号来读取USB芯片中的数据,并经过转换将数据以正确的方式输出。

我的工作是完成PC机应用程序和USB芯片固件程序的编写。

下面两个部分简要的介绍了硬件和软件的整体构架。

3.1.2硬件部分

硬件部分是由苏承毅来设计的,主要芯片除了USB和FPGA外,还加入了两块SDRAM做缓存,以适应高速传输要求。

电路框图可以参看他的论文,这里略去。

3.1.3软件部分

首先利用MFC编写并生成一个dll文件,该文件负责数据传输的各种主要功能,并提供完整的接口。

同时,用VC2003来编写用户操作界面,该界面调用上面的dll文件,来实现相应的操作。

该应用程序可以实现从文件读取数据或者自己产生数据,并且以硬件设定的速率将数据正确完整的传输出去。

3.2PC应用程序的设计

PC应用程序的设计主要包括对USB设备的检测和传输功能的实现,对内存管理操作的算法设计等。

3.2.1总体框图

PC端应用程序的总体设计框图如下:

图3.1PC端应用程序整体框图

上图分为三部分,分别是PC机硬盘、内存和USB芯片的端点FIFO。

主要的操作都集中在内存中。

首先,从硬盘中读出数据放入PData中,然后送给DataList——一个负责数据流动、缓冲和速度控制的类,之后再送到Buffers,从Buffers将数据输出给USB的FIFO。

3.2.2数据管理算法设计

数据管理算法设计主要是对数据包的大小进行定义,对数据传输的流程进行控制,同时对数据传输的速度也要进行控制。

保证数据的正确性、稳定性和高速。

程序中用到两个队列对数据进行管理——DataList和PoolList。

DataList队列负责存放要传输的数据,PoolList负责数据的回收。

具体算法可以参看代码,下面两幅图是一个简要的说明:

图3.1数据管理算法说明图

(1)

如上图所示,在往USB芯片的FIFO传输数据时,DataList的第一个buffer中的数据会copy到Buffers中,然后将该buffer取走添加到PoolList的尾部。

图3.2数据管理算法说明图

(2)

如上图所示,PoolList会从自己的头部取出一个buffer,将数据copy进去并放到DataList的尾部。

3.2.3数据发送算法设计

在PC端,数据包在发送给USB芯片之前要经过一段FIFO进行缓冲。

FIFO的大小不是固定的,可以通过改变其大小来观察传输的性能,并最终确定一个合适的数值。

具体传输方法是采用CYAPI.LIB提供的BeginDataXfer(),WaitForXfer()和FinishDataXfer()。

BeginDataXfer()负责做好传输的开始准备工作。

每次传输都要以这个函数开始。

对于该函数的功能和使用说明如下:

BeginDataXferisanadvancedmethodforperformingasynchronousIO.Thismethodsets-upalltheparametersforadatatransfer,initiatesthetransfer,andimmediatelyreturns,notwaitingforthetransfertocomplete.

BeginDataXferallocatesacomplexdatastructureandreturnsapointertothatstructure.FinishDataXferde-allocatesthestructure.Therefore,itisimperativethateachBeginDataXfercallhaveexactlyonematchingFinishDataXfercall.

而对应的FinishDataXfer()则是在传输完成时调用的,用来完成数据的传输工作并且告诉调用者数据包是否正确完整的传输出去了。

对于该函数的功能和使用说明如下:

FinishDataXfertransfersanyreceivedbytesintobuf.Itsetsthelenparametertotheactualnumberofbytestransferred.Finally,FinishDataXferfreesthememoryassociatedwiththepXmitBufpointer.ThispointerwasreturnedbyapreviouscorrespondingcalltoBeginDataXfer.

WaitForXfer()用来指定数据传输的时间,该数据包需要在其指定的时间内传输完毕,否则这次数据传输会造成数据的丢失。

对于该函数的功能和使用说明如下:

ThismethodisusedinconjunctionwithBeginDataXferandFinishDataXfertoperformasynchronousIO.

tOutlimitsthetime,inmilliseconds,thatthelibrarywillwaitforthetransactiontocomplete.

对于这三个函数在传输中的具体使用方法,下面是一个典型的应用范例:

//Thisexampleassumesthatthedeviceautomaticallysendsback,

//overitsbulk-INendpoint,anybytesthatwerereceivedoverits

//bulk-OUTendpoint(commonlyreferredtoasaloopbackfunction)

CCyUSBDevice*USBDevice=newCCyUSBDevice(Handle);

OVERLAPPEDoutOvLap,inOvLap;

outOvLap.hEvent=CreateEvent(NULL,false,false,"CYUSB_OUT");

inOvLap.hEvent=CreateEvent(NULL,false,false,"CYUSB_IN");

charinBuf[128];

ZeroMemory(inBuf,128);

charbuffer[128];

LONGlength=128;

//Justtobecute,requestthereturndatabeforeinitiatingtheloopback

UCHAR*inContext=USBDevice->BulkInEndPt->BeginDataXfer(inBuf,length,&inOvLap);

UCHAR*outContext=USBDevice->BulkOutEndPt->BeginDataXfer(buffer,length,&outOvLap);

USBDevice->BulkOutEndPt->WaitForXfer(&outOvLap,100);

USBDevice->BulkInEndPt->WaitForXfer(&inOvLap,100);

USBDevice->BulkOutEndPt->FinishDataXfer(buffer,length,&outOvLap,outContext);

USBDevice->BulkInEndPt->FinishDataXfer(inBuf,length,&inOvLap,inContext);

CloseHandle(outOvLap.hEvent);

CloseHandle(inOvLap.hEvent);

其中BeginDataXfer(inBuf,length,&inOvLap)中的inBuf是数据包存储的地址,也就是在缓冲中数据存储的位置。

而length是数据包的长度,也就是要传输的数据量。

而WaitForXfer(&outOvLap,100)中的100则指定了数据包可以传输的总时间。

3.2.4传输情况的实时显示

在进行USB数据传输时,软件界面要能够实时显示传输的情况——包括速率、成功传输和失败传输的数据数。

因此,在每个数据包传输完成后,都要对传输的情况进行统计,同时还要对本次传输所用的时间进行监测和统计,以完成速率的计算。

计算完成后,需要在USBTrans.cpp中提供如下成员函数方法:

USBTRANS_APIvoid__stdca

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1