oserdes实现并串转换,只需要管发送并不需要管接收到的数据如何,所以它的操作相对于iserdes来说简单;
本文将介绍oserdes的ip核生成,oserdes原语介绍,oserdes级联使用以及iserdes,idelay接收串行数据的几种方法。
与上一篇文章的结构对应,这篇也将从可视化的selectio的设置讲起,从简单到复杂;
在ip catalog里面找到selectio,接下来跟着这般操作:
数据总线设置
参数的意义如下:
interface template:接口模板,本次数据传输并不符合预设的协议,所以选择customdata bus direction:这一次需要发送数据,选择outputdata rate: 数据总线是sdr还是ddr,ddr内容可以看(lvds差分信号简单处理)2. ddr信号的处理serialization factor: 串化因子,也就是ip核的输入并行数据位宽;sdr rate:可设为2,3,4,5,6,7,8;ddr rate:可设为4,6,8,10,14;external data width: 外部输出数据的位宽,默认设1i/o signaling:设置差分还是单端以及io电压标准
时钟设置
这一部分的内容可以参考使用iserdes接收高速串行数据,内容一样;
数据和延时设置
这个地方不做设置的原因是因为,我们在测试iserdes和oserdes,需要排除使用idelay的影响,因此这个地方不做任何延时;
最后一键ok,oserdes的相关ip核就生成好了。从ip核最底层的verilog文件可以看到,它的实现跟oserdes2原语有关,从ug471我们可以知道oserdes2的相关内容;
首先关注osedes2的属性内容,它的重要属性决定的因素如下:
data_rate_oq:决定oq端口输出的数据速率,可选sdr或ddr;data_rate_tq:决定tq端口输出的数据速率,可选buf, sdr或ddr;data_width: 根据data_rate_oq确定具体数值;sdr rate:可设为2,3,4,5,6,7,8;ddr rate:可设为4,6,8,10,14;serdes_mode:确定oserdes是主模块还是从模块,这跟oserdes级联使用有关,具体内容请看下面的内容;tristate_width:这跟data_rate_tq有关,大多情况都设为1,它的具体设置关系如下:
tristate_width设置参数表 ug471 table 3-8
oserdes原语图 ug471 figure 3-14
oserdes原语的端口定义如上图所示,其中重要的端口设置如下:
oq:串行数据输出,直接到iob,也就是直接连接到iobuf,odelay等特殊结构shiftout1/2:级联时使用,详见下文clk:高速时钟,串行数据时钟输入clkdiv:慢速时钟,并行数据时钟输入d1 to d8:并行数据输入,当并行数据多于8bit不超过14bit,可以使用oserdes级联,级联的使用方法详见下文oce:串行数据时钟使能信号输出rst:高复位信号输入shiftin1/2: 级联时使用,详见下文其他没有提到的输入信号可以设为0,输出信号可以不用连接;
clkdiv与clk的联系:
假设接收的串行数据时钟为256mhz,串化因子为8,则clkdiv为32mhz;
sdr:clkdiv = clk/data_width
ddr: clkdiv = 2 * clk/data_width
注意clk和clkdiv不一定是相位对齐的;
oserdes2数据时延:
虽然与iserdes2相比,没有mode属性设置,但clk和clkdiv不一定是相位对齐的,它的输出数据相对于输入数据也有相应的时延,具体的延时与data_width,data_rate_oq,data_rate_tq有关;关系如下:
oserdes时延参数对照表 ug471 table 3-11
以最简单的2:1 sdr串化为例:
2:1 sdr ug471 figure 3-16
event1时,数据从fpga其他部分逻辑传到oserdes2的d1-2端口event2时,数据在clkdiv上升沿被oserdes2采样event3时,oq端口产生相应的输出串行数据所以,是不是也可以推出下图event所发生的事情呢?条件为8:1 ddr。
8:1 ddr ug471 figure 3-17
oserdes级联使用:
当并行数据多于8bit不超过14bit时,可以采用两个oserdes2级联的使用方法,示意图如下,
扩展并行输入数据位宽 ug471 figure 3-15
上图已经示意的比较清楚,操作步骤可分为三步。
两个oserdes2的serdes_mode设置,一个需要设为master,另一个设为slave;将slave的shiftout1/2连接至master的shiftin1/2;master的d1-d8输入并行数据的低8位,slave的d3-d8可以连接输入并行数据的高6位;我在调试一款ad的过程中接触到了selectio中的相关知识,由表及里,看过一些i/oserdes接收数据的调节方法:
首先让发送方发送特殊字符,接收方接收数据转为并行数据,调节idelay的参数,直到出现稳定的结果(不一定是发送的特殊字符),idelay参数记为c1;继续调节idelay的参数,直到结果不再稳定,idelay参数记为c2;idelay参数设为(c1+c2)/2 ,此时接收的并行数据稳定为一个定值;如果稳定的输出结果不是约定的特殊字符,调节bitslip移动字符的边界,直至输出结果为约定的特殊字符;利用其他的通信方式或方法,告知发送方可以正常发送数据;更有甚者直接使用iserdes,idelay调节clk,
将clk作为串行数据,使用iserdes转为并行数据后,调节idelay;记录最后一次并行数据全为0的时候的idelay参数c1;继续调节,记录第一次并行数据全为1的时候的idelay参数c2;idelay参数设为(c1+c2)/2 ,此时clk的时钟对应数据的位置裕量充足;仿真结果可以参看使用iserdes接收高速串行数据
总结:
oserdes2可以使用selectio ip核设置简化原语设置流程;但oserdes2原语设置会更加精细。oserdes的数据时延以及级联使用方面见上面的内容。
大联大世平集团推出基于NXP产品的EdgeReady人脸识别解决方案
明锐理想科技推出在线式光学检查机MRI730
RFID技术在电网资产上是如何应用的
用于输入交流400Hz场合的机载高频开关电源解决方案
浅析工业4.0的三大主题与智能工厂的体系架构
使用OSERDES发送高速串行数据
华为在云业务与鸿蒙OS层面采取向下走,向上看的策略
“文武双全”的卤化物固态电解质
一文彻底搞懂前馈控制
CSDN为所有感兴趣的开发者提供了一个探讨和学习Python的契机
罗姆收购松下部分半导体业务
华为Mate30 RS手机怎么样?
日产开启荷兰最大集体太阳能屋顶项目,为日本新能源解决方案奠定基础
基于C8051F131设计的RFID阅读器的信号处理电路设计
英飞凌携手Reality AI为车辆装上耳朵,助力改善道路安全
浅谈晶体的串联和并联谐振
苹果或将采用指纹识别来替代Face ID
传统工业向智能制造转变的七大趋势
BUCK电路CCM模式下的占空比表达式
农村饮水安全监控系统助力美丽乡村振兴