DWC_mipi_csi2_host_idi.v - luoxiafeng/MIPI_CSI GitHub Wiki

= = #1 Image Data Interface(IDI)

1 模块的定义
module DWC_mipi_csi2_host_idi(
input csi2_resetn,//复位信号
input [31 : 0] data, //32bit数据信号
input [`CSI2_HOST_DATA_IDS_WIDTH-1:0] data_ids_static,
input err_crc,
input err_ecc_corrected,
input err_ecc_double,
input header_valid,
input payload_valid,
input rxbyteclkhs, //时钟同步信号
input sampledata,
input [ 1 : 0] valid_bytes,

output wire [31 : 0] csi_data, //输出32bit csi数据
output wire [ 1 : 0] bytes_en,
output wire data_en,
output wire [ 3 : 0] dvalid,
output wire [ 3 : 0] hvalid, //水平有效
output wire [ 3 : 0] vvalid, //垂直有效
output wire header_en,
output wire [ 5 : 0] data_type, //数据类型
output wire [ 1 : 0] virtual_channel, //通道编号
output wire [15 : 0] word_count,
output wire [ 7 : 0] ecc,
output wire err_id,
output wire err_f_bndry_match,
output wire err_f_seq,
output wire err_frame_data,
output wire [`CSI2_HOST_DATA_IDS_WIDTH-1:0] err_l_bndry_match,
output wire [`CSI2_HOST_DATA_IDS_WIDTH-1:0] err_l_seq
);

2 然后这个模块就例化了两个模块。
DWC_mipi_csi2_host_err_msgr u_err_msgr(
);

DWC_mipi_csi2_host_prepare_outs u_prepare_outs(
);

3. IDI模块描述
(3.1)IDI是一个32bit的synopsys专有的接口,用来在csi_data[31:0]信号上传递图像数据。
(3.2)由于不止一个视频序列可以在CSI2-LINK上传输,与data_type[5:0]和virtual_channel[1:0]相关的额外的信息需要被提供。这个额外的信息由CSI-2 包头(packet header)提供。而且在整个行传输的过程中,包头信息都保持有效。
(3.3)定时精准的视频同步信号,被提供用来适当的图像重建,图像重建通过vvalid[3:0],hvalid[3:0],dvalid[3:0],其中信号的索引表示其所属的虚拟通道。

4. IDI信号描述
(4.1)header_en:1bit表示输出的header数据对于当前正在传输的packet而言是有效的,在整个packet传输过程中,这个信号都保持高。
header数据包括:virtual_channel(虚拟通道)、data_type数据类型、word_count、和ecc
(4.2)virtual_channel:2bit
00:表示虚拟通道0
01:表示虚拟通道1
10:表示虚拟通道2
11:表示虚拟通道3
(4.3)data_type数据类型:5bit
0×00-0×07:同步短包数据类型
0×08-0×0f:通用短包数据类型
0×10-0×17:通用长包数据类型
0×18-0×1F:YUV数据
0×20-0×27:RGB数据
0×28-0X2F: RAW数据
0×30-0×37:用户定义的以字节为基础的数据
0×38-0×3F:保留
(4.4)word_count:16bit
来自packet header的16bit的word count信息。这个信号表示字节的数量,在整个packet传输期间保持稳定。
(4.5)ecc:8bit
8bit的ecc校验码用来给包头packet header。
(4.6)data_en:1bit
表示新的载荷数据已经出现在输出信号(csi_data和bytes_en)上。如果这个信号生效,hader_en也会生效。这个信号当且仅当收到长包的时候会生效。
(4.7)csi_data[31:0]:32bit
负载数据输出,会根据CSI-2推荐的数据存储格式进行格式化输出。
(4.8)bytes_en[1:0]:2bit
表示在csi_data中有多少个字节是有效的。
00:一个有效字节csi_data[7:0]
01:两个有效字节csi_data[15:0]
10:三个有效字节csi_data[23:0]
11:四个有效字节csi_data[31:0]
(4.9)vvalid[3:0]:4bit
当帧的起始被侦测到的时候,这个信号有效。当帧的结束被侦测到的时候,则这个信号失效。每一个虚拟通道都有一个有效信号。
vvalid0,表示访问vvalid信号的bit0:虚拟通道0的vvalid信号。
vvalid1,表示访问vvalid信号的bit1:虚拟通道1的vvalid信号。
vvalid2,表示访问vvalid信号的bit2:虚拟通道2的vvalid信号。
vvalid3,表示访问vvalid信号的bit3:虚拟通道3的vvalid信号。
(4.10)hvalid[3:0]:4bit
当行的起始被侦测到的时候,这个信号有效。当行的结束信号被侦测的时候,这个信号变为无效。由于行开始和行结束是可以选择的,以防万一这两个信号不可用,hvalid此时就相当于dvalid。也就是说,若有行开始和行结束的信号,则hvalid就是hvalid的功能。如果没有,则hvalid和dvalid等效。每个虚拟通道都对应一个hvalid
hvalid0,表示访问hvalid信号的bit0:虚拟通道0的hvalid信号。
hvalid1,表示访问hvalid信号的bit1:虚拟通道1的hvalid信号。
hvalid2,表示访问hvalid信号的bit2:虚拟通道2的hvalid信号。
hvalid3,表示访问hvalid信号的bit3:虚拟通道3的hvalid信号。

(4.11)当有有效数据可供使用的时候,dvalid[3:0]:4bit
dvalid0,表示访问dvalid信号的bit0:虚拟通道0的dvalid信号。
dvalid1,表示访问dvalid信号的bit1:虚拟通道1的dvalid信号。
dvalid2,表示访问dvalid信号的bit2:虚拟通道2的dvalid信号。
dvalid3,表示访问dvalid信号的bit3:虚拟通道3的dvalid信号。

⚠️ **GitHub.com Fallback** ⚠️