组合逻辑毛刺消除

news2024/12/23 20:32:41

目录

组合逻辑毛刺消除

1、简介

2、实验任务

3、程序设计

1、组合逻辑输出加寄存器

2、信号同步法

(1)信号延时同步法

(2)状态机控制

3、格雷码计数器

4、仿真验证


组合逻辑毛刺消除

       信号在 IC/FPGA 器件中通过逻辑单元连线时,是存在延时的。延时的大小不仅和连线的长短和逻辑单元的数目有关,而且也和器件的制造工艺、工作环境等有关。因此,信号在器件中传输的时候,所需要的时间是不能精确估计的,当多路信号同时发生跳变的瞬间,就产生了“竞争冒险”。这时,往往会出现一些不正确的尖峰信号,这些尖峰信号就是“毛刺”

1、简介

       毛刺是数字电路设计中的棘手问题,它的出现会影响电路工作的稳定性、可靠性,严重时会导致整个数字系统的误动作和逻辑紊乱。

       首先我们先来看下毛刺是如何产生的。下图是一个简单的组合逻辑电路,由一个或门和一个与门构成,输入信号是 a、b 和 c,输出信号是 y。

        从图中,我们可以假设或门电路的延迟是 1ns,路径延迟也有时间,c 到 y 门电路的延迟是 2ns,a 到 d 门电路的延迟是 1ns,那么我们可以画出一个时序图如下:

       e 点为 a 和 b 信号相或后到达 y 门输入端的信号,总共延迟为 3ns,f 点为 c 信号到达 y 门输入端的信号,总共传输延迟为 2ns,然后 f 信号和 e 信号做与逻辑处理,得到 y 信号。y 信号最终由一个 1ns 的脉冲信号,这个信号就是路径延迟导致的一个毛刺信号。假设不考虑门电路延迟和信号传输延迟,y 应该是一直为低电平的。这个就是组合逻辑的毛刺信号产生的由来。

2、实验任务

思考组合逻辑毛刺去除有哪些方法。

3、程序设计

组合逻辑毛刺去除主要有以下几种方法:

1、组合逻辑输出加寄存器

       这是一种比较常用的去除毛刺的方法。去毛刺原理就是用一个寄存器去读带毛刺的信号,利用寄存器对输入信号的毛刺不敏感的特点(寄存器一般只在时钟跳变沿对输入信号敏感),去除信号中的毛刺。在实际电路中,对于简单的逻辑电路,尤其是对信号中发生在非时钟跳变沿的毛刺信号,去除效果非常的明显。但是如果毛刺信号发生在时钟信号的跳变沿,寄存器的效果就没有那么明显了(加寄存器以后的输出端,仍含有毛刺)。另外,寄存器的使用还会给系统带来一定的延时,特别是在系统级数较多的情况下,延时也将变大,因此在使用寄存器去除毛刺的时候,也要视情况而定,并不是所有的毛刺都可以用寄存器来消除。

2、信号同步法

       设计数字电路的时候采用同步电路设计可以大大减少毛刺。由于大多数毛刺都比较短(大概几个纳秒),只要毛刺不出现在时钟跳变沿,毛刺信号就不会对系统造成危害了。因此一般认为,只要在整个系统中使用同一个时钟就可以实现系统同步。但是,时钟信号在 FPGA 器件中传递时是有延时的,我们无法预知时钟跳变沿的精确位置。也就是说我们无法保证在某个时钟的跳变沿读取的数据是一个稳定的数据,尤其是在多级设计中,这个问题就更加突出。因此,做到真正的“同步”就是去除毛刺信号的关键。所以,同步的关键就是保证在时钟的跳变沿读取的数据是稳定的数据而不是毛刺数据。

下面介绍两种具体的信号同步方法。

(1)信号延时同步法

       信号延时法,它的原理就是在两级信号传递的过程中加一个延时环节,从而保证在下一个模块中读取到的数据是稳定后的数据,即不包含毛刺信号。这里所指的信号延时可以是数据信号的延时,也可以是时钟信号的延时。

        举个例子,比如还是下面的这个毛刺产生电路,如果把 c f 的延迟增加 1ns,就是 c f 的延迟总共 3ns,和 a e 的延迟一致,那么此时 y 的输出就不会有毛刺产生。

(2)状态机控制

       使用状态机也可以实现信号的同步和消除毛刺的目的。在数据传递比较复杂的多模块系统中,由状态机在特定的时刻分别发出控制特定模块的时钟信号或者模块使能信号,状态机的循环控制就可以使得整个系统协调运作,同时减少毛刺信号。那么只要我们在状态机的触发时间上加以处理,就可以避免竞争冒险,从而抑制毛刺的产生。

3、格雷码计数器

       对于一般的二进制或十进制计数器,在计数时,将有多位信号同时跳变。例如一个 4bit 二进制计数器,由 “1111” 转换为 “0000” 时,就会产生毛刺。此时,使用格雷码计数器将避免毛刺的出现,因为格雷码计数器的输出每次只有一位跳变。

       我们选择组合逻辑加寄存器去毛刺方法来解决间距中的毛刺信号,我们先画出加寄存器后的电路图。

 然后后面再画出这个电路对应的时序图,

       从图中可以看出,加了一级寄存器后,毛刺信号不会被寄存器采样到,因为寄存器只在时钟的跳变沿变化,毛刺信号是组合逻辑产生的,实际电路里面组合逻辑的信号变化一般也是由寄存器变化引起的信号变化,所以一般发生在时钟跳变之后,而寄存器只在时钟的跳变沿对输入信号采样,所以毛刺信号一般不会被采样到,这种加寄存器过滤毛刺的方法就是基于这一点设计的。

4、仿真验证

本节不需要进行仿真。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/653019.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

管理类联考——英语——翻译篇——新题型——经典方法论

第一节 英语(一)翻译 根据考试大纲,考研英语(一R翻译部分主要考查考生准确理解概念或结构较复杂的英语文字材料的能力。具体考查方式是要求考生阅读一篇约400词的文章,并将其中5个画线部分(约150词)译成汉语,要求译文准确、完整、通顺。 可以看出&#…

js数组高阶函数——filter()方法

js数组高阶函数——filter方法 filter()方法⭐⭐⭐例1⭐⭐⭐例2⭐⭐⭐例3⭐⭐⭐例4⭐⭐⭐例5 filter()方法 ⭐一般来说,filter() 方法用于过滤数组中的元素,并返回一个新数组。 语法: array.f…

Python多线程编程详解

概要 进程(process)指的是正在运行的程序的实例,当我们执行某个程序时,进程就被操作系统创建了。而线程(thread)则包含于进程之中,是操作系统能够进行运算调度的最小单元,多个线程可…

【AntDB数据库】AntDB数据库告警管理

告警历史 功能概述 数据库系统的主机、单节点集群的被监测指标达到告警阀值时,AMOPS就会产生告警并展示在告警分类页面上。 告警分类页面提供告警搜索查看功能,用户可以指定监控项、集群、事件级别、时间范围和告警对象对告警进行搜索。 查询的告警数…

Android12之执行adb disable-verity后android无法启动(一百五十六)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

AotucCrawler 快速爬取图片

AotucCrawler 快速爬取图片 今天介绍一款自动化爬取图片项目。 GitHub: GitHub - YoongiKim/AutoCrawler: Google, Naver multiprocess image web crawler (Selenium) Google, Naver multiprocess image web crawler (Selenium) 关键字 爬虫网站:Google、Naver &…

【深度学习】2-3 神经网络-输出层设计

前馈神经网络(Feedforward Neural Network),之前介绍的单层感知机、多层感知机等都属于前馈神经网络,它之所以称为前馈(Feedforward),或许与其信息往前流有关:数据从输入开始,流过中间计算过程,最后达到输出…

springboot-内置Tomcat

一、springboot的特性之一 基于springboot的特性 自动装配Configuretion 注解 二、springboot内置Tomcat步骤 直接看SpringApplication方法的代码块 总纲: 1、在SpringApplication.run 初始化了一个上下文ConfigurableApplicationContext configurableApplica…

服务负载均衡Ribbon

服务负载均衡Ribbon Ribbon 介绍Ribbon 案例Ribbon 负载均衡策略Ribbon 负载均衡算法设置自定义负载均衡算法 Ribbon 介绍 Ribbon 是一个的客服端负载均衡工具,它是基于 Netflix Ribbon 实现的。它不像 Spring Cloud 服务注册中心、配置中心、API 网关那样独立部署…

使用Postman创建Mock Server

这篇文章将教会大家如何利用 Postman,通过 Mock 的方式测试我们的 API。 什么是 Mock Mock 是一项特殊的测试技巧,可以在没有依赖项的情况下进行单元测试。通常情况下,Mock 与其他方法的主要区别就是,用于取代代码依赖项的模拟对…

论文笔记 | 谷歌 Soft Prompt Learning ,Prefix-Tuning的 -> soft promt -> p tuning v2

论文笔记 | 谷歌 Soft Prompt Learning ptuning -> Prefix-Tuning -> soft promt -> p tuning v2 "The Power of Scale for Parameter-Efficient Prompt Tuning" EMNLP 2021 Google Brain 人能理解的不一定是模型需要的,所以不如让模型自己训…

多线程之线程安全

写在前面 本文一起看下线程安全相关内容。 1:重要的概念 1.1:竞态条件 多个线程竞争同一资源,如果是对多个线程访问资源的顺序敏感(即导致非预期结果),则该资源就是竞态条件。 1.2:临界区 …

亚毫秒GC暂停到底有多香?JDK17+ZGC初体验|得物技术

1 前言 垃圾回收器的暂停问题一直是Java工程师关注的重点,特别是对实时响应要求较高的服务来说,CMS和G1等主流垃圾回收器的数十毫秒乃至上百毫秒的暂停时间相当致命。此外,调优门槛也相对较高,需要对垃圾回收器的内部机制有一定的…

Nodejs六、数据库操作

零、文章目录 Nodejs六、数据库操作 1、MYSQL数据库 MYSQL相关知识请参考MYSQL基础 2、在项目中操作 MySQL (1)操作数据库的步骤 安装操作 MySQL 数据库的第三方模块(mysql)通过 mysql 模块连接到 MySQL 数据库通过 mysql 模…

chatgpt赋能python:Python编写网站的SEO指南

Python 编写网站的 SEO 指南 Python 是一个高可扩展性和灵活性的编程语言,在创建面向 Web 的应用程序和网站时非常强大。但是,即使你创建了一个出色的网站,也需要将它放在正确的地方以便被人们发现。 搜索引擎优化(SEO&#xff0…

【深度学习】2-2 神经网络 - 前向传播实现3层神经网络

神经网络分层 神经网络的一个重要性质是它可以自动地从数据中学习到合适的权重参数。 用图来表示神经网络的话,把最左边的一列称为输入层,最右边的一列称为输出层,中间的一列称为中间层。中间层有时也叫隐藏层(或隐含层&#xf…

深入了解计算机SNMP协议:原理、功能和应用场景

前言 简单网络管理协议(SNMP)是一种用于管理网络设备的协议,它可以让管理员通过网络对设备进行监控、配置和故障排除等操作。本文将详细介绍SNMP的版本、管理信息库MIB、管理信息结构(SMI)、SNMP报文、5种协议数据单元…

avive零头撸矿

Avive 是一个透明的、自下而上替代自上而下的多元网络,旨在克服当前生态系统的局限性,实现去中心化社会。 aVive:一个基于 SBT 和市场的 deSoc,它使 dapps 能够与分散的位置 oracle 和 SBT 关系进行互操作。您的主权社交网络元宇宙…

Vue中如何进行表单验证码与滑动验证?

Vue中如何进行表单验证码与滑动验证? 在Web应用程序中,表单验证码和滑动验证是常见的安全机制,用于防止恶意攻击和机器人攻击。在Vue中,我们可以使用许多不同的库来实现这些功能。本文将介绍如何使用Vue和vue-verify-code库来实现…

docker中部署lnmp架构

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 docker中部署lnmp架构 前言一、安装docker和docker-compose二、文件部署准备三、创建ngixn虚拟主机配置文件四、创建html文件夹五、启动容器文件结构 前言 Docker是一种轻量…