Skip to content

A/B frame sync issue for HDMI raw mode #196

@se6astian-pi

Description

@se6astian-pi

For some reason the exposure might gets synced to the B frame instead of the A frame.
The problem here is the sequencer, the sequencer doesn't care whether we have an A or B frame, it simply syncs to a frame change
If that happens to be a B->A transition, then everything is fine and you will get A and B frame from the same exposure.

Proposed fix:
read out the frame counter register (the frame counter is in the hdmi generator register block)
wait for the right moment and then enable the acquisition (fil_reg 15)
the right place for this is the startup script (axiom_start.sh or a called subscript).

Bertl:
https://wiki.apertus.org/index.php/CMV12000_Register_Blocks (scan generator, second read only register)
I've updated the raw hdmi gateware to allow for using both the scan fcnt as well as the cseq fcnt in the marker overlays
http://vserver.13thfloor.at/Stuff/AXIOM/BETA/HDMIRAW/cmv_hdmi3_raw.bit
this should simplify testing and allow for sanity checks

0x80000004 RO [27:16] Scan Frame Counter is the one we want
axiom_scn_regi is the function to access these:
https://github.com/apertus-open-source-cinema/axiom-firmware/blob/main/software/scripts/axiom_mp1_reg.func

Bertl:
in the raw_mark.sh script, the 0xF000 value needs to be replaced with 0xF800 for the pixels where you want to use the cseq_fcnt instead of the scan_fcnt
I would suggest to have the top-left and bottom-right with 0xF000 while the top-right and bottom-left use the 0xF800
this way you can compare the sequencer and scan generator counts
note that you need to make sure (for the alternating raw data output) that the hdmi output rate has a factor of two to the acquisition frame rate
so the exposure time has to be within the proper limits

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions