From b677e4282cfd9e0f10af25d349b5154ffc0c317e Mon Sep 17 00:00:00 2001 From: Aditya Tiwari Date: Tue, 13 May 2025 08:28:12 +0000 Subject: [PATCH 01/16] uDMA Camera: Basic skelton --- .../ip-blocks/uDMA_Camera_Pin_Diagram.png | Bin 0 -> 112179 bytes docs/doc-src/ip-blocks/udma_cam.rst | 335 +++++++++++------- 2 files changed, 209 insertions(+), 126 deletions(-) create mode 100644 docs/doc-src/ip-blocks/uDMA_Camera_Pin_Diagram.png diff --git a/docs/doc-src/ip-blocks/uDMA_Camera_Pin_Diagram.png b/docs/doc-src/ip-blocks/uDMA_Camera_Pin_Diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..e9a4542d4294de38c6ba54fe0673e1f9d1e36a81 GIT binary patch literal 112179 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 for peripheral domain address of the uDMA CAMERA. + +**NOTE:** Several of the uDMA CAMERA CSR are volatile, meaning that their read value may be changed by the hardware. +For example, writting the *REG_RX_SADDR* CSR will set the address of the receive buffer pointer. +As data is received, the hardware will update the value of the pointer to indicate the current address. +As the name suggests, the value of non-volatile CSRs is not changed by the hardware. +These CSRs retain the last value writen by software. + +A CSRs volatility is indicated by its "type". + +Details of CSR access type are explained `here `_. + +The CSRs REG_RX_SADDR, REG_RX_SIZE specifies the configuration for the transaction on the RX channel. The uDMA Core creates a local copy of this information at its end and use it for current ongoing transaction. + +REG_RX_SADDR +^^^^^^^^^^^^ +- Offset: 0x0 +- Type: volatile + ++--------+------+--------+------------+----------------------------------------------------------------------------------------------------------+ +| Field | Bits | Access | Default | Description | ++========+======+========+============+==========================================================================================================+ +| SADDR | 18:0 | RW | 0x0 | Address of the Rx buffer. This is location in the L2 memory where UART will write the recived data. | +| | | | | Read & write to this CSR access different information. | +| | | | | | +| | | | | **On Write**: Address of Rx buffer for next transaction. It does not impact current ongoing transaction. | +| | | | | | +| | | | | **On Read**: Address of read buffer for the current ongoing transaction. This is the local copy of | +| | | | | information maintained inside the uDMA core. | ++--------+------+--------+------------+----------------------------------------------------------------------------------------------------------+ + +REG_RX_SIZE +^^^^^^^^^^^ + +- Offset: 0x04 +- Type: volatile + ++-------+-------+--------+------------+--------------------------------------------------------------------------------------------+ +| Field | Bits | Access | Default | Description | ++=======+=======+========+============+============================================================================================+ +| SIZE | 19:0 | RW | 0x0 | Size of Rx buffer(amount of data to be transferred by UART to L2 memory). Read & write | +| | | | | to this CSR access different information. | +| | | | | | +| | | | | **On Write**: Size of Rx buffer for next transaction. It does not impact current ongoing | +| | | | | transaction. | +| | | | | | +| | | | | **On Read**: Bytes left for current ongoing transaction. This is the local copy of | +| | | | | information maintained inside the uDMA core. | ++-------+-------+--------+------------+--------------------------------------------------------------------------------------------+ + +REG_RX_CFG +^^^^^^^^^^ + +- Offset: 0x08 +- Type: volatile + ++------------+-------+--------+------------+------------------------------------------------------------------------------------+ +| Field | Bits | Access | Default | Description | ++============+=======+========+============+====================================================================================+ +| CLR | 6:6 | WO | 0x0 | Clear the local copy of Rx channel configuration CSRs inside uDMA core | ++------------+-------+--------+------------+------------------------------------------------------------------------------------+ +| PENDING | 5:5 | RO | 0x0 | - 0x1: The uDMA core Rx channel is enabled and either transmitting data, | +| | | | | waiting for access from the uDMA core arbiter, or stalled due to a full Rx FIFO | +| | | | | of uDMA Core | +| | | | | - 0x0 : Rx channel of the uDMA core does not have data to transmit to L2 memory | ++------------+-------+--------+------------+------------------------------------------------------------------------------------+ +| EN | 4:4 | RW | 0x0 | Enable the Rx channel of the uDMA core to perform Rx operation | ++------------+-------+--------+------------+------------------------------------------------------------------------------------+ +| CONTINUOUS | 0:0 | RW | 0x0 | - 0x0: stop after last transfer for channel | +| | | | | - 0x1: after last transfer for channel, reload buffer size | +| | | | | and start address and restart channel | ++------------+-------+--------+------------+------------------------------------------------------------------------------------+ REG_CAM_CFG_GLOB (Offset = 0x20) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -509,6 +486,112 @@ REG_CAM_VSYNC_POLARITY (Offset = 0x34) - 0x1: Active high .. -.. |image1| image:: udma_cam_image.png - :width: 6.5in - :height: 2.83333in +Firmware Guidelines +------------------- + +Clock Enable, Reset & Configure uDMA UART +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Rx Operation +^^^^^^^^^^^^ + +Pin Diagram +----------- +The Figure below is a high-level block diagram of the uDMA Camera:- + +.. figure:: uDMA_Camera_Pin_Diagram.png + :name: uDMA_Camera_Pin_Diagram + :align: center + :alt: + + uDMA Camera Pin Diagram + +Below is categorization of these pins: + +Rx channel interface +^^^^^^^^^^^^^^^^^^^^ +The following pins constitute the Rx channel interface of uDMA UART. uDMA UART uses these pins to write data to interleaved (L2) memory: + +- data_rx_datasize_o +- data_rx_o +- data_rx_valid_o +- data_rx_ready_i + +These pins reflect the configuration values for the next transaction. + +Clock interface +^^^^^^^^^^^^^^^ +- clk_i + +uDMA CORE derives these clock pins. clk_i is used to synchronize Camera with uDAM Core. + +Reset interface +^^^^^^^^^^^^^^^ +- rstn_i + +uDMA core issues reset signal to Camera using reset pin. + +uDMA UART inerface to read-write CSRs +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +The following interfaces are used to read and write to Camera CSRs. These interfaces are managed by uDMA Core: + +- cfg_data_i +- cfg_addr_i +- cfg_valid_i +- cfg_rwn_i +- cfg_ready_o +- cfg_data_o + +Rx channel interface +^^^^^^^^^^^^^^^^^^^^ +The following pins constitute the Rx channel interface of uDMA UART. uDMA UART uses these pins to write data to interleaved (L2) memory: + +- data_rx_datasize_o +- data_rx_o +- data_rx_valid_o +- data_rx_ready_i + +These pins reflect the configuration values for the next transaction. + +uDMA UART Rx channel configuration interface +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +- uDMA UART uses the following pins to share the value of config CSRs i.e. RX_SADDR, RX_SIZE, and RX_CFG with the uDMA core:- + + - cfg_rx_startaddr_o + - cfg_rx_size_o + - cfg_rx_continuous_o + - cfg_rx_en_o + - cfg_rx_clr_o + +- UART shares the values present over the below pins as read values of the config CSRs i.e. RX_SADDR, RX_SIZE, and RX_CFG: + + - cfg_rx_en_i + - cfg_rx_pending_i + - cfg_rx_curr_addr_i + - cfg_rx_bytes_left_i + + These values are updated by the uDMA core and reflects the configuration values for the current ongoing transactions. + +Test Interface +^^^^^^^^^^^^^^ + +- dft_test_mode_i: Design-for-test mode signal +- dft_cg_enable_i: Clock gating enable during test + +*dft_test_mode_i* is used to put uDMA Camera into test mode. *dft_cg_enable_i* is used to control clock gating such that clock behavior can be tested. + +Camera clock interface +^^^^^^^^^^^^^^^^^^^^^^ + +- cam_clk_i + +TODO: Add descrition + +Camera frame interface +^^^^^^^^^^^^^^^^^^^^^^ + +- cam_data_i +- cam_hsync_i +- cam_vsync_i + +TODO: Add descrition \ No newline at end of file From 626ac8f4e813353c422ed156c4adff80eef1e6a1 Mon Sep 17 00:00:00 2001 From: Aditya Tiwari Date: Thu, 15 May 2025 04:08:49 +0000 Subject: [PATCH 02/16] Updated register description --- docs/doc-src/ip-blocks/udma_cam.rst | 326 +++++++++------------------- 1 file changed, 101 insertions(+), 225 deletions(-) diff --git a/docs/doc-src/ip-blocks/udma_cam.rst b/docs/doc-src/ip-blocks/udma_cam.rst index 719a9790..38ae1e0a 100644 --- a/docs/doc-src/ip-blocks/udma_cam.rst +++ b/docs/doc-src/ip-blocks/udma_cam.rst @@ -196,6 +196,7 @@ The CSRs REG_RX_SADDR, REG_RX_SIZE specifies the configuration for the transacti REG_RX_SADDR ^^^^^^^^^^^^ + - Offset: 0x0 - Type: volatile @@ -248,243 +249,118 @@ REG_RX_CFG +------------+-------+--------+------------+------------------------------------------------------------------------------------+ | EN | 4:4 | RW | 0x0 | Enable the Rx channel of the uDMA core to perform Rx operation | +------------+-------+--------+------------+------------------------------------------------------------------------------------+ +| DATASIZE | 2:1 | RW | 0x2 | Controls uDMA address increment for each transfer from L2 memory | +| | | | |- 0x0: increment address by 1 (data is 8 bits) | +| | | | |- 0x1: increment address by 2 (data is 16 bits) | +| | | | |- 0x02: increment address by 4 (data is 32 bits) | +| | | | |- 0x03: increment address by 0 | ++------------+-------+--------+------------+------------------------------------------------------------------------------------+ | CONTINUOUS | 0:0 | RW | 0x0 | - 0x0: stop after last transfer for channel | | | | | | - 0x1: after last transfer for channel, reload buffer size | | | | | | and start address and restart channel | +------------+-------+--------+------------+------------------------------------------------------------------------------------+ -REG_CAM_CFG_GLOB (Offset = 0x20) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -.. list-table:: - :widths: 10 20 10 10 20 - :header-rows: 1 - - * - Field - - Bits - - Type - - Default - - Description - * - EN - - 31:31 - - RW - - 0x00 - - Enable data RX from camera interface - * - - - - - - - - - Enable/disable only happens at start of frame - * - - - - - - - - - 0x0: disable - * - - - - - - - - - 0x1: enable - * - SHIFT - - 14:11 - - RW - - 0x00 - - Number of bits to right shift final pixel value - * - - - - - - - - - Note: not used if FORMAT == BYPASS - * - FORMAT - - 10:8 - - RW - - 0x00 - - Input frame format: - * - - - - - - - - - 0x0: RGB565 - * - - - - - - - - - 0x1: RGB555 - * - - - - - - - - - 0x2: RGB444 - * - - - - - - - - - 0x4: BYPASS_LITTLEEND - * - - - - - - - - - 0x5: BYPASS_BIGEND - * - FRAMEWINDOW_EN - - 7:7 - - RW - - 0x00 - - Windowing enable: - * - - - - - - - - - 0x0: disable - * - - - - - - - - - 0x1: enable -.. - -REG_CAM_CFG_LL (Offset = 0x24) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -.. list-table:: - :widths: 10 20 10 10 20 - :header-rows: 1 - - * - Field - - Bits - - Type - - Default - - Description - * - SIZE - - 15:0 - - RW - - 0x00 - - Buffer size in bytes (1MB max) - * - - - - - - - - - Read: bytes remaining until transfer complete - * - - - - - - - - - Write: set number of bytes to transfer -.. +REG_CAM_CFG_GLOB +^^^^^^^^^^^^^^^^ -REG_CAM_CFG_UR (Offset = 0x28) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -.. list-table:: - :widths: 10 20 10 10 20 - :header-rows: 1 - - * - Field - - Bits - - Type - - Default - - Description - * - SIZE - - 31:16 - - RW - - 0x00 - - Y coordinate of upper right corner of window. - * - FRAMEWINDOW_URX - - 15:0 - - RW - - 0X00 - - X coordinate of upper right corner of window. -.. +- Offset: 0x20 +- Type: volatile -REG_CAM_CFG_SIZE (Offset = 0x2C) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -.. list-table:: - :widths: 10 20 10 10 20 - :header-rows: 1 - - * - Field - - Bits - - Type - - Default - - Description - * - ROWLEN - - 31:16 - - RW - - 0x00 - - N-1 where N is the number of horizontal pixels - * - - - - - - - - - (used in window mode) -.. ++----------------+-------+--------+------------+-------------------------------------------------------------------------------------+ +| Field | Bits | Access | Default | Description | ++================+=======+========+============+=====================================================================================+ +| EN | 31:31 | RW | 0x0 | Enable data RX from camera interface, Enable/disable only happens at start of frame | +| | | | | - 0x0: disable | +| | | | | - 0x1: enable | ++----------------+-------+--------+------------+-------------------------------------------------------------------------------------+ +| SHIFT | 14:11 | RW | 0x0 | Number of bits to right shift final pixel value | +| | | | | Note: not used if FORMAT == BYPASS | ++----------------+-------+--------+------------+-------------------------------------------------------------------------------------+ +| FORMAT | 10:8 | RW | 0x0 | Input frame format: | +| | | | | - 0x0: RGB565 | +| | | | | - 0x1: RGB555 | +| | | | | - 0x2: RGB444 | +| | | | | - 0x4: BYPASS_LITTLEEND | +| | | | | - 0x5: BYPASS_BIGEND | ++----------------+-------+--------+------------+-------------------------------------------------------------------------------------+ +| FRAMEWINDOW_EN | 7:7 | RW | 0x0 | Windowing enable: | +| | | | | 0x0: disable | +| | | | | 0x1: enable | ++----------------+-------+--------+------------+-------------------------------------------------------------------------------------+ + +REG_CAM_CFG_LL +^^^^^^^^^^^^^^ + +- Offset: 0x24 +- Type: volatile + ++------------+-------+--------+------------+------------------------------------------------------------------------------------+ +| Field | Bits | Access | Default | Description | ++============+=======+========+============+====================================================================================+ +| SIZE | 15:0 | RW | 0x0 | Buffer size in bytes (1MB max) | +| | 5:5 | RO | 0x0 | - Read: bytes remaining until transfer complete | +| | | | | - Write: set number of bytes to transfery | ++------------+-------+--------+------------+------------------------------------------------------------------------------------+ + +REG_CAM_CFG_UR +^^^^^^^^^^^^^^ + +- Offset: 0x28 +- Type: volatile + ++-----------------+-------+--------+------------+------------------------------------------------------------------------------------+ +| Field | Bits | Access | Default | Description | ++=================+=======+========+============+====================================================================================+ +| SIZE | 31:16 | RW | 0x0 | Y coordinate of upper right corner of window. | ++-----------------+-------+--------+------------+------------------------------------------------------------------------------------+ +| FRAMEWINDOW_URX | 15:0 | RO | 0x0 | X coordinate of upper right corner of window. | ++-----------------+-------+--------+------------+------------------------------------------------------------------------------------+ + +REG_CAM_CFG_SIZE +^^^^^^^^^^^^^^^^ + +- Offset: 0x2C +- Type: volatile + ++------------+-------+--------+------------+------------------------------------------------------------------------------------+ +| Field | Bits | Access | Default | Description | ++============+=======+========+============+====================================================================================+ +| ROWLEN | 31:16 | RW | 0x0 | N-1 where N is the number of horizontal pixels (used in window mode) | ++------------+-------+--------+------------+------------------------------------------------------------------------------------+ REG_CAM_CFG_FILTER (Offset = 0x30) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -.. list-table:: - :widths: 10 20 10 10 20 - :header-rows: 1 - - * - Field - - Bits - - Type - - Default - - Description - * - R_COEFF - - 23:16 - - RW - - 0x00 - - Coefficent that multiplies R component - * - - - - - - - - - Note: not used if FORMAT == BYPASS - * - G_COEFF - - 15:8 - - RW - - 0x00 - - Coefficent that multiplies G component - * - - - - - - - - - Note: not used if FORMAT == BYPASS - * - B_COEFF - - 7:0 - - RW - - 0x00 - - Coefficent that multiplies B component - * - - - - - - - - - Note: not used if FORMAT == BYPASS -.. -REG_CAM_VSYNC_POLARITY (Offset = 0x34) +- Offset: 0x30 +- Type: volatile + ++------------+-------+--------+------------+------------------------------------------------------------------------------------+ +| Field | Bits | Access | Default | Description | ++============+=======+========+============+====================================================================================+ +| R_COEFF | 6:6 | WO | 0x0 | Clear the local copy of Rx channel configuration CSRs inside uDMA core | ++------------+-------+--------+------------+------------------------------------------------------------------------------------+ +| G_COEFF | 5:5 | RO | 0x0 | - 0x1: The uDMA core Rx channel is enabled and either transmitting data, | +| | | | | waiting for access from the uDMA core arbiter, or stalled due to a full Rx FIFO | +| | | | | of uDMA Core | +| | | | | - 0x0 : Rx channel of the uDMA core does not have data to transmit to L2 memory | ++------------+-------+--------+------------+------------------------------------------------------------------------------------+ +| B_COEFF | 4:4 | RW | 0x0 | Enable the Rx channel of the uDMA core to perform Rx operation | ++------------+-------+--------+------------+------------------------------------------------------------------------------------+ + + +REG_CAM_VSYNC_POLARITY (Offset = ) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -.. list-table:: - :widths: 10 20 10 10 20 - :header-rows: 1 - - * - Field - - Bits - - Type - - Default - - Description - * - VSYNC_POLARITY - - 0:0 - - RW - - 0x00 - - Set vsync polarity: - * - - - - - - - - - 0x0: Active low - * - - - - - - - - - 0x1: Active high -.. + +- Offset: 0x34 +- Type: volatile + ++----------------+-------+--------+------------+---------------------------------+ +| Field | Bits | Access | Default | Description | ++================+=======+========+============+=================================+ +| VSYNC_POLARITY | 0:0 | RW | 0x0 | Set vsync polarity: | +| | | | | - 0x0: Active low | +| | | | | - 0x0: Active high | ++----------------+-------+--------+------------+---------------------------------+ Firmware Guidelines ------------------- From b8ac50e6d4abc020882ad8a432a4630b864d9cac Mon Sep 17 00:00:00 2001 From: Aditya Tiwari Date: Thu, 15 May 2025 05:01:58 +0000 Subject: [PATCH 03/16] uDMA Camera: Added system architecture diagram --- .../uDMA-Camera-system-Connection-Diagram.png | Bin 0 -> 898565 bytes docs/doc-src/ip-blocks/udma_cam.rst | 72 ++++++++++-------- 2 files changed, 39 insertions(+), 33 deletions(-) create mode 100644 docs/doc-src/ip-blocks/uDMA-Camera-system-Connection-Diagram.png diff --git a/docs/doc-src/ip-blocks/uDMA-Camera-system-Connection-Diagram.png b/docs/doc-src/ip-blocks/uDMA-Camera-system-Connection-Diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..db0748b82626bf7ff572ddbb373ee9c48dbb20da GIT binary patch literal 898565 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�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 literal 0 HcmV?d00001 diff --git a/docs/doc-src/ip-blocks/udma_cam.rst b/docs/doc-src/ip-blocks/udma_cam.rst index 38ae1e0a..4f68cf82 100644 --- a/docs/doc-src/ip-blocks/udma_cam.rst +++ b/docs/doc-src/ip-blocks/udma_cam.rst @@ -48,6 +48,7 @@ Block Architecture pixel value before sending it to output. The Figure below is a high-level block diagram of the uDMA UART:- + .. figure:: udma_cam_image.png :name: uDMA_Camera_Block_Diagram :align: center @@ -56,18 +57,18 @@ The Figure below is a high-level block diagram of the uDMA UART:- uDMA Camera Block Diagram - Read write input pin, cfg_rwn_i indicates if we want to write to - the register or read from the register. If the input is high then the - register is selected for reading and else for writing. Address of the - register is provided through cfg_addr_i. + the CSR or read from the CSR. If the input is high then the + CSR is selected for reading and else for writing. Address of the + CSR is provided through cfg_addr_i. - - Value read through the register is provided as output through + - Value read through the CSR is provided as output through cfg_data_o. - - cfg_data_i writes values to register. + - cfg_data_i writes values to CSR. - - Data in register REG_RX_SADDR is passed through cfg_rx_startaddr_o. + - Data in CSR REG_RX_SADDR is passed through cfg_rx_startaddr_o. - - Data in register REG_RX_SIZE is passed through cfg_rx_size_o. + - Data in CSR REG_RX_SIZE is passed through cfg_rx_size_o. - Data in the REG_RX_CFG is passed through cfg_rx_continuous_o, cfg_rx_en_o, cfg_rx_clr_o and data_rx_datasize_o. @@ -160,6 +161,14 @@ The Figure below is a high-level block diagram of the uDMA UART:- System Architecture ------------------- +The figure below shows how the uDMA UART interfaces with the rest of the CORE-V-MCU components and the external UART device:- + +.. figure:: uDMA-Camera-system-Connection-Diagram.png + :name: uDMA-Camera-CORE-V-MCU-Connection-Diagram + :align: center + :alt: + + uDMA Camera CORE-V-MCU connection diagram Programming Model ------------------ @@ -264,28 +273,28 @@ REG_CAM_CFG_GLOB ^^^^^^^^^^^^^^^^ - Offset: 0x20 -- Type: volatile +- Type: non-volatile +----------------+-------+--------+------------+-------------------------------------------------------------------------------------+ | Field | Bits | Access | Default | Description | +================+=======+========+============+=====================================================================================+ | EN | 31:31 | RW | 0x0 | Enable data RX from camera interface, Enable/disable only happens at start of frame | -| | | | | - 0x0: disable | -| | | | | - 0x1: enable | +| | | | |- 0x0: disable | +| | | | |- 0x1: enable | +----------------+-------+--------+------------+-------------------------------------------------------------------------------------+ -| SHIFT | 14:11 | RW | 0x0 | Number of bits to right shift final pixel value | +| SHIFT | 14:11 | RW | 0x0 | Number of bits to right shift final pixel value. | | | | | | Note: not used if FORMAT == BYPASS | +----------------+-------+--------+------------+-------------------------------------------------------------------------------------+ | FORMAT | 10:8 | RW | 0x0 | Input frame format: | -| | | | | - 0x0: RGB565 | -| | | | | - 0x1: RGB555 | -| | | | | - 0x2: RGB444 | -| | | | | - 0x4: BYPASS_LITTLEEND | -| | | | | - 0x5: BYPASS_BIGEND | +| | | | |- 0x0: RGB565 | +| | | | |- 0x1: RGB555 | +| | | | |- 0x2: RGB444 | +| | | | |- 0x4: BYPASS_LITTLEEND | +| | | | |- 0x5: BYPASS_BIGEND | +----------------+-------+--------+------------+-------------------------------------------------------------------------------------+ | FRAMEWINDOW_EN | 7:7 | RW | 0x0 | Windowing enable: | -| | | | | 0x0: disable | -| | | | | 0x1: enable | +| | | | |- 0x0: disable | +| | | | |- 0x1: enable | +----------------+-------+--------+------------+-------------------------------------------------------------------------------------+ REG_CAM_CFG_LL @@ -298,29 +307,29 @@ REG_CAM_CFG_LL | Field | Bits | Access | Default | Description | +============+=======+========+============+====================================================================================+ | SIZE | 15:0 | RW | 0x0 | Buffer size in bytes (1MB max) | -| | 5:5 | RO | 0x0 | - Read: bytes remaining until transfer complete | -| | | | | - Write: set number of bytes to transfery | +| | | | |- Read: bytes remaining until transfer complete | +| | | | |- Write: set number of bytes to transfer | +------------+-------+--------+------------+------------------------------------------------------------------------------------+ REG_CAM_CFG_UR ^^^^^^^^^^^^^^ - Offset: 0x28 -- Type: volatile +- Type: non-volatile +-----------------+-------+--------+------------+------------------------------------------------------------------------------------+ | Field | Bits | Access | Default | Description | +=================+=======+========+============+====================================================================================+ | SIZE | 31:16 | RW | 0x0 | Y coordinate of upper right corner of window. | +-----------------+-------+--------+------------+------------------------------------------------------------------------------------+ -| FRAMEWINDOW_URX | 15:0 | RO | 0x0 | X coordinate of upper right corner of window. | +| FRAMEWINDOW_URX | 15:0 | RW | 0x0 | X coordinate of upper right corner of window. | +-----------------+-------+--------+------------+------------------------------------------------------------------------------------+ REG_CAM_CFG_SIZE ^^^^^^^^^^^^^^^^ - Offset: 0x2C -- Type: volatile +- Type: non-volatile +------------+-------+--------+------------+------------------------------------------------------------------------------------+ | Field | Bits | Access | Default | Description | @@ -328,8 +337,8 @@ REG_CAM_CFG_SIZE | ROWLEN | 31:16 | RW | 0x0 | N-1 where N is the number of horizontal pixels (used in window mode) | +------------+-------+--------+------------+------------------------------------------------------------------------------------+ -REG_CAM_CFG_FILTER (Offset = 0x30) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +REG_CAM_CFG_FILTER +^^^^^^^^^^^^^^^^^^ - Offset: 0x30 - Type: volatile @@ -337,19 +346,16 @@ REG_CAM_CFG_FILTER (Offset = 0x30) +------------+-------+--------+------------+------------------------------------------------------------------------------------+ | Field | Bits | Access | Default | Description | +============+=======+========+============+====================================================================================+ -| R_COEFF | 6:6 | WO | 0x0 | Clear the local copy of Rx channel configuration CSRs inside uDMA core | +| R_COEFF | 6:6 | RW | 0x0 | Coefficent that multiplies R component, Note: not used if FORMAT == BYPASS | +------------+-------+--------+------------+------------------------------------------------------------------------------------+ -| G_COEFF | 5:5 | RO | 0x0 | - 0x1: The uDMA core Rx channel is enabled and either transmitting data, | -| | | | | waiting for access from the uDMA core arbiter, or stalled due to a full Rx FIFO | -| | | | | of uDMA Core | -| | | | | - 0x0 : Rx channel of the uDMA core does not have data to transmit to L2 memory | +| G_COEFF | 5:5 | RW | 0x0 | Coefficent that multiplies G component, Note: not used if FORMAT == BYPASS | +------------+-------+--------+------------+------------------------------------------------------------------------------------+ -| B_COEFF | 4:4 | RW | 0x0 | Enable the Rx channel of the uDMA core to perform Rx operation | +| B_COEFF | 4:4 | RW | 0x0 | Coefficent that multiplies B component, Note: not used if FORMAT == BYPASS | +------------+-------+--------+------------+------------------------------------------------------------------------------------+ -REG_CAM_VSYNC_POLARITY (Offset = ) -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +REG_CAM_VSYNC_POLARITY +^^^^^^^^^^^^^^^^^^^^^^ - Offset: 0x34 - Type: volatile From e9622cc0424c1e1cc52c584234d496c398360bb8 Mon Sep 17 00:00:00 2001 From: Aditya Tiwari Date: Thu, 15 May 2025 05:16:10 +0000 Subject: [PATCH 04/16] uDMA Camera: Updated CSR section --- docs/doc-src/ip-blocks/udma_cam.rst | 193 ++++++++++------------------ 1 file changed, 65 insertions(+), 128 deletions(-) diff --git a/docs/doc-src/ip-blocks/udma_cam.rst b/docs/doc-src/ip-blocks/udma_cam.rst index 4f68cf82..b7572279 100644 --- a/docs/doc-src/ip-blocks/udma_cam.rst +++ b/docs/doc-src/ip-blocks/udma_cam.rst @@ -25,27 +25,16 @@ image processing. Features -------- - - Supports RGB565, RGB555 ,RGB444, BYPASS_LITEND and BYPASS_BIGEND - image formats. - - - Allows windowing. It allows users to select a range of interest in - the picture. It can be disabled by the user. - - - Parallel data input line for carrying pixel data. - - - There is a horizontal sync(HSYNC) input which indicates one line of - the frame is transmitted. - - - There is a vertical sync(VSYNC) input which indicates that one - entire frame is transmitted. It can be configured for polarity. +- Supports RGB565, RGB555 ,RGB444, BYPASS_LITEND and BYPASS_BIGEND image formats. +- Allows windowing. It allows users to select a range of interest in the picture. It can be disabled by the user. +- Parallel data input line for carrying pixel data. +- There is a horizontal sync(HSYNC) input which indicates one line of the frame is transmitted. +- There is a vertical sync(VSYNC) input which indicates that one entire frame is transmitted. It can be configured for polarity. Block Architecture ------------------ - cam_clk_i is a pixel clock which changes on every pixel. Pixel data - is taken as input through cam_data_i, and cam_hsync_i and - cam_vsync_i indicate the horizontal and vertical sync value. It - supports active low reset. It contains a udma dc fifo to store the - pixel value before sending it to output. +cam_clk_i is a pixel clock which changes on every pixel. Pixel data is taken as input through cam_data_i, and cam_hsync_i and cam_vsync_i indicate the horizontal and vertical sync value. +It supports active low reset. It contains a udma dc fifo to store the pixel value before sending it to output. The Figure below is a high-level block diagram of the uDMA UART:- @@ -56,108 +45,56 @@ The Figure below is a high-level block diagram of the uDMA UART:- uDMA Camera Block Diagram - - Read write input pin, cfg_rwn_i indicates if we want to write to - the CSR or read from the CSR. If the input is high then the - CSR is selected for reading and else for writing. Address of the - CSR is provided through cfg_addr_i. - - - Value read through the CSR is provided as output through - cfg_data_o. - - - cfg_data_i writes values to CSR. - - - Data in CSR REG_RX_SADDR is passed through cfg_rx_startaddr_o. - - - Data in CSR REG_RX_SIZE is passed through cfg_rx_size_o. - - - Data in the REG_RX_CFG is passed through cfg_rx_continuous_o, - cfg_rx_en_o, cfg_rx_clr_o and data_rx_datasize_o. - - - Frame counter: - ○ Frame counter is incremented at start of frame if frame drop is - enabled. - - ○ Counter is reset if the counter value reaches frame drop value.or - frame drop is disabled. - - ○ Frame drop enable status and frame drop value can be read from - REG_CAM_CFG_GLOB. - - ○ Non zero frame counter value indicates a valid frame. - - - WINDOWING: - ○ Window of interest can be selected by using the windowing - feature. - - ○ Its enable or disable status can be read from REG_CAM_CFG_GLOB. - - ○ Coordinates of the window can be written to and read from - REG_CAM_CFG_LL and REG_CAM_CFG_UR. - - ○ A pixel is valid only if it is inside the window of interest if - windowing is enabled. - - ○ If windowing is disabled, pixels will be valid for every valid - frame. - - - Row counter and column counter: - ○ Counts the row and column at every camera clock. - - ○ Counter is reset at the start of the frame. - - ○ These counter values are used when windowing is enabled to check - the validity of pixels. - - ○ Column counter is incremented at posedge of cam_clk_i. Column ends - when the column counter reaches ROWLEN, which resets the counter - value. ROWLEN value can be read from REG_CAM_CFG_SIZE. - - ○ Row counter is incremented at the end of each column. - - - IMAGE FORMAT: RGB565, RGB555, RGB444 - ○ RGB565: Five bits of data is allocated for the red and blue color - component and 6 bits data for the green color component. - - ○ RGB555: Five bits of data is allocated for all the color - components. - - ○ RGB444: Four bits of data is allocated for all the color - components. - - ○ R, G, B pixel values can be read from cam_data_i. - - ○ Filter values for R, G, B can be obtained by multiplying their - respective pixel values by their coefficients. Coefficient can be - read from - REG_CAM_CFG_FILTER. - - ○ Filter values for all the pixels are added and then shifted right - to get the final pixel value which is then passed to fifo. Number of - bits needed to be shifted can be read from REG_CAM_CFG_GLOB. - - - IMAGE FORMAT: BYPASS_LITEND, BYPASS_BIGEND - ○ These image formats are used for YUV images. In the YUV image a - color is described as a Y component(luma) and two chroma components - U and V. Luma represents the brightness of the image and chroma - conveys the color information of the picture. - - ○ YUV pixel value can be read from cam_data_i. - - ○ Filter is not valid. - - - Vertical sync: - ○ Polarity can be read from REG_CAM_VSYNC_POLARITY.. - - ○ A start of frame is marked by high current vsync value and low - previous vsync. - - - udma_dc_fifo: - ○ RGB or YUV pixel values are sent as input udma_dc_fifo. - - ○ Valid output is passed through data_rx_valid_o if there is data in - fifo to be read. - - ○ Data can be read from the fifo through data_rx_data_o. +- Read write input pin, cfg_rwn_i indicates if we want to write to the CSR or read from the CSR. If the input is high then the CSR is selected for reading and else for writing. +- Address of the CSR is provided through cfg_addr_i. +- Value read through the CSR is provided as output through cfg_data_o. +- cfg_data_i writes values to CSR. +- Data in CSR REG_RX_SADDR is passed through cfg_rx_startaddr_o. +- Data in CSR REG_RX_SIZE is passed through cfg_rx_size_o. +- Data in the REG_RX_CFG is passed through cfg_rx_continuous_o, cfg_rx_en_o, cfg_rx_clr_o and data_rx_datasize_o. + +**Frame counter** + ○ Frame counter is incremented at start of frame if frame drop is enabled. + ○ Counter is reset if the counter value reaches frame drop value or frame drop is disabled. + ○ Frame drop enable status and frame drop value can be read from REG_CAM_CFG_GLOB. + ○ Non zero frame counter value indicates a valid frame. + +**WINDOWING** + ○ Window of interest can be selected by using the windowing feature. + ○ Its enable or disable status can be read from REG_CAM_CFG_GLOB. + ○ Coordinates of the window can be written to and read from REG_CAM_CFG_LL and REG_CAM_CFG_UR. + ○ A pixel is valid only if it is inside the window of interest if windowing is enabled. + ○ If windowing is disabled, pixels will be valid for every valid frame. + +**Row counter and column counter** + ○ Counts the row and column at every camera clock. + ○ Counter is reset at the start of the frame. + ○ These counter values are used when windowing is enabled to check the validity of pixels. + ○ Column counter is incremented at posedge of cam_clk_i. Column ends when the column counter reaches ROWLEN, which resets the counter value. ROWLEN value can be read from REG_CAM_CFG_SIZE. + ○ Row counter is incremented at the end of each column. + +**IMAGE FORMAT** + ○ RGB565: Five bits of data is allocated for the red and blue color component and 6 bits data for the green color component. + ○ RGB555: Five bits of data is allocated for all the color components. + ○ RGB444: Four bits of data is allocated for all the color components. + ○ R, G, B pixel values can be read from cam_data_i. + ○ Filter values for R, G, B can be obtained by multiplying their respective pixel values by their coefficients. Coefficient can be read from REG_CAM_CFG_FILTER. + ○ Filter values for all the pixels are added and then shifted right to get the final pixel value which is then passed to fifo. Number of bits needed to be shifted can be read from REG_CAM_CFG_GLOB. + +**IMAGE FORMAT: BYPASS_LITEND, BYPASS_BIGEND** + ○ These image formats are used for YUV images. In the YUV image a color is described as a Y component(luma) and two chroma components U and V. Luma represents the brightness of the image and chroma + conveys the color information of the picture. + ○ YUV pixel value can be read from cam_data_i. + ○ Filter is not valid. + +**Vertical sync** + ○ Polarity can be read from REG_CAM_VSYNC_POLARITY.. + ○ A start of frame is marked by high current vsync value and low previous vsync. + +**udma_dc_fifo** + ○ RGB or YUV pixel values are sent as input udma_dc_fifo. + ○ Valid output is passed through data_rx_valid_o if there is data in fifo to be read. + ○ Data can be read from the fifo through data_rx_data_o. System Architecture ------------------- @@ -258,7 +195,7 @@ REG_RX_CFG +------------+-------+--------+------------+------------------------------------------------------------------------------------+ | EN | 4:4 | RW | 0x0 | Enable the Rx channel of the uDMA core to perform Rx operation | +------------+-------+--------+------------+------------------------------------------------------------------------------------+ -| DATASIZE | 2:1 | RW | 0x2 | Controls uDMA address increment for each transfer from L2 memory | +| DATASIZE | 2:1 | RW | 0x2 |Controls uDMA address increment for each transfer from L2 memory | | | | | |- 0x0: increment address by 1 (data is 8 bits) | | | | | |- 0x1: increment address by 2 (data is 16 bits) | | | | | |- 0x02: increment address by 4 (data is 32 bits) | @@ -278,21 +215,21 @@ REG_CAM_CFG_GLOB +----------------+-------+--------+------------+-------------------------------------------------------------------------------------+ | Field | Bits | Access | Default | Description | +================+=======+========+============+=====================================================================================+ -| EN | 31:31 | RW | 0x0 | Enable data RX from camera interface, Enable/disable only happens at start of frame | +| EN | 31:31 | RW | 0x0 |Enable data RX from camera interface, Enable/disable only happens at start of frame | | | | | |- 0x0: disable | | | | | |- 0x1: enable | +----------------+-------+--------+------------+-------------------------------------------------------------------------------------+ | SHIFT | 14:11 | RW | 0x0 | Number of bits to right shift final pixel value. | | | | | | Note: not used if FORMAT == BYPASS | +----------------+-------+--------+------------+-------------------------------------------------------------------------------------+ -| FORMAT | 10:8 | RW | 0x0 | Input frame format: | +| FORMAT | 10:8 | RW | 0x0 |Input frame format: | | | | | |- 0x0: RGB565 | | | | | |- 0x1: RGB555 | | | | | |- 0x2: RGB444 | | | | | |- 0x4: BYPASS_LITTLEEND | | | | | |- 0x5: BYPASS_BIGEND | +----------------+-------+--------+------------+-------------------------------------------------------------------------------------+ -| FRAMEWINDOW_EN | 7:7 | RW | 0x0 | Windowing enable: | +| FRAMEWINDOW_EN | 7:7 | RW | 0x0 |Windowing enable: | | | | | |- 0x0: disable | | | | | |- 0x1: enable | +----------------+-------+--------+------------+-------------------------------------------------------------------------------------+ @@ -306,7 +243,7 @@ REG_CAM_CFG_LL +------------+-------+--------+------------+------------------------------------------------------------------------------------+ | Field | Bits | Access | Default | Description | +============+=======+========+============+====================================================================================+ -| SIZE | 15:0 | RW | 0x0 | Buffer size in bytes (1MB max) | +| SIZE | 15:0 | RW | 0x0 |Buffer size in bytes (1MB max) | | | | | |- Read: bytes remaining until transfer complete | | | | | |- Write: set number of bytes to transfer | +------------+-------+--------+------------+------------------------------------------------------------------------------------+ @@ -363,9 +300,9 @@ REG_CAM_VSYNC_POLARITY +----------------+-------+--------+------------+---------------------------------+ | Field | Bits | Access | Default | Description | +================+=======+========+============+=================================+ -| VSYNC_POLARITY | 0:0 | RW | 0x0 | Set vsync polarity: | -| | | | | - 0x0: Active low | -| | | | | - 0x0: Active high | +| VSYNC_POLARITY | 0:0 | RW | 0x0 |Set vsync polarity: | +| | | | |- 0x0: Active low | +| | | | |- 0x0: Active high | +----------------+-------+--------+------------+---------------------------------+ Firmware Guidelines From 806b5db0d81cb7929447e4f5dc5abdc3caf43c48 Mon Sep 17 00:00:00 2001 From: Aditya Tiwari Date: Thu, 15 May 2025 05:21:50 +0000 Subject: [PATCH 05/16] uDMA UART: Updated indentation --- docs/doc-src/ip-blocks/udma_cam.rst | 70 ++++++++++++++++------------- 1 file changed, 38 insertions(+), 32 deletions(-) diff --git a/docs/doc-src/ip-blocks/udma_cam.rst b/docs/doc-src/ip-blocks/udma_cam.rst index b7572279..e90695b0 100644 --- a/docs/doc-src/ip-blocks/udma_cam.rst +++ b/docs/doc-src/ip-blocks/udma_cam.rst @@ -54,47 +54,47 @@ The Figure below is a high-level block diagram of the uDMA UART:- - Data in the REG_RX_CFG is passed through cfg_rx_continuous_o, cfg_rx_en_o, cfg_rx_clr_o and data_rx_datasize_o. **Frame counter** - ○ Frame counter is incremented at start of frame if frame drop is enabled. - ○ Counter is reset if the counter value reaches frame drop value or frame drop is disabled. - ○ Frame drop enable status and frame drop value can be read from REG_CAM_CFG_GLOB. - ○ Non zero frame counter value indicates a valid frame. + - Frame counter is incremented at start of frame if frame drop is enabled. + - Counter is reset if the counter value reaches frame drop value or frame drop is disabled. + - Frame drop enable status and frame drop value can be read from REG_CAM_CFG_GLOB. + - Non zero frame counter value indicates a valid frame. **WINDOWING** - ○ Window of interest can be selected by using the windowing feature. - ○ Its enable or disable status can be read from REG_CAM_CFG_GLOB. - ○ Coordinates of the window can be written to and read from REG_CAM_CFG_LL and REG_CAM_CFG_UR. - ○ A pixel is valid only if it is inside the window of interest if windowing is enabled. - ○ If windowing is disabled, pixels will be valid for every valid frame. + - Window of interest can be selected by using the windowing feature. + - Its enable or disable status can be read from REG_CAM_CFG_GLOB. + - Coordinates of the window can be written to and read from REG_CAM_CFG_LL and REG_CAM_CFG_UR. + - A pixel is valid only if it is inside the window of interest if windowing is enabled. + - If windowing is disabled, pixels will be valid for every valid frame. **Row counter and column counter** - ○ Counts the row and column at every camera clock. - ○ Counter is reset at the start of the frame. - ○ These counter values are used when windowing is enabled to check the validity of pixels. - ○ Column counter is incremented at posedge of cam_clk_i. Column ends when the column counter reaches ROWLEN, which resets the counter value. ROWLEN value can be read from REG_CAM_CFG_SIZE. - ○ Row counter is incremented at the end of each column. + - Counts the row and column at every camera clock. + - Counter is reset at the start of the frame. + - These counter values are used when windowing is enabled to check the validity of pixels. + - Column counter is incremented at posedge of cam_clk_i. Column ends when the column counter reaches ROWLEN, which resets the counter value. ROWLEN value can be read from REG_CAM_CFG_SIZE. + - Row counter is incremented at the end of each column. **IMAGE FORMAT** - ○ RGB565: Five bits of data is allocated for the red and blue color component and 6 bits data for the green color component. - ○ RGB555: Five bits of data is allocated for all the color components. - ○ RGB444: Four bits of data is allocated for all the color components. - ○ R, G, B pixel values can be read from cam_data_i. - ○ Filter values for R, G, B can be obtained by multiplying their respective pixel values by their coefficients. Coefficient can be read from REG_CAM_CFG_FILTER. - ○ Filter values for all the pixels are added and then shifted right to get the final pixel value which is then passed to fifo. Number of bits needed to be shifted can be read from REG_CAM_CFG_GLOB. + - RGB565: Five bits of data is allocated for the red and blue color component and 6 bits data for the green color component. + - RGB555: Five bits of data is allocated for all the color components. + - RGB444: Four bits of data is allocated for all the color components. + - R, G, B pixel values can be read from cam_data_i. + - Filter values for R, G, B can be obtained by multiplying their respective pixel values by their coefficients. Coefficient can be read from REG_CAM_CFG_FILTER. + - Filter values for all the pixels are added and then shifted right to get the final pixel value which is then passed to fifo. Number of bits needed to be shifted can be read from REG_CAM_CFG_GLOB. **IMAGE FORMAT: BYPASS_LITEND, BYPASS_BIGEND** - ○ These image formats are used for YUV images. In the YUV image a color is described as a Y component(luma) and two chroma components U and V. Luma represents the brightness of the image and chroma - conveys the color information of the picture. - ○ YUV pixel value can be read from cam_data_i. - ○ Filter is not valid. + - These image formats are used for YUV images. In the YUV image a color is described as a Y component(luma) and two chroma components U and V. Luma represents the brightness of the image and chroma + conveys the color information of the picture. + - YUV pixel value can be read from cam_data_i. + - Filter is not valid. **Vertical sync** - ○ Polarity can be read from REG_CAM_VSYNC_POLARITY.. - ○ A start of frame is marked by high current vsync value and low previous vsync. + - Polarity can be read from REG_CAM_VSYNC_POLARITY.. + - A start of frame is marked by high current vsync value and low previous vsync. **udma_dc_fifo** - ○ RGB or YUV pixel values are sent as input udma_dc_fifo. - ○ Valid output is passed through data_rx_valid_o if there is data in fifo to be read. - ○ Data can be read from the fifo through data_rx_data_o. + - RGB or YUV pixel values are sent as input udma_dc_fifo. + - Valid output is passed through data_rx_valid_o if there is data in fifo to be read. + - Data can be read from the fifo through data_rx_data_o. System Architecture ------------------- @@ -200,10 +200,11 @@ REG_RX_CFG | | | | |- 0x1: increment address by 2 (data is 16 bits) | | | | | |- 0x02: increment address by 4 (data is 32 bits) | | | | | |- 0x03: increment address by 0 | +| | | | | | +------------+-------+--------+------------+------------------------------------------------------------------------------------+ | CONTINUOUS | 0:0 | RW | 0x0 | - 0x0: stop after last transfer for channel | -| | | | | - 0x1: after last transfer for channel, reload buffer size | -| | | | | and start address and restart channel | +| | | | | - 0x1: after last transfer for channel, reload buffer size, start address | +| | | | | and restart channel | +------------+-------+--------+------------+------------------------------------------------------------------------------------+ REG_CAM_CFG_GLOB @@ -218,6 +219,7 @@ REG_CAM_CFG_GLOB | EN | 31:31 | RW | 0x0 |Enable data RX from camera interface, Enable/disable only happens at start of frame | | | | | |- 0x0: disable | | | | | |- 0x1: enable | +| | | | | | +----------------+-------+--------+------------+-------------------------------------------------------------------------------------+ | SHIFT | 14:11 | RW | 0x0 | Number of bits to right shift final pixel value. | | | | | | Note: not used if FORMAT == BYPASS | @@ -228,10 +230,12 @@ REG_CAM_CFG_GLOB | | | | |- 0x2: RGB444 | | | | | |- 0x4: BYPASS_LITTLEEND | | | | | |- 0x5: BYPASS_BIGEND | +| | | | | | +----------------+-------+--------+------------+-------------------------------------------------------------------------------------+ | FRAMEWINDOW_EN | 7:7 | RW | 0x0 |Windowing enable: | | | | | |- 0x0: disable | | | | | |- 0x1: enable | +| | | | | | +----------------+-------+--------+------------+-------------------------------------------------------------------------------------+ REG_CAM_CFG_LL @@ -246,6 +250,7 @@ REG_CAM_CFG_LL | SIZE | 15:0 | RW | 0x0 |Buffer size in bytes (1MB max) | | | | | |- Read: bytes remaining until transfer complete | | | | | |- Write: set number of bytes to transfer | +| | | | | | +------------+-------+--------+------------+------------------------------------------------------------------------------------+ REG_CAM_CFG_UR @@ -300,9 +305,10 @@ REG_CAM_VSYNC_POLARITY +----------------+-------+--------+------------+---------------------------------+ | Field | Bits | Access | Default | Description | +================+=======+========+============+=================================+ -| VSYNC_POLARITY | 0:0 | RW | 0x0 |Set vsync polarity: | +| VSYNC_POLARITY | 0:0 | RW | 0x0 |Set vsync polaritym | | | | | |- 0x0: Active low | | | | | |- 0x0: Active high | +| | | | | | +----------------+-------+--------+------------+---------------------------------+ Firmware Guidelines From d3609bb62c58841a7753f1a64a4d5b0577e290ef Mon Sep 17 00:00:00 2001 From: Aditya Tiwari Date: Thu, 15 May 2025 05:25:40 +0000 Subject: [PATCH 06/16] uDMA UART: Updated indentation --- docs/doc-src/ip-blocks/udma_cam.rst | 46 ++++++++++++++++------------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/docs/doc-src/ip-blocks/udma_cam.rst b/docs/doc-src/ip-blocks/udma_cam.rst index e90695b0..0c3b2132 100644 --- a/docs/doc-src/ip-blocks/udma_cam.rst +++ b/docs/doc-src/ip-blocks/udma_cam.rst @@ -195,11 +195,12 @@ REG_RX_CFG +------------+-------+--------+------------+------------------------------------------------------------------------------------+ | EN | 4:4 | RW | 0x0 | Enable the Rx channel of the uDMA core to perform Rx operation | +------------+-------+--------+------------+------------------------------------------------------------------------------------+ -| DATASIZE | 2:1 | RW | 0x2 |Controls uDMA address increment for each transfer from L2 memory | -| | | | |- 0x0: increment address by 1 (data is 8 bits) | -| | | | |- 0x1: increment address by 2 (data is 16 bits) | -| | | | |- 0x02: increment address by 4 (data is 32 bits) | -| | | | |- 0x03: increment address by 0 | +| DATASIZE | 2:1 | RW | 0x2 | Controls uDMA address increment for each transfer from L2 memory | +| | | | | | +| | | | | - 0x0: increment address by 1 (data is 8 bits) | +| | | | | - 0x1: increment address by 2 (data is 16 bits) | +| | | | | - 0x02: increment address by 4 (data is 32 bits) | +| | | | | - 0x03: increment address by 0 | | | | | | | +------------+-------+--------+------------+------------------------------------------------------------------------------------+ | CONTINUOUS | 0:0 | RW | 0x0 | - 0x0: stop after last transfer for channel | @@ -216,25 +217,28 @@ REG_CAM_CFG_GLOB +----------------+-------+--------+------------+-------------------------------------------------------------------------------------+ | Field | Bits | Access | Default | Description | +================+=======+========+============+=====================================================================================+ -| EN | 31:31 | RW | 0x0 |Enable data RX from camera interface, Enable/disable only happens at start of frame | -| | | | |- 0x0: disable | -| | | | |- 0x1: enable | +| EN | 31:31 | RW | 0x0 | Enable data RX from camera interface, Enable/disable only happens at start of frame | +| | | | | | +| | | | | - 0x0: disable | +| | | | | - 0x1: enable | | | | | | | +----------------+-------+--------+------------+-------------------------------------------------------------------------------------+ | SHIFT | 14:11 | RW | 0x0 | Number of bits to right shift final pixel value. | | | | | | Note: not used if FORMAT == BYPASS | +----------------+-------+--------+------------+-------------------------------------------------------------------------------------+ | FORMAT | 10:8 | RW | 0x0 |Input frame format: | -| | | | |- 0x0: RGB565 | -| | | | |- 0x1: RGB555 | -| | | | |- 0x2: RGB444 | -| | | | |- 0x4: BYPASS_LITTLEEND | -| | | | |- 0x5: BYPASS_BIGEND | +| | | | | | +| | | | | - 0x0: RGB565 | +| | | | | - 0x1: RGB555 | +| | | | | - 0x2: RGB444 | +| | | | | - 0x4: BYPASS_LITTLEEND | +| | | | | - 0x5: BYPASS_BIGEND | | | | | | | +----------------+-------+--------+------------+-------------------------------------------------------------------------------------+ -| FRAMEWINDOW_EN | 7:7 | RW | 0x0 |Windowing enable: | -| | | | |- 0x0: disable | -| | | | |- 0x1: enable | +| FRAMEWINDOW_EN | 7:7 | RW | 0x0 | Windowing enable: | +| | | | | | +| | | | | - 0x0: disable | +| | | | | - 0x1: enable | | | | | | | +----------------+-------+--------+------------+-------------------------------------------------------------------------------------+ @@ -247,9 +251,10 @@ REG_CAM_CFG_LL +------------+-------+--------+------------+------------------------------------------------------------------------------------+ | Field | Bits | Access | Default | Description | +============+=======+========+============+====================================================================================+ -| SIZE | 15:0 | RW | 0x0 |Buffer size in bytes (1MB max) | -| | | | |- Read: bytes remaining until transfer complete | -| | | | |- Write: set number of bytes to transfer | +| SIZE | 15:0 | RW | 0x0 | Buffer size in bytes (1MB max) | +| | | | | | +| | | | | **Read:** bytes remaining until transfer complete | +| | | | | **Write:** set number of bytes to transfer | | | | | | | +------------+-------+--------+------------+------------------------------------------------------------------------------------+ @@ -305,7 +310,8 @@ REG_CAM_VSYNC_POLARITY +----------------+-------+--------+------------+---------------------------------+ | Field | Bits | Access | Default | Description | +================+=======+========+============+=================================+ -| VSYNC_POLARITY | 0:0 | RW | 0x0 |Set vsync polaritym | +| VSYNC_POLARITY | 0:0 | RW | 0x0 | Set vsync polarit | +| | | | | | | | | | |- 0x0: Active low | | | | | |- 0x0: Active high | | | | | | | From 1259b6ee5eb25d95c14ed3c607721a42d2da44a1 Mon Sep 17 00:00:00 2001 From: Aditya Tiwari Date: Thu, 15 May 2025 05:31:21 +0000 Subject: [PATCH 07/16] uDMA UART: Updated indentation --- docs/doc-src/ip-blocks/udma_cam.rst | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/doc-src/ip-blocks/udma_cam.rst b/docs/doc-src/ip-blocks/udma_cam.rst index 0c3b2132..d573fc17 100644 --- a/docs/doc-src/ip-blocks/udma_cam.rst +++ b/docs/doc-src/ip-blocks/udma_cam.rst @@ -54,7 +54,7 @@ The Figure below is a high-level block diagram of the uDMA UART:- - Data in the REG_RX_CFG is passed through cfg_rx_continuous_o, cfg_rx_en_o, cfg_rx_clr_o and data_rx_datasize_o. **Frame counter** - - Frame counter is incremented at start of frame if frame drop is enabled. + - Frame counter is incremented at start of frame if frame drop is enabled. - Counter is reset if the counter value reaches frame drop value or frame drop is disabled. - Frame drop enable status and frame drop value can be read from REG_CAM_CFG_GLOB. - Non zero frame counter value indicates a valid frame. @@ -82,8 +82,8 @@ The Figure below is a high-level block diagram of the uDMA UART:- - Filter values for all the pixels are added and then shifted right to get the final pixel value which is then passed to fifo. Number of bits needed to be shifted can be read from REG_CAM_CFG_GLOB. **IMAGE FORMAT: BYPASS_LITEND, BYPASS_BIGEND** - - These image formats are used for YUV images. In the YUV image a color is described as a Y component(luma) and two chroma components U and V. Luma represents the brightness of the image and chroma - conveys the color information of the picture. + - These image formats are used for YUV images. In the YUV image a color is described as a Y component(luma) and two chroma components U and V. + - Luma represents the brightness of the image and chroma conveys the color information of the picture. - YUV pixel value can be read from cam_data_i. - Filter is not valid. @@ -206,6 +206,7 @@ REG_RX_CFG | CONTINUOUS | 0:0 | RW | 0x0 | - 0x0: stop after last transfer for channel | | | | | | - 0x1: after last transfer for channel, reload buffer size, start address | | | | | | and restart channel | +| | | | | | +------------+-------+--------+------------+------------------------------------------------------------------------------------+ REG_CAM_CFG_GLOB From f506bfbe9c17a4ac399ba63e034ff54f0866eb60 Mon Sep 17 00:00:00 2001 From: Aditya Tiwari Date: Fri, 16 May 2025 03:53:31 +0000 Subject: [PATCH 08/16] uDMA UART: Added missing registers and bitfields --- docs/doc-src/ip-blocks/udma_cam.rst | 172 ++++++++++++++++++---------- 1 file changed, 109 insertions(+), 63 deletions(-) diff --git a/docs/doc-src/ip-blocks/udma_cam.rst b/docs/doc-src/ip-blocks/udma_cam.rst index d573fc17..a567cf6e 100644 --- a/docs/doc-src/ip-blocks/udma_cam.rst +++ b/docs/doc-src/ip-blocks/udma_cam.rst @@ -19,9 +19,7 @@ uDMA CAMERA =========== -A camera interface is a hardware block that interfaces with different -image sensor interfaces and generates output that can be used for -image processing. +A camera interface is a hardware block that interfaces with different image sensor interfaces and generates output that can be used for image processing. Features -------- @@ -30,11 +28,12 @@ Features - Parallel data input line for carrying pixel data. - There is a horizontal sync(HSYNC) input which indicates one line of the frame is transmitted. - There is a vertical sync(VSYNC) input which indicates that one entire frame is transmitted. It can be configured for polarity. +- Supports active low reset. Block Architecture ------------------ cam_clk_i is a pixel clock which changes on every pixel. Pixel data is taken as input through cam_data_i, and cam_hsync_i and cam_vsync_i indicate the horizontal and vertical sync value. -It supports active low reset. It contains a udma dc fifo to store the pixel value before sending it to output. +It contains a udma dc fifo to store the pixel value before sending it to output. The Figure below is a high-level block diagram of the uDMA UART:- @@ -45,13 +44,45 @@ The Figure below is a high-level block diagram of the uDMA UART:- uDMA Camera Block Diagram -- Read write input pin, cfg_rwn_i indicates if we want to write to the CSR or read from the CSR. If the input is high then the CSR is selected for reading and else for writing. -- Address of the CSR is provided through cfg_addr_i. -- Value read through the CSR is provided as output through cfg_data_o. -- cfg_data_i writes values to CSR. -- Data in CSR REG_RX_SADDR is passed through cfg_rx_startaddr_o. -- Data in CSR REG_RX_SIZE is passed through cfg_rx_size_o. -- Data in the REG_RX_CFG is passed through cfg_rx_continuous_o, cfg_rx_en_o, cfg_rx_clr_o and data_rx_datasize_o. +Dual-clock(DC) TX and RX FIFO +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The uDMA core operates using the system clock, while the uDMA UART operates using both the system clock and the peripheral clock. To ensure the uDMA UART and core are properly synchronized, dual-clock FIFOs are used in the uDMA UART. +These are 4-depth FIFOs and can store 8-bit wide data. It is implemented using circular FIFO. + +Below diagram shows the interfaces of DC FIFO: + +.. figure:: uDMA_UART_Dual_clock_fifo.png + :name: uDMA_UART_Dual_clock_fifo + :align: center + :alt: + + Dual clock FIFO + +For Rx operation, source(src_*) interfaces shown in above diagram operate at peripheral clock and destination(dst_*) interfaces operate using system clock. + +For Tx operation, source interfaces shown in above diagram operate at system clock and destination interfaces operate using peripheral clock. + +**Pop operation** + +The DC FIFO asserts the dst_valid_o (valid) signal to indicate that valid data is available on the data lines. A module waiting for data should read the data lines only when valid pin is high and drive the dst_ready_i (ready) +signal to high and reset it in next clock cycle. When DC FIFO receives an active ready signal, indicating that the data has been read, it updates the data lines with new data if FIFO is not empty. +If the FIFO is empty, the dst_valid_o signal is deasserted. + +**Push operation** + +The DC FIFO asserts the src_ready_o (ready) signal when there is available space to accept incoming data. When an active src_valid_i (valid) signal is received, the data is written into the FIFO. +The src_ready_o signal is kept asserted as long as the FIFO has space for more data. IF the DC FIFO is full, push operation will be stalled until the FIFO has empty space and valid line is high. +A module tranmitting the data to DC FIFO should drive the valid signal low to indicate data lines should not be read. + +During Camera receive (Rx) operation, the RX DC FIFO is written internally by the uDMA Camera with the data received from the external device and read by the uDMA core. + +RX operation +^^^^^^^^^^^^ + +The uDMA camera communicates with external device using below pins: + +receives the pixel data **Frame counter** - Frame counter is incremented at start of frame if frame drop is enabled. @@ -96,6 +127,10 @@ The Figure below is a high-level block diagram of the uDMA UART:- - Valid output is passed through data_rx_valid_o if there is data in fifo to be read. - Data can be read from the fifo through data_rx_data_o. +CSR Access +^^^^^^^^^^ + + System Architecture ------------------- The figure below shows how the uDMA UART interfaces with the rest of the CORE-V-MCU components and the external UART device:- @@ -215,33 +250,46 @@ REG_CAM_CFG_GLOB - Offset: 0x20 - Type: non-volatile -+----------------+-------+--------+------------+-------------------------------------------------------------------------------------+ -| Field | Bits | Access | Default | Description | -+================+=======+========+============+=====================================================================================+ -| EN | 31:31 | RW | 0x0 | Enable data RX from camera interface, Enable/disable only happens at start of frame | -| | | | | | -| | | | | - 0x0: disable | -| | | | | - 0x1: enable | -| | | | | | -+----------------+-------+--------+------------+-------------------------------------------------------------------------------------+ -| SHIFT | 14:11 | RW | 0x0 | Number of bits to right shift final pixel value. | -| | | | | Note: not used if FORMAT == BYPASS | -+----------------+-------+--------+------------+-------------------------------------------------------------------------------------+ -| FORMAT | 10:8 | RW | 0x0 |Input frame format: | -| | | | | | -| | | | | - 0x0: RGB565 | -| | | | | - 0x1: RGB555 | -| | | | | - 0x2: RGB444 | -| | | | | - 0x4: BYPASS_LITTLEEND | -| | | | | - 0x5: BYPASS_BIGEND | -| | | | | | -+----------------+-------+--------+------------+-------------------------------------------------------------------------------------+ -| FRAMEWINDOW_EN | 7:7 | RW | 0x0 | Windowing enable: | -| | | | | | -| | | | | - 0x0: disable | -| | | | | - 0x1: enable | -| | | | | | -+----------------+-------+--------+------------+-------------------------------------------------------------------------------------+ ++------------------+-------+--------+------------+------------------------------------------------------------------------+ +| Field | Bits | Access | Default | Description | ++==================+=======+========+============+========================================================================+ +| EN | 31:31 | RW | 0x0 | Enable data RX from camera interface, Enable/disable only happens | +| | | | | at start of frame | +| | | | | | +| | | | | - 0x0: disable | +| | | | | - 0x1: enable | +| | | | | | ++------------------+-------+--------+------------+------------------------------------------------------------------------+ +| SHIFT | 14:11 | RW | 0x0 | Number of bits to right shift final pixel value. | +| | | | | Note: not used if FORMAT == BYPASS | ++------------------+-------+--------+------------+------------------------------------------------------------------------+ +| FORMAT | 10:8 | RW | 0x0 |Input frame format: | +| | | | | | +| | | | | - 0x0: RGB565 | +| | | | | - 0x1: RGB555 | +| | | | | - 0x2: RGB444 | +| | | | | - 0x4: BYPASS_LITTLEEND | +| | | | | - 0x5: BYPASS_BIGEND | +| | | | | | ++------------------+-------+--------+------------+------------------------------------------------------------------------+ +| FRAMESLICE_EN | 7:7 | RW | 0x0 | Frame Slicing (Windowing) enable: | +| | | | | | +| | | | | - 0x0: disable | +| | | | | - 0x1: enable | +| | | | | | ++------------------+-------+--------+------------+------------------------------------------------------------------------+ +| FRAMEDROP_VALUE | 6:1 | RW | 0x0 | Frame Drop value: | +| | | | | | +| | | | | | +| | | | | | +| | | | | | ++------------------+-------+--------+------------+------------------------------------------------------------------------+ +| FRAMEDROP_EN | 0:0 | RW | 0x0 | Frame Drop enable: | +| | | | | | +| | | | | - 0x0: disable | +| | | | | - 0x1: enable | +| | | | | | ++------------------+-------+--------+------------+------------------------------------------------------------------------+ REG_CAM_CFG_LL ^^^^^^^^^^^^^^ @@ -249,15 +297,13 @@ REG_CAM_CFG_LL - Offset: 0x24 - Type: volatile -+------------+-------+--------+------------+------------------------------------------------------------------------------------+ -| Field | Bits | Access | Default | Description | -+============+=======+========+============+====================================================================================+ -| SIZE | 15:0 | RW | 0x0 | Buffer size in bytes (1MB max) | -| | | | | | -| | | | | **Read:** bytes remaining until transfer complete | -| | | | | **Write:** set number of bytes to transfer | -| | | | | | -+------------+-------+--------+------------+------------------------------------------------------------------------------------+ ++-----------------+-------+--------+------------+------------------------------------------------------+ +| Field | Bits | Access | Default | Description | ++=================+=======+========+============+======================================================+ +| FRAMESLICE_LLY | 31:16 | RW | 0x0 | Y coordinate of Lower left corner of Frame. | ++-----------------+-------+--------+------------+------------------------------------------------------+ +| FRAMESLICE_LLX | 15:0 | RW | 0x0 | X coordinate of Lower left corner of Frame. | ++-----------------+-------+--------+------------+------------------------------------------------------+ REG_CAM_CFG_UR ^^^^^^^^^^^^^^ @@ -265,13 +311,13 @@ REG_CAM_CFG_UR - Offset: 0x28 - Type: non-volatile -+-----------------+-------+--------+------------+------------------------------------------------------------------------------------+ -| Field | Bits | Access | Default | Description | -+=================+=======+========+============+====================================================================================+ -| SIZE | 31:16 | RW | 0x0 | Y coordinate of upper right corner of window. | -+-----------------+-------+--------+------------+------------------------------------------------------------------------------------+ -| FRAMEWINDOW_URX | 15:0 | RW | 0x0 | X coordinate of upper right corner of window. | -+-----------------+-------+--------+------------+------------------------------------------------------------------------------------+ ++-----------------+-------+--------+------------+-------------------------------------------------------+ +| Field | Bits | Access | Default | Description | ++=================+=======+========+============+=======================================================+ +| FRAMESLICE_URY | 31:16 | RW | 0x0 | Y coordinate of upper right corner of Frame. | ++-----------------+-------+--------+------------+-------------------------------------------------------+ +| FRAMEWINDOW_URX | 15:0 | RW | 0x0 | X coordinate of upper right corner of Frame. | ++-----------------+-------+--------+------------+-------------------------------------------------------+ REG_CAM_CFG_SIZE ^^^^^^^^^^^^^^^^ @@ -291,15 +337,15 @@ REG_CAM_CFG_FILTER - Offset: 0x30 - Type: volatile -+------------+-------+--------+------------+------------------------------------------------------------------------------------+ -| Field | Bits | Access | Default | Description | -+============+=======+========+============+====================================================================================+ -| R_COEFF | 6:6 | RW | 0x0 | Coefficent that multiplies R component, Note: not used if FORMAT == BYPASS | -+------------+-------+--------+------------+------------------------------------------------------------------------------------+ -| G_COEFF | 5:5 | RW | 0x0 | Coefficent that multiplies G component, Note: not used if FORMAT == BYPASS | -+------------+-------+--------+------------+------------------------------------------------------------------------------------+ -| B_COEFF | 4:4 | RW | 0x0 | Coefficent that multiplies B component, Note: not used if FORMAT == BYPASS | -+------------+-------+--------+------------+------------------------------------------------------------------------------------+ ++------------+---------+--------+------------+------------------------------------------------------------------------------------+ +| Field | Bits | Access | Default | Description | ++============+=========+========+============+====================================================================================+ +| R_COEFF | 23:16 | RW | 0x0 | Coefficent that multiplies R component, Note: not used if FORMAT == BYPASS | ++------------+---------+--------+------------+------------------------------------------------------------------------------------+ +| G_COEFF | 15:8 | RW | 0x0 | Coefficent that multiplies G component, Note: not used if FORMAT == BYPASS | ++------------+---------+--------+------------+------------------------------------------------------------------------------------+ +| B_COEFF | 7:0 | RW | 0x0 | Coefficent that multiplies B component, Note: not used if FORMAT == BYPASS | ++------------+---------+--------+------------+------------------------------------------------------------------------------------+ REG_CAM_VSYNC_POLARITY From 2c8f738f5d9ee10cc6b0d6793757744c60bbb266 Mon Sep 17 00:00:00 2001 From: Aditya Tiwari Date: Sun, 18 May 2025 10:53:58 +0000 Subject: [PATCH 09/16] uDMA UART: Added Pixel Data Sampling Mechanism --- docs/doc-src/ip-blocks/udma_cam.rst | 149 ++++++++++++++++++---------- 1 file changed, 96 insertions(+), 53 deletions(-) diff --git a/docs/doc-src/ip-blocks/udma_cam.rst b/docs/doc-src/ip-blocks/udma_cam.rst index a567cf6e..08e2ac33 100644 --- a/docs/doc-src/ip-blocks/udma_cam.rst +++ b/docs/doc-src/ip-blocks/udma_cam.rst @@ -44,11 +44,11 @@ The Figure below is a high-level block diagram of the uDMA UART:- uDMA Camera Block Diagram -Dual-clock(DC) TX and RX FIFO +Dual-clock(DC) RX FIFO ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -The uDMA core operates using the system clock, while the uDMA UART operates using both the system clock and the peripheral clock. To ensure the uDMA UART and core are properly synchronized, dual-clock FIFOs are used in the uDMA UART. -These are 4-depth FIFOs and can store 8-bit wide data. It is implemented using circular FIFO. +The uDMA core operates using the system clock, while the uDMA Camera operates using both the system clock and the peripheral clock. To ensure the uDMA UART and core are properly synchronized, dual-clock FIFOs are used in the uDMA Camera. +These are 8-depth FIFOs and can store 16-bit wide data. It is implemented using circular FIFO. Below diagram shows the interfaces of DC FIFO: @@ -61,8 +61,6 @@ Below diagram shows the interfaces of DC FIFO: For Rx operation, source(src_*) interfaces shown in above diagram operate at peripheral clock and destination(dst_*) interfaces operate using system clock. -For Tx operation, source interfaces shown in above diagram operate at system clock and destination interfaces operate using peripheral clock. - **Pop operation** The DC FIFO asserts the dst_valid_o (valid) signal to indicate that valid data is available on the data lines. A module waiting for data should read the data lines only when valid pin is high and drive the dst_ready_i (ready) @@ -80,37 +78,91 @@ During Camera receive (Rx) operation, the RX DC FIFO is written internally by th RX operation ^^^^^^^^^^^^ + RX operation is enable using + The uDMA camera communicates with external device using below pins: -receives the pixel data - -**Frame counter** - - Frame counter is incremented at start of frame if frame drop is enabled. - - Counter is reset if the counter value reaches frame drop value or frame drop is disabled. - - Frame drop enable status and frame drop value can be read from REG_CAM_CFG_GLOB. - - Non zero frame counter value indicates a valid frame. - -**WINDOWING** - - Window of interest can be selected by using the windowing feature. - - Its enable or disable status can be read from REG_CAM_CFG_GLOB. - - Coordinates of the window can be written to and read from REG_CAM_CFG_LL and REG_CAM_CFG_UR. - - A pixel is valid only if it is inside the window of interest if windowing is enabled. - - If windowing is disabled, pixels will be valid for every valid frame. - -**Row counter and column counter** - - Counts the row and column at every camera clock. - - Counter is reset at the start of the frame. - - These counter values are used when windowing is enabled to check the validity of pixels. - - Column counter is incremented at posedge of cam_clk_i. Column ends when the column counter reaches ROWLEN, which resets the counter value. ROWLEN value can be read from REG_CAM_CFG_SIZE. - - Row counter is incremented at the end of each column. - -**IMAGE FORMAT** - - RGB565: Five bits of data is allocated for the red and blue color component and 6 bits data for the green color component. - - RGB555: Five bits of data is allocated for all the color components. - - RGB444: Four bits of data is allocated for all the color components. - - R, G, B pixel values can be read from cam_data_i. - - Filter values for R, G, B can be obtained by multiplying their respective pixel values by their coefficients. Coefficient can be read from REG_CAM_CFG_FILTER. - - Filter values for all the pixels are added and then shifted right to get the final pixel value which is then passed to fifo. Number of bits needed to be shifted can be read from REG_CAM_CFG_GLOB. +uDMA core reads 8 bits of information from external device in a cycle. and stores it in its internal DC FIFO. uDMA camera communicates 16 bit of information to uDMA core in each clock cycle. + +uDMA camera pushes the pixel data onto DC FIFO. Pixel data is transmitted to uDMA core. + +Frame Dropping +^^^^^^^^^^^^^^ +The uDMA Camera supports frame dropping, which allows selective skipping of incoming frames. Frame dropping can be configured via the ``FRAMEDROP_EN`` and ``FRAMEDROP_VALUE`` fields in the ``REG_CAM_CFG_GLOB`` control and status register (CSR). +When frame dropping is enabled and the uDMA Camera is configured to receive data from an external source, it uses an internal frame counter to track received frames. The frame counter increments on each new frame. Once it reaches the value specified in ``FRAMEDROP_VALUE``, it is reset to zero, allowing the next frame to be stored. +Frames are considered valid and written to L2 memory only when the frame counter value is zero. If the frame counter is non-zero, the corresponding frames are treated as dropped and are not stored in L2 memory. The counter is also reset under the following conditions: + +- A reset signal is received by the uDMA Camera +- Frame dropping is disabled + +Frame Slicing +^^^^^^^^^^^^^ +The uDMA Camera supports frame slicing(windowing), which allows selective slicing of incoming frames. Frame slicing can be enabled via the ``FRAMESLICE_EN`` bit in the ``REG_CAM_CFG_GLOB`` control and status register (CSR). The size of the sliced frame can be configured using ``REG_CAM_CFG_LL`` and ``REG_CAM_CFG_UR`` CSR. +``REG_CAM_CFG_LL`` CSR is used to select lower left cordinates of frame and ``REG_CAM_CFG_UR`` is used to select upper right cordinates. + +If frame slicing is enabled, the current pixel is processed only if it lies within the configured frame slice region, based on the following conditions: +- The current row is greater than or equal to the frame slice's lower-left Y-coordinate(``FRAMESLICE_LLY``). +- The current row is less than or equal to the frame slice's upper-right Y-coordinate(``FRAMESLICE_URY``). +- The current column is greater than or equal to the frame slice's lower-left X-coordinate(``FRAMESLICE_LLX``). +- The current column is less than or equal to the frame slice's upper-right X-coordinate(``FRAMESLICE_URY``). + +If Frame slicing is enabled, pixels outside this region are excluded from processing. + +IMAGE FORMAT +^^^^^^^^^^^^ +The following image format is supported by uDMA Core: - + +- RGB565: Five bits of data is allocated for the red and blue color component and 6 bits data for the green color component. +- RGB555: Five bits of data is allocated for each(R,G and B) the color components. +- RGB444: Four bits of data is allocated for each(R,G and B) the color components. +- BYPASS_LITEND: Used for YUV images. In the YUV image a color is described as a Y component(luma, for brightness) and two chroma(for colors) components U and V. +- BYPASS_BIGEND: Used for YUV images. In the YUV image a color is described as a Y component(luma, for brightness) and two chroma(for colors) components U and V. + +Pixel Data Sampling Mechanism +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Pixel data from the external device arives arrives serially over the ``cam_data_i`` pin using two clock cycles per pixel (16-bit RGB565 format over an 8-bit interface). + +A full pixel is received over two consecutive clock cycles: + +**First cycle (odd clocks: 1, 3, 5, ...):** + +- The value from ``cam_data_i`` is captured and stored in a temporary register, let's say ``MSB`` +- This value will be used in the next clock cycle. + +**Second cycle (even clocks: 2, 4, 6, ...):** + +- A new value is received from ``cam_data_i`` (this is the LSB of the pixel). +- The full 16-bit pixel is reconstructed using: + + - ``MSB`` (from previous cycle) + - ``cam_data_i`` (current cycle) + + +uDMA extract the RGB component form incoming pixel using below rule: - + +- RGB565 + Red component = {MSB[7:3],3'b000} + Green component = {MSB[2:0],cam_data_i[7:5], 2'b00} + Blue component = {cam_data_i[4:0], 3'b000} +- RGB555 + Red component = {MSB[6:2],3'b000} + Green component = {MSB[2:0],cam_data_i[7:5], 2'b00} + Blue component = {cam_data_i[4:0], 3'b000} +- RGB444 + Red component = {MSB[3:0],4'b0000} + Green component = {cam_data_i[7:4],4'b0000} + Blue component = {cam_data_i[3:0],4'b0000} +- BYPASS_LITEND + YUV = {MSB[7:0],cam_data_i[7:0]} +- BYPASS_BIGEND + YUV = {cam_data_i[7:0],MSB[7:0]} + +In the above representation, MSB represent the value of cam_data_i pin in the alternate clock cycle i.e. 1,3,5 etc. Pixel data from the external device is read during each clock cycle. +When first clock is recived data fron cam_data_i is stored in store in MSB(a local varaible), however the value will be reflected in the next clock cycle. In the second clock cycle data will be used from cam_data_i input pin and MSB will have cam_data_i data from the previous clock. + +- Filter values for R, G, B can be obtained by multiplying their respective pixel values by their coefficients. Coefficient can be read from REG_CAM_CFG_FILTER. +- Filter values for all the pixels are added and then shifted right to get the final pixel value which is then passed to fifo. Number of bits needed to be shifted can be read from REG_CAM_CFG_GLOB. **IMAGE FORMAT: BYPASS_LITEND, BYPASS_BIGEND** - These image formats are used for YUV images. In the YUV image a color is described as a Y component(luma) and two chroma components U and V. @@ -122,15 +174,6 @@ receives the pixel data - Polarity can be read from REG_CAM_VSYNC_POLARITY.. - A start of frame is marked by high current vsync value and low previous vsync. -**udma_dc_fifo** - - RGB or YUV pixel values are sent as input udma_dc_fifo. - - Valid output is passed through data_rx_valid_o if there is data in fifo to be read. - - Data can be read from the fifo through data_rx_data_o. - -CSR Access -^^^^^^^^^^ - - System Architecture ------------------- The figure below shows how the uDMA UART interfaces with the rest of the CORE-V-MCU components and the external UART device:- @@ -297,13 +340,13 @@ REG_CAM_CFG_LL - Offset: 0x24 - Type: volatile -+-----------------+-------+--------+------------+------------------------------------------------------+ -| Field | Bits | Access | Default | Description | -+=================+=======+========+============+======================================================+ ++-----------------+-------+--------+------------+----------------------------------------------------+ +| Field | Bits | Access | Default | Description | ++=================+=======+========+============+====================================================+ | FRAMESLICE_LLY | 31:16 | RW | 0x0 | Y coordinate of Lower left corner of Frame. | -+-----------------+-------+--------+------------+------------------------------------------------------+ ++-----------------+-------+--------+------------+----------------------------------------------------+ | FRAMESLICE_LLX | 15:0 | RW | 0x0 | X coordinate of Lower left corner of Frame. | -+-----------------+-------+--------+------------+------------------------------------------------------+ ++-----------------+-------+--------+------------+----------------------------------------------------+ REG_CAM_CFG_UR ^^^^^^^^^^^^^^ @@ -325,11 +368,11 @@ REG_CAM_CFG_SIZE - Offset: 0x2C - Type: non-volatile -+------------+-------+--------+------------+------------------------------------------------------------------------------------+ -| Field | Bits | Access | Default | Description | -+============+=======+========+============+====================================================================================+ -| ROWLEN | 31:16 | RW | 0x0 | N-1 where N is the number of horizontal pixels (used in window mode) | -+------------+-------+--------+------------+------------------------------------------------------------------------------------+ ++------------+-------+--------+------------+-------------------------------------------------------------------------+ +| Field | Bits | Access | Default | Description | ++============+=======+========+============+=========================================================================+ +| ROWLEN | 31:16 | RW | 0x0 | Defines the number of pixels that constitute a single row in the frame. | ++------------+-------+--------+------------+-------------------------------------------------------------------------+ REG_CAM_CFG_FILTER ^^^^^^^^^^^^^^^^^^ From 898ed9e6d867d98c18f3642f9ab46484920c3043 Mon Sep 17 00:00:00 2001 From: Aditya Tiwari Date: Mon, 19 May 2025 02:05:49 +0000 Subject: [PATCH 10/16] uDMA UART: Added Block diagram and clock muxing --- .../ip-blocks/uDMA_Camera_Block_Diagram.png | Bin 0 -> 105385 bytes docs/doc-src/ip-blocks/udma_cam.rst | 201 +++++++++++------- docs/doc-src/ip-blocks/udma_cam_image.png | Bin 74957 -> 0 bytes 3 files changed, 119 insertions(+), 82 deletions(-) create mode 100644 docs/doc-src/ip-blocks/uDMA_Camera_Block_Diagram.png delete mode 100644 docs/doc-src/ip-blocks/udma_cam_image.png diff --git a/docs/doc-src/ip-blocks/uDMA_Camera_Block_Diagram.png b/docs/doc-src/ip-blocks/uDMA_Camera_Block_Diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..576e75428998b43821ac983d54874ccd275fa7bf GIT binary patch literal 105385 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 literal 0 HcmV?d00001 diff --git a/docs/doc-src/ip-blocks/udma_cam.rst b/docs/doc-src/ip-blocks/udma_cam.rst index 08e2ac33..e5b0c78f 100644 --- a/docs/doc-src/ip-blocks/udma_cam.rst +++ b/docs/doc-src/ip-blocks/udma_cam.rst @@ -32,28 +32,49 @@ Features Block Architecture ------------------ -cam_clk_i is a pixel clock which changes on every pixel. Pixel data is taken as input through cam_data_i, and cam_hsync_i and cam_vsync_i indicate the horizontal and vertical sync value. -It contains a udma dc fifo to store the pixel value before sending it to output. -The Figure below is a high-level block diagram of the uDMA UART:- +uDMA camera is a peripheral function of the uDMA subsystem. As such, its CSRs are not directly accessible via the APB bus. Rather, the control plane interface to the uDMA camera is managed by the uDMA core within the uDMA subsystem. +This is transparent to the programmer as all uDMA camera CSRs appear within the uDMA Subsystem's memory region. As is the case for all uDMA subsystem peripherals, I/O operations are controlled by the uDMA core. This is not transparent to the programmer. -.. figure:: udma_cam_image.png - :name: uDMA_Camera_Block_Diagram +The Figure below is a high-level block diagram of the uDMA camera:- + +.. figure:: uDMA_Camera_Block_Diagram.png + :name: uDMA_camera_Block_Diagram :align: center :alt: - uDMA Camera Block Diagram + uDMA camera Block Diagram + +In the block diagram above, the DATA lines at the boundary of the uDMA camera are 32 bits wide, whereas other DATA lines are only 16 bits wide. The DATASIZE pin is 2 bits wide. The valid values for the DATASIZE pin are: + +- 0x0: 1-byte transfer +- 0x1: 2-byte transfer +- 0x2: 4-byte transfer + +When transmitting data to the uDMA Core, the uDMA camera pads bits [31:16] with 0x0. + +uDMA camera uses the Rx channel interface to store the data received from the external camera device to the interleaved (L2) memory. +Refer to `uDMA subsystem `_ for more information about the Rx channel functionality of uDMA Core. + +Pixel data is taken as input from external device through ``cam_data_i``. ``cam_hsync_i`` and ``cam_vsync_i`` indicates the horizontal and vertical sync value. + +Each component of the uDMA camera is discussed in greater detail in the following sections. + +Clock MUX +^^^^^^^^^ +The uDMA core includes a clock multiplexer used to select the input clock source. If dft_test_mode_i is low, the clock multiplexer outputs the peripheral clock; otherwise, it outputs the system clock. + Dual-clock(DC) RX FIFO ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -The uDMA core operates using the system clock, while the uDMA Camera operates using both the system clock and the peripheral clock. To ensure the uDMA UART and core are properly synchronized, dual-clock FIFOs are used in the uDMA Camera. +The uDMA core operates using the system clock, while the uDMA Camera operates using both the system clock and the peripheral clock. To ensure the uDMA camera and core are properly synchronized, dual-clock FIFOs are used in the uDMA Camera. These are 8-depth FIFOs and can store 16-bit wide data. It is implemented using circular FIFO. Below diagram shows the interfaces of DC FIFO: -.. figure:: uDMA_UART_Dual_clock_fifo.png - :name: uDMA_UART_Dual_clock_fifo +.. figure:: uDMA_camera_Dual_clock_fifo.png + :name: uDMA_camera_Dual_clock_fifo :align: center :alt: @@ -78,13 +99,46 @@ During Camera receive (Rx) operation, the RX DC FIFO is written internally by th RX operation ^^^^^^^^^^^^ - RX operation is enable using +The RX operation of uDMA camera includes reading the data from external device and store it into L2 memory. The ``EN`` bit of ``REG_CAM_CFG_GLOB`` CSR is used to enable uDMA camera to recieve data from external device. + +When an external device want to transmit a frame to uDMA camera, it asserts ``cam_vsync_i`` signal. A frame consists of multiple pixels. The polarity of ``cam_vsync_i`` is decoded as per ``VSYNC_POLARITY`` bitfield value of ``REG_CAM_VSYNC_POLARITY`` CSR. +After transmitting a horizontal-row(pixel) of a frame, external device sends a ``cam_hsync_i`` signal. + +Frame data from the external device arives arrives serially over the ``cam_data_i`` pin using two clock cycles per pixel (16-bit format over an 8-bit interface). +A ``cam_hsync_i`` signal indicates valid data on ``cam_data_i`` lines. + +The following image format is supported by uDMA Core: - + +- RGB565: Five bits of data is allocated for the red and blue color component and 6 bits data for the green color component. +- RGB555: Five bits of data is allocated for each(R,G and B) the color components. +- RGB444: Four bits of data is allocated for each(R,G and B) the color components. +- BYPASS_LITEND: Used for YUV images. In the YUV image a color is described as a Y component(luma, for brightness) and two chroma(for colors) components U and V. +- BYPASS_BIGEND: Used for YUV images. In the YUV image a color is described as a Y component(luma, for brightness) and two chroma(for colors) components U and V. + +A full pixel is received over two consecutive clock cycles: + +**First cycle (odd clocks: 1, 3, 5, ...):** + +- The value from ``cam_data_i`` is captured and stored in a temporary register, let's say ``MSB`` +- This value will be used in the next clock cycle. + +**Second cycle (even clocks: 2, 4, 6, ...):** -The uDMA camera communicates with external device using below pins: +- A new value is received from ``cam_data_i`` (this is the LSB of the pixel). -uDMA core reads 8 bits of information from external device in a cycle. and stores it in its internal DC FIFO. uDMA camera communicates 16 bit of information to uDMA core in each clock cycle. +The full 16-bit pixel is reconstructed using: + + - ``MSB`` (from previous cycle) + - ``cam_data_i`` (current cycle) -uDMA camera pushes the pixel data onto DC FIFO. Pixel data is transmitted to uDMA core. +Before pushing the data onto uDMA camera internal FIFO, uDMA camera does following operation on received frame: - + +- Frame Dropping +- Frame Slicing +- uDMA camera Pixel Arrangement +- Greyscalling and coefficent update + +Each of these operation are discussed in the following sections: - Frame Dropping ^^^^^^^^^^^^^^ @@ -101,82 +155,67 @@ The uDMA Camera supports frame slicing(windowing), which allows selective slicin ``REG_CAM_CFG_LL`` CSR is used to select lower left cordinates of frame and ``REG_CAM_CFG_UR`` is used to select upper right cordinates. If frame slicing is enabled, the current pixel is processed only if it lies within the configured frame slice region, based on the following conditions: -- The current row is greater than or equal to the frame slice's lower-left Y-coordinate(``FRAMESLICE_LLY``). +- The current row is greater than or equal to the frame slice's lower-left Y-coordinate(``FRAMESLICE_LLY``). - The current row is less than or equal to the frame slice's upper-right Y-coordinate(``FRAMESLICE_URY``). - The current column is greater than or equal to the frame slice's lower-left X-coordinate(``FRAMESLICE_LLX``). - The current column is less than or equal to the frame slice's upper-right X-coordinate(``FRAMESLICE_URY``). If Frame slicing is enabled, pixels outside this region are excluded from processing. -IMAGE FORMAT -^^^^^^^^^^^^ -The following image format is supported by uDMA Core: - +**uDMA camera Pixel Arrangement** +The uDMA camera organizes the incoming pixel stream into image data based on its supported formats. Arrangement logic is discussed below: - -- RGB565: Five bits of data is allocated for the red and blue color component and 6 bits data for the green color component. -- RGB555: Five bits of data is allocated for each(R,G and B) the color components. -- RGB444: Four bits of data is allocated for each(R,G and B) the color components. -- BYPASS_LITEND: Used for YUV images. In the YUV image a color is described as a Y component(luma, for brightness) and two chroma(for colors) components U and V. -- BYPASS_BIGEND: Used for YUV images. In the YUV image a color is described as a Y component(luma, for brightness) and two chroma(for colors) components U and V. +- RGB565 + - Red_component = {MSB[7:3],3'b000} + - Green_component = {MSB[2:0],cam_data_i[7:5], 2'b00} + - Blue_component = {cam_data_i[4:0], 3'b000} -Pixel Data Sampling Mechanism -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +- RGB555 + - Red_component = {MSB[6:2],3'b000} + - Green_component = {MSB[2:0],cam_data_i[7:5], 2'b00} + - Blue_component = {cam_data_i[4:0], 3'b000} -Pixel data from the external device arives arrives serially over the ``cam_data_i`` pin using two clock cycles per pixel (16-bit RGB565 format over an 8-bit interface). +- RGB444 + - Red_component = {MSB[3:0],4'b0000} + - Green_component = {cam_data_i[7:4],4'b0000} + - Blue_component = {cam_data_i[3:0],4'b0000} -A full pixel is received over two consecutive clock cycles: +- BYPASS_LITEND + - YUV_Pixel = {MSB[7:0],cam_data_i[7:0]} -**First cycle (odd clocks: 1, 3, 5, ...):** +- BYPASS_BIGEND + - YUV_Pixel = {cam_data_i[7:0],MSB[7:0]} -- The value from ``cam_data_i`` is captured and stored in a temporary register, let's say ``MSB`` -- This value will be used in the next clock cycle. -**Second cycle (even clocks: 2, 4, 6, ...):** +**Greyscalling and coefficent update** +Now that we have 16-bit pixel data in form of RGB and YUV format, grey scalling is perfomed on RGB pixels. -- A new value is received from ``cam_data_i`` (this is the LSB of the pixel). -- The full 16-bit pixel is reconstructed using: - - - ``MSB`` (from previous cycle) - - ``cam_data_i`` (current cycle) +The ``R_COEFF``, ``G_COEFF`` and ``B_COEFF`` bits ``REG_CAM_CFG_FILTER`` CSR is used to update the RGB Coefficent in RGB pixel. +- Red_component = Red_component * 'R_COEFF' +- Green_component = Green_component * 'G_COEFF' +- Blue_component = Blue_component * 'B_COEFF' -uDMA extract the RGB component form incoming pixel using below rule: - +After updating the coefficent of R, G and B component of the pixel, each component is added to generate pixel information. +``RGB_Pixel = Red component + Green component + Blue component`` -- RGB565 - Red component = {MSB[7:3],3'b000} - Green component = {MSB[2:0],cam_data_i[7:5], 2'b00} - Blue component = {cam_data_i[4:0], 3'b000} -- RGB555 - Red component = {MSB[6:2],3'b000} - Green component = {MSB[2:0],cam_data_i[7:5], 2'b00} - Blue component = {cam_data_i[4:0], 3'b000} -- RGB444 - Red component = {MSB[3:0],4'b0000} - Green component = {cam_data_i[7:4],4'b0000} - Blue component = {cam_data_i[3:0],4'b0000} -- BYPASS_LITEND - YUV = {MSB[7:0],cam_data_i[7:0]} -- BYPASS_BIGEND - YUV = {cam_data_i[7:0],MSB[7:0]} +Please note greyscalling is not applicable for YUV pixels. -In the above representation, MSB represent the value of cam_data_i pin in the alternate clock cycle i.e. 1,3,5 etc. Pixel data from the external device is read during each clock cycle. -When first clock is recived data fron cam_data_i is stored in store in MSB(a local varaible), however the value will be reflected in the next clock cycle. In the second clock cycle data will be used from cam_data_i input pin and MSB will have cam_data_i data from the previous clock. +After Greyscalling, RGB pixel undergoes pixel shifting. The ``SHIFT`` bit of ``REG_CAM_CFG_GLOB`` CSR is used to configure shift value. +Shifting is done as per the below rule: - +``RGB_Pixel >= ((0 <= SHIFT_bit_val <= 9) ? SHIFT_bit_val : 0)`` -- Filter values for R, G, B can be obtained by multiplying their respective pixel values by their coefficients. Coefficient can be read from REG_CAM_CFG_FILTER. -- Filter values for all the pixels are added and then shifted right to get the final pixel value which is then passed to fifo. Number of bits needed to be shifted can be read from REG_CAM_CFG_GLOB. +The uppper bits of 16 bit pixel will be padded with zero. -**IMAGE FORMAT: BYPASS_LITEND, BYPASS_BIGEND** - - These image formats are used for YUV images. In the YUV image a color is described as a Y component(luma) and two chroma components U and V. - - Luma represents the brightness of the image and chroma conveys the color information of the picture. - - YUV pixel value can be read from cam_data_i. - - Filter is not valid. +uDMA camera pushes the refined pixel data onto DC FIFO. Pixel data is transmitted to uDMA core. uDMA FIFO, when it has data, raises valid signal and updates the data lines with pixel data. The data line is 16 bit wide. +Upon detecting the valid signal, the uDMA core initiates arbitration. If the uDMA core channel wins the arbitration and the core’s RX FIFO has sufficient space to accommodate the incoming data, it read the data lines and asserts a ready signal back to the camera indicating data is read. +After receiving ready signal RX DC FIFO will update the valid and data pin will new value. In the next clock cycle uDMA Core will deassert the ready pin. -**Vertical sync** - - Polarity can be read from REG_CAM_VSYNC_POLARITY.. - - A start of frame is marked by high current vsync value and low previous vsync. +.. note:: The uDMA CORE RX channel will only respond to uDMA camera requests when it is enabled via the EN bit in the RX_CFG channel configuration CSR. System Architecture ------------------- -The figure below shows how the uDMA UART interfaces with the rest of the CORE-V-MCU components and the external UART device:- +The figure below shows how the uDMA camera interfaces with the rest of the CORE-V-MCU components and the external camera device:- .. figure:: uDMA-Camera-system-Connection-Diagram.png :name: uDMA-Camera-CORE-V-MCU-Connection-Diagram @@ -191,7 +230,7 @@ As with the most peripherals in the uDMA Subsystem, software configuration can b - Configure the I/O parameters of the peripheral (e.g. frame size). - Configure the uDMA camera data control parameters. -- Manage the data transfer/reception operation. +- Manage the data reception operation. uDMA Camera Data Control ^^^^^^^^^^^^^^^^^^^^^^ @@ -227,7 +266,7 @@ REG_RX_SADDR +--------+------+--------+------------+----------------------------------------------------------------------------------------------------------+ | Field | Bits | Access | Default | Description | +========+======+========+============+==========================================================================================================+ -| SADDR | 18:0 | RW | 0x0 | Address of the Rx buffer. This is location in the L2 memory where UART will write the recived data. | +| SADDR | 18:0 | RW | 0x0 | Address of the Rx buffer. This is location in the L2 memory where camera will write the recived data. | | | | | | Read & write to this CSR access different information. | | | | | | | | | | | | **On Write**: Address of Rx buffer for next transaction. It does not impact current ongoing transaction. | @@ -245,7 +284,7 @@ REG_RX_SIZE +-------+-------+--------+------------+--------------------------------------------------------------------------------------------+ | Field | Bits | Access | Default | Description | +=======+=======+========+============+============================================================================================+ -| SIZE | 19:0 | RW | 0x0 | Size of Rx buffer(amount of data to be transferred by UART to L2 memory). Read & write | +| SIZE | 19:0 | RW | 0x0 | Size of Rx buffer(amount of data to be transferred by camera to L2 memory). Read & write | | | | | | to this CSR access different information. | | | | | | | | | | | | **On Write**: Size of Rx buffer for next transaction. It does not impact current ongoing | @@ -410,7 +449,7 @@ REG_CAM_VSYNC_POLARITY Firmware Guidelines ------------------- -Clock Enable, Reset & Configure uDMA UART +Clock Enable, Reset & Configure uDMA camera ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Rx Operation @@ -431,7 +470,7 @@ Below is categorization of these pins: Rx channel interface ^^^^^^^^^^^^^^^^^^^^ -The following pins constitute the Rx channel interface of uDMA UART. uDMA UART uses these pins to write data to interleaved (L2) memory: +The following pins constitute the Rx channel interface of uDMA camera. uDMA camera uses these pins to write data to interleaved (L2) memory: - data_rx_datasize_o - data_rx_o @@ -452,7 +491,7 @@ Reset interface uDMA core issues reset signal to Camera using reset pin. -uDMA UART inerface to read-write CSRs +uDMA camera inerface to read-write CSRs ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The following interfaces are used to read and write to Camera CSRs. These interfaces are managed by uDMA Core: @@ -465,7 +504,7 @@ The following interfaces are used to read and write to Camera CSRs. These interf Rx channel interface ^^^^^^^^^^^^^^^^^^^^ -The following pins constitute the Rx channel interface of uDMA UART. uDMA UART uses these pins to write data to interleaved (L2) memory: +The following pins constitute the Rx channel interface of uDMA camera. uDMA camera uses these pins to write data to interleaved (L2) memory: - data_rx_datasize_o - data_rx_o @@ -474,9 +513,9 @@ The following pins constitute the Rx channel interface of uDMA UART. uDMA UART u These pins reflect the configuration values for the next transaction. -uDMA UART Rx channel configuration interface +uDMA camera Rx channel configuration interface ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -- uDMA UART uses the following pins to share the value of config CSRs i.e. RX_SADDR, RX_SIZE, and RX_CFG with the uDMA core:- +- uDMA camera uses the following pins to share the value of config CSRs i.e. RX_SADDR, RX_SIZE, and RX_CFG with the uDMA core:- - cfg_rx_startaddr_o - cfg_rx_size_o @@ -484,7 +523,7 @@ uDMA UART Rx channel configuration interface - cfg_rx_en_o - cfg_rx_clr_o -- UART shares the values present over the below pins as read values of the config CSRs i.e. RX_SADDR, RX_SIZE, and RX_CFG: +- camera shares the values present over the below pins as read values of the config CSRs i.e. RX_SADDR, RX_SIZE, and RX_CFG: - cfg_rx_en_i - cfg_rx_pending_i @@ -500,19 +539,17 @@ Test Interface - dft_cg_enable_i: Clock gating enable during test *dft_test_mode_i* is used to put uDMA Camera into test mode. *dft_cg_enable_i* is used to control clock gating such that clock behavior can be tested. +*dft_cg_enable_i* pin is not used in the uDMA camera block. Camera clock interface ^^^^^^^^^^^^^^^^^^^^^^ - cam_clk_i -TODO: Add descrition +External device derives the clock pins. clk_i is used to synchronize Camera with the exteral device. Camera frame interface ^^^^^^^^^^^^^^^^^^^^^^ - -- cam_data_i -- cam_hsync_i -- cam_vsync_i - -TODO: Add descrition \ No newline at end of file +- cam_data_i : Camera pixel data input. Carries pixel data from the camera sensor. Data is valid during active cam_hsync_i. +- cam_hsync_i : Horizontal sync input. Indicates the horizontal line of pixel data. +- cam_vsync_i : Vertical sync input. Signals the start of a new frame. Helps align frame boundaries for image processing. \ No newline at end of file diff --git a/docs/doc-src/ip-blocks/udma_cam_image.png b/docs/doc-src/ip-blocks/udma_cam_image.png deleted file mode 100644 index f9418a8d894f0cdde4cb9f30e5be89d72a5bc80f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74957 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

I}4a}PXEk;I0%xCjl=%xn)Sg#)s`ol5h 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“v2h}c=-RT3*d+a>pg=}}m)Y>c%bo(~m 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

;%-vUJLjhV?Cw zhYeZd0;o%P7W|MJI?_j7b4K=kd@rl$f zkvm~3!Ep1f$WCH@raP-?cOS3_D0MsI?W0iigBT&USPp~RR+6Oq9f)H}@K>npzh+BO zquof4^iU)g52c-{eDw+o4a+>5ovN|p%NOa(vpwmcxY;@Z;Fc#r@AVT?7+0CdAw{Nr z103TD{h!bOOad95C>*#ekE=d5!?jt}&@dH6>M|JMWh2c@Qm_IuFE|^;zA^uq4<5V# zBx=}o_W>9A@t7`*+g9?luCwUsUY|md8Kdn#^T^KH`2)>&!bS*_97lLV)Eh z3hrPYKum&TZUQO6^Kv}O%+1x#IS1&bf=~d3S`L(15s@JK5EBzqdMIx-bFYg@>+(83 zG$j`~QYot54aHHQJyPrv1r2adraA|e9nGHuA>B~(u}H8p2n z(`z3gVSh4u9dU-5xZTcxqjQUVW-CD

pFoGz0me?1l+)w{QioeZLJshIriYhH= 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 b%YV>lpTBf1F2cdR0)J_!+)=Jlv Date: Mon, 19 May 2025 03:41:33 +0000 Subject: [PATCH 11/16] uDMA Camera: Added Firmware guideline section --- .../ip-blocks/uDMA_Camera_Block_Diagram.png | Bin 105385 -> 99791 bytes docs/doc-src/ip-blocks/udma_cam.rst | 37 ++++++++++++++---- 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/docs/doc-src/ip-blocks/uDMA_Camera_Block_Diagram.png b/docs/doc-src/ip-blocks/uDMA_Camera_Block_Diagram.png index 576e75428998b43821ac983d54874ccd275fa7bf..8e087e4ffe9558fbd1404d03bd2a907bf4c8731b 100644 GIT binary patch delta 10834 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 TMx;dGkGhKXZL-2!_e1_4{^9Jl diff --git a/docs/doc-src/ip-blocks/udma_cam.rst b/docs/doc-src/ip-blocks/udma_cam.rst index e5b0c78f..305b1f8c 100644 --- a/docs/doc-src/ip-blocks/udma_cam.rst +++ b/docs/doc-src/ip-blocks/udma_cam.rst @@ -140,8 +140,8 @@ Before pushing the data onto uDMA camera internal FIFO, uDMA camera does followi Each of these operation are discussed in the following sections: - -Frame Dropping -^^^^^^^^^^^^^^ +**Frame Dropping** + The uDMA Camera supports frame dropping, which allows selective skipping of incoming frames. Frame dropping can be configured via the ``FRAMEDROP_EN`` and ``FRAMEDROP_VALUE`` fields in the ``REG_CAM_CFG_GLOB`` control and status register (CSR). When frame dropping is enabled and the uDMA Camera is configured to receive data from an external source, it uses an internal frame counter to track received frames. The frame counter increments on each new frame. Once it reaches the value specified in ``FRAMEDROP_VALUE``, it is reset to zero, allowing the next frame to be stored. Frames are considered valid and written to L2 memory only when the frame counter value is zero. If the frame counter is non-zero, the corresponding frames are treated as dropped and are not stored in L2 memory. The counter is also reset under the following conditions: @@ -149,8 +149,8 @@ Frames are considered valid and written to L2 memory only when the frame counter - A reset signal is received by the uDMA Camera - Frame dropping is disabled -Frame Slicing -^^^^^^^^^^^^^ +**Frame Slicing** + The uDMA Camera supports frame slicing(windowing), which allows selective slicing of incoming frames. Frame slicing can be enabled via the ``FRAMESLICE_EN`` bit in the ``REG_CAM_CFG_GLOB`` control and status register (CSR). The size of the sliced frame can be configured using ``REG_CAM_CFG_LL`` and ``REG_CAM_CFG_UR`` CSR. ``REG_CAM_CFG_LL`` CSR is used to select lower left cordinates of frame and ``REG_CAM_CFG_UR`` is used to select upper right cordinates. @@ -213,6 +213,17 @@ After receiving ready signal RX DC FIFO will update the valid and data pin will .. note:: The uDMA CORE RX channel will only respond to uDMA camera requests when it is enabled via the EN bit in the RX_CFG channel configuration CSR. +Interrupt +^^^^^^^^^ + +uDMA camera generates below interrupts during the RX operation: +- Rx channel interrupt: Raised by uDMA core's Rx channel after pushing last byte of RX_SIZE bytes into core RX FIFO. + +Rx interrupt is automatically cleared by uDMA Core in the next clock cycle. + +The event bridge forwards interrupt over dedicated line to the APB event controller for processing. Each interrupt has its own dedicated line. +Users can mask these interrupts through the APB event controller's control and status registers (CSRs). + System Architecture ------------------- The figure below shows how the uDMA camera interfaces with the rest of the CORE-V-MCU components and the external camera device:- @@ -449,12 +460,24 @@ REG_CAM_VSYNC_POLARITY Firmware Guidelines ------------------- -Clock Enable, Reset & Configure uDMA camera -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - Rx Operation ^^^^^^^^^^^^ +- Configure uDMA Core's PERIPH_RESET CSR to issue a reset signal to uDMA camera. It acts as a soft reset for uDMA camera. +- Configure uDMA camera's ``REG_CAM_CFG_FILTER`` CSR with values of R, G and B coefficient in the RGB pixel. +- Configure uDMA camera's ``REG_CAM_VSYNC_POLARITY`` CSR to define the number of pixels that constitute a single row in the frame. +- Configure uDMA camera's ``REG_CAM_CFG_SIZE`` CSR to select the active level of ``cam_vsync_i`` input signal. +- Configure camera Operation using REG_CAM_CFG_GLOB CSR. Refer to the CSR details for detailed information. +- If frame slicing is enabled by setting the ``FRAMESLICE_EN`` bit in the ``REG_CAM_CFG_GLOB`` CSR, configure the ``REG_CAM_CFG_LL`` and ``REG_CAM_CFG_UR`` CSR to define the lower-left and upper-right corners of the sliced frame. +- If frame dropping is enabled by setting the ``FRAMEDROP_EN`` bit in the ``REG_CAM_CFG_GLOB`` CSR, configure the ``FRAMEDROP_VALUE`` bit of the same CSR with the value indicating the number of frames to drop. +- Configure RX channel using RX_CFG CSR. Refer to the CSR details for detailed information. +- For each transaction: + - Update uDMA camera's RX_SADDR CSR with an interleaved(L2) memory address. camera will write the data to the this memory address for transmission. + - Configure uDMA camera's RX_SIZE CSR with the size of data that camera needs to transmit. uDMA camera will copy the transmit RX_SIZE bytes of data to RX_SADDR location of interleaved memory. +- While Rx operation is ongoing, the RX_BUSY bit of the STATUS CSR will be set. +- Upon receiving the data from external device uDMA camera will set the RX_DATA_VALID bit to high. +- Received data can also be read using the RX_DATA CSR. When there is no valid data, the RX_DATA_VALID bit will be cleared. + Pin Diagram ----------- The Figure below is a high-level block diagram of the uDMA Camera:- From 5fa3439808189ca50fe453fd0e76852f32a12886 Mon Sep 17 00:00:00 2001 From: Aditya Tiwari Date: Mon, 19 May 2025 03:52:16 +0000 Subject: [PATCH 12/16] uDMA Camera: Updated feature list --- docs/doc-src/ip-blocks/udma_cam.rst | 37 ++++++++++++++++------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/docs/doc-src/ip-blocks/udma_cam.rst b/docs/doc-src/ip-blocks/udma_cam.rst index 305b1f8c..c9e20b89 100644 --- a/docs/doc-src/ip-blocks/udma_cam.rst +++ b/docs/doc-src/ip-blocks/udma_cam.rst @@ -24,10 +24,13 @@ A camera interface is a hardware block that interfaces with different image sens Features -------- - Supports RGB565, RGB555 ,RGB444, BYPASS_LITEND and BYPASS_BIGEND image formats. -- Allows windowing. It allows users to select a range of interest in the picture. It can be disabled by the user. -- Parallel data input line for carrying pixel data. +- Supports Frame slicing. It allows users to select a range of interest in the picture. +- Supports Frame dropping. It allows users to select a number of frames that can dropped before storing it in L2 memory. +- Supports Grayscaling. It allows users to update RGB coefficient in the pixel before storing it in L2 memory. +- Supports variable row len. Number od pixels in a row can be defined by ``REG_CAM_CFG_SIZE`` CSR. +- Parallel data input line for carrying frame data. - There is a horizontal sync(HSYNC) input which indicates one line of the frame is transmitted. -- There is a vertical sync(VSYNC) input which indicates that one entire frame is transmitted. It can be configured for polarity. +- There is a vertical sync(VSYNC) input which indicates that one entire frame is transmitted. Polarity of ``cam_vsync_i`` signal can defined using ``REG_CAM_VSYNC_POLARITY`` CSR. - Supports active low reset. Block Architecture @@ -45,7 +48,7 @@ The Figure below is a high-level block diagram of the uDMA camera:- uDMA camera Block Diagram -In the block diagram above, the DATA lines at the boundary of the uDMA camera are 32 bits wide, whereas other DATA lines are only 16 bits wide. The DATASIZE pin is 2 bits wide. The valid values for the DATASIZE pin are: +In the block diagram above, the DATA lines at the boundary of the uDMA camera are 32 bits wide, whereas other DATA lines are only 16 bits wide. The DATASIZE pin is 2 bits wide and ``DATASIZE`` bit of ``REG_RX_CFG`` define the value of this pin. The valid values for the DATASIZE pin are: - 0x0: 1-byte transfer - 0x1: 2-byte transfer @@ -119,7 +122,7 @@ A full pixel is received over two consecutive clock cycles: **First cycle (odd clocks: 1, 3, 5, ...):** -- The value from ``cam_data_i`` is captured and stored in a temporary register, let's say ``MSB`` +- The value from ``cam_data_i`` is captured and stored in a temporary CSR, let's say ``MSB`` - This value will be used in the next clock cycle. **Second cycle (even clocks: 2, 4, 6, ...):** @@ -142,7 +145,7 @@ Each of these operation are discussed in the following sections: - **Frame Dropping** -The uDMA Camera supports frame dropping, which allows selective skipping of incoming frames. Frame dropping can be configured via the ``FRAMEDROP_EN`` and ``FRAMEDROP_VALUE`` fields in the ``REG_CAM_CFG_GLOB`` control and status register (CSR). +The uDMA Camera supports frame dropping, which allows selective skipping of incoming frames. Frame dropping can be configured via the ``FRAMEDROP_EN`` and ``FRAMEDROP_VALUE`` fields in the ``REG_CAM_CFG_GLOB`` control and status CSR. When frame dropping is enabled and the uDMA Camera is configured to receive data from an external source, it uses an internal frame counter to track received frames. The frame counter increments on each new frame. Once it reaches the value specified in ``FRAMEDROP_VALUE``, it is reset to zero, allowing the next frame to be stored. Frames are considered valid and written to L2 memory only when the frame counter value is zero. If the frame counter is non-zero, the corresponding frames are treated as dropped and are not stored in L2 memory. The counter is also reset under the following conditions: @@ -151,7 +154,7 @@ Frames are considered valid and written to L2 memory only when the frame counter **Frame Slicing** -The uDMA Camera supports frame slicing(windowing), which allows selective slicing of incoming frames. Frame slicing can be enabled via the ``FRAMESLICE_EN`` bit in the ``REG_CAM_CFG_GLOB`` control and status register (CSR). The size of the sliced frame can be configured using ``REG_CAM_CFG_LL`` and ``REG_CAM_CFG_UR`` CSR. +The uDMA Camera supports frame slicing(windowing), which allows selective slicing of incoming frames. Frame slicing can be enabled via the ``FRAMESLICE_EN`` bit in the ``REG_CAM_CFG_GLOB`` control and status CS. The size of the sliced frame can be configured using ``REG_CAM_CFG_LL`` and ``REG_CAM_CFG_UR`` CSR. ``REG_CAM_CFG_LL`` CSR is used to select lower left cordinates of frame and ``REG_CAM_CFG_UR`` is used to select upper right cordinates. If frame slicing is enabled, the current pixel is processed only if it lies within the configured frame slice region, based on the following conditions: @@ -222,7 +225,7 @@ uDMA camera generates below interrupts during the RX operation: Rx interrupt is automatically cleared by uDMA Core in the next clock cycle. The event bridge forwards interrupt over dedicated line to the APB event controller for processing. Each interrupt has its own dedicated line. -Users can mask these interrupts through the APB event controller's control and status registers (CSRs). +Users can mask these interrupts through the APB event controller's control and status CSRs. System Architecture ------------------- @@ -463,20 +466,20 @@ Firmware Guidelines Rx Operation ^^^^^^^^^^^^ -- Configure uDMA Core's PERIPH_RESET CSR to issue a reset signal to uDMA camera. It acts as a soft reset for uDMA camera. -- Configure uDMA camera's ``REG_CAM_CFG_FILTER`` CSR with values of R, G and B coefficient in the RGB pixel. +- Configure uDMA Core's ``PERIPH_RESET CSR`` to issue a reset signal to uDMA camera. It acts as a soft reset for uDMA camera. +- Configure uDMA camera's ``REG_CAM_CFG_FILTER`` CSR to define the values of R, G and B coefficient in the RGB pixel. - Configure uDMA camera's ``REG_CAM_VSYNC_POLARITY`` CSR to define the number of pixels that constitute a single row in the frame. -- Configure uDMA camera's ``REG_CAM_CFG_SIZE`` CSR to select the active level of ``cam_vsync_i`` input signal. +- Configure uDMA camera's ``REG_CAM_CFG_SIZE`` CSR to define the active level of ``cam_vsync_i`` input signal. - Configure camera Operation using REG_CAM_CFG_GLOB CSR. Refer to the CSR details for detailed information. - If frame slicing is enabled by setting the ``FRAMESLICE_EN`` bit in the ``REG_CAM_CFG_GLOB`` CSR, configure the ``REG_CAM_CFG_LL`` and ``REG_CAM_CFG_UR`` CSR to define the lower-left and upper-right corners of the sliced frame. - If frame dropping is enabled by setting the ``FRAMEDROP_EN`` bit in the ``REG_CAM_CFG_GLOB`` CSR, configure the ``FRAMEDROP_VALUE`` bit of the same CSR with the value indicating the number of frames to drop. -- Configure RX channel using RX_CFG CSR. Refer to the CSR details for detailed information. +- Configure RX channel using ``RX_CFG CSR``. Refer to the CSR details for detailed information. - For each transaction: - - Update uDMA camera's RX_SADDR CSR with an interleaved(L2) memory address. camera will write the data to the this memory address for transmission. - - Configure uDMA camera's RX_SIZE CSR with the size of data that camera needs to transmit. uDMA camera will copy the transmit RX_SIZE bytes of data to RX_SADDR location of interleaved memory. -- While Rx operation is ongoing, the RX_BUSY bit of the STATUS CSR will be set. -- Upon receiving the data from external device uDMA camera will set the RX_DATA_VALID bit to high. -- Received data can also be read using the RX_DATA CSR. When there is no valid data, the RX_DATA_VALID bit will be cleared. + - Update uDMA camera's ``RX_SADDR CSR`` with an interleaved(L2) memory address. camera will write the data to the this memory address for transmission. + - Configure uDMA camera's ``RX_SIZE`` CSR with the size of data that camera needs to transmit. uDMA camera will copy the transmit RX_SIZE bytes of data to RX_SADDR location of interleaved memory. +- While Rx operation is ongoing, the ``RX_BUSY`` bit of the ``STATUS`` CSR will be set. +- Upon receiving the data from external device uDMA camera will set the ``RX_DATA_VALID`` bit to high. +- Received data can also be read using the ``RX_DATA`` CSR. When there is no valid data, the ``RX_DATA_VALID`` bit will be cleared. Pin Diagram ----------- From 1c87322fa8687b2fa5d61ac5131eba62cfe59e46 Mon Sep 17 00:00:00 2001 From: Aditya Tiwari Date: Mon, 19 May 2025 04:24:57 +0000 Subject: [PATCH 13/16] uDMA Camera: Updated register description --- docs/doc-src/ip-blocks/udma_cam.rst | 127 ++++++++++++++-------------- 1 file changed, 62 insertions(+), 65 deletions(-) diff --git a/docs/doc-src/ip-blocks/udma_cam.rst b/docs/doc-src/ip-blocks/udma_cam.rst index c9e20b89..bda91c9a 100644 --- a/docs/doc-src/ip-blocks/udma_cam.rst +++ b/docs/doc-src/ip-blocks/udma_cam.rst @@ -314,31 +314,30 @@ REG_RX_CFG - Offset: 0x08 - Type: volatile -+------------+-------+--------+------------+------------------------------------------------------------------------------------+ -| Field | Bits | Access | Default | Description | -+============+=======+========+============+====================================================================================+ -| CLR | 6:6 | WO | 0x0 | Clear the local copy of Rx channel configuration CSRs inside uDMA core | -+------------+-------+--------+------------+------------------------------------------------------------------------------------+ -| PENDING | 5:5 | RO | 0x0 | - 0x1: The uDMA core Rx channel is enabled and either transmitting data, | -| | | | | waiting for access from the uDMA core arbiter, or stalled due to a full Rx FIFO | -| | | | | of uDMA Core | -| | | | | - 0x0 : Rx channel of the uDMA core does not have data to transmit to L2 memory | -+------------+-------+--------+------------+------------------------------------------------------------------------------------+ -| EN | 4:4 | RW | 0x0 | Enable the Rx channel of the uDMA core to perform Rx operation | -+------------+-------+--------+------------+------------------------------------------------------------------------------------+ -| DATASIZE | 2:1 | RW | 0x2 | Controls uDMA address increment for each transfer from L2 memory | -| | | | | | -| | | | | - 0x0: increment address by 1 (data is 8 bits) | -| | | | | - 0x1: increment address by 2 (data is 16 bits) | -| | | | | - 0x02: increment address by 4 (data is 32 bits) | -| | | | | - 0x03: increment address by 0 | -| | | | | | -+------------+-------+--------+------------+------------------------------------------------------------------------------------+ -| CONTINUOUS | 0:0 | RW | 0x0 | - 0x0: stop after last transfer for channel | -| | | | | - 0x1: after last transfer for channel, reload buffer size, start address | -| | | | | and restart channel | -| | | | | | -+------------+-------+--------+------------+------------------------------------------------------------------------------------+ ++------------+-------+--------+------------+-------------------------------------------------------------------------------------------------+ +| Field | Bits | Access | Default | Description | ++============+=======+========+============+=================================================================================================+ +| CLR | 6:6 | WO | 0x0 | Clear the local copy of Rx channel configuration CSRs inside uDMA core | ++------------+-------+--------+------------+-------------------------------------------------------------------------------------------------+ +| PENDING | 5:5 | RO | 0x0 | - 0x1: The uDMA core Rx channel is enabled and either transmitting data, | +| | | | | waiting for access from the uDMA core arbiter, or stalled due to a full Rx FIFO | +| | | | | of uDMA Core | +| | | | | - 0x0 : Rx channel of the uDMA core does not have data to transmit to L2 memory | ++------------+-------+--------+------------+-------------------------------------------------------------------------------------------------+ +| EN | 4:4 | RW | 0x0 | Enable the Rx channel of the uDMA core to perform Rx operation | ++------------+-------+--------+------------+-------------------------------------------------------------------------------------------------+ +| DATASIZE | 2:1 | RW | 0x2 | Controls uDMA address increment for each transfer from L2 memory | +| | | | | | +| | | | | - 0x0: increment address by 1 (data is 8 bits) | +| | | | | - 0x1: increment address by 2 (data is 16 bits) | +| | | | | - 0x02: increment address by 4 (data is 32 bits) | +| | | | | - 0x03: increment address by 0 | +| | | | | | ++------------+-------+--------+------------+-------------------------------------------------------------------------------------------------+ +| CONTINUOUS | 0:0 | RW | 0x0 | - 0x0: stop after last transfer for channel | +| | | | | - 0x1: after last transfer for channel, reload buffer size, start address and restart channel | | +| | | | | | ++------------+-------+--------+------------+-------------------------------------------------------------------------------------------------+ REG_CAM_CFG_GLOB ^^^^^^^^^^^^^^^^ @@ -346,46 +345,44 @@ REG_CAM_CFG_GLOB - Offset: 0x20 - Type: non-volatile -+------------------+-------+--------+------------+------------------------------------------------------------------------+ -| Field | Bits | Access | Default | Description | -+==================+=======+========+============+========================================================================+ -| EN | 31:31 | RW | 0x0 | Enable data RX from camera interface, Enable/disable only happens | -| | | | | at start of frame | -| | | | | | -| | | | | - 0x0: disable | -| | | | | - 0x1: enable | -| | | | | | -+------------------+-------+--------+------------+------------------------------------------------------------------------+ -| SHIFT | 14:11 | RW | 0x0 | Number of bits to right shift final pixel value. | -| | | | | Note: not used if FORMAT == BYPASS | -+------------------+-------+--------+------------+------------------------------------------------------------------------+ -| FORMAT | 10:8 | RW | 0x0 |Input frame format: | -| | | | | | -| | | | | - 0x0: RGB565 | -| | | | | - 0x1: RGB555 | -| | | | | - 0x2: RGB444 | -| | | | | - 0x4: BYPASS_LITTLEEND | -| | | | | - 0x5: BYPASS_BIGEND | -| | | | | | -+------------------+-------+--------+------------+------------------------------------------------------------------------+ -| FRAMESLICE_EN | 7:7 | RW | 0x0 | Frame Slicing (Windowing) enable: | -| | | | | | -| | | | | - 0x0: disable | -| | | | | - 0x1: enable | -| | | | | | -+------------------+-------+--------+------------+------------------------------------------------------------------------+ -| FRAMEDROP_VALUE | 6:1 | RW | 0x0 | Frame Drop value: | -| | | | | | -| | | | | | -| | | | | | -| | | | | | -+------------------+-------+--------+------------+------------------------------------------------------------------------+ -| FRAMEDROP_EN | 0:0 | RW | 0x0 | Frame Drop enable: | -| | | | | | -| | | | | - 0x0: disable | -| | | | | - 0x1: enable | -| | | | | | -+------------------+-------+--------+------------+------------------------------------------------------------------------+ ++------------------+-------+--------+------------+----------------------------------------------------------------------------+ +| Field | Bits | Access | Default | Description | ++==================+=======+========+============+============================================================================+ +| EN | 31:31 | RW | 0x0 | Enable camera RX operation, When this bit is enabled, camera starts | +| | | | | accepting new frames from external device. | +| | | | | | +| | | | | - 0x0: disable | +| | | | | - 0x1: enable | +| | | | | | ++------------------+-------+--------+------------+----------------------------------------------------------------------------+ +| SHIFT | 14:11 | RW | 0x0 | Number of bits to right shift final pixel value. | +| | | | | Note: not used if FORMAT == BYPASS | ++------------------+-------+--------+------------+----------------------------------------------------------------------------+ +| FORMAT | 10:8 | RW | 0x0 |Input frame format: | +| | | | | | +| | | | | - 0x0: RGB565 | +| | | | | - 0x1: RGB555 | +| | | | | - 0x2: RGB444 | +| | | | | - 0x4: BYPASS_LITTLEEND | +| | | | | - 0x5: BYPASS_BIGEND | +| | | | | | ++------------------+-------+--------+------------+----------------------------------------------------------------------------+ +| FRAMESLICE_EN | 7:7 | RW | 0x0 | Enable/Disable Frame Slicing (Windowing) | +| | | | | | +| | | | | - 0x0: disable | +| | | | | - 0x1: enable | +| | | | | | ++------------------+-------+--------+------------+----------------------------------------------------------------------------+ +| FRAMEDROP_VALUE | 6:1 | RW | 0x0 | Frame Drop value. Number of frames to be dropped before pushing data onto | +| | | | | RX DC FIFO | +| | | | | | ++------------------+-------+--------+------------+----------------------------------------------------------------------------+ +| FRAMEDROP_EN | 0:0 | RW | 0x0 | Enable/Disable Frame Drop | +| | | | | | +| | | | | - 0x0: disable | +| | | | | - 0x1: enable | +| | | | | | ++------------------+-------+--------+------------+----------------------------------------------------------------------------+ REG_CAM_CFG_LL ^^^^^^^^^^^^^^ From 60f488d7b4cbe700b285fce7d211a509dbcf1780 Mon Sep 17 00:00:00 2001 From: Aditya Tiwari Date: Mon, 19 May 2025 04:27:39 +0000 Subject: [PATCH 14/16] uDMA Camera: Fixed register table indentation --- docs/doc-src/ip-blocks/udma_cam.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/doc-src/ip-blocks/udma_cam.rst b/docs/doc-src/ip-blocks/udma_cam.rst index bda91c9a..75ce73d2 100644 --- a/docs/doc-src/ip-blocks/udma_cam.rst +++ b/docs/doc-src/ip-blocks/udma_cam.rst @@ -65,7 +65,7 @@ Each component of the uDMA camera is discussed in greater detail in the followin Clock MUX ^^^^^^^^^ -The uDMA core includes a clock multiplexer used to select the input clock source. If dft_test_mode_i is low, the clock multiplexer outputs the peripheral clock; otherwise, it outputs the system clock. +The uDMA core includes a clock multiplexer used to select the input clock source. If dft_test_mode_i is low, the clock multiplexer outputs the peripheral(cam_clk_i) clock; otherwise, it outputs the system(clk_i) clock. Dual-clock(DC) RX FIFO @@ -335,7 +335,7 @@ REG_RX_CFG | | | | | | +------------+-------+--------+------------+-------------------------------------------------------------------------------------------------+ | CONTINUOUS | 0:0 | RW | 0x0 | - 0x0: stop after last transfer for channel | -| | | | | - 0x1: after last transfer for channel, reload buffer size, start address and restart channel | | +| | | | | - 0x1: after last transfer for channel, reload buffer size, start address and restart channel | | | | | | | +------------+-------+--------+------------+-------------------------------------------------------------------------------------------------+ From 8ba6dd77276096df470592f65de0cca8c42d1d20 Mon Sep 17 00:00:00 2001 From: Aditya Tiwari Date: Sun, 17 Aug 2025 11:07:49 +0000 Subject: [PATCH 15/16] uDMA Camera: Rmoved redundant information --- docs/doc-src/ip-blocks/udma_cam.rst | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/docs/doc-src/ip-blocks/udma_cam.rst b/docs/doc-src/ip-blocks/udma_cam.rst index 75ce73d2..7f5e6c49 100644 --- a/docs/doc-src/ip-blocks/udma_cam.rst +++ b/docs/doc-src/ip-blocks/udma_cam.rst @@ -474,9 +474,6 @@ Rx Operation - For each transaction: - Update uDMA camera's ``RX_SADDR CSR`` with an interleaved(L2) memory address. camera will write the data to the this memory address for transmission. - Configure uDMA camera's ``RX_SIZE`` CSR with the size of data that camera needs to transmit. uDMA camera will copy the transmit RX_SIZE bytes of data to RX_SADDR location of interleaved memory. -- While Rx operation is ongoing, the ``RX_BUSY`` bit of the ``STATUS`` CSR will be set. -- Upon receiving the data from external device uDMA camera will set the ``RX_DATA_VALID`` bit to high. -- Received data can also be read using the ``RX_DATA`` CSR. When there is no valid data, the ``RX_DATA_VALID`` bit will be cleared. Pin Diagram ----------- @@ -569,7 +566,7 @@ Camera clock interface - cam_clk_i -External device derives the clock pins. clk_i is used to synchronize Camera with the exteral device. +External device derives the clock pins. cam_clk_i is used to synchronize Camera with the exteral device. Camera frame interface ^^^^^^^^^^^^^^^^^^^^^^ From 7b56ec6ea71adff0967423e4ba4154e331d26000 Mon Sep 17 00:00:00 2001 From: Aditya Tiwari Date: Wed, 3 Sep 2025 04:35:51 +0000 Subject: [PATCH 16/16] uDMA Camera: Fixed typo --- .../ip-blocks/uDMA_Camera_Block_Diagram.png | Bin 99791 -> 99145 bytes docs/doc-src/ip-blocks/udma_cam.rst | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/doc-src/ip-blocks/uDMA_Camera_Block_Diagram.png b/docs/doc-src/ip-blocks/uDMA_Camera_Block_Diagram.png index 8e087e4ffe9558fbd1404d03bd2a907bf4c8731b..f095e7039cf24d19e22440a7ee2054d806908df5 100644 GIT binary patch literal 99145 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 literal 99791 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 C3o1PT diff --git a/docs/doc-src/ip-blocks/udma_cam.rst b/docs/doc-src/ip-blocks/udma_cam.rst index 7f5e6c49..42534e02 100644 --- a/docs/doc-src/ip-blocks/udma_cam.rst +++ b/docs/doc-src/ip-blocks/udma_cam.rst @@ -54,7 +54,7 @@ In the block diagram above, the DATA lines at the boundary of the uDMA camera ar - 0x1: 2-byte transfer - 0x2: 4-byte transfer -When transmitting data to the uDMA Core, the uDMA camera pads bits [31:16] with 0x0. +When transmitting data to the uDMA Core, the unintended bytes are padded with 0x0. uDMA camera uses the Rx channel interface to store the data received from the external camera device to the interleaved (L2) memory. Refer to `uDMA subsystem `_ for more information about the Rx channel functionality of uDMA Core.