DMA Transfer Bitdepth

  • Hi there,


    I am currently thinking about a design for CXP-Cameras with 12 bit pixel format. The pixel will be handled as 12 bit value inside the VA but what happens in the DMA transfer? If I do understand the documentation of the operator DMAToPC correctly 12 bit is not allowed and therefore I would have to scale up to 16 bit.


    Is this correct or do I have an option to use 12 bit and therefore reduce the needed bandwith? In my case this would be the difference between Ironman and Marathon.


    regards,

    Theo

    Edited once, last by Theo ().

  • Hi Lothar


    you can use 12 Bit DMA output on marathon and ironman frame grabbers without limitations. On marathon the product of parallelism and bit with has to be a multiple of 8,

    So parallelism 2, 4 and 8 are allowed among others. Parallelism 16 is not allowed as it will exceed the 128 Bit. To use the maximum bandwidth of the marathon you need to cast the parallelism to get 8 bits and parallel Dn to 16.

    pasted-from-clipboard.png


    The PARALLELdn might add dummy pixel at the end of each line. You can append all image lines to a single line to avoid this.

    pasted-from-clipboard.png


    microDisplay cannot show the result of this correctly as it will display the result as 8 bit and not 12 bit as well as the full image in a single line.


    Internal note: FR 8543


    BR

    Johannes


    Johannes Trein
    Teamleader Applications and Development
    SiliconSoftware GmbH
    https://silicon.software/wp-content/uploads/siso-logo-animation.gif



  • Hi Theo,


    if you want to show an Image in 12 Bit in microDisplay you can do that if you do the following steps:


    1. Set Global Access Attribute(in "Miscellaneous" section) to "Read Write Change".

    2. now you can change the DMA "PixelFormat" to the desired Format, for example "gray 12 Bit"


    Now microDisplay will interpret the Image-data accordingly.

    Best regards,

    Björn

  • Hi Björn,


    thanks for the input. Acutally (and I missed that in my first question) I want to transfer RGB 12 Bit (RGB36) and not grayscale. I am not sure if I did forget this in my post or if I did not have the information at that time.


    However, I have made little test applet and can build it just fine (ouput is RGB 36 Bit with a parallism of two). As expected microDisplay does not support this pixel format (gray 12 bit and rgb 36 are not shown in the list).


    regards,

    Theo

  • Hi Theo,


    I did a small example Applet and the configuration to show how it is possible to show it in microDisplay.

    To get the Image you need to set the Global Access Attribute first, than the Width and Pixelformat accordingly to the image you want to capture (My image is 1024 pixel in 12Bit RGB).


    The Applet I used is the following (I did it on an VF2 Plattform, but actually the plattform doesn't matter).


    In this applet it was not possible to connect the 12 Bit directly to the DMA, that's why I did a bit of recasting and rearanging the bits so that they match the DMA in a byte format. It is basically cosmetics ;)


    Best regards,

    Björn

  • Dear Björn,


    I have installed Siso RT 5.6.074339. MicroDisplay and I am currently using the Marathon VCL Framegrabber.


    microDisplay does not Show the Option "RGB36Bit"


    143-pixelformat-png












    By the way. This Format will then be "packed", right? So I will have to unpack it by Software.


    If I do want to save CPU load I think RGB48 would be better. Of course as long I do not exeed the Maximum bandwidth.


    best regars,

    Theo

  • Dear Theo,


    I just changed the plattform and rebuild the applet. Can you try it with the Hap-File I put here?


    as for the format, Yes you are right. FG_FORMAT is treated as a packed format. For microDisplay it is simply a hint on how it should handle the data. If you write an SDK-Programm you can still stream out 12Bit packed and after wards interpret it correctly.


    In that case you could set the Output format for example to 8Bit and calculate the width like newWidth = width * 12/8.

    Than you grab the bigger image and open the content with anything that interprets the data as a 12Bit packed format.


    But I'm really curious why it is not working at your end.


    Best regards,

    Björn