完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
你好。。
我已经实现了使用FPGA斯巴达6(XC6SLX9)和CyPress FX3(CYUB3013)控制器的GPIF II接口。 同步USB端点被配置为将来自CyPress FX3的数据传输到主机PC。 FPGA的平均数据生成率约为7MbPs,它是作为分布式块而不是恒定速率数据流生成的。然而,我在主机PC上丢失了大量的数据。 下面是我的系统设置的一些细节。 PCLK=60MHz;(PCLK由FPGA驱动) FX3系统时钟=403.2兆赫;(StySysCK400=TRUE) GPIF时钟=100兆赫;(PiBcLoC.CKDIVI=4) USB端点类型:-等时 *FX3固件 CyfxFixIySype=15; Cyf- FXX-ISOKY-PKTS=1; EpCF.Eng= Cytru. EpCFE.EpType=CYU-U3PUSB; EpCFG.BurtLLN=CyfxFXI同义突变; EFCFG流=0; PCKTSIZE=1024; EPCFTs=1; DMAYCFG大小=((1024±0x0f)和; DMAYCFG大小*= CyfxFXI同义突变; DMAYCFG计数=8; DMAYCFGPRODSCKID=CYU-U3PYPIB SOCKET0 0; DMAYCFG.CONSCSCHAVE=CYU-U3PYUBIOSSOCKEtiCONSOR2; DMAYCFG.dMAMODE=CYU-U3PYDMAYMODEYY字节; DMAYCFG通知= CYU-U3PY-DMAYBCBY CONCEL事件; DMAYCFG.CB=0; DMAYCFG PRODHADER=0; DMAYCFG PRODHOPETER=0; DMAYCFG.CONSEADADER=0; DMAYCFG PRODUAL计数=0; 终点; 类型=“ISOC” 方向=“in” 地址=“82h” 属性=“01h” MpPKTSIZE =“15360” 描述类型=“5” 描述符长度=“7” 区间=“4” 超高速端点伴侣& GT; Type =“SuffStultUsByEnthoTothToothOrthor” McSurb=“14” 属性=“00” ByTestPaleTe= =“3C0H” &端点& GT; * PC应用程序代码读取USB 长的长度=1024×15×8×64; STD::SyrdHypTr& lt;UIT88T&GT;IMAGE缓冲区=STD::SyrdYPPTR & lt;UIT88T & gt;(新UIT88T [长度]); QualeSeist= int(长度/(ISOI- EP & Gt;Max PKTSIZE * 8)); 如果(长度%(ISO-EP -Gt;Max pktSead * 8))& 0; 排队+ ++; 对于(int j=0;j&lt;QuealSeIs:J++){ 长Le=长度/(队列化); STD::UnQuijPPTR&UTI8YT[[]G.IMAGEYDATA=STD::UnQuijpPTR & lt;UIT88T][]和(新UIT88T[Le]); ISOI- EP & gt;超时=5000; PKT; cCySoopktFix.pktTifs; PKTIFOS= ISO-EP -GT;CreatePktInfos(LeN,PKTS); 如果(ISO-EP -GT;XFEDATA(IMAGE数据DATA GET()),LEN,PKTIOFOS){ 对于(int i=0;i & lt;pkts;i++){ 如果(PKTIOFS,状态=0和&和pktTifs。长度>0) { MEMCPY(&IMAGE)缓冲器[成功* ISO-EP & Gt;Max pktSe],和IMAGE数据[I*ISO-EP & Gt;Max pktSe],ISO-EP -&Gt; 成功=成功+ 1; } } } 删除[]PKTIOFS; } 长度=成功* ISO-EP -& MaxPktSize; 以上来自于百度翻译 以下为原文 Hi.. I have implemented a GPIF II interface using an FPGA spartan 6 (XC6SLX9) and a Cypress FX3 (CYUSB3013) controller. An Isochronous USB endpoint is configured to trasfer the data from the Cypress FX3 to a host PC. The average data generate rate of the FPGA is about 75Mbps which is generated as distributed chunks rather than as a constant rate data stream. However, I am losing a significant amount of data at the host PC allication. Followng are some details on my sytsem setup. PCLK = 60Mhz ; (PCLK is driven by FPGA) FX3 system clock = 403.2 Mhz; (setSysClk400 = true) GPIF clock = 100 Mhz ; (pibClock.clkDiv = 4) USB end point type :- Isochronous *FX3 Firmware CY_FX_ISO_BURST = 15; CY_FX_ISO_PKTS = 1; epcfg.enable = CyTrue; epcfg.epType = CY_U3P_USB_EP_ISO; epcfg.burstLen = CY_FX_ISO_BURST; epcfg.streams = 0; epcfg.pcktSize = 1024; epcfg.isoPkts = 1; dma_cfg.size = ((1024 + 0x0F) & ~0x0F); dma_cfg.size *= CY_FX_ISO_BURST; dma_cfg.count = 8; dma_cfg.prodSckId = CY_U3P_PIB_SOCKET_0; dma_cfg.consSckId = CY_U3P_UIB_SOCKET_CONS_2; dma_cfg.dmaMode = CY_U3P_DMA_MODE_BYTE; dma_cfg.notification = CY_U3P_DMA_CB_CONS_EVENT; dma_cfg.cb = 0; dma_cfg.prodHeader = 0; dma_cfg.prodFooter = 0; dma_cfg.consHeader = 0; dma_cfg.prodAvailCount = 0; Type="ISOC" Direction="IN" Address="82h" Attributes="01h" MaxPktSize="15360" DescriptorType="5" DescriptorLength="7" Interval="4" Type="SUPERSPEED_USB_ENDPOINT_COMPANION" MaxBurst="14" Attributes="00h" BytesPerInterval="3C00h" *PC application code to read u*** LONG length = 1024 * 15 * 8 * 64; std::shared_ptr QueueSize = int(length / (iso_ep->MaxPktSize * 8)); if ((length % (iso_ep->MaxPktSize * 8)) > 0) QueueSize++; for (int j = 0; j < QueueSize; j++){ long len = length / (QueueSize); std::unique_ptr iso_ep->TimeOut = 5000; int pkts; CCyIsoPktInfo * pktInfos; pktInfos = iso_ep->CreatePktInfos(len, pkts); if (iso_ep->XferData(image_data.get(), len, pktInfos)){ for (int i = 0; i < pkts; i++){ if (pktInfos.Status == 0 && pktInfos.Length>0) { memcpy(&image_buffer[success * iso_ep->MaxPktSize], &image_data[i * iso_ep->MaxPktSize], iso_ep->MaxPktSize); success = success + 1; } } } delete[] pktInfos; } length = success * iso_ep->MaxPktSize; |
|
相关推荐
1个回答
|
|
请尝试使用异步数据传输的柏树流光的应用。(BeginDataXfer,WaitForXfer,finsihdataxfer)而非同步传输(xferdata API)。前者更有效。
如果不与柏流光面对任何问题,请使用相同的代码在您的主机应用程序。 当做, - Madhu Sudhan 以上来自于百度翻译 以下为原文 Please try with the Cypress streamer application which uses asynchronous data transfer. (BeginDataXfer, WaitForXfer, FinsihDataXfer) instead of synchronous transfer (XferData API). The former is more efficient. If you do not face any issue with Cypress streamer, please use the same code in your host application. Regards, - Madhu Sudhan |
|
|
|
只有小组成员才能发言,加入小组>>
753个成员聚集在这个小组
加入小组2094 浏览 1 评论
1839 浏览 1 评论
3659 浏览 1 评论
请问可以直接使用来自FX2LP固件的端点向主机FIFO写入数据吗?
1779 浏览 6 评论
1528 浏览 1 评论
CY8C4025LQI在程序中调用函数,通过示波器观察SCL引脚波形,无法将pin0.4(SCL)下拉是什么原因导致?
539浏览 2评论
CYUSB3065焊接到USB3.0 TYPE-B口的焊接触点就无法使用是什么原因导致的?
398浏览 2评论
CX3连接Camera修改分辨率之后,播放器无法播出camera的画面怎么解决?
426浏览 2评论
372浏览 2评论
使用stm32+cyw43438 wifi驱动whd,WHD驱动固件加载失败的原因?
894浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-12 23:55 , Processed in 5.740404 second(s), Total 48, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号