Intel FPGA IP之LVDS SerDes IP学习

news2024/12/25 22:25:46

FPGA 视频数据输入输出直通工程:

  • :13.2吋8bit色深,屏幕分辨率为1440*1920@60,具有两个Port,每个Port有4个差分数据对与1个差分时钟对,差分对均支持LVDS协议
  • 芯片:Cyclone V系列FPGA
  • 目的:通过FPGA的LVDS SerDes RX接口输入8bit 色深RGB图像数据,然后再通过LVDS SerDes TX接口输出8bit 色深RGB图像数据,是个直通工程

一、13.2吋屏

 1.1 13.2吋屏参数:

DCLK frequency = horizontal line*vertical field*60=783*1962*60=92_174_760Hz≈ 92.17MHz

DCLK(即,Data Clock)就是Pixel Clock。

1.2 屏的数据传输格式:

该屏有两个Port,是8bit 色深图像,传输的数据格式如下图:

由图可知:

  • 该屏有两个Port,分奇偶Port(即,Odd Port与Even Port)
  • 每个Port有4个差分数据对与1个时钟差分对
  • 每个Port的LVDS数据格式相同
  • 差分时钟的占空比为4/7,且差分时钟频率与数据速率为1:7
  • 差分时钟与差分数据对之间的相位关系,即,差分时钟高电平中间时刻对应一个像素周期的开始时刻

通过VESA的标准协议可知,VESA的10bit屏的接口兼容8bit屏接口。如下图:

VESA:单port 8bit 屏:4个数据差分对+一个像素时钟差分对Pixel Clock
数据差分对T1T2T3T4T5T6T7
0+/-R0R1R2R3R4R5G0
1+/-G1G2G3G4G5B0B1
2+/-B2B3B4B5HSVSDE
3+/-R6R7G6G7B6B7XX
VESA:单port 10bit 屏:4个数据差分对+一个像素时钟差分对Pixel Clock
数据差分对T1T2T3T4T5T6T7
0+/-R0R1R2R3R4R5G0
1+/-G1G2G3G4G5B0B1
2+/-B2B3B4B5HSVSDE
3+/-R6R7G6G7B6B7XX
4+/-R8R9G8G9B8B9XX

 参考:LVDS电平标准与LCD屏的LVDS数据格式-CSDN博客

为了提高FPGA系统兼容性,在编写Verilog程序时,用10bit 色深的VESA标准协议。

二、Cyclone V的LVDS SerDes结构

2.1 LVDS Receiver结构

2.2 LVDS Transmitter结构

三、Intel FPGA的LVDS SerDes IP配置

3.1 添加LVDS SerDes IP

IP添加方式:在IP Catalog中输入LVDS+回车,可选择ALTLVDS_RX与ALTLVDS_TX两个LVDS SerDes IP进行参数设置。

3.2 rx_serdes_ip

3.2.1 rx_serdes_ip参数设置

3.2.2 例化rx_serdes:

//定义接口

reg  [4:0]   rx_datao_p;
reg  [4:0]   rx_datae_p;

reg pixel_clk_in;

wire    [69:0]  rx_out;

wire pixel_clk_out;

//例化

lvds_rx_1 u1_lvds_rx_1(
    .rx_in                    ({rx_datao_p, rx_datae_p}),
    .rx_inclock                (pixel_clk_in),
    .rx_out                    (rx_out),
    .rx_outclock            (pixel_clk_out)
    );    

3.3 tx_serdes

3.3.1 tx_serdes_ip参数设置

3.3.2 例化tx_serdes

reg     [34:0]  tx_datao;
reg     [34:0]  tx_datae;
wire [4:0]   tx_datao_p;

wire [4:0]   tx_datae_p;

lvds_tx  u1_lvds_tx (
    .pll_areset (tx_reset),
    .tx_in      ({7'b1100011, tx_datao, 7'b1100011, tx_datae}),
    .tx_inclock (pixel_clk_out),
    .tx_out     ({tx_cko_p, tx_datao_p, tx_cke_p, tx_datae_p}));

注意: {7'b1100011, tx_datao, 7'b1100011, tx_datae}中的两个7'b1100011是两个TX Port的Pixel Clock,结合LVDS Transmitter中的Serializer工作机制即可理解。

四、附件参考

Cyclone® V Device Handbook Volume 1: Device Interfaces and Integration


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1487079.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分布式ID生成策略-雪花算法Snowflake

分布式ID生成策略-雪花算法Snowflake 一、其他分布式ID策略1.UUID2.数据库自增与优化2.1 优化1 - 共用id自增表2.2 优化2 - 分段获取id 3.Reids的incr和incrby 二、雪花算法Snowflake1.雪花算法的定义2.基础雪花算法源码解读3.并发1000测试4.如何设置机房和机器id4.雪花算法时钟…

在Ubuntu22.04安装Fcitx5中文输入法教程(十分详细)

前言 书接上回,一时兴起将主力机的 Ubuntu 20.04 LTS 升级至了刚刚发布的 22.04 LTS。从 X 切换到 Wayland 、GNOME 从 3.36 升级至 42、Python 默认为 3.10 等等……使用太新的软件包反而暂时带来了麻烦,部分原有的软件和插件都不可用了。这其中就包括…

浅谈马尔科夫链蒙特卡罗方法(MCMC)算法的理解

1.解决的问题 计算机怎么在任意给定的概率分布P上采样?首先可以想到把它拆成两步: (1)首先等概率的从采样区间里取一个待定样本x,并得到它的概率为p(x) (2)然后在均匀分布U[0,1]上取一个值&a…

可视化管理的kanban插件 | Obsidian实践

继上一篇文章之后,有朋友提问说: 刚好,关于kanban插件的素材,是之前一早就准备好的,便快速整理成文,简单分享一下个人实践。 Prompt:项目流程管理看板,色彩鲜艳。by 通义万象 看板管…

C++调用lua函数

C 调用Lua全局变量(普通) lua_getglobal(lua, "width");int width lua_tointeger(lua,-1);lua_pop(lua,1);std::cout << width << std::endl;lua_close(lua); 这几行代码要放到lua_pcall(lua, 0,0,0);之后才可以. C给lua传递变量 lua_pushstring(lua, …

三、低代码平台-单据配置(单表增删改查)

一、业务效果图 主界面 二、配置过程简介 配置流程&#xff1a;业务表设计 -》业务对象建立-》业务单据配置-》菜单配置。 a、业务表设计 b、业务对象建立 c、业务单据配置 功能路径&#xff1a;低代码开发平台/业务开发配置/单据配置维护 d、菜单配置

【JavaEE】_Spring MVC 项目传参问题

目录 1. 传递单个参数 1.1 关于参数名的问题 2. 传递多个参数 2.1 关于参数顺序的问题 2.2 关于基本类型与包装类的问题 3. 使用对象传参 4. 后端参数重命名问题 4.1 关于RequestPara注解 1. 传递单个参数 现创建Spring MVC项目&#xff0c;.java文件内容如下&#xff…

【k8s存储--使用OpenEBS做持久化存储】

1、简介 使用OpenEBS&#xff0c;你可以将有持久化数据的容器&#xff0c;像对待其他普通容器一样来对待。OpenEBS本身也是通过容器来部署的&#xff0c;支持Kubernetes、Swarm、Mesos、Rancher编排调度&#xff0c;存储服务可以分派给每个pod、应用程序、集群或者容器级别&am…

Mybatis plus拓展功能-JSON处理器

目录 1 前言 2 使用方法 2.1 定义json实体类 2.2 在实体类中使用 1 前言 这是我最近学到的比较新奇的一个东西&#xff0c;数据库居然还可以存储JSON格式的数据&#xff0c;如下。虽然我感觉一般也没谁会这样干&#xff0c;但是既然有&#xff0c;那就当个科普讲一下Mybat…

【自然语言处理】NLP入门(三):1、正则表达式与Python中的实现(3):字符转义符及进制转换

文章目录 一、前言二、正则表达式与Python中的实现1.字符串构造2. 字符串截取3. 字符串格式化输出4. 字符转义符a. 常用字符转义符续行符换行符制表符双引号单引号反斜杠符号回车符退格符 b. ASCII编码转义字符进制转换2 进制8 进制10 进制16 进制进制转换函数 c. Unicode字符\…

每天学习一个Linux命令之gunzip

每天学习一个Linux命令之gunzip 在Linux系统中&#xff0c;有许多强大且常用的命令&#xff0c;其中之一是gunzip。gunzip命令用于解压缩.gz文件&#xff0c;它是gzip的伴生命令之一。本篇博客将详细介绍gunzip命令及其可用的选项&#xff0c;以帮助您更好地理解和使用这个命令…

运放设计选型中关注的参数-运算放大器选型参数

1、直流增益&#xff08;AVD&#xff09; 直流增益是运放最重要一个属性之一&#xff0c;其定义为输出电压的变化与输入电压变化之比值&#xff0c;通常用V/mV表示这个比值&#xff0c;例如&#xff0c;增益为30000&#xff0c;可表示为30V/mV&#xff0c;有些地方也会把增益用…

实践航拍小目标检测,基于轻量级YOLOv7tiny开发构建无人机航拍场景下的小目标检测识别分析系统

关于无人机相关的场景在我们之前的博文也有一些比较早期的实践&#xff0c;感兴趣的话可以自行移步阅读即可&#xff1a; 《deepLabV3Plus实现无人机航拍目标分割识别系统》 《基于目标检测的无人机航拍场景下小目标检测实践》 《助力环保河道水质监测&#xff0c;基于yolov…

搜索旋转排序数组[中等]

优质博文IT-BLOG-CN 一、题目 整数数组nums按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums在预先未知的某个下标k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为[nums[k], nums[k1], ..., nums[n-…

AI蠕虫病毒威胁升级,揭示AI安全新危机

一组研究人员成功研发出首个能够通过电子邮件客户端窃取数据、传播恶意软件以及向他人发送垃圾邮件的AI蠕虫&#xff0c;并在使用流行的大规模语言模型&#xff08;LLMs&#xff09;的测试环境中展示了其按设计功能运作的能力。基于他们的研究成果&#xff0c;研究人员向生成式…

HTML+CSS+JS:日夜交替

效果演示 实现了一个简单的日夜交替效果的动画。页面中包含了太阳、月亮和海洋的元素&#xff0c;通过切换按钮可以切换页面的主题&#xff0c;从白天切换到黑夜&#xff0c;或者从黑夜切换到白天。 Code <div class"btn-box"><div class"sunBtn"…

Docker将本地的镜像上传到私有仓库

使用register镜像创建私有仓库 [rootopenEuler-node1 ~]# docker run --restartalways -d -p 5000:5000 -v /opt/data/regostry:/var/lib/registry registry:2[rootopenEuler-node1 ~]# docker images REPOSITORY TAG IMAGE…

【数据结构与算法】常见排序算法(Sorting Algorithm)

文章目录 相关概念1. 冒泡排序&#xff08;Bubble Sort&#xff09;2. 直接插入排序&#xff08;Insertion Sort&#xff09;3. 希尔排序&#xff08;Shell Sort&#xff09;4. 直接选择排序&#xff08;Selection Sort&#xff09;5. 堆排序&#xff08;Heap Sort&#xff09;…

【代码】Android|判断asserts下的文件存在与否,以及普通文件存在与否

作者版本&#xff1a;Android 11及以上 主要是发现网上没有完整的、能跑的代码&#xff0c;不知道怎么回事&#xff0c;GPT给我重写的。我只能保证这个代码尊嘟能跑&#xff0c;不像其他的缺胳膊少腿的。 asserts 贴一下结果&#xff1a; boolean isAssertFileExists(String …