http://blog.sina.com.cn/s/blog_75df3ad50100zgdz.html
Xilinx FPGA芯片的可构造单元:
1、 可编程输入、输出块IOB::为逻辑阵列与外部芯片管脚之间提供一个可编程接口
2、 可编程逻辑块CLB:由组合逻辑、几个触发器、若干个多选一电路和控制单元组成;若干个CLB有规则的组成FPGA逻辑单元阵列结构,以完成用户指定的逻辑功能
3、 各种连线资源,包括可编程的开关矩阵,内部连接点和金属线。它们位于芯片内部的逻辑块之间,经编程后形成连线网络,以连接芯片内的逻辑块及传递逻辑信息
Xilinx提供的片上RAM,可以配置成双口RAM或ROM,存储量大,速度快,不占用逻辑资源。内嵌的宏单元包括硬核乘加器、硬核处理器、数字时钟处理器模块及高速串行接口,处理能力强,为片上最高,不存在时序问题
Xilinx FPGA芯片专用代码风格:
1、 时钟信号的分配
时钟分配网络是FPGA芯片中的特殊布线资源,由特定的管脚和特定的驱动器驱动
全局网线由全局缓冲器BUFG驱动。时钟信号经BUFG驱动后,通过长线同时接到每个触发器的时钟端,减少传输延迟。如不使用BUFG,时钟信号按一般布线连接到不同CLB。时钟信号到达各触发器的延迟不一致,使同步时序电路出现不同步的现象
减小时钟摆率:使用一个时钟信号,生成多个时钟使能信号,分别驱动触发器的时钟使能端
2、 SRL16的使用
SRL16是一种基于查找表的移位寄存器,可用于构建高密度DSP结构,大幅削减硬件资源
3、 触发器资源的分配
FPGA是一种触发器密集型可编程器件,尽量使用库中的触发器资源,对D触发器等元件可直接利用CLB中的触发器,在设计状态机时尽量使用独热码编码
Xilinx原语:
芯片中的基本单元,代表FPGA中实际拥有的硬件逻辑单元,如LUT、D触发器、RAM等,相当于软件中的机器语言
例子:通过调用IP核DCM,同时选择CLKIN Source为External,系统自动生成原语IBUFG.
从代码可以看出DCM核=原语IBUFG(全局时钟输入缓存)+DCM_SP(基本数字时钟管理模块)+BUFG(全局时钟缓冲器)
moduledcm0(CLKIN_IN,
RST_IN,
CLKFX_OUT,
CLKIN_IBUFG_OUT,
LOCKED_OUT); //IP核模块
inputCLKIN_IN;
inputRST_IN;
outputCLKFX_OUT;
outputCLKIN_IBUFG_OUT;
outputLOCKED_OUT;
wireCLKFX_BUF;
wireCLKIN_IBUFG;
wireGND_BIT;
assignGND_BIT = 0;
assignCLKIN_IBUFG_OUT = CLKIN_IBUFG;
//三个原语模块
BUFG CLKFX_BUFG_INST(.I(CLKFX_BUF),
.O(CLKFX_OUT));
IBUFG CLKIN_IBUFG_INST(.I(CLKIN_IN),
.O(CLKIN_IBUFG));
DCM_SP#( .CLK_FEEDBACK("NONE"), .CLKDV_DIVIDE(2.0),.CLKFX_DIVIDE(8),
.CLKFX_MULTIPLY(25),.CLKIN_DIVIDE_BY_2("FALSE"),
.CLKIN_PERIOD(31.250),.CLKOUT_PHASE_SHIFT("NONE"),
.DESKEW_ADJUST("SYSTEM_SYNCHRONOUS"),.DFS_FREQUENCY_MODE("LOW"),
.DLL_FREQUENCY_MODE("LOW"),.DUTY_CYCLE_CORRECTION("TRUE"),
.FACTORY_JF(16'hC080),.PHASE_SHIFT(0), .STARTUP_WAIT("FALSE") )//鼠标点点的参数
DCM_SP_INST(.CLKFB(GND_BIT),
.CLKIN(CLKIN_IBUFG),
.DSSEN(GND_BIT),
.PSCLK(GND_BIT),
.PSEN(GND_BIT),
.PSINCDEC(GND_BIT),
.RST(RST_IN),
.CLKDV(),
.CLKFX(CLKFX_BUF),
.CLKFX180(),
.CLK0(),
.CLK2X(),
.CLK2X180(),
.CLK90(),
.CLK180(),
.CLK270(),
.LOCKED(LOCKED_OUT),
.PSDONE(),
.STATUS());
endmodule |