1.原语的概念
原语是一种元件!
FPGA原语是芯片制造商已经定义好的基本电路元件,是一系列组成逻辑电路的基本单元,FPGA开发者编写逻辑代码时可以调用原语进行底层构建。
2.原语的分类
原语可分为预定义原语和用户自定义原语。预定义原语为如and/or等门级原语不需要例化,可以直接调用。用户自定义原语在Verilog中使用非常简单,将其作为模块名直接例化即可。Vivado中的原语库也属于自定义原语,提供了如ODDR、BUFG、OBUF、IBUF等原语供开发者使用。
3.原语的存在
原语是一种元件,无处不在。在自己定义的模块中显示的使用某个原语,如ODDR,则作为自己的代码显示的存在;在使用个某个IP核时,如用Clocking Wizard时钟向导创建时钟源,会指定其输出为BUFG形式,则在IP核中显示的存在;定义模块端口时,需要定义端口的输入输出性质, 输入输出端口必须添加缓冲后才能进入FPGA内部逻辑,用于与外部隔离。Vivado会指定一种默认的原语,如input默认为IBUF形式,output为OBUF形式,达到缓冲隔离的目的。
4、原语的使用
BUFG将输入分配到多路输出,起到信号分配和扩展的作用。当需要保证多路输出相对相位关系的一致性时,不能直接输出到OBUF上。
在xilinx的FPGA中,PLL产生的时钟不能直接连到FPGA的通用I/O上,这会导致时钟脉冲延时和抖动变差。因为