High speed memory read and transfer via rocket IO..

Mar 22, 2008 6 Replies

Hey,



I want to read an 8bits data from a memory at 500MHz and want to send this serially at a speed of 4GBits/s. I am reviewing the documents. What are the possible solutions for that memory read write operation and data transfer operation. I am reviewing the userguides of rocket io tranceiver modules and what i see is a maximum transfer rate of



3.125GBits/sec per one channel and 2.5GBits/s payload. What i have to do is to reach the speed of at least 4GBits/sec. Is there a solution ?

Regards, Anil


DDR2 or 3 is about the only choice then for the memory if you absolutely have to have only 8 bit wide memory. Widen the memory path to 16 bits and you can use DDR.

You didn't mention if the 500 MB/sec read rate is intended to be a burst rate or a continuous rate. If it's continuous, then it makes no sense to read out at 500 MB/sec unless you're also writing to it at 500 MB/sec which means a minimum memory bandwidth requirement of 1GB/sec. Add on 1-2% for refresh and then 5% for a decent and efficient arbitration algorithm (assuming reads and writes need to overlap). If the 500 MB/sec rate is some burst and it is acceptable to block all write access during the transfer then of course none of that applies.

A second channel.

Kevin Jennings

A second channel sounds great but what i can understand from the rocketIO user guides is that i am not allowed to split the data smaller than 8 bits such as "two 4 bits". If it is possible to send a

4 bits of data through one channel please refer the data sheet or any other documents.

One more question is that, can i implement the whole system control by custom logic or should i try to use a ppc or microblaze design.

What i tried to explain by saying 8 bits and 500MHz is the speed i need. It can also be 250 MHz 16 bits and 125 MHz 32 bits. The data width is limited by the rocket IO tranceivers tha the fpga have. I will possibly use the smallest Virtex IV FPGA with the MGTs. It has too much speed options for data transfer and i am trying to find the best choice.

It is only the burst read rate. Read and write operations will be performed independently.

As i understand from the user guides and datasheets i am not allowed to split the data smaller than 8 bits. So the maximum rate to serially send an 8 bits data is 2.5Gbit/s. If i am wrong please correct my mistake and refer some data sheets related to the solution.

Regards...

I am not sure that I understand the question. The V4 MGTs allow user side data busses of 8 bits to 64 bits. For any of these user side widths a wide range of serial data rates are possible up to 6.5gbps (for higher speedgrades).

The user bus frequency is determined (using 8b10b encoding) by (serial link rate/10)/number of bytes on user bus

The interpretation of the data on the user bus is up to the user. You can treat it as a stream of nibbles, a stream fo 16-bit words, whatever. The only restriction is that comma words will alwas take up 8 bits and will be byte aligned. (But hey, that could be a two-nibble-comma)

So you can very well send a stream of nibble through a V4 MGT. And you can run a single link at the 5gbps necessary for your application if you choose a higher speedgrade.

Kolja Sulimma

Thanks i will consider that...

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required