打怪升级之AD9226的以太网控制驱动

AD9226的一些特点

按说明书的说法:AD9226的特点是上升沿周期采样,前8个周期采样数据无效,数据输入反向。见下图:

打怪升级之AD9226的以太网控制驱动_第1张图片

由于data_out的特殊性质,我们最好在上升沿开始采样,并交给fifo存储后发送给以太网。

以太网的接收、发送

使用提供的以太网代码或者其他方式可以实现以太网的接收。以太网端口将以太网信号整理成为32位数据、写脉冲信号、读取结束信号三个标志。

发送也是一样的结构,由fifo相关的读脉冲信号、32位读脉冲数据和开始读信号三个标志。

module  ethernet_udp_rmii
(
	input   wire            sys_rst_n       ,   //系统复位,低电平有效
	input   wire            eth_clk         ,   //PHY芯片时钟信号
	input   wire            eth_rxdv_r      ,   //PHY芯片输入数据有效信号
	input   wire    [1:0]   eth_rx_data_r   ,   //PHY芯片输入数据
	input   wire   [31:0]   send_data       ,   //发送数据
	input   wire            eth_en			,	//开始发送信号
	input   wire   [15:0]   send_length     ,	//发送数据长度

	output  wire			eth_end				,		//接收终止信号
	output  wire			eth_fifo_read_clk 	,		//读FIFO时钟
	output  wire 			eth_fifo_read_req 	,		//读FIFO请求
	output  wire 			eth_fifo_write_clk	,		//写FIFO时钟
	output  wire 			eth_fifo_write_req	,		//写FIFO请求
	output  wire	[31:0]	rec_data        	,   	//接收数据
	output  wire			eth_tx_en_r     	,   	//PHY芯片输出数据有效信号
	output  wire	[1:0]	eth_tx_data_r   	,   	//PHY芯片输出数据
	output  wire			eth_rst_n           		//PHY芯片复位信号,低电平有效
);

以太网接收包头判定部件

我们可以使用一个内置的32位数据,在读取到来自以太网的第一次数据时判断是否需要输出这一数据线下的内容,并在eth_end信号到来时回复初始状态。

module ETH_CTRL
#(
parameter address = 32'd10
)
(
input wire eth_end,
input wire sys_rst_n,
input wire eth_ctrl_fifo_write_clk_in,
input wire eth_ctrl_fifo_write_req_in,
input wire [31:0] eth_ctrl_fifo_write_data_in,

output wire eth_ctrl_fifo_write_clk_out,
output wire eth_ctrl_fifo_write_req_out,
output wire [31:0] eth_ctrl_fifo_write_data_out
);

其中,参数address用来判断第一个数据是什么,如果第一个数据符合,则把剩下的数据输出出去。

打怪升级之AD9226的以太网控制驱动_第2张图片

就像这样,实现了对输入的判断与输出。并且保证了回复到完整的原来状态。

你可能感兴趣的:(单片机,嵌入式硬件)