cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Highlighted
Contributor
Contributor
1,643 Views
Registered: ‎04-06-2018

custom video processing w s_axis interface

I have to insert my video processing system in my vivado project with VDMA and Axis-Stream to Video Out, basically , from what I understand now , I have to have a block with a s_axis_video and m_axis_video, I have followed UG934, and I based myself in a project with a DMA and a custom FIFO AXis stream , where I add the block to generate EOL and SOF , and tried to follow the template that the UG934 shows.

 

entity axis_fifovid_v1_0 is
generic (
        -- Users to add parameters here
       ADDR_WIDTH : integer := 12;
       C_AXIS_TDATA_WIDTH : integer := 24;
        -- User parameters ends
        -- Do not modify the parameters beyond this line        
       C_S0_DATA_WIDTH : integer := 24;
        C_S0_VIDEO_FORMAT : integer := 2;
        C_S0_AXIS_TDATA_WIDTH : integer := 24;
        C_S0_MAX_SAMPLES_PER_CLOCK : integer := 1;
        C_M0_DATA_WIDTH : integer := 24;
        C_M0_VIDEO_FORMAT : integer := 2;
        C_M0_AXIS_TDATA_WIDTH : integer := 24;
        C_M0_MAX_SAMPLES_PER_CLOCK : integer := 1
);
port (
        -- Users to add ports here

        -- User ports ends
        -- Do not modify the ports beyond this line


        -- Ports of Axi Slave Bus Interface S00_AXIS
        s_axis_video0_aclk    : in std_logic;
        s_axis_video0_aresetn    : in std_logic;
        s_axis_video0_tready    : out std_logic;
        s_axis_video0_tdata    : in std_logic_vector(C_S0_DATA_WIDTH-1 downto 0);
        s_axis_video0_tlast    : in std_logic;
        s_axis_video0_tuser    : in std_logic;
        s_axis_video0_tvalid    : in std_logic;

        -- Ports of Axi Master Bus Interface M00_AXIS
        m_axis_video0_aclk    : in std_logic;
        m_axis_video0_aresetn    : in std_logic;
        m_axis_video0_tvalid    : out std_logic;
        m_axis_video0_tdata    : out std_logic_vector(C_M0_DATA_WIDTH-1 downto 0);
        m_axis_video0_tlast    : out std_logic;
        m_axis_video0_tuser    : out std_logic;
        m_axis_video0_tready    : in std_logic
);
end axis_fifovid_v1_0;

 

so UG934 says : "

The Video to AXI4-Stream and AXI4-Stream to
Video cores are delivered as HDL source
code and provided as examples to expedite custom interface development
 

"but I haven't found this HDL source yet ... so someone has any tip about such systems (custom IP)

or examples of S_AXIS_VIDEO M_AXIS_VIDEO interfaces ... please.

videoIP.png
0 Kudos
9 Replies
Highlighted
Moderator
Moderator
1,598 Views
Registered: ‎11-09-2015

Hi @maikonnascimento,

 

The Video to AXI4-Stream and AXI4-Stream to Video cores are delivered as HDL source code and provided as examples to expedite custom interface development. 

 

--> This means that the source for the Video In to AXI4-Stream IP or the AXI4-Stream to Video Out are unencrypted HDL in vivado. You will find it below the IP:

AXI4S.PNG

 

However to be honest I am not sure if it is the best starting point for your interfaces.

 

You might want to consider Vivado HLS for an easiest way to create custom AXI4S video IPs.

 

If you want to do it in HDL, the AXI4S interface is not really complicated even more if you already have an input. You just need to take care of the handshaking and propagate the EOF and SOF for your input to output.

 

Hope that helps,

 

Regards,


Florent
Product Application Engineer - Xilinx Technical Support EMEA
**~ Don't forget to reply, give kudos, and accept as solution.~**
Highlighted
Contributor
Contributor
1,590 Views
Registered: ‎04-06-2018

tks ! I found some code , HLS is not really an option here , I need my system to be in HDL. What I am really looking for is an example of the AXIS-4 Video interface. I did implemented a FIFO AXIS-4 but no video , so no EOL and SOF. BR.
0 Kudos
Highlighted
Moderator
Moderator
1,578 Views
Registered: ‎11-09-2015

Hi @maikonnascimento,

 

I used the AXI4S FIFO in a video design and it was working fine. I was able to get data in and out.

 

You might want to check if the master is correctly sending data and if the slave is ready to receive it


Florent
Product Application Engineer - Xilinx Technical Support EMEA
**~ Don't forget to reply, give kudos, and accept as solution.~**
Highlighted
Contributor
Contributor
1,565 Views
Registered: ‎04-06-2018

tks @florentw,

right now I created a module where I just connect the handshaking lines : tvalid and t ready , and propagate tlast and tuser , I will post the solution I took once I have more confidence that is working properly, I guess the documentation UG934 mentions this approach.

0 Kudos
Highlighted
Contributor
Contributor
1,515 Views
Registered: ‎04-06-2018

@florentw

I kinda have some result when I connect READY and VALID , plus EOL and SOF , but because I have buffers in my code, a FIFO, the output shows the image broken like you see in the picture, with a dead region in the image. It would be easier if Xilinx provided more HDL code for this interface.

IMG_20180730_034453.jpg
0 Kudos
Highlighted
Moderator
Moderator
1,504 Views
Registered: ‎11-09-2015

Hi @maikonnascimento,

 

The interface is not really difficult to do if you already have an input. And it is not completely possible to do a template as it will depends on how your block will or work (continuous flow or not)

 

And again, for an easiest solution you can still use vivado hls


Florent
Product Application Engineer - Xilinx Technical Support EMEA
**~ Don't forget to reply, give kudos, and accept as solution.~**
0 Kudos
Highlighted
Moderator
Moderator
1,399 Views
Registered: ‎11-09-2015

Hi @maikonnascimento,

 

Do you have any updates on this? Do you still require any assistance?

 

Thanks and Regards,


Florent
Product Application Engineer - Xilinx Technical Support EMEA
**~ Don't forget to reply, give kudos, and accept as solution.~**
0 Kudos
Highlighted
Contributor
Contributor
1,307 Views
Registered: ‎04-06-2018

still struggling :(

have been trying to follow ug934 ....

 

my IP is basically a bridge with receiving data via slave stream and transmitting data with master stream , for the real time video .. another option is to use full AXI4 from the VDMA to PS , but up to now I have not found examples of HLS implementing full AXI4 slave and master (kinda a custom AXI Interconnect with my IP inside).

0 Kudos
Highlighted
Teacher
Teacher
1,288 Views
Registered: ‎06-16-2013

@maikonnascimento

 

It seems that you use wrong EOL, SOF and wrong horizontal active data enable.

Would you make sure above signals and parameters ?

 

Best regards,