当前位置:首页>编程日记>正文

【FPGA】Buffer专题介绍(二)

目录

背景

IBUF

IBUFDS

IBUFG

IBUFGDS


背景

这篇博文是下面这篇博文的继续:

【FPGA】Buffer专题介绍(一)

但介绍方式我想放的更自由一点,要不然就是官方文档了。


IBUF

这是一个输入缓冲(Input Buffer)原语,不过这个原语一般不需要你自己去例化,综合工具会根据情况自己添加的。

【FPGA】Buffer专题介绍(二) 配图01

上面显示,推荐的设计方法是Inference,什么意思呢?就是综合工具自己添加进设计中。

且看下面这段话:

This design element is automatically inserted (inferred) by the synthesis tool to any signal directly connected to a top-level input or in-out port of the design. You should generally let the synthesis tool infer this buffer.
However, it can be instantiated into the design if required. In order to do so, connect the input port (I) directly to the associated top-level input or in-out port, and connect the output port (O) to the logic sourced by that port.
Modify any necessary generic maps (VHDL) or named parameter value assignment (Verilog) in order to change the default behavior of the component.

这个设计元素由综合工具自动插入(inferred)到与设计的顶层输入或输入输出端口直接连接的任何信号。(翻译的太蹩脚了,意思也就是这个IBUF通过综合工具推断,被插入到任何输入信号上,或者是一个输入输出(in-out)信号。)

 您通常应该让综合工具推断出这个缓冲区。
但是,如果需要,可以将其实例化到设计中。 为此,将输入端口(I)直接连接到相关的顶级输入或输入输出端口,并将输出端口(O)连接到该端口提供的逻辑。 修改任何必要的通用映射(VHDL)或命名参数值赋值(Verilog)以更改组件的默认行为。

说简单很简单,就不用你管,你知道有这个东西就好了,他就是与输入信号相连接的一个输入缓冲,这玩意很重要,在FPGA电路中几乎可以说是必须用。

如果非得自己实例化,我也给出模板:

Verilog Instantiation Template
// IBUF: Single-ended Input Buffer
// All devices
// Xilinx HDL Libraries Guide, version 11.2
IBUF #(
.IBUF_DELAY_VALUE("0"), // Specify the amount of added input delay for
// the buffer: "0"-"12" (Spartan-3E)
// "0"-"16" (Spartan-3A)
.IFD_DELAY_VALUE("AUTO"), // Specify the amount of added delay for input
// register: "AUTO", "0"-"6" (Spartan-3E)
// "AUTO", "0"-"8" (Spartan-3A)
.IOSTANDARD("DEFAULT") // Specify the input I/O standard
)IBUF_inst (
.O(O), // Buffer output
.I(I) // Buffer input (connect directly to top-level port)
);
// End of IBUF_inst instantiation

IBUFDS

这个原语就很重要了,我曾经在工程中遇到过它,当时我很纳闷,这到底是个啥玩意,一系列类似的buff让我很头疼,当然带我入门的文章是这一篇:https://blog.csdn.net/Reborn_Lee/article/details/81289891

这是一个差分转单端的Buffer而已,用途就是将差分信号转换成单端信号。

如下:

【FPGA】Buffer专题介绍(二) 配图02

This design element is an input buffer that supports low-voltage, differential signaling. In IBUFDS, a design level interface signal is represented as two distinct ports (I and IB), one deemed the "master" and the other the "slave." The master and the slave are opposite phases of the same logical signal (for example, MYNET_P and MYNET_N). Optionally, a programmable differential termination feature is available to help improve signal integrity and reduce external components.

该设计元素是一个支持低电压差分信号的输入缓冲器。 在IBUFDS中,设计级接口信号表示为两个不同的端口(I和IB),一个视为“主”,另一个视为“从”。 主机和从机是相同逻辑信号的相位相反(例如,MYNET_P和MYNET_N)。 可选的,可编程差分端接功能可用于帮助改善信号完整性并减少外部元件。

(谷歌翻译有时候还可以,差不多我就不修改了!)

【FPGA】Buffer专题介绍(二) 配图03

这个Buffer就需要自己例化了。

例化模板:

Verilog Instantiation Template
// IBUFDS: Differential Input Buffer
// Virtex-4/5, Spartan-3/3E/3A
// Xilinx HDL Libraries Guide, version 11.2
IBUFDS #(
.CAPACITANCE("DONT_CARE"), // "LOW", "NORMAL", "DONT_CARE" (Virtex-4 only)
.DIFF_TERM("FALSE"), // Differential Termination (Virtex-4/5, Spartan-3E/3A)
.IBUF_DELAY_VALUE("0"), // Specify the amount of added input delay for
// the buffer: "0"-"12" (Spartan-3E)
// "0"-"16" (Spartan-3A)
.IFD_DELAY_VALUE("AUTO"), // Specify the amount of added delay for input
// register: "AUTO", "0"-"6" (Spartan-3E)
// "AUTO", "0"-"8" (Spartan-3A)
.IOSTANDARD("DEFAULT") // Specify the input I/O standard
) IBUFDS_inst (
.O(O), // Buffer output
.I(I), // Diff_p buffer input (connect directly to top-level port)
.IB(IB) // Diff_n buffer input (connect directly to top-level port)
);
// End of IBUFDS_inst instantiation

IBUFG

【FPGA】Buffer专题介绍(二) 配图04

专用输入时钟缓冲器( Dedicated Input Clock Buffer)

这个原语的使用也是通过综合工具推断,需要的时候自动添加的。同样,你也可以例化来用(就怕你不会用,哈哈)。

【FPGA】Buffer专题介绍(二) 配图05

下面的介绍还不错:

The IBUFG is a dedicated input to the device which should be used to connect incoming clocks to the FPGA’s global clock routing resources. The IBUFG provides dedicated connections to the DCM, PLL, or BUFG resources. providing the minimum amount of clock delay and jitter to the device. The IBUFG input can only be driven by the global clock (GC) pins.

IBUFG是器件的专用输入,应用于将输入时钟连接到FPGA的全局时钟布线资源。 IBUFG提供与DCM,PLL或BUFG资源的专用连接。 为器件提供最小量的时钟延迟和抖动。 IBUFG输入只能由全局时钟(GC)引脚驱动。

Verilog Instantiation Template
// IBUFG: Global Clock Buffer (sourced by an external pin)
// All FPGAs
// Xilinx HDL Libraries Guide, version 11.2
IBUFG #(
.IOSTANDARD("DEFAULT"),
.IBUF_DELAY_VALUE("0") // Specify the amount of added input delay for
// the buffer: "0"-"12" (Spartan-3E)
// "0"-"16" (Spartan-3A)
) IBUFG_inst (
.O(O), // Clock buffer output
.I(I) // Clock buffer input (connect directly to top-level port)
);
// End of IBUFG_inst instantiation

IBUFGDS

【FPGA】Buffer专题介绍(二) 配图06

差分信号专用输入时钟缓冲器和可选延迟(Differential Signaling Dedicated Input Clock Buffer and Optional Delay)

这个Buffer需要自己例化来使用。

This design element is a dedicated differential signaling input buffer for connection to the clock buffer (BUFG) or MMCM. In IBUFGDS, a design-level interface signal is represented as two distinct ports (I and IB), one deemed the "master" and the other the "slave." The master and the slave are opposite phases of the same logical signal (for example, MYNET_P and MYNET_N). Optionally, a programmable differential termination feature is available to help improve signal integrity and reduce external components. Also available is a programmable delay is to assist in the capturing of incoming data to the device.

该设计元素是专用差分信号输入缓冲器,用于连接时钟缓冲器(BUFG)或MMCM。 在IBUFGDS中,设计级接口信号表示为两个不同的端口(I和IB),一个视为“主”,另一个视为“从”。 主机和从机是相同逻辑信号的相位相反(例如,MYNET_P和MYNET_N)。 可选的,可编程差分端接功能可用于帮助改善信号完整性并减少外部元件。 还可以使用可编程延迟来帮助捕获到设备的输入数据。

【FPGA】Buffer专题介绍(二) 配图07

Verilog Instantiation Template
// IBUFGDS: Differential Global Clock Buffer (sourced by an external pin)
// Virtex-4/5, Spartan-3/3E/3A
// Xilinx HDL Libraries Guide, version 11.2
IBUFGDS #(
.DIFF_TERM("FALSE"), // Differential Termination (Virtex-4/5, Spartan-3E/3A)
.IOSTANDARD("DEFAULT") // Specifies the I/O standard for this buffer
.IBUF_DELAY_VALUE("0") // Specify the amount of added input delay for
// the buffer: "0"-"12" (Spartan-3E)
// "0"-"16" (Spartan-3A)
) IBUFGDS_inst (
.O(O), // Clock buffer output
.I(I), // Diff_p clock buffer input
.IB(IB) // Diff_n clock buffer input
);
// End of IBUFGDS_inst instantiation

不想写太长,需要介绍的还有几个,等下一篇博文介绍。

 


http://www.coolblog.cn/news/586c170cf6f53477.html

相关文章:

  • asp多表查询并显示_SpringBoot系列(五):SpringBoot整合Mybatis实现多表关联查询
  • s7day2学习记录
  • 【求锤得锤的故事】Redis锁从面试连环炮聊到神仙打架。
  • 矿Spring入门Demo
  • 拼音怎么写_老师:不会写的字用圈代替,看到孩子试卷,网友:人才
  • Linux 实时流量监测(iptraf中文图解)
  • Win10 + Python + GPU版MXNet + VS2015 + RTools + R配置
  • 美颜
  • shell访问php文件夹,Shell获取某目录下所有文件夹的名称
  • 如何优雅的实现 Spring Boot 接口参数加密解密?
  • LeCun亲授的深度学习入门课:从飞行器的发明到卷积神经网络
  • Mac原生Terminal快速登录ssh
  • java受保护的数据与_Javascript类定义语法,私有成员、受保护成员、静态成员等介绍...
  • mysql commit 机制_1024MySQL事物提交机制
  • 支撑微博千亿调用的轻量级RPC框架:Motan
  • jquery 使用小技巧
  • 2019-9
  • 法拉利虚拟学院2010 服务器,法拉利虚拟学院2010
  • vscode pylint 错误_将实际未错误的py库添加到pylint白名单
  • 科学计算工具NumPy(3):ndarray的元素处理
  • 工程师在工作电脑存 64G 不雅文件,被公司开除后索赔 41 万,结果…
  • linux批量创建用户和密码
  • newinsets用法java_Java XYPlot.setInsets方法代碼示例
  • js常用阻止冒泡事件
  • 气泡图在开源监控工具中的应用效果
  • 各类型土地利用图例_划重点!国土空间总体规划——土地利用
  • php 启动服务器监听
  • dubbo简单示例
  • 【设计模式】 模式PK:策略模式VS状态模式
  • [iptables]Redhat 7.2下使用iptables实现NAT
  • Ubuntu13.10:[3]如何开启SSH SERVER服务
  • CSS小技巧——CSS滚动条美化
  • JS实现-页面数据无限加载
  • 阿里巴巴分布式服务框架 Dubbo
  • 最新DOS大全
  • Django View(视图系统)
  • 阿里大鱼.net core 发送短信
  • 程序员入错行怎么办?
  • 两张超级大表join优化
  • 第九天函数
  • Linux软件安装-----apache安装
  • HDU 5988 最小费用流
  • Sorenson Capital:值得投资的 5 种 AI 技术
  • 《看透springmvc源码分析与实践》读书笔记一
  • 正式开课!如何学习相机模型与标定?(单目+双目+鱼眼+深度相机)
  • Arm芯片的新革命在缓缓上演
  • nagios自写插件—check_file
  • python3 错误 Max retries exceeded with url 解决方法
  • 行为模式之Template Method模式
  • 通过Spark进行ALS离线和Stream实时推荐