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

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

poj 3159 (spfa差分约束最短路) poj 1201

poj 3159: 题意: 每次给出b比a多不多于c个糖果,求n最多比1多多少个糖果。 解析: 差分约束。 这个博客讲差分约束讲的比较好: http://www.cnblogs.com/void/archive/2011/08/26/2153928.html 套个spfa。 代码: #include <iostream>#include <cstdio>#i

Java ArrayList扩容机制 (源码解读)

结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义         1:数组默认长度         2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ,比如通过 new ArrayList<>(0),ArrayList 内部的数组 elementData 会指向这个 EMPTY_EL

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

poj 3169 spfa 差分约束

题意: 给n只牛,这些牛有些关系。 ml个关系:fr 与 to 牛间的距离要小于等于 cost。 md个关系:fr 与 to 牛间的距离要大于等于 cost。 隐含关系: d[ i ] <= d[ i + 1 ] 解析: 用以上关系建图,求1-n间最短路即可。 新学了一种建图的方法。。。。。。 代码: #include <iostream>#include

工厂ERP管理系统实现源码(JAVA)

工厂进销存管理系统是一个集采购管理、仓库管理、生产管理和销售管理于一体的综合解决方案。该系统旨在帮助企业优化流程、提高效率、降低成本,并实时掌握各环节的运营状况。 在采购管理方面,系统能够处理采购订单、供应商管理和采购入库等流程,确保采购过程的透明和高效。仓库管理方面,实现库存的精准管理,包括入库、出库、盘点等操作,确保库存数据的准确性和实时性。 生产管理模块则涵盖了生产计划制定、物料需求计划、

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG