M
mindenpilot
Guest
I have a design where I need to buffer 32 channels of data.
I have to cross clock domains, so I am using asynchronous FIFOs.
I used the core generator to design my FIFO. It is 32 bits wide and 15
entries deep.
I then generate 32 of these FIFOs, but I found I am exceeding the number of
block RAMs available.
The device I am using (or at least considering using) has 24 block RAMs.
The design used 32 (I presume one for each FIFO).
I noticed that the number of actual RAM bits required, ~32K, is much less
than what is available, ~400K.
Is there an easy way to better utilize the block RAMs?
Right now, I am considering three options:
1. using a larger device
2. implementing the FIFOs myself (assuming I have the necessary LUTs).
3. modifying the design so that the 32 channels interleave the data into the
same FIFO. This requires that I read and write it more quickly.
If I had to go with one of these options, I'd prefer either the first or the
last.
Since I am relatively inexperienced, I'd like to implement an elegant
design, and I want to make sure I'm not brute-forcing it.
Your thoughts are appreciated.
Regards,
Adam
I have to cross clock domains, so I am using asynchronous FIFOs.
I used the core generator to design my FIFO. It is 32 bits wide and 15
entries deep.
I then generate 32 of these FIFOs, but I found I am exceeding the number of
block RAMs available.
The device I am using (or at least considering using) has 24 block RAMs.
The design used 32 (I presume one for each FIFO).
I noticed that the number of actual RAM bits required, ~32K, is much less
than what is available, ~400K.
Is there an easy way to better utilize the block RAMs?
Right now, I am considering three options:
1. using a larger device
2. implementing the FIFOs myself (assuming I have the necessary LUTs).
3. modifying the design so that the 32 channels interleave the data into the
same FIFO. This requires that I read and write it more quickly.
If I had to go with one of these options, I'd prefer either the first or the
last.
Since I am relatively inexperienced, I'd like to implement an elegant
design, and I want to make sure I'm not brute-forcing it.
Your thoughts are appreciated.
Regards,
Adam