Forum Discussion
Altera_Forum
Honored Contributor
10 years agoTypically with video I split the components out to their own individual symbols. So for 24-bit colour that would be 8-bit symbols for R, G, and B. If you use that format then everything hooked up to your core needs to use the same format of 8-bit symbols. If control needs to be in-band (moves with the data) then you could have an additional symbol that carries that information assuming it fits into an 8-bit wide value.
It's not uncommon to have small gaskets in the video stream that handle formatting. For example a while back we built a frame buffering subsystem that read the frame 64-bit at a time from memory and output it as 64-bit ST data, we then took that data and turned it into 32-bit data, then we took that 32-bit data and ripped the alpha channel off and provided 24-bit colour to the synchronizer that output the video to the screen. Everything but the alpha channel removal was available in Qsys so we build a little gasket that had 32-bit data on one side and 24-bit on the other. The Avalon-ST spec is fairly generic and assumes that if you have any encoding in your data you handle it internal to your IP(s). Qsys just knows about the ports and the number of symbols per beat your IP exposes so that if you hook up two IP together it can attempt to adapt one over to the other. Now if you had say 8-bit symbols for one IP and connect it to another component that uses 24-bit symbols there is no way Qsys can adapt that since the fundamental data units are different but those sorts of things are easy to overcome with gasket IP blocks.