欢迎各位朋友关注“郝旭帅电子设计团队”公众号,本公众号会定时更新相关技术类资料、软件等等,感兴趣的朋友可以浏览一下本公众号的其他“模块”,希望各位朋友都能在本公众号获得一些自己想要的“东西”。
本篇主要是Xilinx FPGA中的OSERDESE2介绍
什么是oserdese2?
将FPGA内部的并行数据,变为串行发出去的一块硬件电路(是asic 电路,不是由FPGA可编程逻辑构成)。
为什么不直接使用FPGA可编程逻辑构成?
当需要输出的串行数据的速度超过200Mbps时,FPGA可编程逻辑构成的电路就基本无法实现了(不同的FPGA能够实现的速度不同,但是一般很少能超过200Mbps),所以就需要一块专门的电路用于输出高速度串行数据。
oserdese2输出数据的类型有SDR模式、DDR模式。
SDR模式可以选择并串比例为:2、3、4、5、6、7、8比1。即内部并行的速率为输出速率2、3、4、6、7、8分之一,但是内部并行数据的位宽为2、3、4、5、6、7、8。
例:内部数据并行位宽为8bit,速率为100M。通过oserdese2后,可以变为串行数据,位宽为1bit,速率为800M。需要给oserdese2提供100M的时钟用于接收内部的并行数据;需要给oserdese2提供800M的时钟用于发送串行数据。
DDR模式可以选择并串比例为:4、6、8、10、14比1。即内部并行的速率为输出速率4、6、8、10、14分之一,但是内部并行数据的位宽为4、6、8、10、14。
例:内部数据并行位宽为8bit,速率为100M。通过oserdese2后,可以变为串行数据,位宽为1bit,速率为800M。需要给oserdese2提供100M的时钟用于接收内部的并行数据;需要给oserdese2提供400M的时钟用于发送串行数据(DDR发送)。
那我们使用时,选择SDR还是DDR呢?
首先根据并串位宽来进行选择,能用DDR时,尽量用DDR,毕竟我们提供的时钟速率会降低一半。
当我们给进去并行数据后,是优先输出低位还是高位?
一块oserdese2电路可以并行输入8bit,它会优先输出连接到D1的那个bit,依次类推,直到D8。如果并行输入4bit,他只会输出到D4就完事了(不清楚的话,可以看看上面的oserdese2的模块图或者波形图)。
一块oserdese2电路只能够并行输入8bit,那么如何实现10bit、14bit的并串转换?
此时需要利用两块oserdese2电路,一块被配置为master模式,一块被配置为slave模式;master模式的电路,负责八个bit,slave模式负责剩下的bit(注意从D3开始连接)。
最终输出还是master的那块电路,但是需要将slave电路的shiftout与master电路的shiftin进行对应连接即可。
oserdese2电路需要一个复位(RST)输入,此RST有何要求?
RST必须同步与FPGA内部的并行数据的时钟;要求在使用oserdese2电路前,要求复位此电路。
特殊使用说明:
一般来说我们oserdese2的输出直接输出给IOB即可,如果需要经过延时单元(Odelaye2),那么输出的话,就不能利用OQ,而需要利用OFB作为电路输出。
如果我们的数据通道为双向时,那么oserdese2输出还是要利用OQ,但是需要同步输出一个三态控制信号TQ(用于连接三态门的控制端)。
OSERDESE2原语还有三态控制输出的功能,那么T1~T4是三态控制信号,与D1~D4数据对应。使用三态功能时,TQ作为串行输出的管脚,用于判断OQ信号此时是作为输入引脚(TQ为高电平)还是输出引脚(TQ为低电平)。
本篇内容中有部分资源来源于网络,如有侵权,请联系作者。
如果您觉得本公众号还不错的话,可以推给身边的朋友们,感谢并祝好!
154