an61345数据流测试及fifo与fpga通信_第1页
an61345数据流测试及fifo与fpga通信_第2页
an61345数据流测试及fifo与fpga通信_第3页
an61345数据流测试及fifo与fpga通信_第4页
an61345数据流测试及fifo与fpga通信_第5页
已阅读5页,还剩15页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

作者:RamaSaiKrishna相关应用笔记:AN65209、AN61345AN61345FIFOFX2LP™FPGA。示例实现中描述的接口为各个应用执行高速度的USB连接事项,如、工业控制和以及图像处理。本应用笔记提供的项目通过使用Xilinx®Spartan®6FPGA来实现和测试。简 StreamIN(流入)传 StreamOUT(流出)传 如何导入该设计,以便与 总

赛斯EZ-USBFX2LP是一个灵活的USB2.0外设控制USB2.0USB2.0中480每秒兆位的通信速率,FX2LP包含了一个的硬USB数据,并与各种高带宽的外部设备(如MCU、ASIC和FPGA)无缝连接。FX2LP-FPGAFPGAUSB连接事项,如、工业控制和以及图像处理。FX2LPFIFO模式下运行,FPGA作为主设备使用。本应用笔记还为从设备FIFO实现提供了示例.UCypressBFX2LPFPGA。这两个模式分别为通用可编程接口(GPIF)模式和从设备FIFOGPIF模式:在该模式下,FX2LP作为外部系统的主设读和写操作。当外部系统不能作为FX2LP的主设备用)GPIF模式。在这种情况下,接口实现的复杂操作将由FX2LP执行。 FIFO模式:FX2LP的外部系统能够生成读和写控制信号,因此,它能作为FX2LP的主设备使用。在本应用中,FX2LP被配置为VerilogVHDL示例项目,以介绍如何将一个外部FPGA连接至FX2LP的从设备FIFO接口。注意:XilinxSpartan6FPGA中实现并测试的。本应用笔记所提供的代码是标准的Verilog/VHDL代码。因此,在任何FPGA上实现项目时,可以将这些文FPGA器件。FIFO接口、Verilog/VHDL编码、FPGA合成工具。请参阅EZ-USB技术参考手册的第9章(从设备FIFO)。图2.硬件连接框图

SLWR引脚应该由主设备激活,以将数据写入到FIFO内。FIFO使用这些标志来表示各种状态(FIFO接口同步的时钟。在本应48MHzFX2LPFPGA生分别为12、24或48MHz。

在FX2LPDVK(CY3684)内容中提供了集成开发环境的INOUTFIFO的自动模式。这样,对于IN传输,数据包将从外部设备自动被发送到USB端;对于OUT传输,则反向传送。传送数据包时,无需8051CPU请参考EZ-USB技术参考手册中的从设备FIFO章节。由于“Bulk”。但在USB描述符文件中,根据终端应用,您可以将端点类型配置为Interrupt(中断)、Control(控制)Isochronous(同步)。化外,将数据传入/传出主设备时,无需任何代码(2)。.OO置为固定模式或索引模式。在索引模式下,AGA、GB和AGC被自动分别配置为表示空、满和可编程的标志。在特定时间点,这些标志用于IOADR[:]行所指向的端点。在固定模式中,通过对可编程标志寄存器进行写操作,可将四个标志中的任何一个配置为空、满或可编程标志。在该设计中,LAGA被配置为2OUTFO的空标志,LAGD被配置为EP6INFIFOEP6IN、512FIFO,使之以字节格式传输数

当EP6O中的字节数值等于这些寄存器指定的数值时,将自动传送数据包。要求指定的数值不大于端点描述符所指定的最大数据包大小。FPGA代码的主要功能是从设备FIFO的满标志和空标志,然后分别对FIFO进行读和写操作。FPGA的接口时钟(IFCLK)180度,以满足FX2LP的从设备FIFO接口建立时间的要求。VerilogVHDLFPGA配置为FX2LPFIFO的主设备。XilinxISE设计套件用于代FPGAFX2LPEP2FIFO中的所有数据进行读EP6FIFO内。(本应用笔记附上的)关联项目文件夹Loopback中包含了该项目。Flagd==0orfifo_empty==slwr=

slrd=sloe=slwr=faddr=

flaga==slrd=sloe=slwr=faddr=Flagd==1 slrd=sloe=slwr=faddr=

slrd=0sloe=slwr=faddr=Flaga==0slrd=1,sloe=loop_back_idleSLRD、SLOESLWR信号均为低电平(取消激活)EP2FIFO空标(FLAGA)loop_back_readloop_back_read状态中,FPGA

通过激活SLRD和SLOE来数据。当EP2FIFO空标志变为低电平时,状态机将进入loop_back_wait_flagd状SLRDSLOE信号。在loop_back_wait_flagd状态中,FIFO地址行被驱动到地址EP6。它会一直处于该状态,直到EP6满标志(FLAGD)变为低电平为止。当FLAGD变为高电平时,状态机将转到FPGA将相同的数据写入到EP6FIFO内。FPGAEP6的满标志(FLAGD)和同步(FX2LP的PC0)信号。当FLAGD和同步信号均为高电平时,FPGA

如果激活满标志,FPGA将暂停写操作。如果取消激活该标FPGA将恢复该写操作。关联项目文件夹(Streamslwr=slrd=sloe=slwr=slrd=sloe=faddr=flagd==0slwr=slwr=slrd=sloe=faddr=该状态机中包括两个不同的状态:stream_in_idle和stream_in_write。stream_in_idle是指SLWR处在高电平EP6满标志(FLAGD)为低电平(被同步(FX2LP的PC0)信号变为低电平时,状态机将从

stream_in_idle状态进入stream_in_write状态。在stream_in_write状态中,FPGA连续将递增数据写入到EP6FIFOFLAGD变为低电平时,状态机将返回到stream_in_idleSLWR

5StreamOUTFlagaFlaga==slrd=sloe=slwr=faddr=slrd=sloe=slwr=faddr=flaga==0slrd=1,sloe=该状态机中包括两个不同的状态:stream_out_idle和stream_out_read。stream_out_idle是指SLRD和SLOEEP2空标志(FLAGA)为低电平(被激活)状态机将处在stream_out_idle状态。EP2stream_out_idle状stream_out_readstream_out_read状态中,FPGA将连续从EP2FIFO中数据。当FLAGA变stream_in_idle状态。在转换过

SLRDSLOE6StreamIN7StreamIN8StreamOUT9StreamOUTFLAGFLAGFLAGSyncXilinxSpartan6CypressSpartan-6相兼容的示例。该示streamIN、streamOUT和回送传输。FPGA代码架构一节解释了FPGA位字段的行为。ZTEXFX2LPFPGA1.11(11所示)1.3(12所示)。实验电路板需要一个电源供应和一个JTAG线缆(用于配置FPGA)。CON1中心引脚(+)2.1mm,柱形(-)5.5mm,用于4.5V16V的电源电压。CON9(位于实验1.3上)Xilinx14引脚、2.0mm间距的JTAG连接器。模块中和实验电路板上都有一个名称为‘1’的极化键(孔)。需要在实验电路板1.3上安装ZTEXFX2LPFPGA1.11,以便使两者的极化孔位于5V12VUSB线缆将该板连接至主机PC。USBII(JTAG适配器)ZTEXFX2LPFPGA模块1.11中的XilinxSpartan-6FPGA。‘ChipscopePro’(下面步骤中进行介绍)是与该JTAG

10硬件连接(Ztex电路板11ZtexFX2LPFPGAFX2LP固件图14.从设备FIFO接口的FX2LP固件

需要用户代码时,fw.c(器件请求)的外部函数(在Slave.c文件中)。对于{TD_init();EnableInterrupts{{TD_init();EnableInterrupts{{...BOOLDR_SetConfiguration(void)BOOLDR_GetConfiguration(void)BOOLDR_Set_Interface(void)BOOLDR_Get_Interface(void)voidISR_EP2inout(void)voidISR_EP6inout(void)voidISR_Sof(void)由主机发送的“t”值,并在主机发出“t”请求时对DR调用(“s”)更改机的分辨率或将请求路由到两用户代码实现从设备FIFO应用。IFCONFIG=0xE3;//Internalclock,48MHz,SlaveFIFOinterfaceIFCONFIG=0xE3;//Internalclock,48MHz,SlaveFIFOinterfaceFw.cmainUSB维持的大部分操不需要修改Fw.c文件。执行各个日常操作的步骤后,该函数将调用Slave.c所提供的外部函数,即TD_init。(前缀TD表示“任务调度”。然后,它进入一个无限循环,以通CONTROL0SETUP数据包的到来。该循环还会检查USB暂停,但从设备FIFO应用不会使用该循环。每次进入该循环时,该函数都将调用Slave.c文件中TD_Poll在本应用中,TD_Poll函数用于FIFO被配置为自动模式,因此该函数不会进行任何操当与USBPCGET_DESCRIPTOR请求以确定器件类型及其要求。这些操作属于枚举过程的一部分。fw.c代码截取这些请求,并通过使用dscr.a51文件中所的数值处理请求。使用USB框架的优势是已经测试和验证过代码,并通过USB99USB规范中用于处理器件请求(EP0)及其正确响应的章节。

将EP2配置为BULK-OUT端点,并将EP6配置为BULK-IN端点。该两个端点均为四倍缓冲,并使用EP2CFGEP2CFG=0xA0;//out512bytes,4x,EP6CFG=0xE0;//in512bytes,4x,EP4CFG=0x02;//clearvalidbitEP8CFG=0x02;//clearvalidbitEP2FIFOCFG=0x00;//AUTOOUT=0,//coreEP2FIFOCFG=0x00;//AUTOOUT=0,//coreneedstoseeAUTOOUT=0toAUTOOUT=1switchtoarmendpointsEP2FIFOCFG=0x11;//AUTOOUT=1,EP6FIFOCFG=0x0D;//AUTOIN=1,ZEROLENIN=1,WORDWIDE=1

置,使之提供 时钟前,FX2LP固件不能通过配置IFCONFIG寄存器来使用外部引脚(注意,在固件将IFCONFIG.7设置为0前,必须存在外部IFCLK源(IFCLK由外部器件提供))。为满足该条件,应首先配置IFCONFIG寄存器,以使用 IFCLK。然后,在FPGA启动并以位流的方式运行时,才能通过更改IFCONFIG.7FX2LP的PC0作为FX2LP和FPGA间的同步信号使用。 FX2LP固件是本应用笔记的附录部分。在将位 FX2LP固件是本应用笔记的附录部分。在将位 if(!(IOC&{done_frm_fpga=}if((done_frm_fpga)&&(IOC&{IFCONFIG=0x03;//externalclockinput,SlaveFIFOinterfaceIOC|=0x01;//output1onPC.0...SYNCsignalisHIGHdone_frm_fpga= PINFLAGSABPINFLAGSAB=0x08;//FLAGA-EP2EFPINFLAGSCD=0xE0;//FLAGD-EP6FF将PA1引脚(连接至FPGA的PROG_B引脚)置为高电平。为使能FPGA的JTAG配置,需要进行上述FX2LPZTEX硬件设置,OEA|=0x02;OEA|=0x02;//DeclarePA.1asoutputIOA|=0x02;//output1onPA.1PC0PC1引脚配置为输出。PC0FPGAFX2LP之间传输的数据。PC1FPGA是否准备好提供从设备FIFO接OEC|=0x01;OEC|=0x01;//PC.0asoutput(SYNCIOC|=0x00;//output0onPC.0...SYNCsignalisLOWOEC&=0xFD;//PC.1asinput(Clockchangingsignal)

FPGAControlCenter工具编译该固件,并将其到FX2LP中。操作流程一节说明了这些步骤。ControlCenter工具使用赛斯ControlCenter工具固件,并对FX2LPBULK传输。通过安装赛斯的SuiteUSB开发工具,可以获取ControlCenter。Chipscope‘ChipScopePro’软件(XilinxISE14.1一同提供)XilinxSpartan-6FPGA30天内,可以试用XilinxISE设计套件14.1的评估版本,无需证。XilinxSpartan-6FPGA的其他任何有效ChipscopeProXilinxSpartan-6FPGA的各个步骤。如果使用‘ChipscopePro’软件的其他任何版本,请确保该版本支持XilinxSpartan-6FPGA。fw.cTD_Poll(14)。在这个从设备FIFO设计中,TD_Poll用于更改接口时钟本应用笔记中的示例项目将使用来自FPGA(IFCLK)。如果您使用了ZTEX硬件电路板,请先编程FX2LPFPGAPROG_B引脚(PA1)设置为高电平,并对该引脚进行配置。在对FPGA进行配分配CYUSB驱动程序USBZTEXFPGA模块连接至主机后,请检查器VIDPID0x04b40x8613。如果通过ZTEXSDK构建的固件被,则VID和PID分别0x22140x0100VIDPID的值添加CYUSB.inf文件内。将‘CYUSB.sys’驱动程序分配给ControlCenter工具,则需要实件的详细信息,请参考文档CyUSB.pdf中的内容。当您安装赛斯的SuiteUSB开发工具时,可以在下面路径中查找CyUSB.pdf:C:\Cypress\CypressSuiteUSB3.4.7\Driver(根据安装路径有所变化)。FX2LP固件打开ControlCenter工具并FX2LP固件(依次选择Program>FX2>RAM,然后导航到关联项目文件夹中的slave.hex文件)。VIDPID0x22140x0100,则在slave.hex后,您需要按下下图所示的按键,以重新连

FX2LP172图17.slave.hex后ControlCenter上的FX2LP器件FPGA位流JTAGZTEX1.3JTAG器。然后,FPGA的PROG_B引脚(连接至FX2LP的PA1)将变为高电平,以使能FPGA的JTAG配置。通过Spartan-6兼容位流(本应用笔记提供的StreamIN、18ChipScope验证回送位流的结果FPGA配置为回送位流(3步骤),它将在端点EP2OUT和EP6IN上实现一次回送操作。FPGA将主机发送到EP2的数据,并将这些数据写入到EP6端点FIFO内。

ControlCenterBulkOutEndpoint(0x02)TransferFile-OUT按键,512_count.hex(附件中提供)以执行数据传输。通过点击TransferData-IN按键EP6IN缓冲器,以验证图23.从IN端点6同样的数验证StreamIN位流的结果StreamINFPGA(4步骤)FPGA进入主设备模式。FPGAFX2LP的端点6INStreamINControlCenterBulkinendpoint0x86)TransferData-IN按键。图24.从IN端点6数验证StreamOUT位流的结果如果通过StreamOUT位流配置FPGA(第4步骤),将使FPGA进入主设备模式。FPGA将来自FX2LP的OUT端点2证端点2上的OUT传输。FPGA根据来自FX2LP的标志从OUT端点2数据。FPGA只会忽略所接收的数据,并等待FX2LPOUT2Streamer(流式)应用(USB3.4中提供的),CyUSB.sys(版本3.4.7)Windows764位In7系列/c216集系列中,可以测量到大小39MB/s左右的吞吐量。有关流式器件的吞吐量评估的详细信息,请参考应用笔记AN4053—通过EZ-USBFX2™和EZ-USBFX2LP™上的同步/批量端点进行数据流

256PacketsperXfer”和64“XferstoQueue”,可以测量吞吐量。Verilog源代码。StreamStreamIN数据传StreamFPGAVerilog源代VHDL源代码。StreamStream传输的FPGAVHDL源代使用SDCC编译器编译

如要导入该设计,以便同AlFPGA一起使用,您需要 FX2LPF

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论