apertus-open-source-cinema / axiom-firmware

AXIOM firmware (linux image, gateware and software tools)
GNU General Public License v3.0
168 stars 53 forks source link

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

Open se6astian-pi opened 2 years ago

se6astian-pi commented 2 years ago

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