Files
eb001/tb/shinTest/ShinTopTb.v
2025-04-28 18:01:16 +08:00

812 lines
19 KiB
Verilog
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
`timescale 1 ns / 1 ps
module ShinTopTb(
);
reg clock;
reg reset;
wire [3:0] io_down_ready;
wire [3:0] io_down_valid;
wire [31:0] io_down_bits_tdata;
wire [3:0] io_down_bits_tlast;
wire [3:0] io_down_bits_tuser;
wire [3:0] io_up_ready;
wire [3:0] io_up_valid;
wire [31:0] io_up_bits_tdata;
wire [3:0] io_up_bits_tlast;
wire [3:0] io_up_bits_tuser;
reg [63:0] timeStamp = 0;
reg [10:0] sram_w_0_addrw;
reg [7:0] sram_w_0_dataw;
reg sram_w_0_enw = 1'b0;
reg txCmf = 1'b0;
reg req_valid = 1'b0;
reg [14:0] req_bits_txAddr;
reg [14:0] req_bits_rxAddr;
reg [11:0] req_bits_length;
ShinTop s_ShinTop_Mst(
.clock(clock),
.reset(reset),
.io_downIn_ready (),
.io_downIn_valid (1'b0),
.io_downIn_bits_tdata (8'd0),
.io_downIn_bits_tlast (1'b0),
.io_downIn_bits_tuser (1'b0),
.io_downOut_ready (io_down_ready[0]),
.io_downOut_valid (io_down_valid[0]),
.io_downOut_bits_tdata(io_down_bits_tdata[7:0]),
.io_downOut_bits_tlast(io_down_bits_tlast[0]),
.io_downOut_bits_tuser(io_down_bits_tuser[0]),
.io_upIn_ready (io_up_ready[0]),
.io_upIn_valid (io_up_valid[0]),
.io_upIn_bits_tdata (io_up_bits_tdata[7:0]),
.io_upIn_bits_tlast (io_up_bits_tlast[0]),
.io_upIn_bits_tuser (io_up_bits_tuser[0]),
.io_upOut_ready (1'b1),
.io_upOut_valid (),
.io_upOut_bits_tdata (),
.io_upOut_bits_tlast (),
.io_upOut_bits_tuser (),
.io_timeStamp(timeStamp),
.io_dSMdeq_0(1'b0),
.io_dSMdeq_1(1'b0),
.io_dSMdeq_2(1'b0),
.io_dSMdeq_3(1'b0),
.io_uSMenq_0(txCmf),
.io_uSMenq_1(1'b0),
.io_uSMenq_2(1'b0),
.io_uSMenq_3(1'b0),
.io_sram_w_0_addrw(sram_w_0_addrw),
.io_sram_w_0_dataw(sram_w_0_dataw),
.io_sram_w_0_enw (sram_w_0_enw),
.io_sram_w_1_addrw(11'd0),
.io_sram_w_1_dataw(8'h0),
.io_sram_w_1_enw(1'b0),
.io_sram_w_2_addrw(11'd0),
.io_sram_w_2_dataw(8'h0),
.io_sram_w_2_enw(1'b0),
.io_sram_w_3_addrw(11'd0),
.io_sram_w_3_dataw(8'h0),
.io_sram_w_3_enw(1'b0),
.io_sram_r_0_addrr(11'd0),
.io_sram_r_0_datar(),
.io_sram_r_0_enr(1'b0),
.io_sram_r_1_addrr(11'd0),
.io_sram_r_1_datar(),
.io_sram_r_1_enr(1'b0),
.io_sram_r_2_addrr(11'd0),
.io_sram_r_2_datar(),
.io_sram_r_2_enr(1'b0),
.io_sram_r_3_addrr(11'd0),
.io_sram_r_3_datar(),
.io_sram_r_3_enr(1'b0),
.io_modeSel(1'b1), //主机模式
.io_req_valid (req_valid),
.io_req_bits_txAddr(req_bits_txAddr),
.io_req_bits_rxAddr(req_bits_rxAddr),
.io_req_bits_length(req_bits_length),
.io_rsp_valid(),
.io_rsp_bits_isError(),
.io_rsp_bits_length()
);
ShinTop s_ShinTop_slv0(
.clock(clock),
.reset(reset),
.io_downIn_ready (io_down_ready[0]),
.io_downIn_valid (io_down_valid[0]),
.io_downIn_bits_tdata (io_down_bits_tdata[7:0]),
.io_downIn_bits_tlast (io_down_bits_tlast[0]),
.io_downIn_bits_tuser (io_down_bits_tuser[0]),
.io_downOut_ready (io_down_ready[1]),
.io_downOut_valid (io_down_valid[1]),
.io_downOut_bits_tdata(io_down_bits_tdata[15:8]),
.io_downOut_bits_tlast(io_down_bits_tlast[1]),
.io_downOut_bits_tuser(io_down_bits_tuser[1]),
.io_upIn_ready (io_up_ready[1]),
.io_upIn_valid (io_up_valid[1]),
.io_upIn_bits_tdata (io_up_bits_tdata[15:8]),
.io_upIn_bits_tlast (io_up_bits_tlast[1]),
.io_upIn_bits_tuser (io_up_bits_tuser[1]),
.io_upOut_ready (io_up_ready[0]),
.io_upOut_valid (io_up_valid[0]),
.io_upOut_bits_tdata (io_up_bits_tdata[7:0]),
.io_upOut_bits_tlast (io_up_bits_tlast[0]),
.io_upOut_bits_tuser (io_up_bits_tuser[0]),
.io_timeStamp(timeStamp),
.io_dSMdeq_0(1'b0),
.io_dSMdeq_1(1'b0),
.io_dSMdeq_2(1'b0),
.io_dSMdeq_3(1'b0),
.io_uSMenq_0(1'b0),
.io_uSMenq_1(1'b0),
.io_uSMenq_2(1'b0),
.io_uSMenq_3(1'b0),
.io_sram_w_0_addrw(11'd0),
.io_sram_w_0_dataw(8'h0),
.io_sram_w_0_enw(1'b0),
.io_sram_w_1_addrw(11'd0),
.io_sram_w_1_dataw(8'h0),
.io_sram_w_1_enw(1'b0),
.io_sram_w_2_addrw(11'd0),
.io_sram_w_2_dataw(8'h0),
.io_sram_w_2_enw(1'b0),
.io_sram_w_3_addrw(11'd0),
.io_sram_w_3_dataw(8'h0),
.io_sram_w_3_enw(1'b0),
.io_sram_r_0_addrr(11'd0),
.io_sram_r_0_datar(),
.io_sram_r_0_enr(1'b0),
.io_sram_r_1_addrr(11'd0),
.io_sram_r_1_datar(),
.io_sram_r_1_enr(1'b0),
.io_sram_r_2_addrr(11'd0),
.io_sram_r_2_datar(),
.io_sram_r_2_enr(1'b0),
.io_sram_r_3_addrr(11'd0),
.io_sram_r_3_datar(),
.io_sram_r_3_enr(1'b0),
.io_modeSel(1'b0),
.io_req_valid(1'b0),
.io_req_bits_txAddr(15'h0),
.io_req_bits_rxAddr(15'h0),
.io_req_bits_length(12'd0),
.io_rsp_valid(),
.io_rsp_bits_isError(),
.io_rsp_bits_length()
);
ShinTop s_ShinTop_slv1(
.clock(clock),
.reset(reset),
.io_downIn_ready (io_down_ready[1]),
.io_downIn_valid (io_down_valid[1]),
.io_downIn_bits_tdata (io_down_bits_tdata[15:8]),
.io_downIn_bits_tlast (io_down_bits_tlast[1]),
.io_downIn_bits_tuser (io_down_bits_tuser[1]),
.io_downOut_ready (io_down_ready[2]),
.io_downOut_valid (io_down_valid[2]),
.io_downOut_bits_tdata(io_down_bits_tdata[23:16]),
.io_downOut_bits_tlast(io_down_bits_tlast[2]),
.io_downOut_bits_tuser(io_down_bits_tuser[2]),
.io_upIn_ready (io_up_ready[2]),
.io_upIn_valid (io_up_valid[2]),
.io_upIn_bits_tdata (io_up_bits_tdata[23:16]),
.io_upIn_bits_tlast (io_up_bits_tlast[2]),
.io_upIn_bits_tuser (io_up_bits_tuser[2]),
.io_upOut_ready (io_up_ready[1]),
.io_upOut_valid (io_up_valid[1]),
.io_upOut_bits_tdata (io_up_bits_tdata[15:8]),
.io_upOut_bits_tlast (io_up_bits_tlast[1]),
.io_upOut_bits_tuser (io_up_bits_tuser[1]),
.io_timeStamp(timeStamp),
.io_dSMdeq_0(1'b0),
.io_dSMdeq_1(1'b0),
.io_dSMdeq_2(1'b0),
.io_dSMdeq_3(1'b0),
.io_uSMenq_0(1'b0),
.io_uSMenq_1(1'b0),
.io_uSMenq_2(1'b0),
.io_uSMenq_3(1'b0),
.io_sram_w_0_addrw(11'd0),
.io_sram_w_0_dataw(8'h0),
.io_sram_w_0_enw(1'b0),
.io_sram_w_1_addrw(11'd0),
.io_sram_w_1_dataw(8'h0),
.io_sram_w_1_enw(1'b0),
.io_sram_w_2_addrw(11'd0),
.io_sram_w_2_dataw(8'h0),
.io_sram_w_2_enw(1'b0),
.io_sram_w_3_addrw(11'd0),
.io_sram_w_3_dataw(8'h0),
.io_sram_w_3_enw(1'b0),
.io_sram_r_0_addrr(11'd0),
.io_sram_r_0_datar(),
.io_sram_r_0_enr(1'b0),
.io_sram_r_1_addrr(11'd0),
.io_sram_r_1_datar(),
.io_sram_r_1_enr(1'b0),
.io_sram_r_2_addrr(11'd0),
.io_sram_r_2_datar(),
.io_sram_r_2_enr(1'b0),
.io_sram_r_3_addrr(11'd0),
.io_sram_r_3_datar(),
.io_sram_r_3_enr(1'b0),
.io_modeSel(1'b0),
.io_req_valid(1'b0),
.io_req_bits_txAddr(15'h0),
.io_req_bits_rxAddr(15'h0),
.io_req_bits_length(12'd0),
.io_rsp_valid(),
.io_rsp_bits_isError(),
.io_rsp_bits_length()
);
ShinTop s_ShinTop_slv2(
.clock(clock),
.reset(reset),
.io_downIn_ready (io_down_ready[2]),
.io_downIn_valid (io_down_valid[2]),
.io_downIn_bits_tdata (io_down_bits_tdata[23:16]),
.io_downIn_bits_tlast (io_down_bits_tlast[2]),
.io_downIn_bits_tuser (io_down_bits_tuser[2]),
.io_downOut_ready (io_down_ready[3]),
.io_downOut_valid (io_down_valid[3]),
.io_downOut_bits_tdata(io_down_bits_tdata[31:24]),
.io_downOut_bits_tlast(io_down_bits_tlast[3]),
.io_downOut_bits_tuser(io_down_bits_tuser[3]),
.io_upIn_ready (io_up_ready[3]),
.io_upIn_valid (io_up_valid[3]),
.io_upIn_bits_tdata (io_up_bits_tdata[31:24]),
.io_upIn_bits_tlast (io_up_bits_tlast[3]),
.io_upIn_bits_tuser (io_up_bits_tuser[3]),
.io_upOut_ready (io_up_ready[2]),
.io_upOut_valid (io_up_valid[2]),
.io_upOut_bits_tdata (io_up_bits_tdata[31:24]),
.io_upOut_bits_tlast (io_up_bits_tlast[2]),
.io_upOut_bits_tuser (io_up_bits_tuser[2]),
.io_timeStamp(timeStamp),
.io_dSMdeq_0(1'b0),
.io_dSMdeq_1(1'b0),
.io_dSMdeq_2(1'b0),
.io_dSMdeq_3(1'b0),
.io_uSMenq_0(1'b0),
.io_uSMenq_1(1'b0),
.io_uSMenq_2(1'b0),
.io_uSMenq_3(1'b0),
.io_sram_w_0_addrw(11'd0),
.io_sram_w_0_dataw(8'h0),
.io_sram_w_0_enw(1'b0),
.io_sram_w_1_addrw(11'd0),
.io_sram_w_1_dataw(8'h0),
.io_sram_w_1_enw(1'b0),
.io_sram_w_2_addrw(11'd0),
.io_sram_w_2_dataw(8'h0),
.io_sram_w_2_enw(1'b0),
.io_sram_w_3_addrw(11'd0),
.io_sram_w_3_dataw(8'h0),
.io_sram_w_3_enw(1'b0),
.io_sram_r_0_addrr(11'd0),
.io_sram_r_0_datar(),
.io_sram_r_0_enr(1'b0),
.io_sram_r_1_addrr(11'd0),
.io_sram_r_1_datar(),
.io_sram_r_1_enr(1'b0),
.io_sram_r_2_addrr(11'd0),
.io_sram_r_2_datar(),
.io_sram_r_2_enr(1'b0),
.io_sram_r_3_addrr(11'd0),
.io_sram_r_3_datar(),
.io_sram_r_3_enr(1'b0),
.io_modeSel(1'b0),
.io_req_valid(1'b0),
.io_req_bits_txAddr(15'h0),
.io_req_bits_rxAddr(15'h0),
.io_req_bits_length(12'd0),
.io_rsp_valid(),
.io_rsp_bits_isError(),
.io_rsp_bits_length()
);
ShinTop s_ShinTop_slv3(
.clock(clock),
.reset(reset),
.io_downIn_ready (io_down_ready[3]),
.io_downIn_valid (io_down_valid[3]),
.io_downIn_bits_tdata (io_down_bits_tdata[31:24]),
.io_downIn_bits_tlast (io_down_bits_tlast[3]),
.io_downIn_bits_tuser (io_down_bits_tuser[3]),
.io_downOut_ready (1'b0),
.io_downOut_valid (),
.io_downOut_bits_tdata(),
.io_downOut_bits_tlast(),
.io_downOut_bits_tuser(),
.io_upIn_ready (),
.io_upIn_valid (1'b0),
.io_upIn_bits_tdata (8'd0),
.io_upIn_bits_tlast (1'b0),
.io_upIn_bits_tuser (1'b0),
.io_upOut_ready (io_up_ready[3]),
.io_upOut_valid (io_up_valid[3]),
.io_upOut_bits_tdata (io_up_bits_tdata[31:24]),
.io_upOut_bits_tlast (io_up_bits_tlast[3]),
.io_upOut_bits_tuser (io_up_bits_tuser[3]),
.io_timeStamp(timeStamp),
.io_dSMdeq_0(1'b0),
.io_dSMdeq_1(1'b0),
.io_dSMdeq_2(1'b0),
.io_dSMdeq_3(1'b0),
.io_uSMenq_0(1'b0),
.io_uSMenq_1(1'b0),
.io_uSMenq_2(1'b0),
.io_uSMenq_3(1'b0),
.io_sram_w_0_addrw(11'd0),
.io_sram_w_0_dataw(8'h0),
.io_sram_w_0_enw(1'b0),
.io_sram_w_1_addrw(11'd0),
.io_sram_w_1_dataw(8'h0),
.io_sram_w_1_enw(1'b0),
.io_sram_w_2_addrw(11'd0),
.io_sram_w_2_dataw(8'h0),
.io_sram_w_2_enw(1'b0),
.io_sram_w_3_addrw(11'd0),
.io_sram_w_3_dataw(8'h0),
.io_sram_w_3_enw(1'b0),
.io_sram_r_0_addrr(11'd0),
.io_sram_r_0_datar(),
.io_sram_r_0_enr(1'b0),
.io_sram_r_1_addrr(11'd0),
.io_sram_r_1_datar(),
.io_sram_r_1_enr(1'b0),
.io_sram_r_2_addrr(11'd0),
.io_sram_r_2_datar(),
.io_sram_r_2_enr(1'b0),
.io_sram_r_3_addrr(11'd0),
.io_sram_r_3_datar(),
.io_sram_r_3_enr(1'b0),
.io_modeSel(1'b0),
.io_req_valid(1'b0),
.io_req_bits_txAddr(15'h0),
.io_req_bits_rxAddr(15'h0),
.io_req_bits_length(12'd0),
.io_rsp_valid(),
.io_rsp_bits_isError(),
.io_rsp_bits_length()
);
always @(posedge clock) begin
timeStamp <= timeStamp + 64'd1;
end
initial begin
clock = 0;
reset = 0;
#100
reset <= 1;
#100
reset <= 0;
#1000000
$display("Time Out !!!");
$stop;
end
initial begin
forever begin #10 clock <= ~clock; end
end
initial
begin
$dumpfile("./tb/build/wave.vcd"); //生成的vcd文件名称
$dumpvars(0, ShinTopTb);//tb模块名称
end
reg [7:0] dataBuf[0:2047];
initial begin
dataBuf[0] = 8'h00;
dataBuf[1] = 8'ha0;//heeader length 10
dataBuf[2] = 8'h00;
dataBuf[3] = 8'h00;
//子报文
//设置顺序地址
dataBuf[4] = 8'h0; //设备索引
dataBuf[5] = 8'h0; //设备索引、类型
dataBuf[6] = $random; //地址
dataBuf[7] = $random; //地址
dataBuf[8] = 8'hd0; //命令d 负载长度2
dataBuf[9] = 8'd02; //负载长度2
dataBuf[10] = 8'h0; //工作计数0
dataBuf[11] = 8'h0; //工作计数0
dataBuf[12] = 8'h0; //负载
dataBuf[13] = 8'h0; //负载
end
// for( integer i = 0; i < 8; i = i + 1 ) begin
// if( i != 5 ) begin
// dataBuf[3 + 64 * i + 0] = $random;
// dataBuf[3 + 64 * i + 1] = $random;
// dataBuf[3 + 64 * i + 2] = $random;
// dataBuf[3 + 64 * i + 3] = $random;
// dataBuf[3 + 64 * i + 4] = 8'h0;
// dataBuf[3 + 64 * i + 5] = 8'd56;
// dataBuf[3 + 64 * i + 6] = $random;
// dataBuf[3 + 64 * i + 7] = $random;
// end
// end
initial begin
#1000
for( integer i = 0; i < 14; i = i + 1 ) begin
@(posedge clock) #3
sram_w_0_enw = 1'b1;
sram_w_0_addrw = i;
sram_w_0_dataw = dataBuf[i];
end
@(posedge clock) #3
sram_w_0_enw = 1'b0;
sram_w_0_addrw = 15'h0;
sram_w_0_dataw = 8'h0;
@(posedge clock) #3
txCmf = 1'b1;
@(posedge clock) #3
txCmf = 1'b0;
@(posedge clock) #3
req_valid = 1'b1;
req_bits_txAddr = 0;
req_bits_rxAddr = 0;
req_bits_length = 14;
@(posedge clock) #3
req_valid = 1'b0;
end
// always @(posedge clock) begin
// end
// initial begin
// #1000
// s_ShinTop.slaveParser.localDevIndex = 3; //强制设备索引为3测试子报文操作
// //主帧头
// @(posedge clock) #3
// io_downIn_valid = 1;
// io_downIn_bits_tdata = 8'h20;
// @( io_downIn_valid & io_downIn_ready)
// @(posedge clock) #3
// io_downIn_valid = 1;
// io_downIn_bits_tdata = 8'h00; //heeader length 512
// @(posedge clock) #3
// io_downIn_valid = 1;
// io_downIn_bits_tdata = 8'h00;
// @(posedge clock) #3
// io_downIn_valid = 1;
// io_downIn_bits_tdata = 8'h00;
// //子报文
// for( integer i = 0; i < 8; i = i + 1 ) begin
// if( i != 5 ) begin
// @(posedge clock) #3
// io_downIn_valid = 1;
// io_downIn_bits_tdata = $random;
// @(posedge clock) #3
// io_downIn_valid = 1;
// io_downIn_bits_tdata = $random;
// @(posedge clock) #3
// io_downIn_valid = 1;
// io_downIn_bits_tdata = $random;
// @(posedge clock) #3
// io_downIn_valid = 1;
// io_downIn_bits_tdata = $random;
// @(posedge clock) #3
// io_downIn_valid = 1;
// io_downIn_bits_tdata = 8'h0;
// @(posedge clock) #3
// io_downIn_valid = 1;
// io_downIn_bits_tdata = 8'd56;
// @(posedge clock) #3
// io_downIn_valid = 1;
// io_downIn_bits_tdata = $random;
// @(posedge clock) #3
// io_downIn_valid = 1;
// io_downIn_bits_tdata = $random;
// for( integer j = 0; j < 64-8; j = j+ 1 ) begin
// @(posedge clock) #3
// io_downIn_valid = 1;
// io_downIn_bits_tdata = 8'ha5; //heeader length 512
// end
// end else begin //第5个子报文操作
// @(posedge clock) #3
// io_downIn_valid = 1;
// io_downIn_bits_tdata = 8'h0;
// @(posedge clock) #3
// io_downIn_valid = 1;
// io_downIn_bits_tdata = 8'hC; //3号设备 类型空
// @(posedge clock) #3
// io_downIn_valid = 1;
// io_downIn_bits_tdata = 8'h08; //地址 //SM0
// @(posedge clock) #3
// io_downIn_valid = 1;
// io_downIn_bits_tdata = 8'h30; //地址 //偏置
// @(posedge clock) #3
// io_downIn_valid = 1;
// io_downIn_bits_tdata = 8'h30; //命令3 长度56
// @(posedge clock) #3
// io_downIn_valid = 1;
// io_downIn_bits_tdata = 8'd56; //长度56
// @(posedge clock) #3
// io_downIn_valid = 1;
// io_downIn_bits_tdata = $random; //工作计数
// @(posedge clock) #3
// io_downIn_valid = 1;
// io_downIn_bits_tdata = $random; //工作计数
// for( integer j = 0; j < 64-8; j = j+ 1 ) begin
// @(posedge clock) #3
// io_downIn_valid = 1;
// io_downIn_bits_tdata = 8'h55; //heeader length 512
// end
// end
// end
// @(posedge clock) #3
// io_downIn_valid = 1;
// io_downIn_bits_tdata = $random;
// io_downIn_bits_tlast = 0;
// io_downIn_bits_tuser = 0;
// @(posedge clock) #3
// io_downIn_valid = 1;
// io_downIn_bits_tdata = $random;
// io_downIn_bits_tlast = 0;
// io_downIn_bits_tuser = 0;
// @(posedge clock) #3
// io_downIn_valid = 1;
// io_downIn_bits_tdata = $random;
// io_downIn_bits_tlast = 0;
// io_downIn_bits_tuser = 0;
// @(posedge clock) #3
// io_downIn_valid = 1;
// io_downIn_bits_tdata = $random;
// io_downIn_bits_tlast = 1;
// io_downIn_bits_tuser = 0;
// @(posedge clock) #3
// io_downIn_valid = 0;
// io_downIn_bits_tlast = 0;
// #1000
// #1000
// #1000
// #1000
// @(posedge clock) #3
// io_upIn_valid = 1;
// io_upIn_bits_tdata = 8'h20;
// @( io_upIn_valid & io_upIn_ready)
// @(posedge clock) #3
// io_upIn_valid = 1;
// io_upIn_bits_tdata = 8'h00; //heeader length 512
// @(posedge clock) #3
// io_upIn_valid = 1;
// io_upIn_bits_tdata = 8'h00; //heeader frameInfo
// @(posedge clock) #3
// io_upIn_valid = 1;
// io_upIn_bits_tdata = 8'h00; //heeader frameInfo
// for( integer i = 0; i < 8; i = i + 1 ) begin
// if( i != 5 ) begin
// @(posedge clock) #3
// io_upIn_valid = 1;
// io_upIn_bits_tdata = $random;
// @(posedge clock) #3
// io_upIn_valid = 1;
// io_upIn_bits_tdata = $random;
// @(posedge clock) #3
// io_upIn_valid = 1;
// io_upIn_bits_tdata = $random;
// @(posedge clock) #3
// io_upIn_valid = 1;
// io_upIn_bits_tdata = $random;
// @(posedge clock) #3
// io_upIn_valid = 1;
// io_upIn_bits_tdata = 8'h0;
// @(posedge clock) #3
// io_upIn_valid = 1;
// io_upIn_bits_tdata = 8'd56;
// @(posedge clock) #3
// io_upIn_valid = 1;
// io_upIn_bits_tdata = $random;
// @(posedge clock) #3
// io_upIn_valid = 1;
// io_upIn_bits_tdata = $random;
// for( integer j = 0; j < 64-8; j = j+ 1 ) begin
// @(posedge clock) #3
// io_upIn_valid = 1;
// io_upIn_bits_tdata = 8'ha5; //heeader length 512
// end
// end else begin //第5个子报文操作
// // io_sram_r_datar = 8'hec;
// @(posedge clock) #3
// io_upIn_valid = 1;
// io_upIn_bits_tdata = 8'h0;
// @(posedge clock) #3
// io_upIn_valid = 1;
// io_upIn_bits_tdata = 8'hC; //3号设备 类型空
// @(posedge clock) #3
// io_upIn_valid = 1;
// io_upIn_bits_tdata = 8'h10; //地址SM1
// @(posedge clock) #3
// io_upIn_valid = 1;
// io_upIn_bits_tdata = 8'h10; //地址偏置
// @(posedge clock) #3
// io_upIn_valid = 1;
// io_upIn_bits_tdata = 8'h30; //命令3 长度56
// @(posedge clock) #3
// io_upIn_valid = 1;
// io_upIn_bits_tdata = 8'd56; //长度56
// @(posedge clock) #3
// io_upIn_valid = 1;
// io_upIn_bits_tdata = $random; //工作计数
// @(posedge clock) #3
// io_upIn_valid = 1;
// io_upIn_bits_tdata = $random; //工作计数
// for( integer j = 0; j < 64-8; j = j+ 1 ) begin
// @(posedge clock) #3
// io_upIn_valid = 1;
// io_upIn_bits_tdata = 8'h55; //heeader length 512
// end
// end
// end
// @(posedge clock) #3
// io_upIn_valid = 1;
// io_upIn_bits_tdata = $random;
// io_upIn_bits_tlast = 0;
// io_upIn_bits_tuser = 0;
// @(posedge clock) #3
// io_upIn_valid = 1;
// io_upIn_bits_tdata = $random;
// io_upIn_bits_tlast = 0;
// io_upIn_bits_tuser = 0;
// @(posedge clock) #3
// io_upIn_valid = 1;
// io_upIn_bits_tdata = $random;
// io_upIn_bits_tlast = 0;
// io_upIn_bits_tuser = 0;
// @(posedge clock) #3
// io_upIn_valid = 1;
// io_upIn_bits_tdata = $random;
// io_upIn_bits_tlast = 1;
// io_upIn_bits_tuser = 0;
// @(posedge clock) #3
// io_upIn_valid = 0;
// io_upIn_bits_tlast = 0;
// end
endmodule