6. 我们这次代码主要是摄像头部分,接口有I2C接口,8位并口
由于代码比较多,主要说下接口定义,关于内部实现可能篇幅太大了。
下面是I2C接口的部分。
//MAX9526低功耗视频解码器将NTSC或PAL复合视频信号转换成8位或10位YCbCr分量视频
module iic_ctrl(
clk,rst_n,
tiic_en,tiic_ab,tiic_db,
scl,sda
);
input clk; // 50MHz主时钟
input rst_n; //低电平复位信号
input tiic_en; //需要通过IIC接口配置MAX9526使能信号,高电平有效
input[7:0] tiic_ab; //需要通过IIC接口配置MAX9526地址
input[15:0] tiic_db; //需要通过IIC接口配置MAX9526数据
output scl; //串行配置IIC时钟信号
inout sda; //串行配置IIC数据信号
//下面是8位并口的数据
module video_ctrl(
clk,rst_n,
vpclk,vvsync,vhref,vdb,
wrf_din,wrf_wrreq
);
input clk; //系统时钟,25MHz
input rst_n; //复位信号,低电平有效
//视频输入接口
input vpclk; //视频时钟
input vvsync; //视频场同步信号
input vhref; //视频行同步信号
input[7:0] vdb; //视频数据总线
//wrFIFO输入控制接口
output[15:0] wrf_din; //sdram数据写入缓存FIFO输入数据总线
output wrf_wrreq; //sdram数据写入缓存FIFO数据输入请求,高有效
7. 摄像头数据保存在哪里? 读到的数据会暂时保存在这个队列里面缓冲,然后再把数据全部写到SDRAM里面。
video_fifo uut_videofifo(
.aclr(v_clr),
.data(vdb),
.rdclk(clk),
.rdreq(vf_rdreq),
.wrclk(vpclk),
.wrreq(vhref),
.q({wrf_din[7:0],wrf_din[15:8]}), //input first--LSB,input second--MSB
.rdusedw(vf_rduse)
);
8. 总结,本次很多参考了特权的资料,因为我以前也没搞过,借此机会学习一下。
目前我只有摄像头,只是把摄像头数据可以保存下来,通过quartus工具查看有没有数据,因为目前还没接LCD,这 是下一步的计划。
这次收获很大,流程搞懂,代码也熟悉起来了。有时间我会把怎么查看数据截下图。