SPRUIE9D May 2017 – May 2024 DRA74P , DRA75P , DRA76P , DRA77P
The BYS_PO is enabled by setting the CAL_BYS_CTRL1[16:0] PCLK bit field to a value different than 0x0 (the value of 0x0 disables the BYS_PO). The port processes data tagged as PIX_DAT_FS, PIX_DAT_LS, PIX_DAT, PIX_DAT_LE, or PIX_DAT_FE and which belongs to the C-Port ID defined in the CAL_BYS_CTRL2[9:5] CPORTOUT bit field. Other data types are ignored.
A copy of the data sent to the BYS_PO can optionally be sent to the DPCM encoder. This feature is enabled by setting the CAL_BYS_CTRL2[10] DUPLICATEDDATA bit to 0x1. The feature is typically used to produce two versions of the same received input frame:
Data duplication feature uses bandwidth from the CAL internal processing path and must be disabled, if it is not required, by clearing the CAL_BYS_CTRL2[10] DUPLICATEDDATA bit to 0x0. Duplicated data uses the same C-Port ID as the initial data (that is, the CAL_BYS_CTRL2[9:5] CPORTOUT bit field).
The synchronization signals of the BYS_PO (BYS_PO_VS and BYS_PO_HS) are directly controlled by the TAG received together with the data.
The BYS_PO can generate horizontal and vertical blanking in addition to pixels received from the CAL pipeline. The amount of blanking is defined by the CAL_BYS_CTRL1[24:17] XBLK and CAL_BYS_CTRL1[30:25] YBLK bit fields. The pixel clock (BYS_PO_PCLK) is active at the chosen speed during blanking. BYS_PO_HS/HE pulses are provided during vertical blanking. The BYS output port can accept additional data when it generates horizontal or vertical blanking. Therefore, it stalls the processing pipeline, if data for the next line is received during blanking generation. To avoid stalling the internal pipeline, SW must ensure that the horizontal blanking configured for the BYS output port is less or equal than the horizontal blanking provided by the image source.
The pixel clock is cut during the idle period when CAL_BYS_CTRL2[11] FREERUNNING = 0. The pixel clock runs at the speed defined by CAL_BYS_CTRL1[16:0] PCLK during idle when FREERUNNING = 1. The free running pixel clock is not generated before the 1st frame as CAL_BYS_CTRL1[16:0] PCLK and CAL_BYS_CTRL2[11] FREERUNNING register fields. SW could force generation of the pixel clock before the 1st real image frame by sending a dummy frame of 8 pixels x 1 lines to the BYS out port before sending the actual frame.
Similarly to the video port, the BYS_PO also generates four PCLK pulses before it sends the first pixel. Unlike the video port though, the BYS_PO does not try to smooth the pixel rate. Modules attached to the BYS out port are expected to be able to receive 0 or 4 pixels per clock cycle and have their own smoothing mechanism.
The pixel clock provided to the BYS_PO (BYS_PO_PCLK) is controlled by the CAL_BYS_CTRL1[16:0] PCLK bit field. The same clock generation algorithm is used for the BYS_PO as for the video port. For details, see Video Port Pixel Clock Generation. The CAL processing pipeline can be stalled by the BYS output port when pixels arrive at a higher rate than what has been configured in the CAL_BYS_CTRL1[16:0] PCLK bit field.
Typically, the BYS_PO_PCLK is set to the maximum speed (that is, CAL_BYS_CTRL1[16:0] PCLK = 0x10000) but in some cases it may be beneficial to choose a lower value. That is mainly the case when there are large pixel rate variations in the data received and the module attached to BYS out cannot keep up with the data rate peaks.
Software does not have to configure the size of the image for the BYS_PO. This information is extracted from the received datastream. Generally, to generate the vertical blanking, CAL counts the number of active pixels from the last image line.
Some data types can be received by CAL as a complete frame instead of individual lines. Such data will be send as and image of one line on the BYS output port.