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)