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设置是否有问题,保障在同一个网段中。
浙公网安备 33010602011771号