目录
一、原语Primitive
在FPGA中,(Primitive)原语是硅片结构中最底层的、不可再分割的硬件逻辑单元(例如,查找表、触发器、多路复用器、DSP和RAM块)。
开发者写的verilog代码会综合成门级网表(AND,OR,NOT等),然后再映射到原语Primitive,最后经过布局布线后生成bit文件。
通常是需要使用一些特殊硬件功能或工具推断不理想时会直接使用对应单元的原语。
二、原语的分类
原语根据功能特点可分为以下
CLB(可配置逻辑块)原语:包括查找表(LUT)、触发器(Flip-Flop)、多路选择器(MUX)和进位链(Carry Chain)等。例如:LUT1~LUT6, FDCE, FDPE, CARRY4等。
块RAM(Block RAM)原语:用于实现片上存储器。例如:RAMB18E1, RAMB36E1等。
DSP(数字信号处理)原语:用于实现乘法、乘加等算术运算。例如:DSP48E1(7系列)、DSP48E2(UltraScale)等。
时钟资源原语:包括全局时钟缓冲器、BUFH水平时钟缓冲器、时钟管理单元(如MMCM、PLL)等。例如:BUFG, BUFIO, BUFR, MMCME2_ADV, PLLE2_ADV等。
I/O(输入/输出)原语:包括输入缓冲器、输出缓冲器、双向缓冲器等。例如:IBUF, OBUF, IOBUF, IBUFDS(差分输入)等。
高速收发器原语:用于实现高速串行通信,如GTX、GTH、GTZ等。例如:GTHE2_CHANNEL, GTXE2_CHANNEL等。
互联和配置原语:包括STARTUP, BSCAN等用于配置和调试的原语。
三、原语与Verilog代码
以触发器的例子为例,可以看出使用原语比写verilog代码方便多了,缺点是没法看出具体的行为功能
module Primitive(CLK,CLR,CE,D,Q_reg,Q );
input CLK,CLR,CE,D;
output Q_reg,Q;
reg Q_reg;
always @(posedge CLK or negedge CLR) begin
if (!CLR) begin
Q_reg <= 1'b0; // 异步复位
end
else if(CE)
Q_reg <= D;
end
FDCE #(
.INIT(1'b0) // Initial value of register (1'b0 or 1'b1)
) FDCE_inst (
.Q(Q), // 1-bit Data output
.C(CLK), // 1-bit Clock input
.CE(CE), // 1-bit Clock enable input
.CLR(CLR), // 1-bit Asynchronous clear input
.D(D) // 1-bit Data input
);
endmodule
查看Synthesis后的schematic结果,使用原语的触发器为FDCE_inst,使用Verilog写的也生成了一个FDCE(Q_reg_reg)

四、原语使用模板
快速查看原语的使用,进入“Tools->Language Templates",可以查看Verilog,VHDL,SystemVerlog三种语言下的原语使用

五、原语手册
Xilinx关于原语的使用手册如下
6系列:UG615 Spartan-6 Libraries Guide
7系列 (Artix-7, Kintex-7, Virtex-7) :UG953 7 Series Libraries Guide
UltraScale/UltraScale+:UG974 UltraScale Libraries Guide
372

被折叠的 条评论
为什么被折叠?



