@@ -10,65 +10,346 @@ module ShinTopTb(
wire io_downIn _ready ;
reg io_downIn _valid = 0 ;
reg [ 7 : 0 ] io_downIn _bits_tdata = 0 ;
reg io_downIn _bits_tlast = 0 ;
reg io_downIn _bits_tuser = 0 ;
reg io_downOut_ready = 1 ;
wire io_downOut_valid ;
wire [ 7 : 0 ] io_downOut_bits_tdata ;
wire io_downOut_bits_tlast ;
wire io_downOut_bits_tuser ;
wire io_upIn_ready ;
reg io_upIn_valid = 0 ;
reg [ 7 : 0 ] io_upIn_bits_tdata = 0 ;
reg io_upIn_bits_tlast = 0 ;
reg io_upIn_bits_tuser = 0 ;
reg io_upOut_ready = 1 ;
wire io_upOut_valid ;
wire [ 7 : 0 ] io_upOut_bits_tdata ;
wire io_upOut_bits_tlast ;
wire io_upOut_bits_tuser ;
wire [ 3 : 0 ] io_down_ready ;
wi re [ 3 : 0 ] io_down_valid ;
wi re [ 31 : 0 ] io_down_bits_tdata ;
wi re [ 3 : 0 ] io_down_bits_tlast ;
wi re [ 3 : 0 ] io_down_bits_tuser ;
reg [ 6 3: 0 ] timeStamp = 0 ;
wi re [ 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 (
ShinTop s_ShinTop_Mst (
. clock ( clock ) ,
. reset ( reset ) ,
. io_downIn_ready ( io_downIn_ready ),
. io_downIn_valid ( io_downIn_valid ) ,
. io_downIn_bits_tdata ( io_downIn_bits_tdata ) ,
. io_downIn_bits_tlast ( io_downIn_bits_tlast ) ,
. io_downIn_bits_tuser ( io_downIn_bits_tuser ) ,
. io_downOut_ready ( io_downOut _ready ) ,
. io_downOut_valid ( io_downOut _valid ) ,
. io_downOut_bits_tdata ( io_downOut _bits_tdata ) ,
. io_downOut_bits_tlast ( io_downOut _bits_tlast ) ,
. io_downOut_bits_tuser ( io_downOut _bits_tuser ) ,
. io_upIn_ready ( io_upIn _ready ) ,
. io_upIn_valid ( io_upIn _valid ) ,
. io_upIn_bits_tdata ( io_upIn _bits_tdata ) ,
. io_upIn_bits_tlast ( io_upIn _bits_tlast ) ,
. io_upIn_bits_tuser ( io_upIn _bits_tuser ) ,
. io_upOut_ready ( io_upOut_ready ) ,
. io_upOut_valid ( io_upOut_valid ),
. io_upOut_bits_tdata ( io_upOut_bits_tdata ),
. io_upOut_bits_tlast ( io_upOut_bits_tlast ),
. io_upOut_bits_tuser ( io_upOut_bits_tuser ),
. 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 ) ,
@@ -175,294 +456,353 @@ end
reg [ 7 : 0 ] testDownData [ 0 : 1000 ] ;
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
testDownData [ 0 ] = 8'hde ;
testDownData [ 1 ] = 8'h0e ;
# 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
// reg [ 11 : 0 ] testDownDataCnt = 0 ;
// always @ ( posedge clock ) begin
// end
initial begin
# 1000
// initial begin
// # 1000
s_ShinTop . slaveParser . localDevIndex = 3 ; // 强制设备索引为3 , 测试子报文操作
// s_ShinTop . slaveParser . localDevIndex = 3 ; // 强制设备索引为3 , 测试子报文操作
// 主帧头
@ ( posedge clock ) # 3
io_downIn_valid = 1 ;
io_downIn_bits_tdata = 8'h20 ;
// // 主帧头
// @ ( posedge clock ) # 3
// io_downIn_valid = 1 ;
// io_downIn_bits_tdata = 8'h20 ;
@ ( io_downIn_valid & io_downIn_ready )
// @ ( 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 ; // 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 ;
@ ( 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 ;
// // 子报文
// 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 = $ 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'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 = 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 ;
@ ( 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 ;
// 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'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'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 ; // 地址 // 偏置
@ ( 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'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 = 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 ; // 工作计数
@ ( 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
// 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 = 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 = 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 ;
// @ ( posedge clock ) # 3
// io_downIn_valid = 0 ;
// io_downIn_bits_tlast = 0 ;
# 1000
# 1000
# 1000
# 1000
// # 1000
// # 1000
// # 1000
// # 1000
@ ( posedge clock ) # 3
io_upIn_valid = 1 ;
io_upIn_bits_tdata = 8'h20 ;
// @ ( posedge clock ) # 3
// io_upIn_valid = 1 ;
// io_upIn_bits_tdata = 8'h20 ;
@ ( io_upIn_valid & io_upIn_ready )
// @ ( 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 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
@ ( 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 ;
// 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 = $ 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'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 = 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 ;
@ ( 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 ;
// 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'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 ; // 地址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'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'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 = 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 ; // 工作计数
@ ( 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
// 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 = 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 = 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
// @ ( posedge clock ) # 3
// io_upIn_valid = 0 ;
// io_upIn_bits_tlast = 0 ;
// end