使用ez usb fx3从设备fifo接口进行设计_第1页
使用ez usb fx3从设备fifo接口进行设计_第2页
使用ez usb fx3从设备fifo接口进行设计_第3页
使用ez usb fx3从设备fifo接口进行设计_第4页
使用ez usb fx3从设备fifo接口进行设计_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

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

文档简介

作者:RamaSaiKrishna软件版本:EZ-USBFX3相关应用笔记:AN75705、AN65974AN65974EZ-USB®FX3™的同步从FIFO接口。它详尽说明了硬件接口和标志的配置设置,并提供了相关的示例。它还提供了有GPIF™IIDesigner的参考信息,以便能轻松地使用FIFO接口进行设计。另外,本笔记还提供了两个完整的设计示例,说明如何使用同步从设备FIFO将FPGA连接至FX3。简 GPIF 标志配 GPIFII 使用局部标志情况下的通用..................... 由标志引起的错误条

汇 附录B:用FX3开发套件(CYUSB3KIT- 附录 简赛斯的EZ-USBFX3是新一代USB3.0外设控制器,可让开发者将USB3.0功能添加到任何系统内。该控制器非常适合图像和设备、、扫描仪等应用。EZ-USBFX3设有一个完全可配置的并行、通用可编程GPIFII接口,可将其连接至外部处理器、ASIC或FPGA。GPIFII是赛斯旗舰USB2.0产品FX2LP中的GPIF的加强版本。GPIFII通过各接口(如同步地址数据复用接口)为常用设备(FPGA,图像传感器和处理器)提供无缝连接。同步从设备FIFO接口是GPIFII的普遍应用。该接口适用于连接至EZ-USBFX3的外部器件通过FX3FIFO对其进行数据/写入操作的应用。不可通过从设备FIFO接口执行直接寄存器。本应用笔记先简单介绍GPIFII,然后详细讨论同步从设备FIFO接口。此外,还提供了两个完整的设计示例,用来说明如何在FPGA上执行一个与同步从设备FIFO相兼容的主控接口。同时也提供了XilinxSpartan6FPGA和AlCycloneIIIFPGA的Verilog和VHDL文件。示例中包含了同步从设备FIFO的相应FX3固件项目。这些示例使用XilinxSP601评估套件(用于Spartan6FPGA)、Al CycloneIIIStarter电路板(用于CycloneIIIFPGA)、FX3开发套件(DVK)和FX3软件开发套件(SDK)来开发。GPIFII是一个可编程状态机,可以灵活地实现一个工业标准或接口。它能够作为主设备,也可以作为从设备运提供256种固件可编程状16816个可配置的控制引脚;所有的控制引脚可作为输入/输出或双向引脚使用GPIFIIGPIFII状态转换所驱动。状态机的运行方式由一个描述符定义。该描述符为满足所需接口规格而设计。本质上,GPIFII描述符是一组可编程寄存器配置。EZ-USBFX3寄存器空间中的8KB专门作为GPIFII波形空间,用于GPIFII描述符。USB同步从设备FIFO接口同步从设备FIFO接口非常合适外部处理器或器件需要对EZ-USBFX3的内部FIFO缓冲区进行数据读/写的应用。寄存器不可通过从设备FIFO接口执行。同步从设备FIFO接口通常是USB应用的首选接口,可以满足高吞ExternalFPGA/EZ-USBExternalFPGA/EZ-USBDQ[15:0]/DQ[31:0]信号名信号说这是从设备FIFO接口的选择信号。必须激活它,才可以从设备FIFO这是从设备FIFO接口的写入选通信号。必须激活它,才可以对从设备FIFO执行写入操作这是从设备FIFO接口的选通信号。必须激活它,才可以对从设备FIFO执行操作这是输出使能信号。该信号激活后,FX3就可驱动从设备FIFO接口的数据总线。必须激活它,才可以对从设FLAGC/这些信号均是X3的标志输出。它们表示X3套接字是否可用。1在随附的示例项目中,FAGA、LAGB使用于从设备O写入操作,而LAGC、FAGD使用于从设备O操作。这是从FIFO2这是从FIFO1632激活该信号后,可将短数据包或零长度数据包写入从设备FIFO内这是从设备FIFO 线程和套接字一节介绍了用于数据传输的套接字的概念。标志配置一节详细描述了各标志带两个地址线和带五个地址线的从设备FIFO之间的差别带两个地址线的同步从设备FIFO接口支持多达四个套接字。如要四个套接字以上,请使用带五个地址线的同步从的引脚数量降低,因此,需要将标志配置为一个current_thread标志。 由于额外的延迟和其他接口协议要求,建议您只在应用需要四个GPIFII套接字以上时才使用带五个地址线的同步从设备FIFO接口。有关该接口的信息,请参考应用笔记AN68829—用于EZ-USBFX3的从设备FIFO接口:5位地址模式。备从设备FIFO接口的引脚映射情况2显示了FIFO接口的默认引脚映射情况。该表还介绍了GPIFII被配置为从设FIFO接口情况下各个可用的GPIO引脚和其他串行接口(UART/SPI/I2S)。可按需修改引脚映射情况,并且可通过GPIFIIDesigner工具添加或重新配置各个标志。信息,请查看标志配置一EZ-USBFX3引使用16位数据总线的同步从设备FIFO接使用32位数据总线的同步从设备FIFO接GPIO/SPI_SCK从设备FIFO序列和接口时同步从设备FIFO接口时序

tt3cycefromaddrtoda

2cyclelatency

tFFO t(dedicatedthreadFlagforAn)(1=NotEmpty0=Empty)(dedicatedthreadFlagforAm)(1=NotEmpty0=Empty)

2cyclelatencyfromSLRDtoFLAGtttDQ(Data High-

D D(Am)D(Am)SLWR同步从设备FIFO读序列FIFO地址稳定且SLCS#激 激活SLRD#FIFO指针在PCLK的上升沿上更新,同时,SLRD#被激活。这样会启动从新寻FIFO至数据总线的数据传输。经过tCO的传输延迟时间(从PCLK的上升沿算起)后即可提供新的数值。N是从FIFO的第一个数值。要想驱动数据总线,还必须激活SLOE#。突发时将发生相同的序列注意:对于突发模式,SLRD#和SLOE#在整个过程中保持激活状态。当SLOE#被激活时,将(使用之前已寻址的FIFO的数据)驱动数据总线。SLRD#被激活时,在每一PCLK的连续升沿上,FIFO指针会递增,且下一个数据值

tCH

tASFIFO dedicatedthreadFLAGforAn(1=NotFull0=Full)

3cyclelatencyfromSLWR#toFLAG

3cyclelatencyfromSLWR#toFLAGdedicatedthreadFLAGfor(1=NotFull0= tDS

DQ(DataN) D(Am)D(Am)tPES

tCH

tASFIFO

tPES(1=NotFull0=Full)(1=NotFull0=Full)DQ(Data High-同步从设备FIFO写序列FIFO地址稳定且SLCS#tC的延迟后,FIFO标志将被更新。注意:在突发模式下,SLWR#和SLCS#在整个突发写入过程中保持激活状态。在突发写入模式下,SLWR#被激活PCLK的上升沿到来时,都会将数据总线上的值写入FIFO内。此外,FIFOPCLK的每个上升沿短数据包:PKTEND#信号可将某个短数据包发送USB主机。需要设计外部器件/处理器,使之在传输最后数据字时同时激活与该字相应的SLWR#脉冲和PKTEND#。PKTEND#激活期间,FIFOADDR需要保持不变。同时激活PKTEND#SLWR#时,GPIFII状态机会将数据包视为短数据包,并将其发送到USB接口。如果协议不要求传输任数据包,则PKTEND#信号可被置高。请注意,执行读操作时,没有任何具体信号表示已从USB获取了短数据包。空标志必须由外部主设备,以确定读零长度数据包:外部器件/处理器可仅通过激活PKTEND#,而没有激活SLWR#来传输一个零长度数据包(ZLP)。必须驱动SLCS#和地址,如图5所示。标志使用情况:外部处理器标志信号来控制流量。标志信号由EZ-USBFX3器件输出。通过配置各标志,可显示参说最小最大单接口时钟频–时钟周–时钟为高电平的4–时钟为低电平的4–SLRD#CLK的建立时2–SLRD#CLK的数据保持时–SLWR#CLK的建立时2–SLWR#CLK的数–时钟至数据有效的时–7数据输入的建立2–时钟上升沿后数据输入保持的时0–地址到时钟的建立时2–CLK至地址的地址保持时–SLOE#到数据为低阻态的0–时钟到标志输出的传输–8SLOE#取消激活到数据为高阻态的–8PKTEND#CLK的建立时2–CLK上升沿后PKTEND#保持的时–CLK上升沿后数据输出保持的2–注意:ADDRDATA的三需要理解线程、套接字以及DMA通道的概念。线程和套接字套接字是外设硬件模块FX3RAM之间的连接点。FX3上的每个外设硬件模块(如USB、GPIF、UARTSPI)具这些寄存器指向有效的DMA描述符,并使能或标记与套接字相关的中断。DMA描述符是一组位于FX3RAM中的寄存器。它了DMA缓冲区的地址和大小数据,以及指向下一个DMA描述符的指针。这些指针构建成DMA描述符链。DMA缓冲区是RAM的一部,用于暂时通过FX3器件传输的数据。通过FX3固件,可将部分RAM空间作为缓冲区使用。这些缓冲区的地址被为DMA描述符的一部分GPIF线程是GPIFII模块内的数据路径,用来将外部数据引脚连接至套接字。套接字可通过某些直接互相发出信号,或者通过中FX3CPU发出信号。该操作由固件配置的。例如,将数据流GPIFII模块传输USB模DMA缓冲区目前为空。该操作被称为自动DMA通道。当FX3CPU不用修改数据流中的任何数据时,将实现自动DMA通道。另外,GPIF套接字FX3CPU发送一个中断GPIF套接字已经写满DMA缓冲区。FX3CPU可将该信USB套接字。USB套接字FX3CPU发送一个中断,来通USB套接字已经读空DMA缓冲区。此时,FX3CPU可将该信息GPIF套接字。该操作被称为手DMA通道实现。如FX3CPU需要添加、删除或发送套接字是指用于将数据写入DMA缓冲区内的套接字。接收套接字是指从DMA缓冲区内数据的套接字。套接字使用于DMA描述符上的DMA缓冲区地址、DMA缓冲区大小和DMA描述符链的值来管理数据。套接字写满或DMA缓冲区后,需要经过一段时间(几微秒)DMA描述符转移到另一个描述符。转换过程中,套接字不EZ-USBFX3可提供多达四个物理硬件线程,以用于通GPIFII传输数据。每次可将任何一个套接字映射到一个物理线程上。默认情况下,PIB0被映射到线0,PIB套接1被映1,PIB2被映射到线2以及PIB套接字3被映射到线程3。请注意,接口上的地址信号A1:A0表示需要的线程。FX3的DMA运行机制将数据传输到映射到该线程上的套接字。因此,当A1:A0=0时,将线程0,并且,通过线程0传输的所有数据将被传输到套接字0。同样地,当A1:注意:从设备FIFO接口仅包含两个地址线,所以最多只能四个套接字。如要四个套接字以上,必须使用带五个地址线的从设备FIFO接口。信息,请参阅应用笔记AN68829—用于EZ-USBFX3的从设备FIFO接口:5位必须通过配置DMA通道指定需要的套接字DMA通道配置备因此,若要通过从设备FIFO接口实现双向数据传输,则需配置两个DMA通道,其中一个带有作为发送套接字的作为发送套接字的“P”端口是外部器件通过从设备FIFO接口对其进行写入的套接字;作为接收套接字的“P”端口是外部器件通过从设备FIFO接口对其进行的套接字。DMA通道上的“P”端口套接字编号要与A1:A0DMADMA通道。请注意,标志将分别表示每个缓冲区的满/为例如,如果已将两个大小均1024字节的缓冲区分配DMA通道,则1024字节写入到第一个缓冲区后,满标志将表示“满”状态。它持续显示满状态,直DMA通道转到第二个缓冲区为止。虽DMA通道转到下一个缓冲区所需的时长通常为几微秒,但未能确定该时长。外部主设备必须标志来确定完成切换操作以及可用下一个缓冲区来标志配置线程标志例如,如果FLAGA于线程0,FLAGB于线程1,当外部处理器对线程0进行时,必须FLAGA。当外部处理器线程1时,则必须FLAGB。置低的时间。在第四个时钟沿上,外部主设备可以对处于低电平的标志进行采样,如图4所示。读传输过程结束时,标志始终经过两个周期的延迟。两个周期的延迟是从使缓冲区变为空的读周期(最后一次激活 当前线程标志可对标志进行配置,来指示当前寻址的线程状态。在这种情况下,GPIFII状态机对地址总线上的地址进行采样,然后更新相应标志,用于指示该线程的状态。这种配置要求的引脚数量更少,因为单个“current_thread志可用来表示四个线程的状态。但当同步从设FIFOcurrent_thread标志时,将发生两个周期的延迟GPIFII先要沿上,可以寻址线程的标志的有效状态进行采样(请注意,SDK中的从设备FIFO描述符使用“current_thread”FIFOcurrentthreadFLA(1=NotFull0=Full)注意:写传输过程结束时,标志始终经过三个周期的延迟。这三个周期的延迟是从使缓冲区变为满的写周期到标志被置低的时间。在第四个时钟沿上,外部主设备可以对处于低电平的标志进行采4所示。 局部可对标志进行配置,以指示套接字的一部分空/一部分满状态。必须选择满足下面条件的水印值:当将要读/写的32位注 表4汇总了各种标志配置的相应延迟。该表还显示了GPIFIIDesigner中必须为特定标志选择的设置。有关.标志配GPIFII标志设置选传输结束时的标志延所需的附API调志的延对从设进行的写操对从设进行的读操(从最后一(从最后一激活空标志延迟延迟0周(外部器件可(外部器件可4个时3个时对有对有采样采样2个周(外部器件可(外部器件可(外部器件可3个时4个时3个时对有对有对有采样采样采样0周取决取决通过调一部分空标来设置水印等级注意:水印的单位为32位数据字示例设置了04设置了34一部分空标2个周3个时取决取决CyU3PGpifSocketConfigureAPI对有注意:水印的单位为32位数据字采样示例设置了04设置了34GPIFII实现同步从设备FIFO接口通过安装GPIFIIDesigner工具,您可以看到从设备FIFO接口的GPIFII实现指导。请从赛斯上安装GPIFIIDesigner工具。当启动GPIFIIDesigner时,您可以在起始页上寻找CypressdInterfaces(赛斯提供的接口)项图7.GPIFIIDesigner工具内的从设备FIFO项目—Cypressdsync_slave_fifo_2bit项目是2位地址进行同步从设FIFO接口GPIFII实现。下一节将说明如何GPIFIIDesigner配置局部标志。配置局部标志在GPIFIIDesigner工具中,打开CypressdInterfaces下方的sync_slave_fifo_2bit项目,然后选中 图8.GPIFIIDesigner中的标志设置—CypressdInterfaces项下的除了sync_slave_fifo_2bit.cyfx项目中所提供的设置之外,若想要添加标志或进行修改,请依次选择File>SaveProjectasEditable。这样,可以将该项目保存为新一个名称,从而对新保存的项目进行更改。9通过默认sync_slave_fifo_2bit中的“SaveProjectasEditable”功能,设置新项目中的标配置局部标志的第二步是指定固件项目中的标志水印值。在cyfxslfifo.c文件中,添加一个CyU3PGpifSocketConfigure()API调用,以指定水印值。在调用CyU3PGPIFLoad()API后可立即调用该API。有关CyU3PGpifSocketConfigure()API的完整说EZ-USBFX3SDKAPIAPI的参数使用局部标志情况下的通用激活局部标志后,应使用下面来计算将要读/写的数据字数量。()时钟沿到来(这时,对处于低电平的局部标志进行采样)后将要写入的数据字的数量x(32/总线宽度)–4时)=水印值x(32/总线宽度)–1局部标志进行采样)后维持激活SLRD#的周期数=水印值x(32/总线宽度)–3。()本节介绍了使CyU3PGpifSocketConfigure()API指定的水印值的影响示例。还提供了截图,以明确显示使用不同水示例 0的逻辑分析器截图。可见,FLAGB(局部标志)在写入最后数据字的同一个周期示例 下面显示了标志在传输结束时变为0的逻辑分析器截图。可见,在最后数据前四个周期,FLAGB(局部标志)转为低电平。这样,在FLAGB转为低电平的周期后,可以三个数据字。水印值=4,总线宽度=32因此,时钟沿到来(这时,对处于激活状态的局部标志进行采样)后可用于的32位数据字的数量=4x(32/32)–1=3示例下面显示了标志在传输结束时变为0的逻辑分析器截图。可见,在写入最后数据前的三个周期内,FLAGB(局部标志)处于低电平。这样,在FLAGB转为低电平的周期后,可以两个数据字。水印值=3,总线宽度=16示例 下面显示了标志在传输结束时变为0的逻辑分析器截图。可见,在 志)处于低电平。这样,在FLAGB转为低电平的周期后,可以 使用局部标志时的其他注意事项:局部标志仅用于决定传输结束的时间。必须在开始传输时满/空标志,以确保套接字的可用性。这意味着,不避免使用局部标志。外部主设备应计算将要写入或的数据量,该计数值不超过创建DMA通道时所设置CyU3PGpifSocketConfigure()APIAPI中的最后参数。突发值被设置后,DMA硬件将在每个突发传输后(而不是每个字传输后)检测水印值。例如,如果外部主设备始终进行8个字的突发写EZ-USBFX3DMA8字突发的空间,标志将转为低电平。在局部标志转为低电平后,外部主设备可写入一个完整的8字突发。对于在16位模式下(对从设备FIFO进行)的写操作,请根据使用局部标志情况下的通用一节所介绍的公式,将CyU3PGpifSocketConfigure()API中的水印值设为‘6’。 由标志引起的错误条如果空白的缓冲区,将发生缓冲区欠载错误。如果写入到已满的缓冲区,则发生缓冲区过载错误。这些错误可导致缓冲区边界的数据被损坏。由于从设FIFOFX3PIB模块域,因此,与接口相关的所有错误将被表示为PIB错误。如果发生某PIB错误,将触PIB中断。FX3SDK允许寄存一个用PIB中断的回调函数。该回调函数用于检查PIB错误代码。下面代码示例介绍了如何寄存一个回调函数以及用于检查欠载/过载错误并弹出一个调试信息的实际回错误代码指示发生错误的线程,如表5所示。如果发生这些错误中的任意一个,赛斯建议您使用一个逻辑分析器谨慎地分析接口时序,并特别注意局部标志变为零后所执行的读/写周期数量。有关的示例,请参考图11到图14。/*RegisteracallbackfornotificationofPIBinterrupts*//*CallbackfunctiontocheckforPIBvoidgpif_error_cb(CyU3PpibIntrTypecbType,uint16_t{{{caseCyU3PdebugPrint(4,caseCyU3PdebugPrint(4,caseCyU3PdebugPrint(4,caseCyU3PdebugPrint(4,caseCyU3PdebugPrint(4,caseCyU3PdebugPrint(4,caseCyU3PdebugPrint(4,caseCyU3PdebugPrint(4,CyU3PdebugPrint(4,“NoUnderrun/Overrun}}}PIB错误代说线程0缓冲区中的写入过线程1缓冲区中的写入过线程2缓冲区中的写入过线程3缓冲区中的写入过线程0缓冲区中的欠线程1缓冲区中的欠线程2缓冲区中的欠线程3缓冲区中的欠SDK内的从设备FIFO固件示例本应用笔记介绍了同步从设FIFO接口以及配置标志的方法。实GPIFIIDesigner工具中的所需配置后,需要将已更新的配置集成到固件内。完成编GPIFIIDesigner中的项目后,将生成一个头文cyfxgpifconfig.h。该头文件必须包含在固件项目中。EZ-USBFX3SDK包含一个集成了从设备FIFO接口的固件示例。EZ-USBFX3SDK后,可在下面中找到集成了FIFO接口的固件示例[FX3SDKInstallPath]\EZ-USBFX3该固件示例支持16位和32位数据总线宽度。头文件cyfxslfifosync.h定义了常量位数据总线宽度,则将该常量设为0。设计示例1:将XilinxFPGA连接至FX3同步从设备FIFO接口本节提供一个完整的设计示例,其中通过同步从设FIFOXilinxSpartan6FPGAFX3。本节还描述了硬件设置可使用具有一个与XilinxSpartan6SP601评估套件互联的赛斯FX3开发套件(CYUSB3KIT-001)或SuperSpeedExplorer套件(CYUSB3KIT-003)的硬件设置来运行示例中的项目。FX3电路板和Xilinx电路板通过Samtec至FMC互联电路板相连。CYUSB3ACC-002互联电路板通过Samtec连接器与赛斯FX3开发套件(CYUSB3KIT-001)相连,并通过FMC连接器与Xilinx电路板相连。接器与Xilinx电路板相连。图15显示了使用SuperSpeedExplorer套件的硬件设置。信息,请参阅附录B:用FX3开发套件(CYUSB3KIT-001)的硬件设置。除了硬件设置,以下各步骤在使用任FX3电路的情况下均相同。固件和软件组件下图显示了FPGA和FX3之间的互连图。EZ-USBXilinxEZ-USBXilinxSpartan6回送传输:对于该组件,FPGA先从FX3 整个缓冲区的内容,然后将其回写到FX3内。USB主机应发送短数据包:在该组件中,FPGA先将一个完整的数据包传输到FX3,然后再发送一个短数据包。USB包。USB主机应发送IN令牌数据包,从而接收该数据。USBIN令牌数据包,从而接收该数据。您可以使用EZ-USBFX3SDK中提供ControlCenter或Streamer工具实现该操作。串流输出(OUT)数据传输:在该组件中,FPGAFIFOFX3连续数Streamer工具实现该操作。FX3固件的详细信息USB3.0USB2.0 斯的ControlCenter和工具启动USB备支 ()在工作频率100MHz32FIFO的运行起着关键作用。设置DMA对于回送传输、短数据包和ZLP传输,需要创建两个DMA一个是P2UPIB_SOCKET_0作为发送套接字,UIB_SOCKET_1作为接收套接字。DMA缓冲区大5121024USBUSB2.0USB3.0。DMA缓冲区的数量为2。另一个是U2PPIB_SOCKET_3作为接收套接字,UIB_SOCKET_1作为发送套接字。DMA缓冲区大小5121024USBUSB2.0USB3.0。DMA2。(each(each(each(eachEP1bufferbufferbufferbufferXilinxSpartanInternalUSB注意:(eachEP1bufferbuffer(eachEP1bufferbufferXilinxSpartanUSB/*setupDMAchannelforloopback/shortpacket/ZLPtransfers#define一个是P2U通道,其PIB_SOCKET_0作为发送套接字,UIB_SOCKET_1作为接收套接字。根据所使用的USB连接类型,DMA16×1024(USB3.0连接方式)或16×512(USB2.0连接方式)。DMA缓冲区的数量为8。选用该缓冲区大小和数量,以得到高吞吐量性能。bufferbufferbufferbuffer(eachEP1EZ-USBbufferbufferbufferbuffer(eachEP1EZ-USBbufferbufferbufferbufferXilinxSpartanUSB另一个是U2PPIB_SOCKET_3作为接收套接字,UIB_SOCKET_1作为发送套接字。DMA缓冲区大缓冲区数量来增强性能,但需要降低P2U通道的缓冲区数量。其原因是FX3SDK所提供的缓冲区空间不足以支持两个通道同时具有8个大小为16×1024的缓冲区。bufferbufferbufferbuffer(eachEZ-USBbufferbufferbufferbufferbufferbuffer(eachEZ-USBbufferbufferbufferbufferXilinxSpartanUSB/*setupDMAchannelforstreamIN/OUTtransfers#define/*SlaveFIFOP_2_Uchannelbuffer#define/*SlaveFIFOU_2_Pchannelbuffer#defineFPGA实现的详细信息100为了得到FX3的最大性能,GPIF接口100MHz的频率工作。SP601配有一个27MHz的板上单端振荡器FPGA主设备模式状态机串流IN和串流OUT传输。22.用于选择模式的FPGA(Mode(Mode(Mode(Mode(Mode(Mode(Mode(Mode!=(Mode==(Mode(Modefpga_master_mode_idlefpga_master_mode_partialfpga_master_mode_idle状态。fpga_master_mode_zlp如果mode=ZLP,状态机将进入该状态。mode!=ZLP,状态机将从该模式切fpga_master_mode_stream_infpga_master_mode_idle状态。fpga_master_mode_stream_out状态fpga_master_mode_idle状态。fpga_master_mode_loop_backmodeLOOPBACK,状态机将进入该状态。如果modeLOOPBACK,状态机将从该状态切换到fpga_master_mode_idle状态。串流IN示例FPGA对从设备FIFO进行写操作23串流INFPGA (flaga_d==1)==

(flagb_d== (flagb_d==PKTEND#=1;SLOE#=1;SLRD#=1;SLCS#=0;SLWR#=1;A[1:0]=stream_in_wait_flagb状态stream_in_write状态PKTEND#=1;SLOE#=1;SLRD#=1;SLCS#=0;SLWR#=0;A[1:0]=stream_in_write_wr_delay状态:备PKTEND#=1;SLOE#=1;SLRD#=1;SLCS#=0;SLWR#=1;A[1:0]=根据使用局部标志情况下的通用一节中的(1),在局部标志(flagb)变为0后,FX3需要对处于激活状态的SLWR#FPGA至接口的一个周期的传输延迟,FPGA在对被置为0短数据包FPGAFIFO]该示例说明了如何使用PKTEND#传输短数据包的程序。下图显示了在VerilogRTL中针对短数据包示例执行的状态.t==

(flaga_d==1)&== flagb_d== (flagb_d==|((strob==1)&

partial_idle状态PKTEND#=1;SLOE#=1;SLRD#=1;SLCS#=0;SLWR#=1;A[1:0]=partial_wait_flagb状态partial_write状态备PKTEND#=1;SLOE#=1;SLRD#=1;SLCS#=0;SLWR#=0;A[1:0]=partial_write_wr_delay状态每当flagb_d=0或(strob=1和 t=“1110”)时,状态机将进入该状态。如果strob=1,FPGA主设备将PKTEND#=1;SLOE#=1;SLRD#=1;SLCS#=0;SLWR#=1;A[1:0]=根据使用局部标志情况下的通用一节中的(1),在局部标志(flagb)变为0后,FX3需要对处于激活状态partial_wait状态 钟周期,以确保flaga上的有效状态。FPGAZLPFIFO]25.ZLP t==

(flaga_d==1)&==

(flagb_d==1)&(strob==

(flagb_d==

(flagb_d==

zlp_idlePKTEND#=1;SLOE#=1;SLRD#=1;SLCS#=0;SLWR#=1;A[1:0]=zlp_wait_flagbzlp_write状态备PKTEND#=1;SLOE#=1;SLRD#=1;SLCS#=0;SLWR#=0;A[1:0]=zlp_write_wr_delay状态备PKTEND#=1;SLOE#=1;SLRD#=1;SLCS#=0;SLWR#=1;A[1:0]=根据使用局部标志情况下的通用一节中的(1),在局部标志(flagb)变为0后,FX3需要对处于激活状态zlp_wait状态flagb_d1strob1时,状态机将zlp_wait_flagb状态切换到该状态,并将一zlp数据包传输到s由于水6,因此,只有经过局部标志(flagb)6个周期,flaga0。该状态会暂停执行多4个时钟周期,以确保flaga上的有效状态。 VerilogRTL中针对串流OUT示例执行的状态机 t==

(flagc_d==1)==

t==

(flagd_d==

(flagd_d==stream_out_idlePKTEND#=1;SLOE#=1;SLRD#=1;SLCS#=0;SLWR#=1;A[1:0]=stream_out_flagc_rcvdstream_out_wait_flagdstream_out_read状态PKTEND#=1;SLOE#=0;SLRD#=0;SLCS#=0;SLWR#=1;A[1:0]=stream_out_read_rd_oe_delay备PKTEND#=1;SLOE#=0;SLRD#=0;SLCS#=0;SLWR#=1;A[1:0]=根据使用局部标志情况下的通用一节中的(2b),在局部标志(flagd)变为0后,FX3需要对处于激活状态SLRD#进行采样三个周期。由于考虑FPGA至接口的一个周期的传输延迟,FPGA0flagd_d(flagd的触发输出)进行采样后,激活SLRD#一个周期。stream_out_read_oe_delay PKTEND#=1;SLOE#=0;SLRD#=1;SLCS#=0;SLWR#=1;A[1:0]= 回送示例FPGA从从设备FIFO数据回写到从设备FIFO](flagc_d==1)==flagd_d==flagb_d==flagb_d==flagd_d==t==flaga_d==t==loop_back_idle状态PKTEND#=1;SLOE#=1;SLRD#=1;SLCS#=0;SLWR#=1;A[1:0]=loop_back_flagc_rcvdloop_back_wait_flagdloop_back_read如果flagd_d=1,状态机将进入该状态。状态机将激活读控制信号如下:PKTEND1;SLOE0;SLRD0;SLCS0;SLWR1;A[1:03loop_back_read_rd_oe_delay状态备PKTEND#=1;SLOE#=0;SLRD#=0;SLCS#=0;SLWR#=1;A[1:0]=根据使用局部标志情况下的通用一节中的(2b),在局部标志(flagd)变为0后,FX3需要对处于激活状态的SLRD#进行采样三个周期。由于FPGA至接口的一个周期的传输延迟,FPGA对被置0flagd_d(flagd的触发输出)进行采样后,激活SLRD#一个周期。loop_back_read_oe_delay PKTEND#=1;SLOE#=0;SLRD#=1;SLCS#=0;SLWR#=1;A[1:0]=loop_back_wait_flaga PKTEND#=1;SLOE#=1;SLRD#=1;SLCS#=0;SLWR#=1;A[1:0]=loop_back_wait_flagb备PKTEND#=1;SLOE#=1;SLRD#=1;SLCS#=0;SLWR#=1;A[1:0]=loop_back_write状态备PKTEND#=1;SLOE#=1;SLRD#=1;SLCS#=0;SLWR#=0;A[1:0]=loop_back_write_wr_delay状态备PKTEND#=1;SLOE#=1;SLRD#=1;SLCS#=0;SLWR#=1;A[1:0]=根据使用局部标志情况下的通用一节中的(1),在局部标志(flagb)变为0后,FX3需要对处于激活状态的SLWR#进行采样两个周期于FPGA至接口的一个周期的传输延迟,FPGA在对被置0的局部flagb_d(flagb的触发输出)进行采样后激活SLWR#一个周期。loop_back_flush_fifoPKTEND#=1;SLOE#=1;SLRD#=1;SLCS#=0;SLWR#=1;A[1:0]=项目操作SuperSpeedExplorer套件时,要确保已将跳线J5FX3开发套件(CYUSB3KIT-001)时,请按照表7FMCFX3DVKXilinxSP601DVK电路板,并在给XilinxSP601DVK供电之前,先给FX3DVK电路板供电。FPGA开始任何数据操作前,必须先FPGAFX3进行配置。FPGAGPIO输入确定需要启动使用固件镜像文件(SF_loopback.img)对FX3FX3SDKControlCenter工具通过USB主机编程FX3。slavefifo2b_fpga_top.bitXilinxSpartan6FPGA。可使用任何标准的编程器(如XilinxISE设计如果先编程好了FPGA,FX3DVK将不会在主机PC上进行枚举,因为该套件负责驱动PMODE线。30.使用ControlCenterFX3固件,用于进行固件后,在启动数据传输前,FX3SuperSpeed器件进行枚举(如果已连接至一USB3.0端6.slavefifo2b_fpga_top.bitFPGAFPGA传输模关关关打FPGA连续写入一完整的数据包,后跟一个短数据关关打关FPGA连续写入完整的数据包,后跟关关打打FPGA连续写入完整的数据包(来自主机的串流BULKIN数据包关打关关FPGA连续完整的数据包(来自主机的串流BULKOUT数据包关打关打回送传输模关XXX无现在,可使用ControlCenter工具启动传输过程。首先,从USB主机启动一个BULKOUT传输。在ControlCenter中选择BULKOUTendpoint项,然后点击TransferFile-OUT按键。这样,您可浏览并选择包含需要传输的数据的文件。在本应用笔记的附件中,您可在Loopback文件夹中找到TEST.txt文件。该文件包含一个以交替方式发送“0xA5A5A5A50x5A5A5A5A”的数据图案。双击选择该文件,FPGA正在等待FLAGA变为1。只要PIB_SOCKET_0的缓冲区中的数据可用,FPGA会立即该数据。然后,FPGA会回送同样的数据,并将其写入到FX3的PIB_SOCKET_3。您可USB主机发送一BULKIN传输。ControlCenter中选BULKINendpointTransferData-IN按键。先前写入的数据将被。对于串流INOUTSF_streamIN.img编程FX3器件。也可以使用FX3SDK中固件后,FX3SuperSpeed器件进行枚举(USB3.0端口)。这样,可以通过ControlCenter工具或FX3SDK中的串流工具启动数据传输。在串IN情况下,FPGA正在等FLAGA1。当缓冲区可用时,FPGAFX3的PIB_SOCKET_0USBBULKIN传输。在赛斯StreamerBULKINStart34InZ77ExpressChipset的Win764在串流OUT情况下,FPGA正在等待FLAGC变为1。当数据可用时,FPGA立即连续FX3的PIB_SOCKET_3中的数据。您可从USB主机发送连续的BULKOUT传输。在赛斯Streamer工具中选择BULKOUT端点,然后点击Start。这时,将显示性能数值。图35中显示了在配有InZ77ExpressChipset的Win764位电脑上观察到的性能。SF_streamIN.imgINOUTSF_streamIN.img8个缓4个缓冲区分别分配给P2UDMAU2P通道。SF_streamOUT.img文件中,则8个缓冲4个缓冲区分别U2PDMA通的U2P性能。短数据包和ZLP数据FX3。的状态。一旦FLAGA等于1,FPGA会开始写入FX3。如果将开关配置为短数据包传输,FPGA将写入完整的数据包(1024个字节),然后再写入一个短数据包。如果将开关配置为ZLP传输,FPGA将写入一个完整的数据包(1024个字节),然后再写入一个ZLP*。现在,USBBULKINControlCenterBULKINTransferData-IN按键。首先,将收到完整的数据包。再次点击TransferData-IN。现在,将收到短数据包或ZLP。后立即传输短数据包的情况与此相同。这是因为FX3缓冲区不被删除,直到主机要求ControlCenter上的数据。设计示例2:将AlFPGA连接至FX3的同步从设备FIFO接本节将提供一个完整的设计示例,其中的Al 硬件设置可按照硬件设置执行本示例中的项目。该硬件设置包括一个与CycloneIIIFPGA电路板相连的赛斯FX3开发FX3电路板和Al电路板连接起来。CYUSB3ACC-003互联电路板通过Samtec连接器与赛斯FX3开发套件CYUSB3ACC-006互联电路板通过多个SuperSpeedExplorer套件(CYUSB3KIT-003)相连,并通图38显示了使用SuperSpeedExplorer套件的硬件设置。信息,请参见附录B:用FX3开发套件(CYUSB3KIT-001)的硬件设置。除了硬件设置,以下各步骤在使用任何FX3电路的情况下均相同。 固件和软件组件下图显示了FPGA和FX3之间的互连图。 CycloneIIIEZ-USB回送传输:FPGA先从FX3 包,用于发送和接收该数据。您可使用EZ-USBFX3SDK中提供的ControlCenter工具实现该操作。短数据包:FPGAFX3,然后再发送一个短数据包。USBIN令牌数据零长度数据包(ZLP)传输:FPGA先将一个完整的数据包传输到FX3,然后再发送一个零长度数据包。USB主机应发送IN令牌数据包,用于接收该数据。串流(OUT)数据传输:FPGA实现单向传输,即是通过同步从设FIFOFX3连续数据。USB主机应发OUT令牌数据包,用于发送该数据。可使EZ-USBFX3SDKControlCenterStreamer工具实现该操FX3固件的详细信息USB3.0USB2.0 斯的ControlCenter和工具启动USB备支 ()设置DMA对于回送传输、短数据包和ZLP传输,需要创建两个DMA一个是P2UPIB_SOCKET_0作为发送套接字,UIB_SOCKET_1作为接收套接字。DMA缓冲区大5121024USBUSB2.0USB3.0。DMA缓冲区的数量为2。另一个是U2PPIB_SOCKET_3作为接收套接字,UIB_SOCKET_1作为发送套接字。DMA缓冲区大小5121024USBUSB2.0USB3.0。DMA2。(eachbuffer(eachbuffer(eachbufferEP1bufferbufferbufferbuffer CycloneInternalUSB注意:只有P2U通道用于传输短数据包和ZLP数据包(eachbufferEP1(eachbufferEP1bufferbuffer CycloneUSB/*setupDMAchannelforloopback/shortpacket/ZLPtransfers#define一个是P2UPIB_SOCKET_0作为发送套接字,UIB_SOCKET_1作为接收套接字。根据所使用的USB连接类型,DMA16×1024(USB3.0连接方式)16×512(USB2.0连接方式)。DMA缓冲区的数量为8。选择该缓冲区大小和数量,以得到高吞吐量性能。bufferEP1bufferbufferbufferbufferEP1bufferbufferbufferbufferbufferbufferbuffer CycloneUSB另一个是U2PPIB_SOCKET_3作为接收套接字,UIB_SOCKET_1作为发送套接字。DMA缓冲区P2U通道的缓冲区数量。其原因FX3SDK所提供的缓冲区空间不足以支持两个通道同8个大小16×1024bufferEZ-USB CyclonebufferEZ-USB CyclonebufferbufferbufferbufferbufferbufferbufferbufferUSB/*setupDMAchannelforstreamIN/OUTtransfers#define/*SlaveFIFOP_2_Uchannelbuffer#define/*SlaveFIFOU_2_Pchannelbuffer#defineFPGA实现的详细信息 CycloneIII100为了得到FX3的最大性能,GPIF接口将以100MHz的频率工作。CycloneIII电路板配有一个50MHz的板上单端振荡器。FPGA使用一个PLL,以从50MHz的时钟生成一个100MHz的时钟。串流IN示例FPGA对从设备FIFO进行写操作45串流INFPGA(flaga_d==(flagb_d==(flagb_d==stream_in_idlePKTEND#=1;SLOE#=1;SLRD#=1;SLCS#=0;SLWR#=1;A[1:0]=stream_in_wait_flagb状态stream_in_write状态PKTEND#=1;SLOE#=1;SLRD#=1;SLCS#=0;SLWR#=0;A[1:0]=stream_in_write_wr_delay状态:备PKTEND#=1;SLOE#=1;SLRD#=1;SLCS#=0;SLWR#=1;A[1:0]=入根据使用局部标志情况下的通用一节中的(1),局部标志(flagb)变为0后,FX3需要对处于激活状态的的触发输出)进行采样后激活SLWR#一个周期。短数据包示例[FPGA分别将整个数据包和短数据包写入到从设备FIFO].t==

(flaga_d== flagb_d== (flagb_d==|((strob==1)& t

partial_idle状态PKTEND#=1;SLOE#=1;SLRD#=1;SLCS#=0;SLWR#=1;A[1:0]=partial_wait_flagb状态partial_write状态备PKTEND#=1;SLOE#=1;SLRD#=1;SLCS#=0;SLWR#=0;A[1:0]=partial_write_wr_delay状态每当flagb_d=0或(strob=1和 t=“1111”)时,状态机将进入该状态。如果strob=1,FPGA主设备将传输一个短数据包。从设备FIFO控制线的状态为:PKTEND#=1;SLOE#=1;SLRD#=1;SLCS#=0;SLWR#=1;A[1:0]=根据使用局部标志情况下的通用一节中的(1),局部标志(flagb)变为0后,FX3需要对处于激活状态SLWR#进行采样两个周期于FPGA至接口的一个周期的传输延迟,FPGA0的局partial_wait状态 钟周期,以确保flaga上的有效状态。FPGAZLPFIFO]图47.ZLP传输的状态机(flaga_d(flaga_d==t==(flagb_d==1)&(strob==(flagb_d==(flagb_d==zlp_idlePKTEND#=1;SLOE#=1;SLRD#=1;SLCS#=0;SLWR#=1;A[1:0]=zlp_wait_flagbzlp_write状态备PKTEND#=1;SLOE#=1;SLRD#=1;SLCS#=0;SLWR#=0;A[1:0]=zlp_write_wr_delay状态备PKTEND#=1;SLOE#=1;SLRD#=1;SLCS#=0;SLWR#=1;A[1:0]=根据使用局部标志情况下的通用一节中的(1),局部标志(flagb)变为0后,FX3需要对处于激活状态SLWR#进行采样两个周期于FPGA至接口的一个周期的传输延迟,FPGA0的局zlp_wait状态flagb_d1strob1时,状态机将zlp_wait_flagb状态切换到该状态,并将一zlp数据包传输到s由于水6,因此,只有经过局部标志(flagb)6个周期,flaga0。该状态会暂停执行多4个时钟周期,以确保flaga上的有效状态。 VerilogRTL中针对串流OUT示例执行的状态机 t==

(flagc_d==

t==

(flagd_d==

(flagd_d==stream_out_idlePKTEND#=1;SLOE#=1;SLRD#=1;SLCS#=0;SLWR#=1;A[1:0]=stream_out_flagc_rcvdstream_out_wait_flagdstream_out_read状态PKTEND#=1;SLOE#=0;SLRD#=0;SLCS#=0;SLWR#=1;A[1:0]=stream_out_read_rd_oe_delay备PKTEND#=1;SLOE#=0;SLRD#=0;SLCS#=0;SLWR#=1;A[1:0]=根据使用局部标志情况下的通用一节中的(2b),局部标志(flagd)变为0后,FX3需要对处于激活状态的SLRD#进行采样三个周期。由于考虑FPGA至接口的一个周期的传输延迟,FPGA0flagd_d(flagd的触发输出)进行采样后,激活SLRD#一个周期。stream_out_read_oe_delay PKTEND#=1;SLOE#=0;SLRD#=1;SLCS#=0;SLWR#=1;A[1:0]= 回送示例FPGA从从设备FIFO数据回写到从设备FIFO]:

(flagc_d==

flagd_d==flagb_d==

flagb_d== flagd_d==

flaga_d==

t==

t==

loop_back_idle状态PKTEND#=1;SLOE#=1;SLRD#=1;SLCS#=0;SLWR#=1;A[1:0]=loop_back_flagc_rcvd状态loop_back_wait_flagd状态loop_back_read如果flagd_d=1,状态机将进入该状态。状态机将激活读控制信号如下:PKTEND1;SLOE0;SLRD0;SLCS0;SLWR1;A[1:03loop_back_read_rd_oe_delay备PKTEND#=1;SLOE#=0;SLRD#=0SLCS#=0;SLWR#=1;A[1:0]=根据使用局部标志情况下的通用一节中的(2b),局部标志(flagd)变为0后,FX3需要对处于激活状态的SLRD#进行采样三个周期。由于考虑FPGA至接口的一个周期的传输延迟,FPGA0flagd_d(flagd的触发输出)进行采样后,激活SLRD#一个周期。loop_back_read_oe_delay PKTEND#=1;SLOE#=0;SLRD#=1;SLCS#=0;SLWR#=1;A[1:0]=loop_back_wait_flaga状态 PKTEND#=1;SLOE#=1;SLRD#=1;SLCS#=0;SLWR#=1;A[1:0]=loop_back_wait_flagb状态备PKTEND#=1;SLOE#=1;SLRD#=1;SLCS#=0;SLWR#=1;A[1:0]=loop_back_write状态备PKTEND#=1;SLOE#=1;SLRD#=1;SLCS#=0;SLWR#=0;A[1:0]=loop_back_write_wr_delay状态备PKTEND#=1;SLOE#=1;SLRD#=1;SLCS#=0;SLWR#=1;A[1:0]=根据使用局部标志情况下的通用一节中的(1),局部标志(flagb)变为0后,FX3需要对处于激活状态SLWR#进行采样两个周期于FPGA至接口的一个周期的传输延迟,FPGA0的局loop_back_flush_fifoPKTEND#=1;SLOE#=1;SLRD#=1;SLCS#=0;SLWR#=1;A[1:0]=项目操作SuperSpeedExplorer套件时,要确保已将跳线J5FX3开发套件(CYUSB3KIT-001)时,请按照表7对各跳线器和开关进行设置。使用HSMC连接器将FX3DVK电路板连接至AlCycloneIIIFPGA入门电路板,并在给AlCycloneIIIFPGA电路板供电之前,先给FX3DVK电路板供电。使用固件镜像文SF_loopback.imgFX3FX3SDKControlCenterUSB主机编程FX3。编程AlCycloneIIIFPGA前,应先对FX3进行编程。固件后,FX3器件会作为一个SuperSpeed器件进行枚举(如果已连接到USB3.0端口)。50ControlCenter对FX3固件进行编slaveFIFO2b_loopback.sofAlCycloneIIIFPGA。可使用任意标准的编程器(如QuartusII软件中的USB-Blaster应用)编程FPGA。现在,可使用ControlCenter工具启动传输过程。首先,从USB主机启动一个BULKOUT传输。在ControlCenter中选择BULKOUTendpoint项,然后点击TransferFile-OUT按键。这样,您可浏览并选择包含需要传输的数据的文件。在本应用笔记的附件中,您可在回送文件夹中找到TEST.txt文件。该文件包含一个以交替方式发送“0xA5A5A5A50x5A5A5A5A”的数据图案。双击选择该文件,然后发送FPGA正在等待FLAGA变为1。只要PIB_SOCKET_0的缓冲区中的数据可用,FPGA会立即该数据。然后,FPGA会回送同样的数据,并将其写入到FX3的PIB_SOCKET_3。您可USBBULKINControlCenter中选BULKINendpoint项,并点TransferData-IN按键。这样,先前写入的数据将被。 对于串流IN或串流OUT,使用固件镜像文件SF_streamIN.img编程FX3器件。也可以使用FX3SDK中的ControlCenter工具通过USB主机编程FX3。编程AlCycloneIIIFPGA前,应先对FX3进行编程。固件后,FX3器件会作为一个超速器件进行枚举(如果已连接到USB3.0端口)。对于串流IN传输和串流OUT传输,分别使用slaveFIFO2b_streamIN.sof文件和slaveFIFO2b_streamOUT.sof文件编程AlCycloneIIIFPGA。可使用任意标准的编程器(如QuartusII软件中的USB-Blaster应用)编程在串流IN情况下,FPGA正在等待FLAGA变为1。当缓冲区可用时,FPGA立即将数据连续写入到FX3的PIB_SOCKET_0。您可USBBULKIN传输。在赛斯Streamer工具中选BULKIN端Start55InZ77ExpressChipsetWin764位电在串流OUT情况下,FPGA正在等待FLAGC变为1。当数据可用时,FPGA立即连续FX3的PIB_SOCKET_3中的数据。您可从USB主机发送连续的BULKOUT传输。在赛斯Streamer工具中选择BULKOUTStart56中显示了在配有InZ77ExpressChipset的Win764位电脑上观察到的性能。SF_streamIN.img文件可使用于INOUTSF_streamIN.img8个缓冲4个缓冲区分别分配U2P性能。 对于串流IN或串流OUT,使用固件镜像文件SF_shrt_ZLP.img编程FX3器件。也可以使用FX3SDK中的ControlCenter工具通过USB主机编程FX3。编程AlCycloneIIIFPGA前,应先对FX3进行编程。固件后,FX3器件会作为一个SuperSpeed器件进行枚举(如果已连接到USB3.0端口)。通过使用slaveFIFO2b_partial.sof文件对AlCycloneIIIFPGA进行编程。可使用任意标准的编程器(完成编程FX3固件后,分配给PIB_SOCKET_0的缓冲区立即可用。通过FLAGA,FPGA正在处于等待该条件发生的状态。一旦标志等于1,FPGA会开始对FX3进行写操作。现在,USB主机可发送BULKIN令牌数据包。在ControlCenter工具中,选择BULKIN端点,然后点击TransferData-IN按键。首先,将收到完整的数据包。再次点击TransferData-IN按键。现在,将收到短数据ZLP传输的测试步骤 对于串流IN或串流OUT,使用固件镜像文件SF_shrt_ZLP.img编程FX3器件。也可以使用FX3SDK中的ControlCenter工具通过USB主机编程FX3。编程AlCycloneIIIFPGA前,应先对FX3进行编程。固件后,FX3器件会作为一个SuperSpeed器件进行枚举(如果已连接到USB3.0端口)。slaveFIFO2b_ZLP.sofAlCycloneIIIFPGA。可使用任意标准的编程器(如QuartusII软件中的USB-Blaster应用)编程FPGA。完成编程FX3固件后,分配给PIB_SOCKET_0的缓冲区立即可用。通过FLAGA,FPGA正在处于等待该条件发生的状态。一旦标志等于1,FPGA会开始对FX3进行写操作。现在,USB主机可发送BULKIN令牌数据包。在ControlCenter工具中,选择BULKIN相关的项目文件文件/文件夹名说FX3固FX3该文件夹包括下面的子文件夹XilinxFPGA源代码(Verilog),可支持所有传输类型(串流IN、串流OUT、XilinxFPGA源代码(VHDL),可支持所有的传输类型(串流IN、串流OUT、Verilog和VHDL中的AlFPGA源代码该文件夹包含针对每一种传输的子文件夹。下面的每个文件夹中均包含VHDL项目fpga_loopback,用于回送数据传输fpga_partial,用于短数据包数据传输fpga_streamIN,用于串流IN数据传输fpga_streamOUT,用于串流OUT数据传输fpga_zlp,用于ZLP传输该文件是一个X3IO实现,并用来设置回送传输所DMA通道。注意:各个FX3固件镜像之间的唯一区别在于DMA通道的设置方式,以便能轻该文件是一个FX3固件镜像,包含了从设备FIFO实现。当执行串流IN传输时,它可设置性能优化所要求的DMA通道。该文件是一个FX3固件镜像,包含了从设备FIFO实现。当执行串流OUT传输时,它可设置性能优化所要求的DMA通道。该文件是一个X3IO实现。当执行短数据包或零长度数据包(ZP)传输时,它可设置性能优化所要求的DMA通道。该文件包含了通过使用ControlCenter工具中TransferFile-OUT按键发送的数汇本应用笔记详细说明了同步从设FIFO接口。此外,还介绍了不同的标志配置以及使GPIFIIDesigner工具配置标故障排除可能USB在低功耗模式下停滞。使用CyU3PUsbLPMDisable函数停止进入低功耗模式,如(evtype, ){switch{case/*Stoptheapplicationbeforere-starting.*/if(glIsApplnActive){}/*Starttheloopbackfunction.*/CyFxSlFifoApplnStart();注意:该解决方案可能不与USB兼容。您可以采取SDK提供的USBBULKSourceSink示例中(浏览至实现该解决方案后FX3DVKBULKIN传输操作还失败,此时,请确保短接J10012引脚。短接这些引脚后,FLAGA可用于连接至从设备FIFO接口的FPGA。FPGA将数据写入从设FIFO时FIFO接口GPIFII状态机将处于“Write”状态。写入数据后(该数据为数据包大小的倍数),如要立即发送ZLP,FPGA在取消激活SLWR#信号后需要在至少两个时钟周期激活PKTEND#信号。这是因为GPIFII状态机需要两个时钟周期

温馨提示

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

评论

0/150

提交评论