FPGA------------ SRIO通信(2)接收

一、系统概述

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;

猜你喜欢

转载自blog.csdn.net/yunge812/article/details/80953237
今日推荐