iserdese2接口详解_-02-Xilinx的SerDes接口介绍【Xilinx-LVDS读写功能实现】

iserdese2接口详解_-02-Xilinx的SerDes接口介绍【Xilinx-LVDS读写功能实现】因为摄像头输出的 LVDS 信号速率会达到 600Mbps 我们将不能够通过 FPGA 的 I O 接口直接去读取这么高速率的信号 因此 需要使用 XilinxFPGA 内的 SerDes 去实现高速数据的串并转换 熊猫君的文章 Zynq 高速串行 CMOS 接口的设计与实现 都已经说清楚了 大神 参考文档 ug953 ug471 我们为了捕获 OV7251 摄像头 LVDS 的数据信号 将会使用的以下资源 IDELAYCT

因为摄像头输出的LVDS信号速率会达到600Mbps,我们将不能够通过FPGA的I/O接口直接去读取这么高速率的信号。因此,需要使用Xilinx FPGA内的SerDes去实现高速数据的串并转换。

熊猫君的文章“Zynq高速串行CMOS接口的设计与实现”,都已经说清楚了,大神~~

参考文档ug953,ug471,我们为了捕获OV7251摄像头LVDS的数据信号,将会使用的以下资源:

– IDELAYCTRL

– IDELAYE2

– ISERDESE2

– ODELAYE2 (用于模拟LVDS输出信号)

– OSERDESE2 (用于模拟LVDS输出信号)

– MMCME2_ADV

– BUFG, BUFR, BUFIO, IBUFG, IBUFDS, OBUFDS

1. IDELAYCTRL

iserdese2接口详解_-02-Xilinx的SerDes接口介绍【Xilinx-LVDS读写功能实现】

因FPGA的电压偏置、制造过程、电压、温度的不同,可能会对整个芯片的时序造成一些小的影响。IDELAYCTRL可以通过一个较高频率的参考时钟REFCLK为IDELAY或ODELAY提供延时抽头,可选0~31。参考时钟的频率可选200MHz或者300MHz,它们的每个抽头的分辨率分别约是78ps和52ps。我们的LVDS输入为600Mbps,则选用200MHz需要21taps,300MHz需要32taps,所以最终选择200MHz为参考时钟。

使用时还需要注意需要对IDELAYCTRL进行LOC约束,实现工具将IDELAYCTRL实例自动复制到整个器件,甚至复制到未使用延迟单元的时钟区域中。这样做资源占用率较高,在每个时钟区域内都要使用一个全局 时钟资源,并且使用布线资源较多,因此功耗较大。参考文档:输入输出延迟单元IODELAY简介

2. IDELAYE2

iserdese2接口详解_-02-Xilinx的SerDes接口介绍【Xilinx-LVDS读写功能实现】

IDELAYE2逻辑是一个31抽头的循环延时补偿模块,对输入的信号进行指定分辨率的延时,从而保证从外部采集到的时钟和数据信号对应的建立保持时间在可接受的范围内。简单的说就是通过配置不同的Tap值,将600MHz的输入信号实现在1.667ns周期范围内进行相位调整。

为了调整时不出现数据的信号的断裂或者过分的变化,我们需要对Tap值每次只进行加一或者减一操作,不能一次调整的过大。参考xapp585进行动态相位补偿设计,章节:SDR Data Reception with Per-Bit Deskew。

3. ISERDESE2

iserdese2接口详解_-02-Xilinx的SerDes接口介绍【Xilinx-LVDS读写功能实现】

ISERDESE2就是我们的核心模块了,负责将串行数据转换为并行数据。

单个ISERDESE2的位宽只有8bit,而我们的数据是10bit,好在我们可以把两个ISERDESE2进行级联实现10bit串并转换。结构如下图,将bit8和bit9分别连为Slave的Q3和Q4。

iserdese2接口详解_-02-Xilinx的SerDes接口介绍【Xilinx-LVDS读写功能实现】

虽然前面通过IDELAYE2对数据的相位进行了调整,数据的建立保持时间都OK,可以正常捕获串行数据了。但是,OV7251只有一对差分时钟线和一对差分数据线,而没有额外的串行数据同步信号线,我们必须对串行数据进行字对齐(对于我们来说,像素数据是10bit,所以是进行10bit对齐)。这就需要使用ISERDESE2中的Bitslip功能模块了。

Bitslip功能是通过BITSLIP输入信号来调整数据对齐的,BITSLIP信号的参考时钟是CLKDIV。每发送一次BITSLIP信号,对齐边沿就会按照下图的方式变化,SDR和DDR模式的变化方式不同。

iserdese2接口详解_-02-Xilinx的SerDes接口介绍【Xilinx-LVDS读写功能实现】

OV7251发出的数据是DDR方式,所以是按照上图右边的方式进行变化:右移1位,左移3位,右移1位,左移3位……。而前面说到,既然没有同步信号线,我们就只能够使用数据线中的同步码Sync Code去实现字对齐。OV7251的帧格式如下图,我可以使用编码3FF 000 000 2AC来实现BITSLIP调整。

iserdese2接口详解_-02-Xilinx的SerDes接口介绍【Xilinx-LVDS读写功能实现】

我的处理方式和熊猫君的方式相同:图像开始传输后,在每一帧中都去搜索固定的同步码“3FF 000 000 2AC”。如果在这一帧找到了同步码则表示同步完成,若没有找到同步码,则在下一帧开始前触发一次BITSLIP信号,然后继续查找。直到找到了同步码为止,或者超过了20次BITSLIP仍然没有找到,则代表同步失败。

ODELAYE2和OSERDESE2相对来说没有那么复杂,就不介绍了。

4. MMCME2_ADV

时钟

5. BUF

buf

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/225981.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 上午8:06
下一篇 2026年3月17日 上午8:07


相关推荐

  • drone无人机操作教程_无人机怎么起飞教程

    drone无人机操作教程_无人机怎么起飞教程教程:使用DroneKit在室内控制无人机DroneKit-Python是一个用于控制无人机的Python库。DroneKit提供了用于控制无人机的API,其代码独立于飞控,单独运行在机载电脑(CompanionComputer)或其他设备之上,通过串口或无线的方式经MAVLink协议与飞控板通信。除了DroneKit-Python以外,还有DroneKit-Android以及DroneKit-C

    2022年8月15日
    62
  • 文心一言怎么使用翻译功能

    文心一言怎么使用翻译功能

    2026年3月12日
    2
  • 国产深度推理大模型突破:讯飞星火X1引领AI技术革新

    国产深度推理大模型突破:讯飞星火X1引领AI技术革新

    2026年3月14日
    2
  • POI jar包下载

    POI jar包下载POIjar包下载

    2022年5月15日
    119
  • CTF流量分析常见题型(二)-USB流量

    CTF流量分析常见题型(二)-USB流量0x00前言在学习Wireshark常见使用时,对常见CTF流量分析题型和铁人三项流量分析题的部分问题进行了简单总结。由于篇幅过长,于是另起一篇总结常见流量包分析。包括USB流量包分析和一些其他流量包分析。0x01USB流量包分析USB流量指的是USB设备接口的流量,攻击者能够通过监听usb接口流量获取键盘敲击键、鼠标移动与点击、存储设备的铭文传输通信、USB无线网卡网络传输内容等等。在CTF中,USB流量分析主要以键盘和鼠标流量为主。1、键盘流量USB协议数据部分在LeftoverCapt

    2022年6月11日
    141
  • 流量精灵刷流量的实例教程

    流量精灵刷流量的实例教程流量精灵大概是去年的这个时候出来的一款提升网站访问量的软件,由于软件比较优秀,当时我就及时关注这款软件,现在时隔一年的时候,流量精灵在低调的发展下,版本也更新到了2.1.7。而以前只是写了一下流量精灵的测评文章,感觉已不能满足大家的需求,所以今天为广大的新手及新站长朋友写上详细的使用教程。流量精灵的功能介绍:主要就是刷流量的。这里的流量主要是指网站的流量,网站流量简单一点说就是访…

    2026年4月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号