Xilinx BUFGMUX使用注意事项

2023-11-16

Xilinx BUFGMUX使用注意事项

最近使用Xilinx FPGA的时候,需要用到一个外部时钟和一个PLL产生的时钟,可以通过外部SWICH进行时钟的切换,觉得这种方式可以通过原语例化完成。

原语

果不其然,在原语示例中找到了类似的模块:

//   BUFGMUX   : In order to incorporate this function into the design,
//   Verilog   : the following instance declaration needs to be placed
//  instance   : in the body of the design code.  The instance name
// declaration : (BUFGMUX_inst) and/or the port declarations within the
//    code     : parenthesis may be changed to properly reference and
//             : connect this function to the design.  All inputs
//             : and outputs must be connected.

//  <-----Cut code below this line---->

   // BUFGMUX: Global Clock Mux Buffer
   //          Kintex-7
   // Xilinx HDL Language Template, version 2018.3

   BUFGMUX #(
   )
   BUFGMUX_inst (
      .O(O),   // 1-bit output: Clock output
      .I0(I0), // 1-bit input: Clock input (S=0)
      .I1(I1), // 1-bit input: Clock input (S=1)
      .S(S)    // 1-bit input: Clock select
   );

   // End of BUFGMUX_inst instantiation

具体原语寻找的路径如下:

Tools -> Language Templates

image-20210506214622439

找到Device Primitive Instantiation,在对应的设备下选择Clock Components中的Clock MUXes选项:

image-20210506220148393

使用

找到原语后,就立刻在工程中进行了例化,通过SW开控制切换时钟源的选择输出。

但是,在使用的时候出现了问题,无论SW怎么设定,输出的时钟在仿真中一直处于Hiz状态,这与之前的理解不符合。

解决这种问题最直接的方法,就是去查找手册,看一看这个BUFGMUX到底是如何进行工作的,是不是有一些限制条件。

BUFGMUX介绍

ug472_clocking_resourcespage43 开始对BUFGMUX的描述如下:为了方便,我直接翻译成拙略的中文了,如有疑问,以原文为准。

BUFGMUX is a clock buffer with tow clock inputs, one clock output, and a select line. This primitive is based on BUFGCTRL with some pins connected to logic High or Low.Figure 2-10 illustrates the relationship of BUFGMUX and BUFGCTRL.

BUFGMUX是一个有两时钟输入,一个时钟输出,和一个选择信号的时钟缓冲。它的原语是在BUFGCTRL的基础上将某些引脚连接在逻辑高或者逻辑低。图2-10表明了BUFGMUX和BUFGCTRL的关系:

image-20210507230144938

由于BUFGMUX用CE引脚作为选择引脚,当进行选择时,建立时间必须要被满足。忽略这个建立时间会导致结果进入故障。BUFGMUX的切换条件与BUFGCTRL的CE引脚一致,图2-11展示了BUFGMUX需要的时序图:

image-20210507231755737

在图2-11中:

  • 当前时钟为I0;
  • S信号为高电平有效;
  • 如果I0当前状态为高电平,多路选择器会等待I0直到变为低电平;
  • 一旦I0变为低电平,多路先择期输出就会维持在低电平,直到I1从高电平变为低电平;
  • 当I1从高电平变为低电平时,输出就切换到了I1;
  • 如果满足建立和保持时间,不会有故障或者短的脉冲在输出端口出现。

BUFGMUX_1是上升沿敏感,若开关在I0时钟高电平切换时,输出时钟优先保持高电平,直道切换为I1的时钟,图2-12展示了BUFGMUX_1的时序:

image-20210509084024847

在图2-12中:

  • 当前时钟为I0;
  • S信号为高电平有效;
  • 如果I0当前状态为低电平,多路选择器会等待I0直到被拉高;
  • 一旦I0被拉高,多路复用器会维持高电平知道I1从低电平变为高电平;
  • 当I1从低电平变为高电平时,输出就切换到了I1;
  • 如果满足建立和保持时间,不会有故障或者短的脉冲在输出端口出现。

BUFGMUX Attributes

BUFGMUX也是有属性参数的,见下图:

image-20210509104546106

可以看出默认的I0和I1时钟是同步时钟,如果I0和I1为异步时钟,需要选择属性为ASYNC

BUFGMUX_CTRL

之前介绍了BUFGMUX的原语是在BUFGCTRL的基础上将某些引脚连接在逻辑高或者逻辑低。自然也要介绍一下BUFGMUX_CTRL

BUFGMUX_CTRL是一个有选择信号的两时钟输入,一时钟输出时钟缓冲。这个原语是在BUFCTRL的基础上将某些引脚连接到高电平或低电平。图2-13展示了BUFGMUX_CTRLBUFGCTRL的关系。

image-20210509160046733

BUFGMUX_CTRL使用S引脚作为选择引脚。S在任何时候开关,都不会导致故障。S的建立和保持时间决定了输出端口是否将额外的上一个时钟的多余脉冲在切换到新时钟的时候输出。

如果S像图2-14中那样改变,在建立时间TBCCK_S之前,且I0从高电平转换为低电平之前,输出端不会传递I0多余的脉冲。

image-20210509160359032

如果S改变在S的保持时间,那么输出就会传递出I0的一个多余脉冲。

所以如果S在不不满足建立和保持时间的情况下改变,输出就会多一个额外的脉冲,但是并不是故障。在任何情况下,输出都会在I0,I1中较慢的时钟三个周期内传递出去。

S0和S1的建立保持时间要求取决于时钟下降沿,而不是CE0和CE1的上升沿。

BUFGMUX_CTRL的转换条件与BUFGCTRL的S引脚相同,图2-14表示出BUFGMUX_CTRL的时序。

BUFGMUX_CTRL原语的其他功能如下:

  • 在配置(FPGA上电配置?)之后对I0和I1进行与选择。
  • 在配置之后可以设定输出为高电平或者低电平为初始值。

附加的使用模型

使用BUFGCTRL做异步时钟选择

在某些应用情况下,需要理科切换输入时钟,或者忽略BUFGCTRL的边沿敏感。

其中一个例子就是假设一个时钟不再进行切换了(我理解为时钟保持H,L,X,Z状态)。这种情况下输出时钟也不会正确的切换,因为BUFGCTRL永远也检测不到时钟的下降沿了。

这种情况下就要使用异步MUX,图2-15展示了BUFGCTRL与异步MUX的设计例子。

image-20210509162404704

图2-16展示了异步MXU的时序。

image-20210509162449922

在图2-16中:

  • 当前时钟来自I0;
  • S为高电平有效;
  • 输出时钟立刻切换为I1;
  • 当Ignore信号拉高时,故障保护就会无效;

带有时钟使能的BUFGMUX_CTRL

带有时钟使能和BUFGCTRL的BUFGMUX_CTRL配置允许你在即将到来的时钟输入间选择。

如果有必要,可以通过时钟使能信号来使得输出无效。图2-17展示了BUFGCTRL的方法设计案例。

image-20210509162711826

图2-18展示了时序图:

image-20210509163056091

在图2-18中:

  • 当前时刻为事件1,输出O使用I0;
  • 在事件2之前,S被拉高;
  • 在事件2之后的TBCCKO_O 时刻,输出O使用I1。这发生在I0从高电平到低电平的变换,和I1从高电平到低电平变换完成之后。
  • 在事件3之前的TBCCCK_CE 时刻,CE被拉低。为了避免任何输出时钟的小故障,直到I1从高电平转换为低电平完成后,输出时钟转换并一直保持为低电平。

问题解决

在自己的设计中,有一个时钟I0是外部输入,另外一个I1为FPGA的PLL产生;若外部时钟不是一直存在,相当于I0为(H,L,X,Z某一状态),所以此时例化BUFGMUX的时候需要加上异步的属性:

BUFGMUX #(
    .CLK_SEL_TYPE("ASYNC")
) BUFGMUX_inst (
	.O(O),   // 1-bit output: Clock output
	.I0(I0), // 1-bit input: Clock input (S=0)
	.I1(I1), // 1-bit input: Clock input (S=1)
	.S(S)    // 1-bit input: Clock select
	);

这样,在没有I0时钟输入的时候,S为高电平选择I1也会有时钟输出。

参考链接

Xilinx FPGA中BUFGMUX使用注意事项

2021-05-09.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Xilinx BUFGMUX使用注意事项 的相关文章

  • Xilinx平台SRIO介绍(二)SRIO IP核基础知识

    使用SRIO IP核必须掌握的基础知识 理解了这篇 剩下的只是代码罢了 汇总篇 Xilinx平台SRIO介绍 汇总篇 目录 前言 SRIO RapidIO GT 有什么关系
  • verilog中wire和reg类型的区别

    module counter parameter CNT MAX 25 d24 999 999 input wire sys clk input wire sys rst n output reg led out reg 24 0 cnt
  • Verilog实现两路组相联cache

    cache代码 timescale 1ns 1ps cache共32块 分为16组 每组2块 即两路组相联 1块 4字 1字 4字节 主存共1024块 4096个字 主存地址共12位 1 0 为块内偏移 5 2 为组地址 11 6 为Tag
  • 【Xilinx DDR3 MIG】Xilinx FPGA DDR3读写实验相关用户接口引脚解释

    目录 DDR3读写实验 实验框图 时钟模块 DDR3读写及LED指示模块 MIG IP核 用户接口解释
  • 【Xilinx】SynchronousInterruptHandler错误排查笔记

    SynchronousInterruptHandler错误排查笔记 一 ArmV8的异常处理 二 64位lscript ld的修改 三 asm vectors S的修改 四 SynchronousInterruptHandler函数解析 五
  • xilinx xdma PCIe中断bug

    xilinx xdma PCIe中断存在bug bug1 此中断虽然是msi或者msx中断 但是不中断cpu bug2 此中断不是边沿中断 而是电平中断 在驱动层需要不断地轮训查询中断事件 bug3 此中断持续时间必须长 而且在收到中断应答
  • verilog 基本语法 {}大括号的使用

    的基本使用是两个 一个是拼接 一个是复制 下面列举了几种常见用法 基本用法 表示拼接 第一位 第二位 表示复制 4 a 等同于 a a a a 所以 13 1 b1 就表示将13个1拼接起来 即13 b1111111111111 拼接语法详
  • 【数字IC】从零开始的Verilog SPI设计

    从零开始的Verilog SPI协议设计 一 写在前面 1 1 协议标准 1 2 数字IC组件代码 1 3 设计要求 1 4 其他协议解读 1 4 1 UART协议 1 4 2 SPI协议 1 4 3 I2C协议 1 4 4 AXI协议 二
  • Lattice Diamond安装

    1 下载 到Lattice官网 http www latticesemi com 注册一个lattice的账号后就可以去下载Diamond 登陆后如下图 根据自己系统情况选择对应的版本 我用的是32位win8 Diamond软件安装包和La
  • libero-soc许可证申请和环境配置

    环境 64位机 在哪台电脑上安装libero soc 就用哪台电脑申请许可证 1 注册 https www microsemi co 在官网注册 之后申请的许可证会发到注册时填写的邮箱 2 申请许可证 https www microsemi
  • FPGA_MIG驱动DDR3

    FPGA MIG驱动DDR3 说明 FPGA zynq 7z100 DDR3 MT41K256M16TW 107 内存大小为512MB 数据接口为16bit 环境 Vivado2018 2 IP核 Memory Interface Gene
  • 打印存储在 reg 类型变量中的有符号整数值

    如何打印存储在 8 位寄存器中的有符号整数值 声明为 reg 7 0 acc Using display acc d acc 它打印无符号值 正确的语法是什么 display功能 如果您声明reg as signed display将显示减
  • VHDL乘法器

    library IEEE use IEEE STD LOGIC 1164 ALL entity Lab3 Adder1 is Port cin in STD LOGIC a in STD LOGIC VECTOR 3 downto 0 b
  • Linux驱动程序DMA传输到PC作为主机的PCIe卡

    我正在开发一个 DMA 例程 将数据从 PC 传输到 PCIe 卡上的 FPGA 我阅读了 DMA API txt 和 LDD3 ch 15 详细信息 但是 我不知道如何从 PC 到 PCIe 卡上的一致 iomem 块进行 DMA 传输
  • if 语句导致 Verilog 中的锁存推断?

    我正在编写用于合成算法的 Verilog 代码 我对哪些情况可能导致推断锁存器有点困惑 下面是这样的一段代码 虽然它在模拟中工作得很好 但我担心它可能会导致硬件问题 always b1 or b2 b1 map b2 map m1 map
  • 如何在Altera Quartus中生成.rbf文件?

    什么是 rbf 文件以及如何在 Windows 上从 Quartus 输出文件 sof 生成它们 An RBF is a 原始二进制文件例如 它代表原始数据 这些数据将被加载到闪存中 以便在上电时初始化 FPGA A SOF is an S
  • FPGA大输入数据

    我正在尝试向 FPGA 发送 4 KB 字符串 最简单的方法是什么 是我正在使用的fpga的链接 我正在使用 Verilog 和 Quartus 您的问题的答案在很大程度上取决于将数据输入 FPGA 的内容 即使没有您需要遵守的特定协议 S
  • 在 Verilog 程序中使用连续分配?

    在 Verilog 程序中使用连续赋值是否可能和 或有用 例如 是否有任何理由将assign里面一个always堵塞 例如这段代码 always begin assign data in Data end 此外 是否可以用这种方法生成顺序逻
  • VHDL FSM多驱动网Q连接到常量驱动程序,其他驱动程序被忽略,我的代码有什么问题?

    这段代码是一个 FSM 它是一个摩尔机 艾莉莎 P 哈克 Alyssa P Hacker 有一只蜗牛 沿着纸带爬下去 上面有 1 和 0 蜗牛 每当最后两个时都会微笑 它爬过的数字是 01 设计摩尔和米利 蜗牛大脑的 FSM 代码如下所示
  • 学习 Verilog 的资源 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我是 Verilog 新手 有人可以推荐学习资源 书籍 视频 博客或任何他们有良好个人经验并帮助他们更

随机推荐

  • IntelliJ IDEA——Alibaba Java Coding Guidelineslines(阿里Java编码规约)插件,安装及使用

    安装 1 new gt Setting gt Plugins 搜索alibaba 搜索结果出现Alibaba Java Coding Guidelineslines 点击Install 然后重启IDEA即可 2 重启后再工具栏 ToolsB
  • 什么是Iot?什么是AIot?

    什么是Iot 什么是AIot 物联网是新一代信息技术的重要组成部分 其英文名称是 The Internet of things 由此 顾名思义 物联网就是物物相连的互联网 这有两层意思 第一 物联网的核心和基础仍然是互联网 是在互联网基础上
  • Tinkercad和LTspice仿真Arduino音频

    电子基础 系统和传感器 电子系统和传感器 数字系统和 ARDUINO 控制 模拟数字转换 采样 MIDI 控制系统 音频传感器 开关 电位器和麦克风 音频执行器 LED 和扬声器 直流电路 欧姆定律和直流电流 基尔霍夫电压定律 串联电路 分
  • C++复习笔记--STL练习案例1(评委打分和员工分组)

    目录 1 评委打分 1 1 案例描述 1 2 代码实现 2 员工分组 2 1 案例分析 2 2 代码实现 1 评委打分 1 1 案例描述 有 A B C D E 共 5 名选手 由 10 个评委分别对每一名选手打分 去除评委的最高分和最低分
  • 7 个适合初学者的项目,可帮助您开始使用 ChatGPT

    推荐 使用 NSDT场景编辑器快速搭建3D应用场景 从自动化日常任务到预测复杂模式 人工智能正在重塑行业并重新定义可能性 当我们站在这场人工智能革命中时 我们必须了解它的潜力并将其整合到我们的日常工作流程中 然而 我知道开始使用这些新技术可
  • 必看!大语言模型调研汇总!!

    作者 guolipa 知乎 自从ChatGPT出现之后 各种大语言模型是彻底被解封了 每天见到的模型都能不重样 几乎分不清这些模型是哪个机构发布的 有什么功能特点 以及这些模型的关系 比如 GPT 3 0 和 GPT 3 5 就有一系列的模
  • Android 统一打包框架(附源码下载)

    唠叨 把手给我 我带你去吃云浮吃石磨肠粉 云吞面 木瓜渣 那里的肠粉和广州的不一样 皮很薄很滑 肉馅没广州的那么花里胡哨 只有肉碎和香葱 但吃起来就很香滑 再配上它的甜辣酱 那味道好极了 云吞面的面是手打的竹升面 就是手动用个大竹子 一下下
  • 做量化你需要知道的那些术语!(持续更新)

    金融相关 股票 股份公司发行的所有权凭证 债券 承诺按一定利率支付利息并按约定条件偿还本金的债权债务凭证 风险较低 固定收益 固定收益类投资指投资于银行定期存款 协议存款 国债 金融债 企业债 可转换债券 债券型基金等固定收益类资产 风险低
  • antd design pro 之「PageHeaderWrapper」

  • 微服务-API网关-权限控制

    权限控制介绍 权限控制是一个古老的话题 你可能会想有没有什么权限设计方案可以满足所有的应用场景呢 答案是没有 就像几乎所有问题一样 没有一种系统可以解决所有情况的 我们需要根据不同的场景和需求来设计不同的系统 权限控制主要设计用户 角色 组
  • CCIE面试题

    前言 这里是几个月前在网上转载很多的CCIE面试题 题虽然不难 但如果没有在电信或cisco代理商工作过 仅仅凭书面的知识还是回答不全的 下面是网上的参考答案加上我的一点点补充 以后有时间再补充 先贴出来供大家参考 也让从事相关技术的人自我
  • YOLOV5更换轻量级的backbone:mobilenetV2

    目录 简洁概要 修改主干网络 一 添加自己主干网络 二 在yolo py中添加common中的两个函数 三 制作mobilenetv2的yaml配置文件 四 制作数据集VOC的yaml配置文件 五 启用训练 六 性能检测 简洁概要 Mobi
  • Elasticsearch 8.8.0 发布

    Elasticsearch 是一个基于 Lucene 库的搜索引擎 它提供了一个分布式 支持多租户的全文搜索引擎 具有 HTTP Web 接口和无模式 JSON 文档 Elasticsearch 基于 Java 开发 并在 SSPL Ela
  • 使用mongo命令工具操作集合数据

    与 MongoDB 建立连接 mongo 如果设置了密码 使用这行命令 mongo port 27017 u admin p xxxxxx authenticationDatabase admin 以操作八月创建的历史数据为例 确认操作集合
  • docker 启动时错误docker: Cannot connect to the Docker daemon

    在学习docker的时候遇到一个错误docker Cannot connect to the Docker daemon at unix var run docker sock Is the docker daemon running 如下
  • make[1]: [persist-settings] Error 2 (ignored) CC adlist.o /bin: cc: command not found make[1]: *

    Linux系统安装Redis执行Make编译时报错 make 1 persist settings Error 2 ignored CC adlist o bin cc command not found make 1 adlist o E
  • 微信小程序 scroll-view的滚动条设置

    小程序的scroll view用的比较多了 列表页一般也没管它的滚动条 最近突然发现在android与ios中横向滑动的时候表现不一样 不一样在哪呢 ios上直接就不显示啊 也是没谁了 深入想了一下 这滚动条能不能换一颜色或者换个样式 有这
  • 基于AIOT技术的智慧校园空调集中管控系统设计与实现

    AIOT技术的智慧校园空调集中管控系统设计与实现本科毕业论文 I 引言 本文旨在探讨基于AIOT技术的智慧校园空调集中管控系统的设计和实现 首先 综述当前AIOT技术发展状况和智慧校园空调集中管控系统在当前应用领域中的重要性 其次 分析相关
  • 原理图符号(原理图库)创建流程及注意事项

    参考资料 电巢EMEA体验营二期 1 原理图符号创建流程 1 0 元器件属性 以一款压力传感器芯片LPS22HH为例 来讲解原理图符号的创建流程 LPS22HH的引脚描述如下所示 1 1 创建工程 1 2 创建原理图符号文件 创建完成原理图
  • Xilinx BUFGMUX使用注意事项

    Xilinx BUFGMUX使用注意事项 最近使用Xilinx FPGA的时候 需要用到一个外部时钟和一个PLL产生的时钟 可以通过外部SWICH进行时钟的切换 觉得这种方式可以通过原语例化完成 原语 果不其然 在原语示例中找到了类似的模块