系统的工作原理:系统上电后,上位机软件通过驱动程序控制 FPGA 对 CamLink 相机进行内部参数配置。配置完成后,CamLink 相机输出帧频信号、行频信号、像索时钟信号和视频信号。由于 CamLink 接口输出的是差分信号,所以通过 DS90CR288A 芯片将差分转换成单端信号,输入给 FPGA。在 FPGA 内部,通过 FIFO 对数据进行缓冲,在同步和时钟信号的控制下,FIFO 输出的数据存放到 SDRAM 中。由于在同一时刻只能对 SDRAM 进行读或写操作,所以为了防止数据丢失,FPGA 外接两片 SDRAM,在奇帧的时候,向 SDRAM1 写一帧图像,而从 SDRAM2 读已保存的偶帧图像,完成图像传输的乒乓操作。使用 PEX8311 芯片完成 PCIE 接口,PEX8311 由 FPGA 的逻辑程序对其控制。在上位机编写基于 PCIE 总线的驱动程序,将图像从 SDRAM 使用 DMA 方式读到计算机的内存中,上位机软件实现图像的显示和处理。
2、 PCI-Express 接口模块
PCI-Express 的接口实现方法很多,在本设计中使用 PLX 公司的 PEX8311 芯片通过桥接方式实现。PEX8311 作为一种桥接芯片,在 PCI Expr-ess 总线和 Local 总线之间传递信息,它可以作为 2 个总线的主控设备去控制总线,也可以作为两个总线的目标设备去响应总线。芯片通过内部的控制逻辑模块、内部总线状态机和局部总线状态机模块来共同控制芯片的数据传输。PEX8311 的控制逻辑模块包含各种寄存器组,这些寄存器组用来控制数据的传输,记录传输的状态。
PEX8311 提供两个串行 E2PROM 接口,在系统上电后读取配置信息。SPI 串行 E2PROM 是 PCI—Express 的配置 E2PROM。它主要用来控制 PCI—Express 的性能。
PEX8311 提供完备的 PCI—Express 从设备支持,PCI-Express 接口部分的信号线可以直接与 PCI—Express 连接器(俗称金手指)连接。其中,REFCLK±是一组差分时钟,它由系统主板提供。2 个参考时钟都要求保持在正常工作频率 100MHz 的±300ppm 之内。PRSNT1/PRSNT2 信号线用于检查附加卡是否插入连接器。此次设计中将 PRSNT1 和 PRSNT2 相连,这样当接口板插入到 PCI—Express 连接器时就能进行存在检测。PCI-Express 接口部分原理图,如图 2 所示。
3 、系统软件设计
3.1 FPGA 逻辑程序
使用 Verilog 编写 FPGA 逻辑控制程序,共有 5 个底层模块和 1 个顶层模块。每个模块负责不同的功能。顶层模块为 PCIE_CAMLINK 模块,它通过调用其他模块的功能来实现整个系统的功能;CAMLINK 模块用来控制 Camera Link 接口的读写;DoubleSdcon 模块用来控制 SDRAM 芯片的使能和读写,实现图像的乒乓操作;FIFO 模块用来缓冲数据和匹配各芯片的工作速度;C_16450 模块进行串行到并行的转换,完成对 CamLink 相机的控制;PEX8311-LOCAL 模块用来控制 PCI—Express 接口部分的读写,也就是对 PEX8311 芯片进行控制,对 PEX8311 的控制是实现 PCI—Exp-ress 总线的关键。