仿真无误,成功将一个udp端口变成两个端口——udp process data为板级写法
This commit is contained in:
parent
c9da7e57f7
commit
7b85b7cadd
|
|
@ -29,17 +29,25 @@ module UDP_data_process (
|
||||||
input eth_linked,
|
input eth_linked,
|
||||||
|
|
||||||
output reg pulse_second,
|
output reg pulse_second,
|
||||||
// input data_fifo_rden,
|
|
||||||
// UDP接收FIFO接口
|
// UDP接收FIFO接口
|
||||||
output reg udp_app_recv_fifo_rden,
|
output reg udp_app_recv_fifo_rden_0,
|
||||||
input [7:0] udp_app_recv_fifo_rddata,
|
input [7:0] udp_app_recv_fifo_rddata_0,
|
||||||
input [11:0] udp_app_recv_fifo_rdcnt,
|
input [11:0] udp_app_recv_fifo_rdcnt_0,
|
||||||
input udp_app_recv_fifo_empty,
|
input udp_app_recv_fifo_empty_0,
|
||||||
// UDP发送FIFO接口
|
// UDP0发送FIFO接口
|
||||||
input udp_app_send_fifo_rden,
|
input udp_app_send_fifo_rden_0,
|
||||||
output [7:0] udp_app_send_fifo_rddata,
|
output [7:0] udp_app_send_fifo_rddata_0,
|
||||||
output [11:0] udp_app_send_fifo_rdcnt,
|
output [11:0] udp_app_send_fifo_rdcnt_0,
|
||||||
output udp_app_send_fifo_empty,
|
output udp_app_send_fifo_empty_0,
|
||||||
|
|
||||||
|
// UDP1接收FIFO接口
|
||||||
|
//we don't need
|
||||||
|
|
||||||
|
// UDP1发送FIFO接口
|
||||||
|
input udp_app_send_fifo_rden_1,
|
||||||
|
output [7:0] udp_app_send_fifo_rddata_1,
|
||||||
|
output [11:0] udp_app_send_fifo_rdcnt_1,
|
||||||
|
output udp_app_send_fifo_empty_1,
|
||||||
// TOE寄存器接口
|
// TOE寄存器接口
|
||||||
output reg TOE_reg_wren,
|
output reg TOE_reg_wren,
|
||||||
output reg TOE_reg_rden,
|
output reg TOE_reg_rden,
|
||||||
|
|
@ -63,7 +71,7 @@ module UDP_data_process (
|
||||||
input [31:0] DAQ_Status_Info_data
|
input [31:0] DAQ_Status_Info_data
|
||||||
);
|
);
|
||||||
|
|
||||||
// wire udp_app_recv_fifo_rden_r;
|
|
||||||
wire udp_app_recv_fifo_ready;
|
wire udp_app_recv_fifo_ready;
|
||||||
wire udp_recv_data_tvalid;
|
wire udp_recv_data_tvalid;
|
||||||
wire [31:0]udp_recv_data;
|
wire [31:0]udp_recv_data;
|
||||||
|
|
@ -168,24 +176,23 @@ ila_00 ila_udp_data (
|
||||||
// ---------------------------
|
// ---------------------------
|
||||||
always@(posedge clk)
|
always@(posedge clk)
|
||||||
if(reset)
|
if(reset)
|
||||||
udp_app_recv_fifo_rden <= 1'b0;
|
udp_app_recv_fifo_rden_0 <= 1'b0; //仿真和上板的区别有2个地方,一个是这边,另外一个是秒脉冲的计数器(2处)
|
||||||
else if(udp_app_recv_fifo_rdcnt == 12'b1) //上板后不得注释!!记得取消注释 //实际应该是读计数为1时候就要拉低了,不然板子会多读一个。 仿真又坑了我。跑一次比特流要15分钟呢! //仿真需要 udp_app_recv_fifo_rdcnt == 12'b0 时才拉低
|
else if(udp_app_recv_fifo_rdcnt_0 == 12'b1) //上板后不得注释!!记得取消注释 //实际应该是读计数为1时候就要拉低了,不然板子会多读一个。
|
||||||
udp_app_recv_fifo_rden <= 1'b0;
|
udp_app_recv_fifo_rden_0 <= 1'b0;
|
||||||
else if((~udp_app_recv_fifo_empty) && udp_app_recv_fifo_ready && (~deal_busy) && eth_linked) //如果连接成功才会去读,连接失败不能去读fifo。
|
else if((~udp_app_recv_fifo_empty_0) && udp_app_recv_fifo_ready && (~deal_busy) && eth_linked) //如果连接成功才会去读,连接失败不能去读fifo。
|
||||||
udp_app_recv_fifo_rden <= 1'b1;
|
udp_app_recv_fifo_rden_0 <= 1'b1;
|
||||||
else
|
else
|
||||||
udp_app_recv_fifo_rden <= 1'b0;
|
udp_app_recv_fifo_rden_0 <= 1'b0;
|
||||||
|
|
||||||
|
|
||||||
//assign udp_app_recv_fifo_rden_r = udp_app_recv_fifo_rden && (~udp_app_recv_fifo_empty); // udp recv data does not delay, so the en needn't delay
|
|
||||||
|
|
||||||
|
|
||||||
axis_dwidth_converter_0 axis_dwidth_converter_udprx(
|
axis_dwidth_converter_0 axis_dwidth_converter_udprx(
|
||||||
.aclk (clk), // input
|
.aclk (clk), // input
|
||||||
.aresetn (~reset), // input
|
.aresetn (~reset), // input
|
||||||
.s_axis_tvalid(udp_app_recv_fifo_rden), // input
|
.s_axis_tvalid(udp_app_recv_fifo_rden_0), // input
|
||||||
.s_axis_tready(udp_app_recv_fifo_ready), // output
|
.s_axis_tready(udp_app_recv_fifo_ready), // output
|
||||||
.s_axis_tdata (udp_app_recv_fifo_rddata), // input [7:0]
|
.s_axis_tdata (udp_app_recv_fifo_rddata_0), // input [7:0]
|
||||||
.m_axis_tvalid(udp_recv_data_tvalid), // output
|
.m_axis_tvalid(udp_recv_data_tvalid), // output
|
||||||
.m_axis_tready(1'b1), // input
|
.m_axis_tready(1'b1), // input
|
||||||
.m_axis_tdata (udp_recv_data) // output [63:0]
|
.m_axis_tdata (udp_recv_data) // output [63:0]
|
||||||
|
|
@ -448,10 +455,15 @@ status_to_udp status_to_udp_0 (
|
||||||
.DAQ_Status_Info_last(DAQ_Status_Info_last),
|
.DAQ_Status_Info_last(DAQ_Status_Info_last),
|
||||||
.DAQ_Status_Info_data(DAQ_Status_Info_data),
|
.DAQ_Status_Info_data(DAQ_Status_Info_data),
|
||||||
|
|
||||||
.udp_app_send_fifo_rden(udp_app_send_fifo_rden),
|
.udp_app_send_fifo_rden_0(udp_app_send_fifo_rden_0),
|
||||||
.udp_app_send_fifo_rddata(udp_app_send_fifo_rddata),
|
.udp_app_send_fifo_rddata_0(udp_app_send_fifo_rddata_0),
|
||||||
.udp_app_send_fifo_rdcnt(udp_app_send_fifo_rdcnt),
|
.udp_app_send_fifo_rdcnt_0(udp_app_send_fifo_rdcnt_0),
|
||||||
.udp_app_send_fifo_empty(udp_app_send_fifo_empty)
|
.udp_app_send_fifo_empty_0(udp_app_send_fifo_empty_0),
|
||||||
|
|
||||||
|
.udp_app_send_fifo_rden_1(udp_app_send_fifo_rden_1),
|
||||||
|
.udp_app_send_fifo_rddata_1(udp_app_send_fifo_rddata_1),
|
||||||
|
.udp_app_send_fifo_rdcnt_1(udp_app_send_fifo_rdcnt_1),
|
||||||
|
.udp_app_send_fifo_empty_1(udp_app_send_fifo_empty_1)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 9.0 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 7.0 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 13 KiB |
|
|
@ -0,0 +1,81 @@
|
||||||
|
# 功能分析
|
||||||
|
|
||||||
|
## 原先
|
||||||
|
|
||||||
|
UDP_data_process.v主要负责接收UDP传过来的信息,然后执行对应操作。比如说接收到一个TOE写的网络包,然后会进行解析与执行。接收到开启秒脉冲的包,就会控制pluse_second。
|
||||||
|
|
||||||
|
转发功能全打包到status_to_udp.v中,实现功能解耦,代码也更好看。从TOE和另外3个信息模块拿到数据,打包成UDP帧结构,然后发送出去。
|
||||||
|
|
||||||
|
## 现在
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
本来是一个udp接口收发数据,现在实际是两个。udp1只负责发送状态数据,**不需要接收**,udp0负责配置数据和指令等,**需要接收TOE命令**。所以在你的模块顶层会有两组这个udp数据接口。
|
||||||
|
|
||||||
|
# 改动
|
||||||
|
|
||||||
|
## status to udp
|
||||||
|
|
||||||
|
仲裁存储状态机不用改。TOE valid的来进的是TOE_rec_fifo 。而状态信息进的是info_cache_fifo。
|
||||||
|
|
||||||
|
发送状态机需要改。关键是fifo_wr_en fifo_wr_data得改。
|
||||||
|
|
||||||
|
改了fifo发现,端口添加很容易,关键是添加了fifo_wr_en_TOE,fifo_wr_data_TOE!
|
||||||
|
|
||||||
|
## UDP_data_process
|
||||||
|
|
||||||
|
除了端口改了。
|
||||||
|
|
||||||
|
由于该模块主要是执行功能,所以主要改接口就ok了
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# 仿真
|
||||||
|
|
||||||
|
## Status to udp 转发模块验证
|
||||||
|
|
||||||
|
### 保证状态信息info转发正确
|
||||||
|
|
||||||
|
//秒脉冲开启////////////////////////////////////
|
||||||
|
|
||||||
|
send_fifo_data(64'h4d44000410000001);
|
||||||
|
|
||||||
|
send_fifo_data_32(31'h34D1ED6F);
|
||||||
|
|
||||||
|
\#100000;
|
||||||
|
|
||||||
|
send_fifo_data(64'h4d44000410000000);
|
||||||
|
|
||||||
|
send_fifo_data_32(31'h3010F0D8);
|
||||||
|
|
||||||
|
//////////////////////////////////////////////
|
||||||
|
|
||||||
|
之后验证fifo_wr_en fifo_wr_data[31:0]是否正确
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### 保证状态TOE转发正确
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\#1000;
|
||||||
|
|
||||||
|
send_toe_data(66'h10102030405060708,66'h2b1b2b3b4b5b6b7b8,66'h3c1c2c3c4c5c6c7c8,66'h0a1a2a3a4a5a6a7a8,4);
|
||||||
|
|
||||||
|
\#5000;
|
||||||
|
|
||||||
|
之后验证fifo_wr_en_TOE fifo_wr_data_TOE[31:0]是否正确
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
成功!
|
||||||
|
|
||||||
|
## udp_data_process
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
成功!
|
||||||
113
status_to_udp.v
113
status_to_udp.v
|
|
@ -23,11 +23,17 @@ module status_to_udp (
|
||||||
input DAQ_Status_Info_last,
|
input DAQ_Status_Info_last,
|
||||||
input [31:0] DAQ_Status_Info_data,
|
input [31:0] DAQ_Status_Info_data,
|
||||||
|
|
||||||
// UDP发送FIFO接口
|
// UDP0发送FIFO接口(负责TOE)
|
||||||
input udp_app_send_fifo_rden,
|
input udp_app_send_fifo_rden_0,
|
||||||
output [7:0] udp_app_send_fifo_rddata,
|
output [7:0] udp_app_send_fifo_rddata_0,
|
||||||
output [11:0] udp_app_send_fifo_rdcnt,
|
output [11:0] udp_app_send_fifo_rdcnt_0,
|
||||||
output udp_app_send_fifo_empty
|
output udp_app_send_fifo_empty_0,
|
||||||
|
|
||||||
|
// UDP1发送FIFO接口(负责3块板子)
|
||||||
|
input udp_app_send_fifo_rden_1,
|
||||||
|
output [7:0] udp_app_send_fifo_rddata_1,
|
||||||
|
output [11:0] udp_app_send_fifo_rdcnt_1,
|
||||||
|
output udp_app_send_fifo_empty_1
|
||||||
);
|
);
|
||||||
|
|
||||||
// =========================== 参数定义 ===========================
|
// =========================== 参数定义 ===========================
|
||||||
|
|
@ -42,15 +48,16 @@ localparam RECV_XYZ = 4'd6;
|
||||||
localparam WAIT_DAQ_VALID = 4'd7; // 新增:等待DAQ valid
|
localparam WAIT_DAQ_VALID = 4'd7; // 新增:等待DAQ valid
|
||||||
localparam RECV_DAQ = 4'd8;
|
localparam RECV_DAQ = 4'd8;
|
||||||
|
|
||||||
reg [2:0] S_state;
|
reg [3:0] S_state;
|
||||||
localparam SEND_IDLE = 3'd0;
|
localparam SEND_IDLE = 4'd0;
|
||||||
localparam SEND_TOE_HEAD_LENGTH = 3'd1;
|
localparam SEND_TOE_HEAD_LENGTH = 4'd1;
|
||||||
localparam SEND_TOE_DATA_1 = 3'd2;
|
localparam SEND_TOE_DATA_1 = 4'd2;
|
||||||
localparam SEND_TOE_DATA_LENGTH = 3'd3;
|
localparam SEND_TOE_DATA_LENGTH = 4'd3;
|
||||||
localparam SEND_TOE_DATA_2 = 3'd4;
|
localparam SEND_TOE_DATA_2 = 4'd4;
|
||||||
localparam SEND_CRC = 3'd5;
|
localparam SEND_CRC_TOE = 4'd5;
|
||||||
localparam SEND_INFO_HEAD_LENGTH = 3'd6;
|
localparam SEND_INFO_HEAD_LENGTH = 4'd6;
|
||||||
localparam SEND_INFO_DATA = 3'd7;
|
localparam SEND_INFO_DATA = 4'd7;
|
||||||
|
localparam SEND_CRC_INFO = 4'd8;
|
||||||
|
|
||||||
// =========================== 寄存器定义 ===========================
|
// =========================== 寄存器定义 ===========================
|
||||||
reg [31:0] data_buffer;
|
reg [31:0] data_buffer;
|
||||||
|
|
@ -58,9 +65,11 @@ reg [1:0] byte_counter;
|
||||||
reg buffer_valid;
|
reg buffer_valid;
|
||||||
|
|
||||||
// FIFO相关信号
|
// FIFO相关信号
|
||||||
reg fifo_wr_en;
|
reg fifo_wr_en; //udp1
|
||||||
reg [31:0] fifo_wr_data;
|
reg [31:0] fifo_wr_data;
|
||||||
wire fifo_full;
|
reg fifo_wr_en_TOE; //udp0
|
||||||
|
reg [31:0] fifo_wr_data_TOE;
|
||||||
|
|
||||||
wire TOE_rec_fifo_empty;
|
wire TOE_rec_fifo_empty;
|
||||||
reg TOE_rec_fifo_rden;
|
reg TOE_rec_fifo_rden;
|
||||||
wire [65:0] TOE_rec_fifo_dout;
|
wire [65:0] TOE_rec_fifo_dout;
|
||||||
|
|
@ -89,20 +98,37 @@ wire [31:0] info_cache_fifo_dout;
|
||||||
wire info_cache_fifo_full;
|
wire info_cache_fifo_full;
|
||||||
wire info_cache_fifo_empty;
|
wire info_cache_fifo_empty;
|
||||||
|
|
||||||
// =========================== FIFO实例化 ===========================
|
// =========================== FIFO ===========================
|
||||||
|
|
||||||
//512 depth 32to8
|
//512 depth 32to8 --responsible for UDP0(TOE)
|
||||||
fifo_generator_32to8 fifo_32to8 (
|
fifo_generator_32to8 fifo_32to8_TOE (
|
||||||
|
.clk(clk), // input wire clk
|
||||||
|
.rst(reset), // input wire rst
|
||||||
|
.wr_en(fifo_wr_en_TOE), // input wire wr_en
|
||||||
|
.din(fifo_wr_data_TOE), // input wire [31 : 0] din
|
||||||
|
.full(), // output wire full
|
||||||
|
|
||||||
|
.rd_en(udp_app_send_fifo_rden_0), // input wire rd_en
|
||||||
|
.dout(udp_app_send_fifo_rddata_0), // output wire [7 : 0] dout
|
||||||
|
.empty(udp_app_send_fifo_empty_0), // output wire empty
|
||||||
|
.rd_data_count(udp_app_send_fifo_rdcnt_0), // output wire [11 : 0] rd_data_count
|
||||||
|
|
||||||
|
.wr_rst_busy(), // output wire wr_rst_busy
|
||||||
|
.rd_rst_busy() // output wire rd_rst_busy
|
||||||
|
);
|
||||||
|
|
||||||
|
//512 depth 32to8 --responsible for UDP1(state_info)
|
||||||
|
fifo_generator_32to8 fifo_32to8_INFO (
|
||||||
.clk(clk), // input wire clk
|
.clk(clk), // input wire clk
|
||||||
.rst(reset), // input wire rst
|
.rst(reset), // input wire rst
|
||||||
.wr_en(fifo_wr_en), // input wire wr_en
|
.wr_en(fifo_wr_en), // input wire wr_en
|
||||||
.din(fifo_wr_data), // input wire [31 : 0] din
|
.din(fifo_wr_data), // input wire [31 : 0] din
|
||||||
.full(fifo_full), // output wire full
|
.full(), // output wire full
|
||||||
|
|
||||||
.rd_en(udp_app_send_fifo_rden), // input wire rd_en
|
.rd_en(udp_app_send_fifo_rden_1), // input wire rd_en
|
||||||
.dout(udp_app_send_fifo_rddata), // output wire [7 : 0] dout
|
.dout(udp_app_send_fifo_rddata_1), // output wire [7 : 0] dout
|
||||||
.empty(udp_app_send_fifo_empty), // output wire empty
|
.empty(udp_app_send_fifo_empty_1), // output wire empty
|
||||||
.rd_data_count(udp_app_send_fifo_rdcnt), // output wire [11 : 0] rd_data_count
|
.rd_data_count(udp_app_send_fifo_rdcnt_1), // output wire [11 : 0] rd_data_count
|
||||||
|
|
||||||
.wr_rst_busy(), // output wire wr_rst_busy
|
.wr_rst_busy(), // output wire wr_rst_busy
|
||||||
.rd_rst_busy() // output wire rd_rst_busy
|
.rd_rst_busy() // output wire rd_rst_busy
|
||||||
|
|
@ -364,6 +390,8 @@ always @(posedge clk or posedge reset) begin
|
||||||
S_state <= SEND_IDLE;
|
S_state <= SEND_IDLE;
|
||||||
fifo_wr_en <= 1'b0;
|
fifo_wr_en <= 1'b0;
|
||||||
fifo_wr_data <= 32'b0;
|
fifo_wr_data <= 32'b0;
|
||||||
|
fifo_wr_en_TOE <= 1'b0;//udp0
|
||||||
|
fifo_wr_data_TOE <= 32'b0;
|
||||||
crc32_calc <= 32'hFFFFFFFF;
|
crc32_calc <= 32'hFFFFFFFF;
|
||||||
info_cache_fifo_rden <= 1'b0;
|
info_cache_fifo_rden <= 1'b0;
|
||||||
TOE_payload <= 64'b0;
|
TOE_payload <= 64'b0;
|
||||||
|
|
@ -374,6 +402,8 @@ always @(posedge clk or posedge reset) begin
|
||||||
SEND_IDLE: begin //0
|
SEND_IDLE: begin //0
|
||||||
fifo_wr_en <= 1'b0;
|
fifo_wr_en <= 1'b0;
|
||||||
fifo_wr_data <= 32'b0;
|
fifo_wr_data <= 32'b0;
|
||||||
|
fifo_wr_en_TOE <= 1'b0;//udp0
|
||||||
|
fifo_wr_data_TOE <= 32'b0;
|
||||||
crc32_calc <= 32'hFFFFFFFF;
|
crc32_calc <= 32'hFFFFFFFF;
|
||||||
send_finish <= 1'b0;
|
send_finish <= 1'b0;
|
||||||
Info_data_bytes_num_reg <= 1'b0;
|
Info_data_bytes_num_reg <= 1'b0;
|
||||||
|
|
@ -390,35 +420,35 @@ always @(posedge clk or posedge reset) begin
|
||||||
end
|
end
|
||||||
|
|
||||||
SEND_TOE_HEAD_LENGTH: begin //1
|
SEND_TOE_HEAD_LENGTH: begin //1
|
||||||
fifo_wr_en <= 1'b1;
|
fifo_wr_en_TOE <= 1'b1;
|
||||||
fifo_wr_data <= 32'h4547000c;
|
fifo_wr_data_TOE <= 32'h4547000c;
|
||||||
S_state <= SEND_TOE_DATA_1;
|
S_state <= SEND_TOE_DATA_1;
|
||||||
end
|
end
|
||||||
|
|
||||||
SEND_TOE_DATA_1: begin //2
|
SEND_TOE_DATA_1: begin //2
|
||||||
fifo_wr_en <= 1'b1;
|
fifo_wr_en_TOE <= 1'b1;
|
||||||
fifo_wr_data <= TOE_payload[63:32];
|
fifo_wr_data_TOE <= TOE_payload[63:32];
|
||||||
crc32_calc <= calc_crc32(TOE_payload[63:32], crc32_calc);
|
crc32_calc <= calc_crc32(TOE_payload[63:32], crc32_calc);
|
||||||
S_state <= SEND_TOE_DATA_LENGTH;
|
S_state <= SEND_TOE_DATA_LENGTH;
|
||||||
end
|
end
|
||||||
|
|
||||||
SEND_TOE_DATA_LENGTH: begin //3
|
SEND_TOE_DATA_LENGTH: begin //3
|
||||||
fifo_wr_en <= 1'b1;
|
fifo_wr_en_TOE <= 1'b1;
|
||||||
fifo_wr_data <= 32'd4; // 固定四字节长度
|
fifo_wr_data_TOE <= 32'd4; // 固定四字节长度
|
||||||
crc32_calc <= calc_crc32(32'd4, crc32_calc);
|
crc32_calc <= calc_crc32(32'd4, crc32_calc);
|
||||||
S_state <= SEND_TOE_DATA_2;
|
S_state <= SEND_TOE_DATA_2;
|
||||||
end
|
end
|
||||||
|
|
||||||
SEND_TOE_DATA_2: begin //4
|
SEND_TOE_DATA_2: begin //4
|
||||||
fifo_wr_en <= 1'b1;
|
fifo_wr_en_TOE <= 1'b1;
|
||||||
fifo_wr_data <= TOE_payload[31:0];
|
fifo_wr_data_TOE <= TOE_payload[31:0];
|
||||||
crc32_calc <= calc_crc32(TOE_payload[31:0], crc32_calc);
|
crc32_calc <= calc_crc32(TOE_payload[31:0], crc32_calc);
|
||||||
S_state <= SEND_CRC;
|
S_state <= SEND_CRC_TOE;
|
||||||
end
|
end
|
||||||
|
|
||||||
SEND_CRC: begin //5
|
SEND_CRC_TOE: begin //5
|
||||||
fifo_wr_en <= 1'b1;
|
fifo_wr_en_TOE <= 1'b1;
|
||||||
fifo_wr_data <= crc32_calc;
|
fifo_wr_data_TOE <= crc32_calc;
|
||||||
S_state <= SEND_IDLE;
|
S_state <= SEND_IDLE;
|
||||||
send_finish <= 1'b1;
|
send_finish <= 1'b1;
|
||||||
info_cache_fifo_rden <= 1'b0;
|
info_cache_fifo_rden <= 1'b0;
|
||||||
|
|
@ -439,12 +469,21 @@ always @(posedge clk or posedge reset) begin
|
||||||
|
|
||||||
if(info_cache_fifo_empty) begin
|
if(info_cache_fifo_empty) begin
|
||||||
info_cache_fifo_rden <= 1'b0;
|
info_cache_fifo_rden <= 1'b0;
|
||||||
S_state <= SEND_CRC;
|
S_state <= SEND_CRC_INFO;
|
||||||
end else begin
|
end else begin
|
||||||
info_cache_fifo_rden <= 1'b1;
|
info_cache_fifo_rden <= 1'b1;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
SEND_CRC_INFO: begin //8
|
||||||
|
fifo_wr_en <= 1'b1;
|
||||||
|
fifo_wr_data <= crc32_calc;
|
||||||
|
S_state <= SEND_IDLE;
|
||||||
|
send_finish <= 1'b1;
|
||||||
|
info_cache_fifo_rden <= 1'b0;
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
default: S_state <= SEND_IDLE;
|
default: S_state <= SEND_IDLE;
|
||||||
endcase
|
endcase
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue