High speed USB or ethernet to wide parallel data rate

I want to know if the BBB is right for me. I need to input either through USB or ethernet and output the data through a three byte wide gpio bus
the BBB needs to handle a 2 MHz external clock rate and load the 3-byte GPIOs every clock cycle. That would be 2MHz x 24bits = 48 Mbits/s or 6 MBytes/s. Can this be done using the BBB? Thank you.

On Tue, 24 May 2016 18:17:01 -0700 (PDT),
botloctest@gmail.com declaimed the following:

I want to know if the BBB is right for me. I need to input either through
USB or ethernet and output the data through a three byte wide gpio bus
the BBB needs to handle a 2 MHz external clock rate and load the 3-byte
GPIOs every clock cycle. That would be 2MHz x 24bits = 48 Mbits/s or 6
MBytes/s. Can this be done using the BBB? Thank you.

  Considering that the PRU runs at 200MHz you could, in theory, use 100
PRU instructions to load the GPIO in synch with your external clock.

  I suspect the code would be simplified if one worked with 32-bit output
-- even if the top 8-bits never change. What I'm not sure of is if there
are that many GPIOs that can be written in one instruction (though with a
100:1 ratio, that may not be important <G>).

  You likely do NOT want to use the file-system access scheme for this...
Memory-mapped I/O from the main processor/Linux might be able to keep up.
Your input data is likely coming via the Linux side, anyway.

  Running the Ethernet connection at max -- 100 Mbps -- and ignoring
packet overhead (Ethernet addressing, IP addressing, checksums,
ACK/NAK&resends, etc.), would imply a possibility for 12MB/sec.

  While USB high-speed is a nominal 480Mbps, it is a polled I/O system
with a lot of overhead. One document I've read (
https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&ved=0ahUKEwjjk4X8ovTMAhVNNFIKHU9lDzIQFggrMAI&url=http%3A%2F%2Felinux.org%2Fimages%2F6%2F66%2FElc_2014_usb.pdf&usg=AFQjCNG3F3TU9pZeR9Un0el9d0o1BYQkeA&cad=rja
) gives the BBB an effective 4Mbps over USB (or 1/100th theoretical max)
when run in a naive situation. It does improve over that, but one factor is
the size of the USB data transfer -- if your source data is only three
bytes at a time... Expect the overhead of USB to swamp the data (64-byte
I/O with asynchronous queued read -- 15 Mbps; 512-byte I/O gave 82 Mbps...
64kB using DMA gives 211 Mbps)