Xilinx FPGA 原语解析(二):IBUFDS差分输入缓冲器(示例源码及仿真)

本文主要是介绍Xilinx FPGA 原语解析(二):IBUFDS差分输入缓冲器(示例源码及仿真),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

前言:

一、原语使用说明

二、原语实例化代码模版

三、使用示例

1.设计文件代码

2.仿真文件代码

3.仿真结果


前言:

本文主要参考资料xilinx手册,《Xilinx 7 Series FPGA and Zynq-7000 All Programmable SoC Libraries Guide for HDL DesignsUG768 (v14.7) October 2, 2013


一、原语使用说明


IBUFDS是一个支持低压差分信号的输入缓冲器,用于接收差分信号对(如LVDS),并将其转换为单端信号输出。它可以用于时钟信号、数据总线信号等。

差分输入IBUFDS 接受两个差分信号(差分信号正输入I和差分信号负输入IB)作为输入,并将其转换为单端输出(单端输出信号O)。

端口示意图如下:

逻辑表和端口描述:

  • I: 差分信号的正输入;IB: 差分信号的负输入;O: 单端输出信号
  • IB 端口信号极性相反,说明差分信号对正常工作,输入的差分信号有效。输出端口O输出0/1。


二、原语实例化代码模版


        打开Vivado左侧导航栏中的"Language Templates",搜索“IBUFDS”,找到可直接调用的原语模块实例化代码

参数说明:

-DIFF_TERM 用于配置 IBUFDS(输入差分缓冲器)或其他差分输入缓冲器的差分终端。

  • "TRUE": 启用差分终端。这会自动在差分输入端添加终端电阻,以减少信号噪声、反射并提高信号完整性。适用于需要高信号质量的应用场景。

  • "FALSE": 不启用差分终端。默认情况下不会添加终端电阻,通常用于对信号质量要求不高的应用或外部电路已经处理了终端匹配的情况。

-TERMIBUF_LOW_PWR 用于控制缓冲器的功耗模式

  • "TRUE": 启用低功耗模式。可以减少 IBUFDS 缓冲器的功耗,但低功耗模式通常会略微降低性能,但在大多数情况下,这种性能降低是微不足道的。

  • "FALSE": 启用最高性能模式。选择这个选项会使 IBUFDS 缓冲器以最高的性能运行,但功耗会增加。这个模式适合对性能要求很高的应用场景。

-IOSTANDARD 用于指定 IBUFDS 的输入/输出标准。IOSTANDARD 决定了信号的电平标准、驱动能力和信号的电气特性。

  • "DEFAULT": 使用 FPGA 工具默认的 I/O 标准。如果没有特别的要求,可以使用默认值较为通用的标准。

  • 特定标准: 根据实际应用需要,选择具体的 I/O 标准。具体的标准决定了电压电平和信号的兼容性。例如,"LVCMOS33""LVDS_25""HSTL_I" 等。常见的 I/O 标准有LVCMOS (Low Voltage CMOS),"LVCMOS33"(3.3V CMOS 标准)、"LVCMOS25"(2.5V CMOS 标准)、"LVCMOS18"(1.8V CMOS 标准);LVDS (Low Voltage Differential Signaling):"LVDS_25"(2.5V LVDS 标准)、"LVDS_33"(3.3V LVDS 标准)


三、使用示例


1.设计文件代码

module example_ibufds (input wire  rx_sysref_p,  // 差分信号正输入input wire  rx_sysref_n,  // 差分信号负输入output wire rx_sysref     // 单端输出信号
);// IBUFDS 实例化IBUFDS #(.DIFF_TERM   ("TRUE"  ), // 启用差分终端以提高信号质量.IBUF_LOW_PWR("TRUE"   ), // 启用低功耗模式.IOSTANDARD  ("LVDS_25")  // 指定 LVDS 2.5V I/O 标准) IBUFDS_inst0 (.O (rx_sysref  ), // 缓冲器输出.I (rx_sysref_p), // 差分正输入.IB(rx_sysref_n)  // 差分负输入);endmodule

2.仿真文件代码

`timescale 1ns / 1ps
module tb_example_ibufds();// 测试平台中的信号定义reg rx_sysref_p;  // 差分信号正输入reg rx_sysref_n;  // 差分信号负输入wire rx_sysref;   // 单端输出信号// 实例化 example_ibufds 模块example_ibufds uut (.rx_sysref_p(rx_sysref_p),.rx_sysref_n(rx_sysref_n),.rx_sysref(rx_sysref));// 初始块,用于生成测试信号initial begin// 初始化信号rx_sysref_p = 0;rx_sysref_n = 1;// 生成差分信号#10;rx_sysref_p = 1;rx_sysref_n = 0;#10;rx_sysref_p = 0;rx_sysref_n = 1;#10;rx_sysref_p = 1;rx_sysref_n = 0;#10;rx_sysref_p = 0;rx_sysref_n = 0;#10;rx_sysref_p = 1;rx_sysref_n = 1;#10;rx_sysref_p = 0;rx_sysref_n = 1;#10;rx_sysref_p = 1;rx_sysref_n = 0;#10;$stop; // 停止仿真endendmodule

3.仿真结果

这篇关于Xilinx FPGA 原语解析(二):IBUFDS差分输入缓冲器(示例源码及仿真)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1138555

相关文章

关于WebSocket协议状态码解析

《关于WebSocket协议状态码解析》:本文主要介绍关于WebSocket协议状态码的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录WebSocket协议状态码解析1. 引言2. WebSocket协议状态码概述3. WebSocket协议状态码详解3

CSS Padding 和 Margin 区别全解析

《CSSPadding和Margin区别全解析》CSS中的padding和margin是两个非常基础且重要的属性,它们用于控制元素周围的空白区域,本文将详细介绍padding和... 目录css Padding 和 Margin 全解析1. Padding: 内边距2. Margin: 外边距3. Padd

CSS will-change 属性示例详解

《CSSwill-change属性示例详解》will-change是一个CSS属性,用于告诉浏览器某个元素在未来可能会发生哪些变化,本文给大家介绍CSSwill-change属性详解,感... will-change 是一个 css 属性,用于告诉浏览器某个元素在未来可能会发生哪些变化。这可以帮助浏览器优化

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数

C++中std::distance使用方法示例

《C++中std::distance使用方法示例》std::distance是C++标准库中的一个函数,用于计算两个迭代器之间的距离,本文主要介绍了C++中std::distance使用方法示例,具... 目录语法使用方式解释示例输出:其他说明:总结std::distance&n编程bsp;是 C++ 标准

前端高级CSS用法示例详解

《前端高级CSS用法示例详解》在前端开发中,CSS(层叠样式表)不仅是用来控制网页的外观和布局,更是实现复杂交互和动态效果的关键技术之一,随着前端技术的不断发展,CSS的用法也日益丰富和高级,本文将深... 前端高级css用法在前端开发中,CSS(层叠样式表)不仅是用来控制网页的外观和布局,更是实现复杂交

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

Springboot @Autowired和@Resource的区别解析

《Springboot@Autowired和@Resource的区别解析》@Resource是JDK提供的注解,只是Spring在实现上提供了这个注解的功能支持,本文给大家介绍Springboot@... 目录【一】定义【1】@Autowired【2】@Resource【二】区别【1】包含的属性不同【2】@

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放