By:liu guo qing
4. CMD_wr_rd_out:在该状态需要判断rd_CMD_fifo读出来的数据是读W5300还是
写W5300,并根据判断的结果对W5300进行读写操作。
4.2.4 接口定义
4.3 主控制模块
主控制模块,eth main control 主要对初始化配置模块、SOCKETn驱动模块的分时控制。
4.3.1 实现状态机
下图4.3.1-1为主控制模块的实现状态机:
reset_waitreset_waithost_resethost_resethost_confighost_configHost_reg_gainHost_reg_gainmc_idlemc_idleHost_ir_detectHost_ir_detectS2_driver_procS2_driver_procIP_conflictIP_conflictS2_proc_judgeS2_proc_judgeApp_req_procApp_req_procS1_driver_procS1_driver_procS0_proc_judgeS0_proc_judgeS1_proc_judgeS1_proc_judgeS0_driver_procS0_driver_proc 图4.3.1-1 主控制模块的实现状态机
状态机各状态说明:
1. mc_idle : 状态机初始化,复位后后进入的状态,160ns后跳出。 2. host_reset:在该状态对W5300硬件复位,复位时间为为65536ns。 3. reset_wait:W5300复位后的等待状态,维持时间是1ms。
4. host_config:产生控制信号,驱动初始化配置模块对W5300进行参数配置。
5. host_reg_gain:W5300的相关寄存器的获取模块,获取W5300的中断寄存器和各
SOCKET的RSR寄存器。
6. host_ir_detect:对W5300中断寄存器的IPCF位判断。
7. ip_conflict:如果W5300中断寄存器的IPCF位置?1?,则状态机跳入该状态,表明
有网络中存在IP冲突。
21 / 27
By:liu guo qing
8. app_req_proc:对后端应用的请求做处理,产生各个SOCKET的mark寄存器,如
下表:
表4.3.1-1 Sn_MR寄存器 Sn_prc_mark[6:0] bit0 bit1 bit2 bit3 bit4 bit5 bit6 名称 Ir_req moni_ req Link_req Discon_req Close_req send_req Recv_req 说明 W5300的SOCKETn有中断标识 后端应用的监听请求 后端应用的链接请求 后端应用的断链请求 后端应用的关闭请求 后端应用的数据发送请求 W5300中有数据接收请求 9. Sn_proc_judge:对mark寄存器判断,如果不为?0?,则进入Sn_driver_proc状态。 10. Sn_driver_proc:产生控制信号,驱动SOCKET启动模块对mark寄存器中的请求做
相应处理。
4.3.2 接口定义
4.4 初始化配置模块
初始化配置模块,initial config 主要完成W5300的初始化参数的配置:本端IP、对端IP,子网掩码等,具体参数可参见2.2节。
4.4.1 实现状态机
下图4.4.1-1为初始化配置模块的实现状态机:
overall_configoverall_configConfig_idleConfig_idlesocket0_configsocket0_configConfig_turnConfig_turnsocket1_configsocket1_configsocket2_configsocket2_config
图4.4.1-1 初始化配置模块的实现状态机
状态机各状态说明:
1. config_idle:初始状态,等待主控模块的启动。
2. overall_config、socket0_config、socket1_config、socket2_config:参数配置状态,获
取模块端口上寄存的参数,并将参数转换成接口控制模块数据格式后写入TX_fifo
22 / 27
By:liu guo qing
中。
3. config_turn:配置结束状态,在该状态通知主控模块初始化配置已经完成。
4.4.2 接口定义
4.5 SOCKET驱动模块
SOCKETn 驱动模块,SOCKETn driver主要完成SOCKETn的监听、链接、断链、关闭和接收发送数据。
4.5.1 实现状态机
下图4.5.1-1为主控制模块的实现状态机:
Detect_SIRDetect_SIRDirver_idleDirver_idleSIR_procSIR_procDetect_openDetect_openOpen_procOpen_procClose_judgeClose_judgeDriver_turnDriver_turnClose_procClose_procDetect_moniDetect_moniDiscon_procDiscon_procDetect_disconDetect_disconDetect_linkDetect_linkMoni_procMoni_procSend_procSend_procDetect_sendDetect_sendDetect_recvDetect_recvLink_procLink_procRecv_procRecv_proc 图4.5.1-1 初始化配置模块的实现状态机
状态机各状态说明:
1. diver_idle:初始状态,等待主控模块的启动。 2. detect_SIR:检测mark寄存器的Ir_req位,如果该位为?1?,则状态机跳入SIR_proc
状态,如果为?0?,则状态机跳入detect_open状态。
3. SIR_proc:在该状态,将读取W5300的SOCKET的中断寄存器,根据中断寄存器
中的值,进行下一个状态的跳转。
4. Close_judge:进入该状态表明,驱动器需要对W5300的SOCKET进行关闭操作。
但在关闭前需要判断是否当前W5300是否处于可以关闭的状态。 5. Close_proc:在该状态进行SOCKET的关闭操作。 6. Detect_open、open_proc:在Detect_open状态检测mark寄存器的moni_req或link_req
位是否为?1?,如果条件成立,则状态机进入open_proc状态,对SOCKET进行open
23 / 27
By:liu guo qing
7. 8. 9. 10.
11. 12.
操作。
Detect_moni、moni_proc:在Detect_moni检测mark寄存器的moni_req位是否为?1?,如果成立,则状态机进入moni_proc状态,对SOCKET进行lensten操作。
Detect_link、link_proc:在Detect_link检测mark寄存器的link_req位是否为?1?,如果成立,则状态机进入link_proc状态,对SOCKET进行connect操作。
Detect_recv、recv_proc:在Detect_recv检测mark寄存器的recv_req位是否为?1?,如果成立,则状态机进入recv_proc状态,读取SOCKET中接收到的数据。 Detect_send、send_proc:在Detect_send检测mark寄存器的send_req位是否为?1?,如果成立,则状态机进入recv_proc状态,将待发送的数据依次写入SOCKET的发送寄存器中(写入的数据量不能超过SOCKET发送缓冲区的剩余空间)。
Detect_discon:在Detect_discon检测mark寄存器的discon_req位是否为?1?,如果成立,且当前COCKET没有数据正在发送,则可以进入discon_proc状态。 Discon_proc:断开链接处理状态,由detect_discon和close_judge进入。
4.5.2 接口定义
5 性能指标
5.1 支持SOCKET数以及协议
最多支持3个SOCKET,各个SOCKET彼此独立,没有响应优先级,仅支持TCP协议。
5.2 网络延时
去除组网结构以及网络干线上通信量的影响,传输延时≤50ms@20km。
注:如果后级应用只接收数据而不发送数据,将会造成网络无法通信或者传输延时很大的现象。
5.3 传输带宽
下表为W5300间的通信带宽测试数据:
表5.3-1 传输带宽测试数据 测试条件 SOCKET数量 1 3 S1 S0 S1 S2 缓存区深度 接收14 KB 接收25 KB 接收14 KB 接收25 KB 发送14 KB 发送25 KB 发送14 KB 发送25 KB 收发速率 下行85 Mbps 下行29 Mbps 下行26 Mbps 下行29 Mbps 上行85 Mbps 上行29 Mbps 上行26 Mbps 上行29 Mbps 下行84 Mbps 上行84 Mbps 测试结果 总带宽 下行85 Mbps 上行85 Mbps 24 / 27
By:liu guo qing
6 使用指南
6.1 接口说明
下表为W5300控制器的接口信号类表,表中包含了接口名称、接口位宽、接口方向和信号说明:
表6.1-1 接口信号说明
信号名 clk rstn SHAR_value GAR_value SIPR_value SUBR_value S0_DIPR_value S1_DIPR_value S2_DIPR_value par_config_req par_config_resp S0_moni_req S0_link_req S0_discon_req S0_moni_resp S0_link_resp S0_discon_resp S1_moni_req S1_link_req S1_discon_req S1_moni_resp S1_link_resp S1_discon_resp S2_moni_req S2_link_req S2_discon_req S2_moni_resp S2_link_resp S2_discon_resp S0_state S0_upward_flow S0_downward_flow S1_state 方向 Input Input Input Input Input Input Input Input Input Input Output Input Input Input Output Output Output Input Input Input Output Output Output Input Input Input Output Output Output Output Output Output Output 位宽 1bit 1bit 48bit 32bit 32bit 32bit 32bit 32bit 32bit 1bit 1bit 1bit 1bit 1bit 1bit 1bit 1bit 1bit 1bit 1bit 1bit 1bit 1bit 1bit 1bit 1bit 1bit 1bit 1bit 3bit 32bit 32bit 3bit 说明 W5300控制器的工作时钟,推荐100M或80M W5300控制器的复位时钟 MAC地址 网关 本机IP 子网掩码 SOCKET0的对端IP SOCKET1的对端IP SOCKET2的对端IP 应用端的参数配置配置请求 参数配置结束后的响应 应用端的对SOCKET0的监听请求 应用端的对SOCKET0的链接请求 应用端的对SOCKET0的断链请求 SOCKET0处于监听后返回响应 SOCKET0执行链接请求后返回响应 SOCKET0处于关闭状态后返回响应 应用端的对SOCKET1的监听请求 应用端的对SOCKET1的链接请求 应用端的对SOCKET1的断链请求 SOCKET1处于监听后返回响应 SOCKET1执行链接请求后返回响应 SOCKET1处于关闭状态后返回响应 应用端的对SOCKET2的监听请求 应用端的对SOCKET2的链接请求 应用端的对SOCKET2的断链请求 SOCKET2处于监听后返回响应 SOCKET2执行链接请求后返回响应 SOCKET2处于关闭状态后返回响应 SOCKET0状态寄存器,标识当前状态 SOCKET0当前的上行流量,1s更新 SOCKET0当前的下行流量,1s更新 SOCKET1状态寄存器,标识当前状态 25 / 27