请教高手FPGA+USB+LABVIEW的数据采集的问题,想通过DMA传输,遇到困难,求救。

本人想通过FPGA中的块传输发送数据,手边已有资料是从上位机到FPGA再返回上位机的块传输程序,现在我想从FPGA的DMA直接发送数据上去,现在找不到入口赋值,现上传程序请大家帮帮忙。
//包含头文件省略
unsigned short usbDataBuf[USB_BUF_MAX_SIZE]; //本来我认为上位机发下来的数据是先放在这里的,然后我对usbDataBuf[ ]赋值后,上位机收到的总是0.然后我后WATCH窗口调试,发现数组中始终是0,尽管上位机已发送数据。我疑惑DMA到底数据放在哪的,我怎样才自己赋值到上位机。
int main()
{
int n;
// memset(usbDataBuf,0,USB_BUF_MAX_SIZE *2);
alt_dma_txchan o_usbdma;
alt_dma_rxchan i_usbdma;
memset(usbDataBuf,0,USB_BUF_MAX_SIZE *2);
if(Initial_InDMA(&i_usbdma) < 0 || Initial_OutDMA(&o_usbdma) < 0) return 0;//初始化已省略
while(1)
{
while(IsFLAGB())
{
if(Read(&i_usbdma,usbDataBuf)<0) return 0;
while(!IsInDone());
while(!IsFLAGC());
if(Write(&o_usbdma,usbDataBuf)>0) return 0;
while(!IsOutDone());
}
}
int Write(alt_dma_txchan *pDMAOut,void* pOutBuf)
{
out_done=0;
return alt_dma_txchan_send(*pDMAOut,pOutBuf,USB_BUF_MAX_SIZE*2,OutDone,NULL);
}
int Read(alt_dma_rxchan *pDMAIn,void* pInBuf)
{
in_done=0;
return alt_dma_rxchan_prepare(*pDMAIn,pInBuf,USB_BUF_MAX_SIZE*2,InDone,NULL);
}
//请高手帮帮忙,不胜感激。

首先,你的USB接口芯片是哪颗 ?
然后,上位机软件是哪种?

altera cy5 SoC 自带usb OTG,可以连接电脑。 但是,这种不太多,属于最复杂的应用。
中档的, 是 Fx3 通过usb 3.0 连接PC和FPGA,传输速度可达 200M byte/s。
最低的, FPGA看起来是通过USB连接电脑,实际,通过USB-UART芯片连接,便宜,最多只要5元, 速度低, 最多10k byte/s追问

谢谢你,我做的是高速采集,串口转USB芯片不用。USB控制芯片用的是CY7C68013,这个通信是没问题的。现在主要是我要用FPGA采集数据,然后发送到上位机,其它的应该没问题,本来这个是一个完整的环路,512BYTE上位机发送上位机接收,都可以的。现在我要单独从FPGA发送数据,就是DMA问题,搞不定。我不知道怎么给它赋值,不解决这个问题,就完了。希望给点建议。

追答

首先, 68013要能和FPGA进行通讯, 通过GPIF能初步通讯,通过LED等验证测试。

温馨提示:答案为网友推荐,仅供参考
相似回答