CameraLink接口1.CameraLink接口简介1.1CameraLink标准概述CameraLink技术标准是基于NationalSemiconductor公司的ChannelLink标准发展而来的,而ChannelLink标准是一种多路并行LVDS传输接口标准。低压差分信号(LVDS)是一种低摆幅的差分信号技术,电压摆幅在350mV左右,具有扰动小,跳变速率快的特点,在无失传输介质里的理论最大传输速率在1.923Gbps。90年代美国国家半导体公司(NationalSemiconductor)为了找到平板显示技术的解决方案,开发了基于LVDS物理层平台的ChannelLink技术。此技术一诞生就被进行了扩展,用来作为新的通用视频数据传输技术使用。如图1.1所示,ChannelLink由一个并转串信号发送驱动器和一个串转并信号接收器组成,其最高数据传输速率可达2.38G。数据发送器含有28位的单端并行信号和1个单端时钟信号,将28位CMOS/TTL信号串行化处理后分成4路LVDS数据流,其4路串行数据流和1路发送LVDS时钟流在5路LVDS差分对中传输。接收器接收从4路LVDS数据流和1路LVDS时钟流中把传来的数据和时钟信号恢复成28位的CMOS/TTL并行数据和与其相对应的同步时钟信号。图1.1cameralink接口电路1.2CameraLink端口和端口分配1.2.1端口分配在基本配置模式中,端口A、B和C被分配到唯一的CameraLink驱动器/接收器对上;在中级配置模式中,端口D、E和F被分配到第二个驱动器/接收器对上;在完整配置模式中,端口A、B和C被分配到第一个驱动器/接收器对上,端口D、E和F被分配到第二个驱动器/接收器对上,端口G和H被分配到第三个驱动器/接收器对上。表1.1给出了三种配置的端口分配,CameraLink芯片及连接器的使用数量情况。表1.13种配置模式的端口分配配置模式端口芯片数量连接器数量基本A,B,C11中级A,B,C,D,E,F22完整A,B,C,D,E,F,G,H32图1.2各种配置下的端口连接关系1.2.2端口的位分配从表1.2中我们可以看出在3种CameraLink配置模式中,图像数据位是怎样分配到端口的。这种位分配方式已经被应用于市场上最流行的相机上了。表1.2CameraLink接口的端口分配驱动器输入信号对应芯片引脚StrobeTxCLKOut/TxCLKInLVALTX/RX24FVALTX/RX25DVALTX/RX26SpareTX/RX23PortA0,PortD0,PortG0TX/RX0PortA1,PortD1,PortG1TX/RX1PortA2,PortD2,PortG2TX/RX32PortA3,PortD3,PortG3TX/RX3PortA4,PortD4,PortG4TX/RX4PortA5,PortD5,PortG5TX/RX6PortA6,PortD6,PortG6TX/RX27PortA7,PortD7,PortG7TX/RX5PortB0,PortE0,PortH0TX/RX7PortB1,PortE1,PortH1TX/RX8PortB2,PortE2,PortH2TX/RX9PortB3,PortE3,PortH3TX/RX12PortB4,PortE4,PortH4TX/RX13PortB5,PortE5,PortH5TX/RX14PortB6,PortE6,PortH6TX/RX10PortB7,PortE7,PortH7TX/RX11PortC0,PortF0TX/RX15PortC1,PortF1TX/RX18PortC2,PortF2TX/RX19PortC3,PortF3TX/RX20PortC4,PortF4TX/RX21PortC5,PortF5TX/RX22PortC6,PortF6TX/RX16PortC7,PortF7TX/RX17如果只用端口D和G,那么它们与器件的连接方法与端口A相同。同样,如果使用端口E和H,它们与器件连接方法同端口B的相同,端口F的与端口C的相同。如果相机在每个周期内仅输出1个像素,那么就使用分配给像素A的端口;如果相机在每个周期内输入2个像素,那么使用分配像素A和像素B的端口;如果在每个周期内输出3个像素,那么使用分配给像素A、B和C的端口;依次类推至相机每周期输出8个像素,那么分配给A~H的8个端口都将被使用。2.CameraLink接口模块设计2.1功能描述该模块主要根据被测FPGA发来的图像地址信号将DDR2中的指定图像数据读取出来,并且分五路发送给CameraLink接口,由CameraLink图像采集卡接收并传给上位机显示。2.2接口描述CameraLink图像采集端口模块的接口信号如图2.1所示:CAM_INTCpSl_Reset_iN时时时时时时时时时时FPGACpsl_CamLinkClk_iapp_af_afullclk0_tbapp_af_wrenapp_af_addrrd_data_fifo_outDDR2时时时时时DS90CR287时时Cpsv_CamDataA_oCpsl_CamLvalA_oPCpsl_CamPwrDwnA_oCpsl_CamFvalA_oPCpsl_CamClkE_oCpsl_CMOSFsyn_iCpsl_CMOSLsyn_iCpsv_DeBlkEn_iCpsv_AXaddr_iCpsv_D1Xaddr_iCpsv_D5Xaddr_iCpsv_IXaddr_i………………Cpsl_CamFvalE_oPCpsv_CamDataE_oCpsl_CamLvalE_oPCpsl_CamPwrDwnE_oCpsl_CamClkA_o第1路输出第5路输出rd_data_validapp_af_cmd图2.1CameraLink图像采集端口示意图表2.1各端口的接口定义端口名端口类型信号类型描述来源/去向Cpsl_Reset_iN输入STD_LOGIC异步复位时钟,低电平有效时钟同步模块Cpsl_CamLinkClk_i输入STD_LOGIC主时钟85MHzCpsl_DdrClk_i输入STD_LOGICDDR2访问时钟端口名端口类型信号类型描述来源/去向被测FPGACpsv_DeBlkEn_i输入STD_LOGIC_VECTOR(6DOWNTO0)地址使能信号,选择从A,D1,D2,D3,D4,D5,G中哪一块输出Cpsl_CMOSFsyn_i输入STD_LOGIC帧同步信号Cpsl_CMOSLsyn_i输入STD_LOGIC行同步信号Cpsv_AXaddr_i输入STD_LOGIC_VECTOR(3DOWNTO0)A块中的地址选择信号Cpsv_D1Xaddr_i输入STD_LOGIC_VECTOR(10DOWNTO0)D1块中的地址选择信号Cpsv_D2Xaddr_i输入STD_LOGIC_VECTOR(10DOWNTO0)D2块中的地址选择信号Cpsv_D3Xaddr_i输入STD_LOGIC_VECTOR(10DOWNTO0)D3块中的地址选择信号Cpsv_D4Xaddr_i输入STD_LOGIC_VECTOR(10DOWNTO0)D4块中的地址选择信号Cpsv_D5Xaddr_i输入STD_LOGIC_VECTOR(10DOWNTO0)D5块中的地址选择信号Cpsv_IXaddr_i输入STD_LOGIC_VECTOR(3DOWNTO0)I块中的地址选择信号DS90CR287Cpsv_CamDataA_o输出STD_LOGIC_VECTOR(11DOWNTO0)第一路Cameralink图像采集输出数据Cpsl_CamFvalA_oP输出STD_LOGIC第一路帧有效信号,高电平有效Cpsl_CamDvalA_oP输出STD_LOGIC第一路数据有效信号,高电平有效Cpsl_CamLvalA_oP输出STD_LOGIC第一路行有效信号,高电平有效Cpsl_CamPwrDwnA_o输出STD_LOGIC第一路CameraLinkPowerDownCpsl_CamClkA_o输出STD_LOGIC第一路CameraLink时钟Cpsv_CamDataB_o输出STD_LOGIC_VECTOR(11DOWNTO0)第二路Cameralink图像采集输出数据Cpsl_CamFvalB_oP输出STD_LOGIC第二路帧有效信号,高电平有效端口名端口类型信号类型描述来源/去向Cpsl_CamDvalB_oP输出STD_LOGIC第二路数据有效信号,高电平有效DS90CR287Cpsl_CamLvalB_oP输出STD_LOGIC第二路行有效信号,高电平有效Cpsl_CamPwrDwnB_o输出STD_LOGIC第二路CameraLinkPowerDownCpsl_CamClkB_o输出STD_LOGIC第二路CameraLink时钟Cpsv_CamDataC_o输出STD_LOGIC_VECTOR(11DOWNTO0)第三路Cameralink图像采集输出数据Cpsl_CamFvalC_oP输出STD_LOGIC第三路帧有效信号,高电平有效Cpsl_CamDvalC_oP输出STD_LOGIC第三路数据有效信号,高电平有效Cpsl_CamLvalC_oP输出STD_LOGIC第三路行有效信号,高电平有效Cpsl_CamPwrDwnC_o输出STD_LOGIC第三路CameraLinkPowerDownCpsl_CamClkC_o输出STD_LOGIC第三路CameraLink时钟Cpsv_CamDataD_o输出STD_LOGIC_VECTOR(11DOWNTO0)第四路Cameralink图像采集输出数据Cpsl_CamFvalD_oP输出STD_LOGIC第四路帧有效信号,高电平有效Cpsl_CamDvalD_oP输出STD_LOGIC第四路数据有效信号,高电平有效Cpsl_CamLvalD_oP输出STD_LOGIC第四路行有效信号,高电平有效Cpsl_CamPwrDwnD_o输出STD_LOGIC第四路CameraLinkPowerDownCpsl_CamClkD_o输出STD_LOGIC第四路CameraLink时钟Cpsv_CamDataE_o输出STD_LOGIC_VECTOR(11DOWNTO0)第五路Cameralink图像采集输出数据Cpsl_CamFvalE_oP输出STD_LOGIC第五路帧有效信号,高电平有效Cpsl_CamDvalE_oP输出STD_LOGIC第五路数据有效信号,高电平有效Cpsl_CamLvalE_oP输出STD_LOGIC第五路行有效信号,高电平有效Cpsl_CamPwr输出STD_LOGIC第五路CameraLinkPowerDown端口名端口类型信号类型描述来源/去向DwnE_oCpsl_CamClkE_o输出STD_LOGIC第五路CameraLink时钟app_af_wren输出STD_LOGICMIG缓存地址和命令的fifo写使能信号高电平有效DDR2控制器app_af_addr输出STD_LOGIC_VECTOR(30DOWNTO0)MIG地址总线app_af_cmd输出STD_LOGIC_VECTOR(2DOWNTO0)MIG读写命令控制信号clk0_tb输入STD_LOGICMIG用户界面同步时钟app_af_afull输入STD_LOGIC缓存地址和命令的fifo快满信号rd_data_valid输入STD_LOGIC读出数据有效信号,与有效数据同步rd_data_fifo_out输入STD_LOGIC_VECTOR(63DOWNTO0)MIG用户界面读数据总线CameraLink接口信号时序如图2.2所示:图2.2CameraLink图像采集电路的时序图2.3功能实现Cameralink图像采集接口电路主要包含两个子模块,如图4.59所示,数据读取分发模块负责从