LVDS系列20:Xilinx 7系ISERDESE2原语(一)

Xilinx 7系FPGA bank的io单元如下:
在这里插入图片描述
在这里插入图片描述
Hr bank比hp bank少odelaye2组件,两者的idelaye2组件后面,都有iserdese2组件;
iserdese2组件是一种专用的串并转换器或称解串器,用于高速源同步应用,如大部分LVDS信号解析就属于高速源同步应用;
组件是专用的解串器,避免了fpga逻辑实现,支持单数据数率SDR和双数据速率DDR模式;
SDR模式下,支持2/3/4/5/6/7/8位宽并行转换;
DDR模式下,支持4/6/8位宽并行转换;
使用两个级联的iserdese2时,还可以生成10/14位宽的并行转换;
组件还包含Bitslip子模块,bitslip可以让用户重新排序拼接并行数据流,方便接收数据的训练和检测调整;

 原语框图:
左侧输入管脚,右侧输出,
在这里插入图片描述
在这里插入图片描述
 原语例化:
ISERDESE2 #(
.DATA_RATE(“DDR”), // DDR, SDR
.DATA_WIDTH(4), // Parallel data width (2-8,10,14)
.DYN_CLKDIV_INV_EN(“FALSE”), // Enable DYNCLKDIVINVSEL inversion (FALSE, TRUE)
.DYN_CLK_INV_EN(“FALSE”), // Enable DYNCLKINVSEL inversion (FALSE, TRUE)
// INIT_Q1 - INIT_Q4: Initial value on the Q outputs (0/1)
.INIT_Q1(1’b0),
.INIT_Q2(1’b0),
.INIT_Q3(1’b0),
.INIT_Q4(1’b0),
.INTERFACE_TYPE(“MEMORY”), // MEMORY, MEMORY_DDR3, MEMORY_QDR, NETWORKING, OVERSAMPLE
.IOBDELAY(“NONE”), // NONE, BOTH, IBUF, IFD
.NUM_CE(2), // Number of clock enables (1,2)
.OFB_USED(“FALSE”), // Select OFB path (FALSE, TRUE)
.SERDES_MODE(“MASTER”), // MASTER, SLAVE
// SRVAL_Q1 - SRVAL_Q4: Q output values when SR is used (0/1)
.SRVAL_Q1(1’b0),
.SRVAL_Q2(1’b0),
.SRVAL_Q3(1’b0),
.SRVAL_Q4(1’b0)
)
ISERDESE2_inst (
.O(O), // 1-bit output: Combinatorial output
// Q1 - Q8: 1-bit (each) output: Registered data outputs
.Q1(Q1),
.Q2(Q2),
.Q3(Q3),
.Q4(Q4),
.Q5(Q5),
.Q6(Q6),
.Q7(Q7),
.Q8(Q8),
// SHIFTOUT1, SHIFTOUT2: 1-bit (each) output: Data width expansion output ports
.SHIFTOUT1(SHIFTOUT1),
.SHIFTOUT2(SHIFTOUT2),
.BITSLIP(BITSLIP), // 1-bit input: The BITSLIP pin performs a Bitslip operation synchronous to
// CLKDIV when asserted (active High). Subsequently, the data seen on the Q1
// to Q8 output ports will shift, as in a barrel-shifter operation, one
// position every time Bitslip is invoked (DDR operation is different from
// SDR).

// CE1, CE2: 1-bit (each) input: Data register clock enable inputs
.CE1(CE1),
.CE2(CE2),
.CLKDIVP(CLKDIVP), // 1-bit input: TBD
// Clocks: 1-bit (each) input: ISERDESE2 clock input ports
.CLK(CLK), // 1-bit input: High-speed clock
.CLKB(CLKB), // 1-bit input: High-speed secondary clock
.CLKDIV(CLKDIV), // 1-bit input: Divided clock
.OCLK(OCLK), // 1-bit input: High speed output clock used when INTERFACE_TYPE=“MEMORY”
// Dynamic Clock Inversions: 1-bit (each) input: Dynamic clock inversion pins to switch clock polarity
.DYNCLKDIVSEL(DYNCLKDIVSEL), // 1-bit input: Dynamic CLKDIV inversion
.DYNCLKSEL(DYNCLKSEL), // 1-bit input: Dynamic CLK/CLKB inversion
// Input Data: 1-bit (each) input: ISERDESE2 data input ports
.D(D), // 1-bit input: Data input
.DDLY(DDLY), // 1-bit input: Serial data from IDELAYE2
.OFB(OFB), // 1-bit input: Data feedback from OSERDESE2
.OCLKB(OCLKB), // 1-bit input: High speed negative edge output clock
.RST(RST), // 1-bit input: Active high asynchronous reset
// SHIFTIN1, SHIFTIN2: 1-bit (each) input: Data width expansion input ports
.SHIFTIN1(SHIFTIN1),
.SHIFTIN2(SHIFTIN2)
);

 ISERDESE2端口介绍:
端口O:
1bit,组合输出,该端口为组件未经过寄存器的输出,可以直接来自输入D端口或DDLY端口,从组件的框图可以看出O端口的产生结构,来自一个由OFB、DDLY、D端口输入的IOB多路复用器的输出,没有经过ISERDESE2的组件;
在这里插入图片描述
端口Q1~Q8:
iserdese2组件的8bit寄存器输出,1个组件最多支持1:8的串转并,大于8位仅在DDR模式下支持,且最大14bit;
一个并行数据的最先输入的1个bit数据,将会出现在最高位的Q8上;
在这里插入图片描述
上图是OSERDESE2和ISERDESE2组件的输入输出顺序,
可以看到,OSERDESE2输出端位序与ISERDESE2输入端的位序相反,OSERDESE2输入一个D1~D8,对应ABCDEFGH的数据,输出时,按D1到D8,也就是A到H的并行数据种低位先发的顺序发送数据,
而在ISERDESE2中,先接收到的A放入了最高位Q8,最后接收到的H放入了Q1。

端口SHIFTOUT1、SHIFTOUT2、SHIFTIN1、SHIFTIN2:
想要实现大于8bit的并行转换,需要两个ISERDESE2级联,shift接口用于宽度扩展时ISERDESE2级联,后续仿真时详细讲解位宽扩展结构;

端口BITSLIP:
1bit,高电平有效时执行位滑动操作,与CLKDIV同步;执行后Q1~Q8的输出接口上数据将移动一个bit数据,后续仿真时详细讲解位滑动操作;

端口RST:
高电平有效复位,复位有效时,大部分组件内部触发器将被异步驱动为低,除了Q1Q4这4个接口,因为这4个输出接口复位时驱动的值由参数INIT_Q1 INIT_Q4设置;当把复位信号与CLKDIV同步取消置位,内部逻辑会把取消置位重新定为第一个CLK上升沿,多个ISERDESE2组件的复位信号应该使用同一个复位信号,复位信号需至少保持两个CLKDIV时钟周期,且复位取消后两个CLKDIV时钟周期后输出数据才有效;

端口CLK:
高速时钟输入,该时钟应该与高速串行输入数据同步;

端口CLKB:
高速次级时钟对输入串行数据流进行同步;当INTERFACE_TYPE设置为除MEMORY_QDR的模式下,CLKB与CLK反相,在MEMORY_QDR模式下,CLKB连接到特定相位偏移的时钟;

端口CLKDIV:
分频时钟输入,通常是CLK的分频版本,该时钟与组件输出的并行数据Q1~Q8同步,还与CE模块,Bitslip子模块同步,其频率取决于解串行化的宽度;

端口CLKDIVP:
只在使用MIG工具,也就是DDR控制器时使用该端口,其他模式将其置0;

端口CE1、CE2:
都是时钟使能输入端口,内部有一个输入时钟使能模块:
在这里插入图片描述
可以看到模块中,有CE1和CE2时钟使能输入,
当NUM_CE=1(NUM_CE为组件例化参数)时,不使用CE2输入,CE1输入是直接连接到ISERDESE2中输入寄存器的高有效时钟使能信号;
当NUM_CE=2时,同时使用CE1和CE2输入,CE1在CLKDIV周期的一半启用ISERDESE2,CE2在另一半启用ISERDESE2。

端口OCLK、OCLKB:
高速时钟输入,用于基于选通的存储器接口和过采样模式,当INTERFACE_TYPE设置为为NETWORKING时不使用OCLK;OCLK可用于将基于选通的存储器数据传输到自由运行的时钟域,不适用存储器模式时,端口不使用,OCLKB为OCLK反相时钟;

端口D:
高速串行数据输入端口,仅与IOB配合使用,数据来自IOB;

端口DDLY:
高速串行数据输入端口,仅与IDELAYE2配合使用,输入的数据来自IDLEAYE2延时后的输出;

端口OFB:
OFB端口用于将OSERDESE2上传输的数据反馈回ISERDESE2,且同时需要将参数OFB_USED设置为TRUE,且OSERDESE2和ISERDESE2的DATA_RATE和DATA_WIDTH需要设置相同;
在这里插入图片描述
端口DYNCLKDIVSEL、DYNCLKSEL:
DYNCLKDIVSEL置1且DYN_CLKDIV_INV_EN设置TRUE时,CLKDIV反转相位;DYNCLKSEL置1且DYN_CLK_INV_EN设置为TRUE时,CLK和CLKB反转相位;且该操作仅在MEMORY_DDR3和MEMORY_QDR模式下受支持;

例化参数和其他细节下一节讲解;
本文章由威三学社出品
对课程感兴趣可以私信联系

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

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

相关文章

【U-Boot】Shell指令

目录 U-Boot 三个Shell U-Boot Shell Linux Shell shell脚本 总结 U-Boot Shell命令 帮助命令 部分命令分类与功能说明 一、基础操作与信息查询 二、内存操作 三、启动管理 四、文件系统操作 五、设备与分区管理 六、环境变量 七、诊断与调试 八、特殊功能 九…

《Revisiting Generative Replay for Class Incremental Object Detection》阅读笔记

摘要Abstract部分 原文 Generative replay has gained significant attention in class-incremental learning; however, its application to Class Incremental Object Detection (CIOD) remains limited due to the challenges in generating complex images with precise …

Mysql: Bin log原理以及三种格式

目录 一、什么是 Binlog? 二、Binlog 的应用场景与案例 1. 数据恢复 (Point-in-Time Recovery) 2. 主从复制 (Master-Slave Replication) 3. 数据审计 三、Binlog 的三种格式 1. STATEMENT 模式 (Statement-Based Logging - SBL) 2. ROW 模式 (Row-Based Log…

LiteHub之文件下载与视频播放

文件下载 前端请求 箭头函数 //这个箭头函数可以形象理解为,x流入(>)x*x, //自然而然>前面的就是传入参数,>表示函数体 x > x * x//相当于 function (x) {return x * x; }//如果参数不是一个,就需要用括号()括起来…

QT5使用cmakelists引入Qt5Xlsx库并使用

1、首先需要已经有了Qt5Xlsx的头文件和库,并拷贝到程序exe路径下(以xxx.exe/3rdparty/qtxlsx路径为例,Qt5Xlsx版本为0.3.0); 2、cmakelist中: # 设置 QtXlsx 路径 set(QTXLSX_ROOT_DIR ${CMAKE_CURRENT_SOU…

醋酸镨:闪亮的稀土宝藏,掀开科技应用新篇章

一、什么是醋酸镨醋酸镨是一种镨的有机盐,镨是稀土金属元素之一。作为一种重要的稀土化合物,醋酸镨通常以水合物的形式存在,呈现淡黄色或无色结晶。镨元素本身因其独特的物理化学特性,在工业和科技领域有着广泛应用,而…

深入解析JVM内存结构与垃圾回收机制

java是强类型高级语言JVM(Java Virtual Machine,Java虚拟机)是Java平台的核心组件,它是一个虚拟的计算机,能够执行Java字节码(bytecode)。1、区域划分JVM对Java内存的管理也是分区分块进行&…

Java 流程控制详解:从顺序执行到跳转语句,掌握程序逻辑设计

作为一名Java开发工程师,你一定知道,流程控制(Flow Control) 是编写任何程序的核心。它决定了代码的执行路径、分支走向和循环次数。本文将带你系统梳理 Java中的所有常用流程控制结构,包括:顺序结构分支结…

面试150 环形链表

思路 采用双指针法,slow指针每次走一步,fast指针每次走两步,如果相遇的情况下,slow指针回到开始的位置,此时快慢指针各走一步,当相遇的时候也就是说明链表中有环。 # Definition for singly-linked list. # class ListNode: # def __init…

AI技术正在深度重构全球产业格局,其影响已超越工具属性,演变为推动行业变革的核心引擎。

一、AI如何重塑AI的工作与行业(AI助手领域)能力升级理解与生成:基于LLM(大语言模型),AI能处理开放式问题、撰写报告、翻译代码,替代部分人类知识工作。个性化交互:通过用户历史对话分…

Kafka的无消息丢失配置怎么实现

那 Kafka 到底在什么情况下才能保证消息不丢失呢? Kafka 只对“已提交”的消息(committed message)做有限度的持久化保证。 第一个核心要素是“已提交的消息”。什么是已提交的消息?当 Kafka 的若干个 Broker 成 功地接收到一条…

集成CommitLInt+ESLint+Prettier+StyleLint+LintStaged

代码可读性低代码 代码规范落地难代码格式难统一代码质量低下 配置 ESLint ESLint 是一个用来识别 ECMAScript 并且按照规则给出报告的代码检测工具,使用它可以避免低级错误和统一代码的风格。它拥有以下功能: 查出 JavaScript 代码语法问题。根据配置…

寻找两个正序数组的中位数(C++)

给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log (mn)) 。示例 1:输入:nums1 [1,3], nums2 [2] 输出:2.00000 解释&#x…

Expected Sarsa 算法的数学原理

🌟 一、Expected Sarsa 算法的数学原理 1. 什么是 Expected Sarsa? Expected Sarsa 是一种基于 时序差分(Temporal Difference, TD)学习 的强化学习算法,用于估计 动作值函数 ( q_{\pi}(s, a) )。它是 Sarsa 算法的一种…

Vue的watch和React的useEffect

参考文章:https://zhuanlan.zhihu.com/p/686329898

idea中合并git分支

1.把本地dev代码合并到本地master代码在提交代码之前,先确保dev和master都拉取了最新的代码都进行了Git->pull了这时候确保Local的第一个分支是master分支,然后选择dev分支 ,鼠标右键-》Merge dev into master这时候会提示 有合并到本地master最新的代…

《Spring 中上下文传递的那些事儿》Part 7:异步任务上下文丢失问题详解

📝 Part 7:异步任务上下文丢失问题详解 在现代 Java 应用中,异步编程已经成为提升性能、解耦业务逻辑的重要手段。无论是使用 CompletableFuture、线程池(ExecutorService)、定时任务(ScheduledExecutorSe…

大语言模型驱动智能语音应答:技术演进与架构革新

在智能客服、电话银行等场景中,用户时常遇到这样的困境:“请描述您的问题...抱歉没听清,请重试...正在为您转接人工”。传统语音应答(IVR)系统受限于规则引擎与浅层语义理解,难以应对复杂多变的自然语言表达…

【Linux】内存管理

要求:1、编写程序,实现如下功能。(1)随机生成 1000000 个 0~1 之间的数;(2)统计分析这些数据,计算均值、方差和分布情况,分布情况按0.01 的步长进行统计;&…

苍穹外卖—day1

文章目录前言一、接口文档导入与生成二、前端环境搭建三、后端环境搭建1. 了解项目结构2. 环境搭建常见问题总结前言 (简要说明笔记的目的:记录搭建过程、关键配置和结构理解) 一、接口文档导入与生成 Apifox 导入 使用工具:https…