Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
17 years ago

Bitec hsmc dvi / Image&Video processing

Board: Altera Cyclone III

Daughtercard: Bitec DVI card (only DVI in and DVI out, nothing else. http://www.bitec.ltd.uk/hsmc_dvi.html)

Software: Quartus 8.1

Hi Everybody,

So I have DVI input and DVI output using the aforementioned set and Bitec's " dvi 1024x768 loop-through c25 eval (beta) " bundled software. This program tripple-buffers the input on DDR SDRAM and then outputs. Its is running without any problems. So I can get the exact copy of my DVI input as my DVI out.

my goal for now is to be able to change the color of some part of the screen (say a square or something.) while the rest of the screen looks normal on dvi out. And I preferably want to do it without using SOPC Image and video processing tools because I need to modify my code for extra manipulations on the display screen in order to reach my main goal. If SOPC is the way to go though, I wouldn't mind at all.

My problem is that I am a newbie and I don't know how you work on pixels in FPGA environment using VHDL.

any start up ideas on how to implement this thing would be highly appreciated. any sample code to work on pixels, etc.

I looked up at Avalon S-T architecture and all that but as of now I can't combine all that info together.

another thing, should i use vhdl (i think the bundled software was written in vhdl)or can i do this using nios hence by using c ?

9 Replies

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Check out the Altera VIP Suite, it will do all you want and more; not the cheapest; but well worth the cost for a commercial design (IP License cost about $1000); however, you can try it all out before hand using the OpencorePlus method.

    Mike
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Thank you so much, Mike...

    I have the VIP Suite but I still can't do it. I don't know how I can manipulate individual pixels. With VIP Suite you can "crop" part of your DVI input etc. but it is not what I want to accomplish here.

    I want to be able to work on individual pixels and manipulate them using Bitec's videostream sample code that I mentioned above. That is downloadable if anyone wants to check out to help me here.

    So can your or someone else help me understand how to get this thing started ?

    Thank you so much in advance
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    --- Quote Start ---

    Thank you so much, Mike...

    I have the VIP Suite but I still can't do it. I don't know how I can manipulate individual pixels. With VIP Suite you can "crop" part of your DVI input etc. but it is not what I want to accomplish here.

    I want to be able to work on individual pixels and manipulate them using Bitec's videostream sample code that I mentioned above. That is downloadable if anyone wants to check out to help me here.

    So can your or someone else help me understand how to get this thing started ?

    Thank you so much in advance

    --- Quote End ---

    If you use the Frame Buffer, you can manipulate the pixels all you want and MIX them into you stream or just work on the stream pixels while in the buffer.

    Or do you want to do something more? I'll admit, I have not looked at the BiTec code yet.

    Mike
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Again thank you for your guidance, Mike.

    I will eventually want to do more but for now manipulating the pixels would be enough.

    By the way, the sample code on BiTec's website "dvi 1024x768 loop-through c25 eval (beta)" is already using the Frame Buffer (it is clearly seen in SOPC).

    But unfortunately I couldn't quite get a grasp of how they did the Frame buffering. Of course I am not talking about adding the Frame Buffer in VIP Suite and changing couple of parameters but about the written or computer generated part of the code.

    I was thinking if I could get help for better understanding of how video streaming is handled with "Altera Cyclone III - Bitec DVI Card" using VHDL so that I could -maybe- mimic it and inject my own code into BiTec's DVI sample code and manipulate the pixels the way I want.

    Thanks,

    Tyler
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Hi

    You may want to consider a "Clocked Video Output" feeding into a "Clocked Video Input" SoPC components. You can then insert your pixel manipulation between the output and input using the datavalid signal to qualify pixels.

    You would have to insert some arbitrary video timing parameters on the "Clocked Video Output".

    Hope this helps ;->
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    The biggest problem right now is that i don't know how to manipulate pixels; for example changing the rgb values of some random individual pixels besides using VIP suite and choosing a rectangle on the display to manipulate pixels and etc which is not what I want to do.

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Tyler,

    I think the problem we are all having is understanding what it is you're trying to do.

    We have described how to manipulate the pixels in the frame buffer, how to manipulate the data as a stream. All video is based on a rectangle (Horz. x Vert.) and you can manipulate data as memory (Frame Buffer) by calculating the X/Y posistion you want to work on; you can count the lines and rows in the data stream (Decoding the X/Y point via decoding and counters).

    Tell us what you are actually attempting and maybe we can help.

    Mike
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Hi Mike,

    I want to ask you something else instead. Resolution in both of my displays are 1024x768 @60 Hz (That's how bitec's software needs them to be). When I add "clipper" into project and choose a rectangle of any size, 640x480, 1024x768,etc. , the output is very "shaky".

    It is impossible to see anything at the output.

    Do you know of any reasons that might have caused this ?

    PS: I am sorry, as I mentioned before, I am a newbie. So, even though you said you had described how to manipulate pixels, I just don't get it.