From: Gladys on
On 19 juil, 17:08, Gabor <ga...(a)alacron.com> wrote:
> The chip you mentioned, MT47H64M16, is 1 gigabit, not 1 gigabyte.  You
> need 8 of these chips for 1 gigabyte of memory.  I don't think you'll
> be able
> to drive 8 chips with the Spartan 6 MIG controller.  Check carefully
> in the
> customization screens for MIG to see what you can do.
>
Yes you are right, it's 1Gigabit and there's only 1 memory chip in my
implementation, I think in this case I will scale down the image
resolution to 3000x2748, then it could fit 9 frames of images.

> So sticking to me original idea of a 16-bit wide interface, even if
> you
> wasted the upper 4 bits you could store and retrieve 600 million
> pixels per second at 300 MHz.  I would consider running the
> interface at a more comfortable 200 MHz which still gives you
> a lot of extra bandwidth if all you need is a pixel buffer.
>
>
> What is the speed grade of the MT47H64M16?  That would need to
> be -3 for the 300 MHz interface.  a -5 part would be good enough
> for 200 MHz.

the speed grade of MT47H64M16 is -3.

>
> If your pixels are 12 bits and you want to store them in 16-bit wide
> memory, concatenate 4 of them to make 48 bits of pixel data
> which fit into three 16-bit words.
>
How to implement this? If I choose the 128bit R/W port configuration,
Should I pack 12bits pixel at the host side for the 128bits write data
FIFO?

> I'm still not convinced you do have memory to waste, but the basic
> idea is
> to start a new image line on say a 4096-word boundary even though the
> actual line width is only 3664.  This makes line addressing simpler.
> Do
> something similar by starting a new frame buffer at a 4096-line
> boundary
> even though the frame is only 2748 lines.  This will mean that
> addressing
> within a frame buffer is a simpler function of pixel and line
> position.
>
If I do this, each frame of image will take 4096*4096*12=
201,326,592bits, I can olny store 5 image in the SDRAM, which doesn't
meet the requirement,
In this case, can I store images and meanwhile read them out, the
SDRAM will perform as a large FIFO. Also to simplify the logic, I can
leave the 4bits unused as I don't need to store as much images as
before?
Thanks!
>
> > > > Gladys

From: Gladys on
On 19 juil, 17:08, Gabor <ga...(a)alacron.com> wrote:
> The chip you mentioned, MT47H64M16, is 1 gigabit, not 1 gigabyte. You
> need 8 of these chips for 1 gigabyte of memory. I don't think you'll
> be able
> to drive 8 chips with the Spartan 6 MIG controller. Check carefully
> in the
> customization screens for MIG to see what you can do.

Yes you are right, it's 1Gigabit and there's only 1 memory chip in my
implementation. Actually now I just need to store maximum 3 frames of
images in the DDR2, so there will be enough memory space for 3664 x
2748 x 12 x 3 = 362472192.

> So sticking to me original idea of a 16-bit wide interface, even if
> you
> wasted the upper 4 bits you could store and retrieve 600 million
> pixels per second at 300 MHz. I would consider running the
> interface at a more comfortable 200 MHz which still gives you
> a lot of extra bandwidth if all you need is a pixel buffer.

Do the store and retrieve perform at the same frequency? Shall I slow
down the rate of read in the read FIFO of MCB?

> What is the speed grade of the MT47H64M16? That would need to
> be -3 for the 300 MHz interface. a -5 part would be good enough
> for 200 MHz.

the speed grade of MT47H64M16 is -3. I just need to write and read
about 30 million pixel once, so is 200MHz good enough for the design?

> If your pixels are 12 bits and you want to store them in 16-bit wide
> memory, concatenate 4 of them to make 48 bits of pixel data
> which fit into three 16-bit words.

How to implement this? If I choose the 128bit R/W port configuration,
Should I pack 12bits pixel at the host side for the 128bits write data
FIFO?

Also now since I just need to store 3 frames, so I can waste the upper
4 bits, However, I don't understand how does the internal 128bits
signal at host side transfered to 16bits signal at the DDR2 side, is
the 128bits a set of 8 16 bits?

> I'm still not convinced you do have memory to waste, but the basic
> idea is
> to start a new image line on say a 4096-word boundary even though the
> actual line width is only 3664. This makes line addressing simpler.
> Do
> something similar by starting a new frame buffer at a 4096-line
> boundary
> even though the frame is only 2748 lines. This will mean that
> addressing
> within a frame buffer is a simpler function of pixel and line
> position.

Can I store the 3 images in different bank, for example, frame 1 in
bank 1and 2, frame 2 in bank 3 and 4, and so forth.

Sorry about my stupid questions, thank you again for your anwsers.