目录
数据手册
- Drivers / Libraries
- W5300用户数据手册
- DHCP从路由器获取动态IP地址 的官方示例代码
- 野火【以太网_W5500】模块视频教程
- 野火资料中心代码
- HR601680 网口变压器
- W5500独立变压器参考电路
- HRW5500TE数据手册
硬件资料
5500控制代码
DHCP
TCPSERVER
TCPClient
UDP
DNS
SMTP
HTTPSERVER
HTTPClient
NETBIOS
NTP
PING
FPGA交互控制
- Section 6 包含有关与 FPGA接口的数据总线的信息。这是一个并行数据总线,具有一些控件 (片选、中断、读写) 和一个地址输入;它不是 SPI 总线。它还具有一些模式(直接/间接),可用于以延迟为代价减少总线的引脚数。Timing diagrams 可以在本节末尾找到。 这种设置的前提是你对总线进行 write/read,就像从 memory device 写入 / 读取一样。此设备的内存映射可以在第2和第3部分找到。 传输时,写入内存的数据区并发送发送请求。相反,在接收时,当收到有效数据并且您直接从 rx 数据缓冲区读取时,将发送读取请求(通过中断或轮询适当的标志)。第 4 节详细介绍了各个寄存器以及如何配置器件。最令人感兴趣的是 Socket 寄存器的细节。
直接模式
间接模式
Timing
READ
WRITE
WRITE的时序参数
参数 | 描述 | 最小值 (Min) | 最大值 (Max) |
---|---|---|---|
tADDRs | 地址建立时间,在/CS和/WR变低电平前,地址必须保持稳定的时间。 | - | 7 ns |
tADDRh | 地址保持时间,在/CS或/RD变高电平后,地址信号应持续有效的时间。 | - | - |
tCS | /CS低电平持续时间,即/CS信号需要维持低电平的最短时间。 | 50 ns | - |
tCSn | 下一次断言/CS的时间,即从当前/CS变高到下一次可以再次变低的最小间隔时间。 | 28 ns | - |
tWR | /WR低电平持续时间,即写信号需要维持低电平的最短时间。 | 50 ns | - |
tDATAs | 数据建立时间,在/WRITE信号变低之前,数据必须保持稳定的时间。 | 7 ns | - |
tDATAh | 数据保持时间,在/WRITE信号变高之后,数据应持续有效的时间。 | 7 ns | - |
- 可设定的
tDATAs
是主机写数据的建立时间(范围在7个PLL_CLK周期内)。这意味着当/WRITE信号变低后,数据必须在这段时间内保持稳定,以便W5300能够正确地读取这些数据。根据W5300的高性能互联网连接解决方案设置,tDATAs
的时间取决于模式寄存器(MR)中WDF2-WDF0位的设定值。
- W5300以太网控制器通信,清除相应的中断标志与写入数值代码示例:
// 假设已经定义了以下信号:
// input wire [7:0] Current_State;
// output reg CS, WR, RD;
// output reg [9:0] ADDR;
// output reg [15:0] DATA_Out;
// output reg [7:0] Next_State;
always @(posedge clk or negedge rst_n) begin
if (!rst_n) begin
// 复位时初始化所有输出信号
CS <= 1'b1;
WR <= 1'b1;
RD <= 1'b1;
ADDR <= 10'h0;
DATA_Out <= 16'h0;
Next_State <= 8'd0; // 从状态0开始
end else begin
case (Current_State)
8'd0: begin
CS <= 1'b0; // 激活片选
WR <= 1'b0; // 写操作准备
RD <= 1'b1; // 确保读使能高电平
ADDR <= 10'h206; // 设置地址为 SOCKET0 中断寄存器 (S0_IR)
DATA_Out <= 16'h0; // 数据总线清零
Next_State <= 8'd1; // 转移到下一个状态
end
8'd1: begin
CS <= 1'b1; // 取消片选
WR <= 1'b1; // 取消写操作
RD <= 1'b1; // 确保读使能高电平
ADDR <= 10'h0; // 地址总线清零
DATA_Out <= 16'h0; // 清除 S0_IR 寄存器中的中断标志
Next_State <= 8'd2; // 转移到下一个状态,即写入清除命令
end
8'd2: begin
CS <= 1'b0; // 激活片选
WR <= 1'b0; // 准备写操作
RD <= 1'b1; // 确保读使能高电平
ADDR <= 10'h206; // 设置地址为 SOCKET0 中断寄存器 (S0_IR)
DATA_Out <= 16'hFFFF;// 写入值
Next_State <= 8'd3; // 转移到下一个状态
end
8'd3: begin
CS <= 1'b1; // 取消片选
WR <= 1'b1; // 取消写操作
RD <= 1'b1; // 确保读使能高电平
ADDR <= 10'h0; // 地址总线清零
DATA_Out <= 16'h0; // 数据总线清零
Next_State <= 8'd10; // 转移到最终状态或下一任务
end
default: begin
// 默认情况下保持当前状态或跳转到空闲状态
Next_State <= 8'd10;
end
endcase
end
end