标题:
FPGA IP核和硬件原语的关系!【转】
[打印本页]
作者:
yuyang911220
时间:
2016-8-2 16:59
标题:
FPGA IP核和硬件原语的关系!【转】
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
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0