Using XEM7310-A200 and okPipeOut ep_read is never asserted – read times out


I’m using Vivado (VHDL) and MSVS C#

What is the okPIPEOUT end point waiting for that would cause it to time out? I thought it asserts the ep_read “at some time” after receiving a read pipe command. Then reads n * 16 words and moves them to the destination array.

I have successfully downloaded a BIT file, instantiated wire_out end points and can control the LEDs with calls from my C# code. So my infrastructure seems to be sound. But ReadFromPipeOut is killing me. I’m missing something. I have examined the PIPETEST code (VHDL and C++) and I don’t see any difference EXCEPT, it uses the BTPipeOut end point and I am not.

When I step through this code, I get a timeout error (-2)

//read pipe data
int epAddr = 0xa0; // same address as assigned during instantiation
int len = 64; // 4 x 16
int numbytes; // never reads any

        numbytes = dev.ReadFromPipeOut( epAddr, len, buf );   (it takes several seconds  to return from this

I get numbytes = -2. (timeout error)

If I understand the way that ReadFromPipeOut is supposed to work, I should be able to connect any 32 bit constant to the ep_datain port, and read as many copies of it as I want (multiples of 16) (like below). It gives the same result using the design below as connecting the PIPEOUT to my FIFO output…it times out

–Instantiate PIPE OUT to send parallel data to Win7 machine

pipeOutA0 : okPipeOut port map (
okHE => okHE,
okEH => okEH,
ep_addr => x"a0",
ep_datain => x"55555555", – constant connected to okPipeOut
ep_read => ep_PIPE_RE – _connected to scope, never asserts_

If I understand your documents correctly, the ep_read line is supposed to go high to tell my hardware when to place data on the ep_datain port. I have a signal connected from ep_read to an output pin with a scope on it, and it is perpetually low. I get no data, just a time out. I can’t find any documentation that explains these types of details. Is it somewhere on your web site and I’ve yet to find it?

BTW - I have studied the PipeTest code, and interestingly enough, it does not use “PipeOut” end point,. It only uses the “BTPipeOut” end point. I am going to convert my design to use the BTPipeOut end point, although the design I have should do everything I need. I would really like to understand this PIPE component (especially what its waiting on to cause the timeout).

Any help appreciated. (ezpecially a link to the hidden documentation treasuremap)