Hi Andres

On Mon, 17 Aug 2015 at 08:25 Andres Alvear <[email protected]> wrote:

> Hello CASPER,
>
> I am implementing one spectrometer with one Shared BRAM yellow block with
> the next specifications:
>
>    1. ROACH 1
>    2. ADC083000: ADC0 (ZDOK0). 8 outputs per clock.
>    3. Bw: 500 MHz
>    4. N° of channels: 2048
>    5. One Shared BRAM with:
>       - Address width: 11
>       - Data width: 32 bits.
>
> I've decided implement a mux with delays to pass 4 parallel streams to
> serial. Finally the idea is map into memory in a correlative order from 0
> to 2047.
>
> I have attached snapshot of my simulink model and results.
>
> https://drive.google.com/file/d/0B9LbvB1SpcjONm5WR0ZZVmRHLUU/view?usp=sharing
>
>
> https://drive.google.com/file/d/0B9LbvB1SpcjOWmZ0cVdGdmRaYUE/view?usp=sharing
>
>
> https://drive.google.com/file/d/0B9LbvB1SpcjONlNwVnh5Qi01clE/view?usp=sharing
>
> As you see in the picture I am packing the 4 parallel streams in one bram
> in order to unpack 2048 channels at once instead 512 per bram (I mean a
> design with 4 Shared BRAM).
> Does anyone know whether simulations involving the Shared BRAM yellow
> block are supposed to work? I'd like to simulate the address into the
> memory. I am not pretty sure about the write and read timing for Shared
> BRAM.
>

Simulations of the shared bram should work. If you look under the block
mask, you'll see a simulation model which is just a normal bram. By default
it has latency 1, but this will increase to 2 or 3 if you turn on one or
both of the pipelining options in the shared bram mask.



> Does anyone know whether theese z^-511 delays are good enough for this
> kind of implementation? I'm doing something wrong?
>

You certainly can do it this way -- personally for large, wide delays like
you're using I would consider using a "bram_delay" block, which will delay
your data in bram rather than slices. This block is available in the casper
delays library.

For what it's worth, the shared bram will support inputs that are 128 bits
wide, so you could dispense with your serializer. In this case, you would
just concatenate the four 32 bit streams together and save them in a shared
bram with width 128 and depth 2^9 (rather than width 32 and depth 2^11). An
arrangement like this probably also makes the readout a little simpler,
since if you read the bram and interpret the contents as 32 bit words, all
your channels will come out in order. If I'm interpreting your screen shots
correctly then at the moment your storing channels 0:2048:8, then 1:2048:8,
etc, which I'm guessing your separating out and reordering in software(?).

Cheers,
Jack


>
> Cheers,
> Andrés Alvear
> Universidad de Chile
>

Reply via email to