RTL8211千兆以太网传输视频,RTL8201百兆网传输视频验证,ov7670摄像头

先上图片

开发板使用7429开发板,主控fpga为alter intel的ep4ce6

资源

1、ep4ce10 fpga

2、hdmi视频接口

3、双20p接口

4、sdram  256Mbit

 

千兆以太网模块,rtl8211模块,完全兼容黑金管脚线序

组装效果

程序将实现,摄像头采集的视频传输到千兆以太网。

百兆以太网接线示意

 

使用c#编写上位机采集视频效果如下

 

接下来fpga开发验证

顶层接口设计

module top_7670_7429(
//global signal
input clk,
input rst_n,

//cmos1
output cam1_scl,
inout cam1_sda,
input cam1_vsync,
input cam1_hsync,
input cam1_pclk,
output cam1_xclk,

output cam1_pdown,
output cam1_reset,
input [7:0] cam1_data,



//ETHERNET Port
output E_RESET ,
input E_RXC,
input E_RXDV,
input [3:0] E_RXD,
input E_RXER,
input E_TXC,
output E_TXEN,
output [3:0] E_TXD,

//ETHERNET Port


output clk_25M,

//UART Port
input rxd,
output txd
);

cmos视频初始化设置

//----------CMOS------------
wire [7:0] cam_data_out;
wire cam_vsync_out;
wire cam_hsync_out;
I2C_AV_Config I2C_AV_Config_inst
(
.iCLK(clk_12M),
.iRST_N(rstn),
.I2C_SCLK(cam1_scl),
.I2C_SDAT(cam1_sda),
);
camera_if camera_if_inst
(
.clk(clk_12M) , // input clk_sig
.rst_n(rstn) , // input rst_n_sig

.rx_data(uart_rx_data),
.rx_done(rx_done),

.cam_scl() , // output cam1_scl
.cam_sda() , // inout cam1_sda
.cam_data(cam1_data) , // input [7:0] cam_data_sig
.cam_vsync(cam1_vsync) , // input cam_vsync_sig
.cam_hsync(cam1_hsync) , // input cam_hsync_sig
.cam_pclk(cam1_pclk) , // input cam_pclk_sig
.cam_xclk(cam1_xclk) , // output cam_xclk_sig

.cam_pdown(cam1_pdown) , // output cam_pdown_sig
.cam_reset(cam1_reset) , // output cam_reset_sig

.cam_data_out(cam_data_out),
.cam_vsync_out(cam_vsync_out),
.cam_hsync_out(cam_hsync_out),
.line_count(line_count),
.cam_en(1'b1) // input cam_en_sig
);
defparam camera_if_inst.IMG_H=640;

设置视频同步,第一行标志位建立

 

以太网传输部分代码

//-----------FIFO------------------

assign {datain[7:0],datain[15:8],datain[23:16],datain[31:24]} = fifo_q;

wrfifo0832 wrfifo_inst
(
.aclr(~rstn | cam_vsync_out) , // input aclr
.data(cam_data_out) , // input [15:0] data
.rdclk(~E_TXC) , // input rdclk
.rdreq(fifo_rd_en) , // input rdreq
.wrclk(cam1_pclk) , // input wrclk
.wrreq(cam_hsync_out) , // input wrreq
.q(fifo_q) , // output [63:0] q
.rdempty() , // output rdempty
.rdusedw(fifo_data_count), // output [6:0] rdusedw
.wrfull() , // output wrfull
.wrusedw() // output [8:0] wrusedw
);

ipsend ipsend_inst
(
.clk(E_TXC ) , // input clk
.txen(E_TXEN ) , // output txen
.txer() , // output txer
.dataout(E_TXD ) , // output [4:0] dataout
.rst_n(rstn ) , // input rst_n
.crc(crc ) , // input [31:0] crc
.crc_next(crc_next),
.crcen(crcen ) , // output crcen
.crcre(crcre ) , // output crcre
.datain(datain) , // input [31:0] datain 32'h12345678
.fifo_data_count(fifo_data_count ) , // input [10:0] fifo_data_count
.fifo_rd_en(fifo_rd_en ) , // output fifo_rd_en
.frame_index(frame_index ) , // input [10:0] frame_index
.tx_state(tx_state ) , // output [3:0] tx_state
.tx_data_length(tx_data_length ) , // input [15:0] tx_data_length
.tx_total_length(tx_total_length ) // input [15:0] tx_total_length
);

crc b2v_inst(
.Clk(E_TXC),
.Reset(crcre),
.Enable(crcen),
.Data(E_TXD),
.Crc(crc),
.CrcNext(crc_next)
);

 调试总结

百兆以太网模块具备速率自动判断,先插入网线,然后下载代码,即可正常运行。

如出现问题,检查网线是否为百兆网,ip设置是否有问题,保障在同一个网段中。

posted on 2025-04-14 22:53  层层惊涛  阅读(154)  评论(0)    收藏  举报