关于毛刺

2023-11-12

 

关于毛刺    http://blog.csdn.net/guqian110/article/details/17304065

目录(?)[+]

1. 毛刺的产生原因:冒险和竞争

使用分立元件设计电路时,由于PCB在走线时,存在分布电容和电容,所以在几ns内毛刺被自然滤除,而在PLD内部没有分布电感和电容,所以在PLD/FPGA设计中,竞争和冒险问题比较重要。

信号在FPGA器件内部通过连线和逻辑单元时,都有一定的延时。延时的大小与连线的长短和逻辑单元的数目有关,同时还受器件的制造工艺、工作电压、温度等条件的影响。信号的高低电平转换也需要一定的过渡时间。由于存在这两方面因素,多路信号的电平值发生变化时,在信号变化的瞬间,组合逻辑的输出有先后顺序,并不是同时变化,往往会出现一些不正确的尖峰信号,这些尖峰信号称为"毛刺"。如果一个组合逻辑电路中有"毛刺"出现,就说明该电路存在"冒险"。

可以概括的讲,只要输入信号同时变化,(经过内部走线)组合逻辑必将产生毛刺。 将它们的输出直接连接到时钟输入端、清零或置位端口的设计方法是错误的,这可能会导致严重的后果。 所以我们必须检查设计中所有时钟、清零和置位等对毛刺敏感的输入端口,确保输入不会含有任何毛刺。

存在逻辑冒险的电路:


仿真波形:


2. 判断是否存在冒险

关于冒险的知识,数电书上有详细的说明,当时没有认真学,只了解个大概,现在又要重新看...还记得当年画卡诺图时的痛苦

冒险按照产生方式分为静态冒险 & 动态冒险两大类。静态冒险指输入有变化,而输出不应该变化时产生的窄脉冲;动态冒险指输入变化时,输出也应该变化时产生的冒险。动态冒险是由静态冒险引起的,所以,存在动态冒险的电路也存在静态冒险。

静态冒险根据产生条件不同,分为功能冒险逻辑冒险两种。当有两个或两个以上的输入信号同时变化时,在输出端有毛刺,称为功能冒险;如果只有一个输入变量变化时,出现的冒险称为逻辑冒险。

因为动态冒险是由静态冒险引起的,所以消除了静态冒险,也就消除了动态冒险。功能冒险是由电路的逻辑功能产生的,只要输入信号不是按照循环码的方式变化,就会产生功能冒险,而且不能通过修改设计来消除,只能通过对输出进行采样来消除。判断逻辑冒险的步骤:

  1. 判断信号是否会同时变化
  2. 判断信号同时变化时,是否会发生冒险(代数法 or 卡诺图)

3. 消除毛刺

我们可以通过改变设计,破坏毛刺产生的条件,来减少毛刺的发生。例如,在数字电路设计中,常常采用格雷码计数器取代普通的二进制计数器,这是因为格雷码计数器的输出每次只有一位跳变,消除了竞争冒险的发生条件,避免了毛刺的产生。

毛刺并不是对所有的输入都有危害,例如D触发器的D输入端,只要毛刺不出现在时钟的上升沿并且满足数据的建立和保持时间,就不会对系统造成危害,我们可以说D触发器的D输入端对毛刺不敏感。 根据这个特性,我们应当在系统中尽可能采用同步电路,这是因为同步电路信号的变化都发生在时钟沿,只要毛刺不出现在时钟的沿口并且不满足数据的建立和保持时间,就不会对系统造成危害。 (由于毛刺很短,多为几纳秒,基本上都不可能满足数据的建立和保持时间)

以上方法可以大大减少毛刺,但它并不能完全消除毛刺,有时,我们必须手工修改电路来去除毛刺。一般有两种方法:

  1. 脉冲选择法

    一般说来,冒险出现在信号发生电平转换的时刻,也就是说在输出信号的建立时间内会发生冒险,而在输出信号的保持时间内是不会有毛刺信号出现的。如果在输出信号的保持时间内对其进行"采样",就可以消除毛刺信号的影响。缺点是必须人为的保证sample信号必须在合适的时间中产生

  2. 时序逻辑保持法

    利用D触发器的D输入端对毛刺信号不敏感的特点,在输出信号的保持时间内,用触发器读取组合逻辑的输出信号,这种方法类似于将异步电路转化为同步电路。

4. 具体信号的讨论

1. 置位/复位信号

清除和置位信号要求象对待时钟那样小心地考虑它们,因为这些信号对毛刺也是非常敏感的。正如使用时钟那样,最好的清除和置位是从器件的引脚单直接地驱动。有一个主复位Reset引脚是常用的最好方法,主复位引脚给设计项目中每个触发器馈送清除或置位信号。几乎所有PLD器件都有专门的全局清零脚和全局置位。如果必须从器件内产生清除或置位信号,则要按照“门控时钟”的设计原则去建立这些信号,确保输入无毛刺

2. 组合逻辑输出

当PLD输出引脚给出系统内其它部分的边沿敏感信号或电平敏感信号时,这些出信号必须象内部时钟、清除和置位信号一样小心地对待。只要可能就应在PLD输出端寄存那些对险象敏感的组合输出。如果你不能寄存险象敏感的输出,则应符合“门控时钟”中讨论的门控时钟的条件。决不能用多级逻辑驱动毛刺敏感的输出。

3. 异步输入信号

按照定义,异步输入不是总能满足(它们所馈送的触发器的)建立和保持时间的要求。因此,异步输入常常会把错误的数据锁存到触发器,或者使触发器进入亚稳定的状态,在该状态下,触发器的输出不能识别为l或0。如果没有正确地处理,亚稳性会导致严重的系统可靠性问题。

采用附加触发器同步使能信号的方法可保证不违反计数器的建立时间,从而解决可靠性的问题。

参考资料

1. 《Verilog+HDL程序设计与实践》 云创工作室

2. 关于毛刺问题的探讨

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

关于毛刺 的相关文章

  • 在vivado中使用tcl脚本(UG894)

    本文源自UG894 主要介绍如何在vivado中使用tcl脚本 1 vivado中如何获取tcl help vivado中任何自带的命令都可以通过 help 获取帮助信息 也可以直接输入 help 取得vivado命令合集 并通过 help
  • Xilinx平台SRIO介绍(二)SRIO IP核基础知识

    使用SRIO IP核必须掌握的基础知识 理解了这篇 剩下的只是代码罢了 汇总篇 Xilinx平台SRIO介绍 汇总篇 目录 前言 SRIO RapidIO GT 有什么关系
  • 用Vscode编辑verilog代码配置

    这篇教程感觉很详细了 我这里分享一下vscode和插件的安装包链接 都是官网下载的 放心食用 用VSCode编辑verilog代码 iverilog编译 自动例化 自动补全 自动格式化等常用插件 链接 https pan baidu com
  • 最详细的Vivado安装教程

    V i v a d o 安 装
  • FPGA Xilinx 7系列高速收发器GTX通信

    Xilinx 7系列高速收发器GTX 说明 FPGA TX端 zynq 7z035 RX端 zynq 7z100 两个FPGA通过SFP 光纤 接口相连进行GTX的通信 环境 Vivado2018 2 IP核 7 Series FPGAs
  • verilog 基本语法 {}大括号的使用

    的基本使用是两个 一个是拼接 一个是复制 下面列举了几种常见用法 基本用法 表示拼接 第一位 第二位 表示复制 4 a 等同于 a a a a 所以 13 1 b1 就表示将13个1拼接起来 即13 b1111111111111 拼接语法详
  • Lattice Diamond安装

    1 下载 到Lattice官网 http www latticesemi com 注册一个lattice的账号后就可以去下载Diamond 登陆后如下图 根据自己系统情况选择对应的版本 我用的是32位win8 Diamond软件安装包和La
  • [HDLBits] Exams/ece241 2014 q7a

    Design a 1 12 counter with the following inputs and outputs Reset Synchronous active high reset that forces the counter
  • 从零开始zynq linux AXI DMA传输

    本文从0开始叙述过程 使用的工具为vivado2016 4 sdk也是2016 4 准备工作 首先下载如下的目标文件 1 下载xilinx官方的bootloader文件 git clone https github com Xilinx u
  • 基于FPGA的AHT10传感器温湿度读取

    文章目录 一 系统框架 二 i2c接口 三 i2c控制模块 状态机设计 状态转移图 START INIT CHECK INIT IDLE TRIGGER WAIT READ 代码 四 数据处理模块 串口 代码 五 仿真 testbench设
  • 64 位 ALU 输出在 TestBench 波上显示高阻抗

    我必须制作一个 64 位 ALU 它接受 A 和 B 64 位输入 进位输入输入并输出 64 位结果以及 1 位进位输出 还有一个 5 位功能选择 FS 其中 FS 0 控制 B 是否反转 使用 2to1 多路复用器 F 1 对 A 执行相
  • 基于FPGA的简易BPSK和QPSK

    1 框图 2 顶层 3 m generator M序列的生成 输出速率为500Kbps 4 S2P是串并转换模块 将1bit的m序列转换到50M时钟下的2bit M序列数据 就有4个象限 5 my pll是生成256M的时钟作为载波 因为s
  • 使用 VHDL 实例化 FPGA 中的 RAM

    我试图按照中的指导实现双端口 RAM这篇优秀的博文 http danstrother com 2010 09 11 inferring rams in fpgas 然而 ModelSim 在编译时给出以下警告 Warning fifo ra
  • 同时读取和写入寄存器

    我计划在 FPGA 上用 VHDL 设计一个类似 MIPS 的 CPU CPU 将具有经典的五级管道 没有转发和危险预防 在计算机体系结构课程中 我了解到第一个 MIPS CPU 用于在时钟上升沿读取寄存器文件并在时钟下降沿写入 我使用的F
  • 修改后的 baugh-wooley 算法乘法 verilog 代码不能正确乘法

    以下 verilog 源代码和 或测试平台可以很好地工作商业模拟器 iverilog https www edaplayground com x 3TuQ也形式化验证工具 yosys smtbmc https gist github com
  • UIO 设备上的 mmap EINVAL 错误

    在尝试使用 UIO 而不是直接映射后 我在 Xilinx Zynq 上映射物理内存时遇到问题 dev mem 虽然计划是以普通用户身份运行应用程序 而不是root这仍在运行root 显然 第一个映射成功 其余映射到同一个文件描述符12 de
  • 您可以使用类 C 语言对 FPGA 进行编程吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 在大学里 我用类似 C 的语言编写了 FPGA 不过 我也知道人们通常使用 Verilog 或 VHD
  • 赋值语句中的“others=>'0'”是什么意思?

    cmd register process rst n clk begin if rst n 0 then cmd r lt others gt 0 elsif clk event and clk 1 then cmd r lt end if
  • 从 OpenCV 代码到 FPGA 代码的转换是否比 Matlab 代码更容易? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想做一个关于图像处理的项目 我想知道如果我想在FPGA上实现这个项目 我应该在第一阶段选择Matla
  • 可以购买哪些 FPGA(现场可编程门阵列)在家中进行实验? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 什么是 FPGA 在哪里可以买到 它们要花多少钱 您需要什么样的系统来试验它们 如何对它们进行编程 如果这是正确的术语 您能否使用普通 M

随机推荐

  • ps语义分割_解决实例分割任务中边缘不够精细:PointRend: Image Segmentation as Rendering...

    加入极市专业CV交流群 与6000 来自腾讯 华为 百度 北大 清华 中科院等名企名校视觉开发者互动交流 更有机会与李开复老师等大牛群内互动 同时提供每月大咖直播分享 真实项目需求对接 干货资讯汇总 行业技术交流 关注 极市平台 公众号 回
  • 计算机网络基础知识整理

    计算机网络 用通信设备和线路将处在不同地理位置 操作相对独立的多台计算机连接起来 并配置相应的系统和应用软件 在原本各自独立的计算机之间实现软硬件资源共享和信息传递等功能的系统 计算机网络的功能 数据通信 2 资源共享 3 增加可靠性 4
  • 【技术解析笔记】DDPM解析

    本文为youtube上一个ddpm解析视频的摘录笔记 youtube原视频链接 https www youtube com watch v W O7AZNzbzQ 基本介绍 DDPM指的是Denoising diffusion probal
  • hive - 面试题 - 最近一次购物在一年前(近一年内无购物)

    要求 有表 用户id 订单id 下单日期 该用户符合365天内无交易且当日有交易的数据打标签 如果当天有多条记录 同样打标签 思路 当前订单时间 最近一次的下单时间 gt 365 即最近365天内无订单记录 中间有个问题 一天内多次下单 只
  • 【GCC-RT-Thread】gcc交叉编译 STM32 - RT-Thread

    GCC RT Thread gcc交叉编译 STM32 RT Thread 最近在公司实习 公司想将原来在Windows keil上开发的项目移到Linux 并上RTT操作系统 最近就被安排做了这件事 首先 下载 RT Thread Nan
  • 学习记录396@git clone 只克隆到.git文件

    github上的仓库 但是使用乌龟克隆时只克隆到 git文件和README文件 原因是在我的仓库中 没有选择分支 默认是main分支 但我的项目在master分支 因此加上分支选项处在clone即可 如果是使用命令行clone 需要使用如下
  • python基础 -15- 深浅拷贝

    浅拷贝 data name alex age 18 scores 语文 130 数学 60 英语 98 浅拷贝 data copy data copy 再看一下各自的内存地址 可以发现指向的内存地址不一样 print data的内存地址 i
  • 白盒测试题(13-16道题目+详细代码)

    白盒测试 题 13 根据下列流程图编写程序实现相应分析处理并显示结果 并设计最少的测试数据进行判定覆盖测试 输入数据打印出 输入 x 值 输入 y 值 输出文字 a 和 a 的值 输出文字 b 和 b 的值 其中变量 x y 均须为整型 i
  • 红队靶场内网渗透(从DMZ主机渗透到域内机器)

    目录 一 红队靶场内网渗透 1 靶机工具下载 2 本实验网络拓扑图 3 内网渗透攻击流程 二 环境搭建 1 DMZ区win7 2 内网办公区 3 域控主机 三 开始攻击 1 DMZ区win7渗透 1 1信息收集 1 2收集到的信息 1 3远
  • 安卓手机使用Termux实现gitee云端代码本地化修改

    Termux是什么 Termux是一个Android终端仿真器和Linux环境应用程序 直接工作 无需根目录或设置 额外的软件包可以使用APT软件包管理器来使用 不需要root 有root更方便修改代码 下载地址 Termux 0 99 T
  • 人脸识别(dlib.face_recognition_model_v1 方法 -- 使用resnet模型)

    人脸识别 思路 通过检测面部特征 对该特征与数据存放的特征进行比对 文件结构 文件名 weights 的目录下 resnet模型 dat文件 识别68个关键点模型 dat文件 共两个模型文件 补充 你如果不使用dlib库中自带的HOG人脸检
  • 网络基础 (深信服)

    一 走进网络世界 1 1 1 企业网络环境介绍 计算机网络类型 LAN 本地局域网 Local Area Network 通常指几千米以内的 可通过某种介质互联的计算机 打印机 modem或其他设备的集合 WAN 广 域 网 Wide Ar
  • 【C语言】你还在写void main()吗?我劝你别用,小心出BUG

    目录 前言 C语言标准并不支持void main 用void main 可能会报错 总结 前言 你的教材上是不是经常出现void main 呢 我想说 永远不要写void main 为什么 这种写法普遍存在于我们国内的很多教材 既然出现在教
  • day02-08 python基础语法

    模块一 python基础语法 day2 快速上手 今日概要 课程目标 学习Python最基础的语法知识 可以用代码快速实现一些简单的功能 课程概要 初识编码 密码本 编程初体验 输出 初识数据类型 变量 注释 输入 条件语句 1 编码 密码
  • [编程题]输出元素组成数组的排列组合形式

    题目 一个由有限个不同元素组成的数组的所有组合排列形式 要求排列的顺序以从小到大的顺序排列 按首列排序 首列相同 则按照第二列排序 前两列相同 则以第三列排序 以此顺序递推 输入例子1 1 2 输出例子1 1 2 2 1 例子说明1 输出结
  • 服务器划分多台虚拟pc,pc服务器建立多台虚拟主机

    pc服务器建立多台虚拟主机 内容精选 换一换 虚拟IP主要用在弹性云服务器的主备切换 达到高可用性HA High Availability 的目的 当主服务器发生故障无法对外提供服务时 动态将虚拟IP切换到备服务器 继续对外提供服务 了解更
  • 使用LineProfiler找出代码的计算瓶颈

    实现同样一个功能 笔者运行需要11秒 而同窗的运行仅需要1秒不到 但是实际实现逻辑是类似的 所以需要使用性能分析工具对瓶颈进行分析 安装 命令行安装 pip install line profiler 本地下载后安装 https www l
  • IDEA 2020.1汉化问题解决办法

    IDEA2020 1 如何汉化 百度网盘链接 汉化版本 zh 201 6668 113 链接 https pan baidu com s 12Fq5QqgeRRdu6 2XIu37tA 提取码 Dl12 安装步骤 第一种 如果插件中心可以直
  • Python 的数据可视化之常用的那些图的简单示例

    参考网站 https pyecharts org zh cn intro 柱形图 折线图 饼图 词云 动态散点图 关系图 散点图 树图 1 柱形图 rom pyecharts charts import Bar from pyecharts
  • 关于毛刺

    关于毛刺 http blog csdn net guqian110 article details 17304065 目录 1 毛刺的产生原因 冒险和竞争 使用分立元件设计电路时 由于PCB在走线时 存在分布电容和电容 所以在几ns内毛刺被