DWC_mipi_csi2_host_pkt_buffer.v - luoxiafeng/MIPI_CSI GitHub Wiki

1.我们先看模块的定义
module DWC_mipi_csi2_host_pkt_buffer(
input wire rstz,
input wire laneclock,
input wire [`LANES*8-1 : 0] lanedata,
input wire[`LANES-1 : 0 ] laneenable,
input wire[`LANES-1 : 0 ] phy_enables,
output wire[31 : 0] data,
output wire[7 : 0] xbyte1l,
output reg header_en,
output wire worden
);

2.定义一个组合逻辑,组合逻辑的特点就是实时性不间断的。
reg [3:0] iphy_enables;
iphy_enables[`LANES-1:0] = 4’B0;
iphy_enables[`LANES-1:0] = phy_enables[`LANES-1:0]; //这里就是将输入信号转存起来。

3.定义start 信号
wire start;
assign start = |laneenable; //根据小冉的说法,这个操作是对laneenable的所有的bit做或操作
这里的含义就是,所有的lane,只要有一个lane处于使能的状态,start就为真。

4.定义一个时序逻辑,在laneclock的每一个上升沿都执行如下的代码:
reg [2:0] clockcnt;
(4.1)如果是复位信号,则clockcnt = 3’b0
(4.2)如果不是复位信号,如果start为真:
(A)如果clockcnt==4,则另clockcnt=1
(B)如果clockcnt不等于4,则clockcnt ++;
(4.3)如果不是复位信号,如果start为假,clockcnt=0

5.定义一个时序逻辑,在laneclock的每一个上升沿都执行如下代码
reg [3:0] startReg;
(5.1)如果是复位信号,则startReg = 4’d0;
(5.2)如果不是复位信号,则startReg = { startReg[2:0] , start }//start信号表示任意一个lane处于使能状态,都表示start

6.

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