Jump to content


Sharing a stream betwee processes


  • You cannot reply to this topic
5 replies to this topic

#1 cls_egr

    Advanced Member

  • Members
  • PipPipPip
  • 78 posts

Posted 09 July 2008 - 09:00 AM

Hi,

I was wondering if it was possible to use the same stream to communicate between two or more processes. The desktop simulation works fine, but when trying to create hardware it says that the write/read end is already connecte to another process. Would I need to create a different stream for every process?

Thank you

cls

#2 etrexel

    Advanced Member

  • Impulse Staff
  • PipPipPip
  • 260 posts

Posted 09 July 2008 - 03:58 PM

QUOTE (cls_egr @ Jul 9 2008, 11:00 AM) <{POST_SNAPBACK}>
Hi,

I was wondering if it was possible to use the same stream to communicate between two or more processes. The desktop simulation works fine, but when trying to create hardware it says that the write/read end is already connecte to another process. Would I need to create a different stream for every process?

Thank you

cls

Hi,
co_streams are purely for unidirectional point-to-point between processes even if desktop software simulation may not enforce it as a rule. To communicate acorss multiple processes the stream would need to be replicated or the use of a single-writer-multiple-readers such as a co_register might be used if it fits your application.

Ed
Ed Trexel
Impulse Accelerated Technologies, Inc.

#3 flomby

    Member

  • Members
  • PipPip
  • 9 posts

Posted 07 August 2008 - 02:39 PM

Wouldn't it be possible to connect one stream to two processes with some external logic written in VHDL? Or will this still not work?

#4 etrexel

    Advanced Member

  • Impulse Staff
  • PipPipPip
  • 260 posts

Posted 07 August 2008 - 02:51 PM

QUOTE (flomby @ Aug 7 2008, 04:39 PM) <{POST_SNAPBACK}>
Wouldn't it be possible to connect one stream to two processes with some external logic written in VHDL? Or will this still not work?

Hi,
To be able to access the stream you would have to modify the '_opt.vhd/.v file because processes are not exposed at the top module, only streams from process to co_ports will get exposed and you could always loop back to the top module. In either case you would have to handle the "sharing" of a stream ensuring all the '_en's and '_rdy's are handled properly with the data going where needed.
What exactly are you trying to accomplish?

Ed
Ed Trexel
Impulse Accelerated Technologies, Inc.

#5 flomby

    Member

  • Members
  • PipPip
  • 9 posts

Posted 07 August 2008 - 04:34 PM

QUOTE (etrexel @ Aug 7 2008, 06:51 PM) <{POST_SNAPBACK}>
Hi,
To be able to access the stream you would have to modify the '_opt.vhd/.v file because processes are not exposed at the top module, only streams from process to co_ports will get exposed and you could always loop back to the top module. In either case you would have to handle the "sharing" of a stream ensuring all the '_en's and '_rdy's are handled properly with the data going where needed.
What exactly are you trying to accomplish?

Ed


I am using Impulse C to write logic that I incorporate into an ISE project. I have a stream that I want to feed into two processes, each with its input stream exposed in its own top module. I was thinking I could write some wrapper logic to connect the stream to both processes. I could connect the data and the _en to both processes and OR the _rdy's to form the _rdy signal. Do you see any problems with this approach?

#6 etrexel

    Advanced Member

  • Impulse Staff
  • PipPipPip
  • 260 posts

Posted 07 August 2008 - 04:45 PM

QUOTE (flomby @ Aug 7 2008, 06:34 PM) <{POST_SNAPBACK}>
I am using Impulse C to write logic that I incorporate into an ISE project. I have a stream that I want to feed into two processes, each with its input stream exposed in its own top module. I was thinking I could write some wrapper logic to connect the stream to both processes. I could connect the data and the _en to both processes and OR the _rdy's to form the _rdy signal. Do you see any problems with this approach?

Hi,
Depends upon how the data is expected to be transferred to the two processes as well as the timing behavior between them. As you have described with an "OR", if the processes are asynchronous at all then it is possible for each process to individually read off data with the other process not getting the same data and then there may be a time when both processes get the same data if they happen to be in sync.

Ed
Ed Trexel
Impulse Accelerated Technologies, Inc.





1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users