一、系统概述
SRIO数据进入IP核,首先进行一定的数据解析。解析完毕之后产生fifo的wen 和 data信号写入fifo。
二、数据解析过程。
解析过程主要就是包括解析出packet的数据协议,解析出什么时候数据有效,解析出数据有效时候的数据。
2.1 解析数据有效
wire treq_advance_condition = val_treq_tready && val_treq_tvalid;
val_treq_tready和val_treq_tvalid信号均出自IP核。treq_advance_condition代表此时IP核已经有数据进来
2.2解析信号的packet格式
通过对第一帧包进行分析即可以得到packet的格式
always @(posedge log_clk) begin
if (log_rst_q)
begin
first_beat <= 1'b1;
end
else if (treq_advance_condition && val_treq_tlast)
begin
first_beat <= 1'b1; //找到包的结束 结束之后可以判断出packet的类型
end
else if (treq_advance_condition)
begin
first_beat <= 1'b0;
end
end
val_treq_tlast信号代表包的结束。packet结束之后可以利用first_beat信号来进行识别
assign current_ttype = val_treq_tdata[51:48];
2.3 产生数据有效信号
数据有效信号即fifo的写使能信号。在包结束并且数据准备完毕的情况下,拉高wen
always @(posedge log_clk) begin
if (log_rst_q) begin
capture_data <= 1'b0;
end else if (/*start_record & */first_beat && treq_advance_condition) begin //
capture_data <= (current_ftype == SWRITE); //capture_data信号并不是接收的数据 而是fifo使能信号
end else if (treq_advance_condition && val_treq_tlast) begin
capture_data <= 1'b0;
end
end
assign dma_dn_wren = capture_data && treq_advance_condition; //fifo使能信号
2.4 产生输入fifo的数据信号
assign ms_dn_data = val_treq_tdata;