原语(primitive):在操作系统中,一般是指由若干条指令组成的程序段,用来实现某个特定功能,在执行过程中不可被中断。而在硬件设计中,原语相当于就是软件中的库函数,是芯片设计厂家为了方便开发而设计的一种专用的高速的硬件电路设计。
我们可以使用这些原语来加速开发,比如说我们需要并串转换,我们可以自己写逻辑,这样虽然可以实现功能,但是速度和稳定性可能会稍差。如果用原语,因为原语是芯片厂家设计的,芯片厂家肯定比使用者更熟悉芯片的结构,所以原语相比自己设计逻辑,一般会有更好的资源利用率,更加高速稳定。
Xilinx 原语是 Xilinx 器件底层硬件中的功能模块, 它使用专用的资源来实现一系列的功能。相比于 IP 核,原语的调用方法更简单,但是一般只用于实现一些简单的功能。
1、OSERDESE2(并转串)
Xilinx 中的 OSERDESE2是一个最多8:1的并串转换原语
但是我们在设计HDMI时,需要进行10位转一位的并串转换,所以我们需要级联两个OSERDESE2原语来进行位扩展。
如果进行OSERDESE2级联,那么OSERDESE2就会分为主机(Master)和从机(Slave),在进行位扩展时,从机只能使用D3—D8
在Xilinx的UG768《Xilinx 7Series FPGA Libraries Guide for HDL Designs》中,有参考程序
其中的DDR是双倍数据速率的意思,可以在上升沿和下降沿进行操作,达到了速率翻倍的的效果。
10:1 的并转串过程所生成的串行数据速率是实际像素时钟速率的 10 倍。按理来说OSERDESE2应该输入10倍像素时钟的CLK,由于有DDR,所以只需要产生一个5倍像素时钟的CLK输入OSERDESE2
2、OBUFDS(差分输出)
这个原语比较简单,一个数据输入,两个差分输出。
其他更多的Xilinx原语可以参考UG768《Xilinx 7Series FPGA Libraries Guide for HDL Designs》
博客的话,可以参考:http://www.elecfans.com/pld/845058.html