首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

FPGA IP核和硬件原语的关系!

FPGA IP核和硬件原语的关系!

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(全局时钟缓冲器)
module dcm0(CLKIN_IN,
RST_IN,
CLKFX_OUT,
CLKIN_IBUFG_OUT,
LOCKED_OUT); //IP核模块
input CLKIN_IN;
input RST_IN;
output CLKFX_OUT;
output CLKIN_IBUFG_OUT;
output LOCKED_OUT;

wire CLKFX_BUF;
wire CLKIN_IBUFG;
wire GND_BIT;

assign GND_BIT = 0;
assign CLKIN_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
记录学习中的点点滴滴,让每一天过的更加有意义!
返回列表