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

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

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

http://blog.sina.com.cn/s/blog_75df3ad50100zgdz.html
                        Xilinx FPGA芯片的可构造单元:
1、 可编程输入、输出块IOB::为逻辑阵列与外部芯片管脚之间提供一个可编程接口
2、 可编程逻辑块CLB:由组合逻辑、几个触发器、若干个多选一电路和控制单元组成;若干个CLB有规则的组成FPGA逻辑单元阵列结构,以完成用户指定的逻辑功能
3、 各种连线资源,包括可编程的开关矩阵,内部连接点和金属线。它们位于芯片内部的逻辑块之间,经编程后形成连线网络,以连接芯片内的逻辑块及传递逻辑信息
Xilinx提供的片上RAM,可以配置成双口RAMROM,存储量大,速度快,不占用逻辑资源。内嵌的宏单元包括硬核乘加器、硬核处理器、数字时钟处理器模块及高速串行接口,处理能力强,为片上最高,不存在时序问题
Xilinx FPGA芯片专用代码风格:
1、 时钟信号的分配
时钟分配网络是FPGA芯片中的特殊布线资源,由特定的管脚和特定的驱动器驱动
全局网线由全局缓冲器BUFG驱动。时钟信号经BUFG驱动后,通过长线同时接到每个触发器的时钟端,减少传输延迟。如不使用BUFG,时钟信号按一般布线连接到不同CLB。时钟信号到达各触发器的延迟不一致,使同步时序电路出现不同步的现象
减小时钟摆率:使用一个时钟信号,生成多个时钟使能信号,分别驱动触发器的时钟使能端
2、 SRL16的使用
SRL16是一种基于查找表的移位寄存器,可用于构建高密度DSP结构,大幅削减硬件资源
3、 触发器资源的分配
FPGA是一种触发器密集型可编程器件,尽量使用库中的触发器资源,对D触发器等元件可直接利用CLB中的触发器,在设计状态机时尽量使用独热码编码
Xilinx原语:
芯片中的基本单元,代表FPGA中实际拥有的硬件逻辑单元,如LUTD触发器、RAM等,相当于软件中的机器语言
例子:通过调用IPDCM,同时选择CLKIN SourceExternal,系统自动生成原语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
继承事业,薪火相传
返回列表