2.4 KiB
功能分析
原先
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
成功!




