Files
eb001/tb/shinTest/ShinTopTb.v

812 lines
19 KiB
Coq
Raw Normal View History

2025-04-25 17:00:51 +08:00
`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;
2025-04-25 17:00:51 +08:00
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;
2025-04-25 17:00:51 +08:00
reg [63:0] timeStamp = 0;
2025-04-25 17:00:51 +08:00
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;
2025-04-25 17:00:51 +08:00
reg req_valid = 1'b0;
reg [14:0] req_bits_txAddr;
reg [14:0] req_bits_rxAddr;
reg [11:0] req_bits_length;
2025-04-25 17:00:51 +08:00
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),
2025-04-25 17:00:51 +08:00
.io_modeSel(1'b0),
2025-04-25 17:00:51 +08:00
.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()
);
2025-04-27 16:56:35 +08:00
ShinTop s_ShinTop_slv2(
.clock(clock),
.reset(reset),
2025-04-27 16:56:35 +08:00
.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),
2025-04-27 16:56:35 +08:00
.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),
2025-04-27 16:56:35 +08:00
.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(
2025-04-25 17:00:51 +08:00
.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]),
2025-04-25 17:00:51 +08:00
.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(),
2025-04-27 16:56:35 +08:00
.io_sram_r_3_enr(1'b0),
.io_modeSel(1'b0),
2025-04-25 17:00:51 +08:00
2025-04-27 16:56:35 +08:00
.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()
2025-04-25 17:00:51 +08:00
);
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];
2025-04-25 17:00:51 +08:00
initial begin
dataBuf[0] = 8'h00;
dataBuf[1] = 8'ha0;//heeader length 10
dataBuf[2] = 8'h00;
dataBuf[3] = 8'h00;
2025-04-25 17:00:51 +08:00
//子报文
//设置顺序地址
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
2025-04-25 17:00:51 +08:00
dataBuf[12] = 8'h0; //负载
dataBuf[13] = 8'h0; //负载
end
2025-04-25 17:00:51 +08:00
// 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
2025-04-25 17:00:51 +08:00
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];
2025-04-25 17:00:51 +08:00
end
@(posedge clock) #3
sram_w_0_enw = 1'b0;
sram_w_0_addrw = 15'h0;
sram_w_0_dataw = 8'h0;
2025-04-25 17:00:51 +08:00
@(posedge clock) #3
txCmf = 1'b1;
@(posedge clock) #3
txCmf = 1'b0;
2025-04-25 17:00:51 +08:00
@(posedge clock) #3
req_valid = 1'b1;
req_bits_txAddr = 0;
req_bits_rxAddr = 0;
req_bits_length = 14;
2025-04-25 17:00:51 +08:00
@(posedge clock) #3
req_valid = 1'b0;
end
// always @(posedge clock) begin
// end
2025-04-25 17:00:51 +08:00
// initial begin
// #1000
2025-04-25 17:00:51 +08:00
// s_ShinTop.slaveParser.localDevIndex = 3; //强制设备索引为3测试子报文操作
2025-04-25 17:00:51 +08:00
// //主帧头
// @(posedge clock) #3
// io_downIn_valid = 1;
// io_downIn_bits_tdata = 8'h20;
// @( io_downIn_valid & io_downIn_ready)
2025-04-25 17:00:51 +08:00
// @(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;
2025-04-25 17:00:51 +08:00
// @(posedge clock) #3
// io_downIn_valid = 1;
// io_downIn_bits_tdata = $random;
2025-04-25 17:00:51 +08:00
// @(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
2025-04-25 17:00:51 +08:00
endmodule