systolic wrote:
>
> Rickman, thx for your reply.
>
> This design has been frustrating for a while. I broke down the entire
> design to several modules and thought about the interface among modules
> and between the compression FPGA unit and the frame-buffer unit.
>
> So as you said, it is ok to have 1024 wires among modules inside one FPGA.
>
> The way I need to manipulate the 32x32 pixle-block is performing some
> arithmetical operations based on the whole block, then some other
> operations from 4x4 pixle-blocks all the way up to 32x32 pixle-block, or
> from 32x32 pixle-block all the way down to 4x4 pixel-blocks in different
> modules. It is a kind of quartree operation: splitting 32x32 pixle-block
> to 4 16x16 pixle-blocks, 4 16x16 to 16 8x8, and so on.
>
> In this way, I hope to have the 32x32 pixel-block ready for each module
> when they need it and take advantage of the array index operations.
>
> So my concern is:
> 1. If I can pass a 32x32 pixle-block result among those modules in one
> time. (Looks the answer is NO)
> 2. If I can not pass 32x32 pixel-block in one time, which will be better
> for buffering 32x32 pixle-block inside each module .vs. having a
> register file in top level which updated after the operations in each
> module.
> 3. Or there are some other better ways? Or I am still in the wrong track.
I didn't say that using a lot of wires is ok. Each wire needs a driver,
so there is cost in the hardware. But if the data is being produced in
parallel and you already have the drivers, there is no need to reduce
the size of the interface.
You seem to be focusing on how you will pass the data between blocks
rather than how the blocks will work. If you are going to do all your
math in parallel and *need* to have the data all at once, then you will
need a wide interface. But if your data is being processed in chunks
that are less than the size of the entire array, then the chunk size
would be the best interface size.
Think of hardware like an assembly line. If 12 items get stuffed into a
box, they don't move 12 items along the assembly line in parallel. They
get delivered one at a time so each one can then be put into the box.
Or maybe three at a time can be put in the box, so they travel three
wide, maybe. If it takes the same time to deliver three items, one at a
time, as it does to put all three in the box, then they can still be
delivered on a one wide belt.
So do your modules need the data all at once? Or a few items at a
time? Maybe you should leave the definition of the size of your
interfaces until you know more about the design of the blocks?
--
Rick "rickman" Collins
Ignore the reply address. To email me use the above address with the XY
removed.
Arius - A Signal Processing Solutions Company
Specializing in DSP and FPGA design URL
http://www.arius.com
4 King Ave 301-682-7772 Voice
Frederick, MD 21701-3110 301-682-7666 FAX