81 lines
2.4 KiB
Markdown
81 lines
2.4 KiB
Markdown
|
|
# 功能分析
|
|||
|
|
|
|||
|
|
## 原先
|
|||
|
|
|
|||
|
|
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
|
|||
|
|
|
|||
|
|

|
|||
|
|
|
|||
|
|
成功!
|