赞
踩
1、目的
项目需要设计一个多功能参数可变的cameralink相机视频接收机,接收到相机传过来的视频数据通过PCIE往上位机发。开始没有可供测试的相机,于是想着用FPGA模拟cameralink协议自行写一个视频发送机,用于对接自己的设计的cameralink视频接收机;采用两块FPGA板对接,用lvds差分信号传输数据;
发送机实现FPGA对视频数据的cameralink协议编码;
接收机实现FPGA对视频数据的cameralink协议解码;
接收到的数据是:portA,portB,portC,portD,portE,portF,portG,portH共八个端口的数据;
FPGA将8个端口的数据根据不同的传输模式进行重组,写入内存空间;上位机从内存读到数据以后显示出来。
CPU读取当前模式寄存器,确认当前cameralink工作模式;
CPU根据cameralink工作模式确定图像数据组合的方式;
2、设计架构图
base模式:一次性传3个像素 占用A,B,C共3个端口
midium模式:一次性传6个像素 占用A,B,C,D,E,F共6个端口
full模式:一次性传8个像素 占用A,B,C,D,E,F,G,H共8个端口
3、参数计算
//
2021年11月17日
cameralink全参数设计:
wire [31:0]slvReg1;//0008
wire [31:0]slvReg2;//000C
wire [31:0]slvReg3;//0010
wire [31:0]slvReg4;//0014
localparam VERSION1 = 32'h20211117;0018
localparam VERSION2 = 32'h000000A1;001C
wire [31:0]gpio_i1=VERSION1;
wire [31:0]gpio_i2=VERSION2;
//c_mode
//[7:6]=00 -->BASE [7:6]=01 -->MEDIUNM [7:6]=10 -->FULL
//[5:4]=00 -->8BIT [5:4]=01 -->10BIT [5:4]=10 -->12BIT [5:4]=11 -->14BIT
//[3:0]=0000 -->640*512
//[3:0]=0001 -->320*240
//[3:0]=0010 -->1024*1024
//[3:0]=0011 -->1280*1280
//[3:0]=0100 -->1280*720
//[3:0]=0101 -->1902*1080
cameralink像素的排列方式:
在BASE模式下:
1、当像素是14bit的时候,B端口的低6位 + A端口的8位组成14bit,C端口空置,一个时钟产生1个像素
2、当像素是12bit的时候,B端口的低4位 + A端口的8位组成12bit 第1个像素,
C端口的8位 + B端口的高4位组成12bit 第2个像素,,一个时钟产生2个像素
3、当像素是10bit的时候,B端口的低2位 + A端口的8位组成10bit 第1个像素,
C端口的8位 + B端口的B5,B4组成10bit 第2个像素,,一个时钟产生2个像素
4、当像素是8bit的时候, A端口的8位组成8bit 第1个像素,
A端口的8位组成8bit 第1个像素,
A端口的8位组成8bit 第1个像素,一个时钟产生3个像素
在medium模式下:
1、当像素是14bit的时候,一个时钟产生2个像素 【不考虑这种情况,medium模式不用来传输14bit数据】
2、当像素是12bit的时候,一个时钟产生4个像素
3、当像素是10bit的时候,一个时钟产生4个像素
4、当像素是8bit的时候 ,一个时钟产生6个像素
在full模式下:
1、仅用于8bit传输,一个时钟产生8个像素,1个端口代表一个像素
weixin: tecliu_23
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。