精华内容
下载资源
问答
  • 2020-02-14 18:48:44

    在FPGA的设计中,毛刺现象是长期困扰电子设计工程师的设计问题之一,是影响工程师设计效率和数字系统设计有效性和可靠性的主要因素。由于信号在FPGA的内部走线和通过逻辑单元时造成的延迟,在多路信号变化的瞬间,组合逻辑的输出常常产生一些小的尖峰,即毛刺信号,这是由FPGA内部结构特性决定的。毛刺现象在FPGA的设计中是不可避免的,有时任何一点毛刺就可以导致系统出错,尤其是对尖峰脉冲或脉冲边沿敏感的电路更是如此。因此,克服和解决毛刺问题对现代数字系统设计尤为重要。本文从FPGA的原理结构的角度探讨了产生毛刺的原因及产生的条件,在此基础上,总结了多种不同的消除方法,在最后结合具体的应用对解决方案进行深入的分析。

    1 毛刺产生的原因
    1.1 建立时间和保持时间
    建立时间(setup time)是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被打入触发器;保持时间(hold time)是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间, 如果保持时间不够,数据同样不能被打入触发器, 如图1。 数据稳定传输必须满足建立和保持时间的要求,当然在一些情况下,建立时间和保持时间的值可以为零。
    图1 建立时间与保持时间
    1.2 竞争和冒险
    FPGA芯片是由可构造的输入输出块(Input/OutputBlock,IOB)、可构造逻辑块(Cinfigurable Logic Block,CLB)和可编程连线资源(Programmable Interconnect Array,PIA)3种可构造单元构成的。IOB位于芯片内部四周,在内部逻辑阵列与外部芯片封装引脚之间提供一个可编程接口,他主要由逻辑门、触发器和控制元组成。CLB组成了FPGA的核心阵列,能完成用户指定的逻辑功能;每个CLB主要有一个组合逻辑、几个触发器、若干个多选一电路和控制单元组成;PIA位于芯片内部的逻辑块之间,经编程后形成连线网络,用于芯片内部逻辑间的相互连接,并在他们之间传递信息。信号在FPGA器件内部通过连线和逻辑单元时,都有一定的延时。延时的大小与连线的长短和逻辑单元的数目有关,同时还受器件的制造工艺、 工作电压、温度等条件的影响。信号的高低电平转换也需要一定的过渡时间。由于存在这两方面因素,多路信号的电平值发生变化时,在信号变化的瞬间,组合逻辑 的输出有先后顺序,并不是同时变化(及竞争现象),往往会出现一些不正确的尖峰信号,这些尖峰信号称为"毛刺"。如果一个组合逻辑电路中有"毛刺"出现,就说明该电路存 在"冒险"。(与分立元件不同,由于PLD内部不存在寄生电容电感,这些毛刺将被完整的保留并向下一级传递,因此毛刺现象在PLD、FPGA设计中尤为突 出)也就是说,在FPGA设计中,毛刺产生的根本原因是信号在芯片内部走线时产生的延迟。

    2 毛刺产生的条件
    由于延迟的作用,多个信号到达终点的时间有先有后,形成了竞争,由竞争产生的错误输出就是毛刺。所以,毛刺发生的条件就是在同一时刻有多个信号输入发生改变。

    3 消除毛刺的方法
    知道了毛刺产生的条件,就可以通过改变设计,破坏其条件来减少毛刺的发生。例如,利用格雷码计数器每次输出只有一位跳变的特性,代替普通的二进制计数器,避免了毛刺的产生。还可以对电路进行改进,以消除毛刺对系统的影响。下面对各种方法做分别介绍:
    3.1 利用冗余项法
    利用冗余项消除毛刺有2种方法:代数法和卡诺图法,两者都是通过增加冗余项来消除险象,只是前者针对于函数表达式而后者针对于真值表。以卡诺图为例,若两个卡诺圆相切,其对应的电路就可能产生险象。因此,修改卡诺图,在卡诺图的两圆相切处增加一个圆,以增加多余项来消除逻辑冒险。但该法对于计数器型产生的毛刺是无法消除的。

    3.2 采样法
    由于冒险多出现在信号发生电平跳变的时刻,即在输出信号的建立时间内会产生毛刺,而在保持时间内不会出现,因此,在输出信号的保持时间内对其进行采样,就可以消除毛刺信号的影响,常用的采样方法有2种:一种使用一定宽度的高电平脉冲与输出相与,从而避开了毛刺信号,取得输出信号的电平值。这种方法必须保证采样信号在合适的时间产生,并且只适用于对输出信号时序和脉冲宽度要求不严的情况。另一种更常见的方法叫锁存法,是利用D触发器的输入端D对毛刺信号不敏感的特点,在输出信号的保持时间内,用触发器读取组合逻辑的输出信号。由于在时钟的上升沿时刻,输出端Q=D,当输入的信号有毛刺时,只要不发生在时钟的上升沿时刻,输出就不会有毛刺。这种方法类似于将异步电路转化为同步电路,实现简单,但同样会涉及到时序问题。

    3.3 吸收法
    由于产生的毛刺实际上是高频窄脉冲,故增加输出滤波,在输出端接上小电容C就可以滤除毛刺。但输出波形的前后沿将变坏,在对波形要求较严格时,应再加整形电路,该方法不宜在中间级使用。

    3.4 延迟法
    因为毛刺最终是由于延迟造成的,所以可以找出产生延迟的支路。对于相对延迟小的支路,加上毛刺宽度的延迟可以消除毛刺。但有时随着负载增加,毛刺会继续出现,而且,当温度变化,所加的电压变化或要增加逻辑门时,所加的延迟是不同的,必须重新设计延迟线,因而这种方法也是有局限性的。而且采用延迟线的方法产生延迟会由于环境温度的变化而使系统可靠性变差。

    3.5 硬件描述语言法
    这种方法是从硬件描述语言入手,找出毛刺产生的根本原因,改变语言设计,产生满足要求的功能模块,来代替原来的逻辑功能块。

    3.6 用verilog代码,实现消除一个glitch
    (1) 滤掉小于1个周期glitch的原理图如下:
    在这里插入图片描述
    verilog代码实现如下:

    module digital_filter_(clk_in,rst,host_rst,host_rst_filter);
    input  clk_in;
    input  rst;
    input  host_rst;
    output host_rst_filter;
     
    reg host_rst_d1;
    reg host_rst_d2;
     
    always@(posedge clk_in or negedge rst)
      begin
        if(!rst)
        begin
            host_rst_d1 <= 1'b1;
            host_rst_d2 <= 1'b1;
           end
        else
          begin
            host_rst_d1 <= host_rst;
            host_rst_d2 <= host_rst_d1;
     
          end
      end
     
    assign host_rst_filter = host_rst_d1 | host_rst_d2;
    endmodule
    

    (2)滤掉大于1个周期且小于2个周期glitch的原理图如下:
    在这里插入图片描述
    verilog代码实现如下:

    module digital_filter_(clk_in,rst,host_rst,host_rst_filter);
    input  clk_in;
    input  rst;
    input  host_rst;
    output host_rst_filter;
     
    reg host_rst_d1;
    reg host_rst_d2;
    reg host_rst_d3;
     
    always@(posedge clk_in or negedge rst)
      begin
        if(!rst)
        begin
            host_rst_d1 <= 1'b1;
            host_rst_d2 <= 1'b1;
            host_rst_d3 <= 1'b1;
          end
        else
      begin
            host_rst_d1 <= host_rst;
            host_rst_d2 <= host_rst_d1;
            host_rst_d3 <= host_rst_d2;
           end
      end
     
    assign host_rst_filter = host_rst_d1 | host_rst_d2 | host_rst_d3;
     
    endmodule
    

    参考:
    (1)http://www.cnblogs.com/adxiaowei/p/4045532.html
    (2)https://wenku.baidu.com/view/9b67c5d649649b6648d747ed.html
    (3)https://blog.csdn.net/wangyanchao151/article/details/83374982

    更多相关内容
  • 性能分析 -- 各种毛刺

    千次阅读 2021-01-26 01:35:14
    日常线上请求的平响、cpu使用时通常都能见到n多的毛刺,有的毛刺凸显并且有规律可循,有的杂乱无章,这些毛刺到底是因为什么产生的,对应的解决解决套路是怎么样的? 排队和并发 说毛刺之间先来看一下cpu工作的...

    前言

    大家在观察压测&日常线上请求的平响、cpu使用时通常都能见到n多的毛刺,有的毛刺凸显并且有规律可循,有的杂乱无章,这些毛刺到底是因为什么产生的,对应的解决解决套路是怎么样的?

    排队和并发

    说毛刺之间先来看一下cpu工作的模式:排队和并发,并发指的是我们在某一时刻同时处理多个任务,而排队是指对于cpu而言任务调度处理的机制。这两者直接决定了任务处理的时延,落到用层面也就是我们的用户体验。
    认知cpu底层性能的工具和方法有很多种,如果之前没有相对清晰的认知可以看下这篇文章:
    https://zhuanlan.zhihu.com/p/213720319
    https://zhuanlan.zhihu.com/p/142284880

    cpu毛刺

    cpu毛刺通常是某时间段(相对较短)cpu消耗攀升导致的,cpu毛刺会导致很多很多不好的事情发生,比如:平响毛刺、任务挤压、缓存更新不及时等n种搞掉你服务可用性的事情,这些问题本质就是一开始提到的时延问题。
    攀升的原因通常有这么几点:

    大量消耗CPU的定时任务

    我们代码中经常起几个线程定时刷一下本地缓存、ct任务定时检查下服务状态或者其他什么事、logstream基础设施,这类定时任务难免会占用cpu,如果这些操作中涉及大量RSA操作、正则过滤、IO操作 CPU瞬间升高是不可避免的,如果压测过程中没有碰到这部分任务,但是线上峰值来了恰好定时任务也执行了,服务可能就部分不可用了,所以在评估真实容量时一定要把所有的cpu消耗全部考虑进来。如果涉及到极端场景下的性能优化,就要考虑把这些东西给停掉保证服务器的纯粹,只干一件事,互不影响。

    有人在搞事情

    大部分公司线上机器的权限是收敛的不错的,能够限制在操作系统上操作的命令,但是也存在部分场景收敛不到位,或者即使收敛到位了,有人在正则&awk查一个1个G的日志文件也是有可能的。
    这里最好的方式就是进一步限制,日志、脚本等操作可以统一收敛入口。

    机器问题

    我们无法保证机器是完全没有问题的,虽然这应该是op干的活,但是身为rd我们还是需要保持对于服务各种强依赖的不信任,就比如我们的服务器,很多快过保的服务器可能提前发生性能衰退,如果用容器的话,每次可能宿主机都不相同,这样的情况更要谨慎。

    可预知但是没在意的工具逻辑

    拿Java来说,我们在关注我们代码中相对耗性能的操作,比如说IO、RSA计算等,却时常忽略了进程中GC对于性能影响的占比,在常规流量情况下GC的占比可能也就1%以下,但是如果流量升高之后我们代码的“垃圾特性”就开始凸显了,动辄几个Full GC,整个gc过程的cpu消耗可能都会占到整个进程的cpu使用的50%以上。
    拿Redis来说,导致redis cpu used飙升的hgetall、大key、lua脚本等,我们知道会导致cpu 飙升,但是觉着就偶尔几次所以没在意。
    很多时候我们会忽略这些特性,觉着工具本身能帮我们解决或者我们无能为力,实际恰恰相反从一开始写代码我们就需要关注到并且深入了解我们所有的工具,向上到服务层面的影响、向下到cpu、内存的影响,对外到对于其他进程的影响。

    耗时毛刺

    耗时毛刺会直接影响到我们的服务可用性,分析解决问题通常也是从平响毛刺下手再到代码再到CPU、内存、带宽等最后重回代码来操作的。对于耗时,出现毛刺通常是因为在某一时间间隔内请求处理受到阻塞(包括连接处理的阻塞、连接内处理逻辑的阻塞),其中的主要的原因大概率是上面提到的cpu毛刺。

    连接处理的阻塞

    连接处理的阻塞往往意味着服务处理的极限,因为连接内部整体cpu消耗相对平均,由于cpu资源受限很多连接虽然建立了,但是部分请求迟迟得不到处理致使请求处理存在问题(不响应:502发生)或者处理时间十分长(毛刺产生)。
    如果应用如果已经优化到极致了,可以理解为这种情况就是服务器的处理极限了,这时候解决方式只有扩容。如果代码还没有优化,那就先针对各种性能分析的profile优化代码吧,比如减少单个请求中要消耗的CPU、请求处理过程的耗时,针对IO处理的(尽可能不做、合并IO、同步改异步、使用更加高效的API),针对CPU大量消耗的(只能尽可能的不做或者替换代价小的操作方式,何种序列化操作、RSA操作通通干掉)

    连接内处理逻辑的阻塞

    这个情况的原因有很多:

    • Java、Go中的GC操作导致用户线程暂停

    stw一直是GC算法中无法避免的问题,即使现在用写屏障、读屏障等钩子代码标记联动来尽可能减少stw的时间,但是最初的stw仍然无法避免,这是存在GC逻辑的语言中最大的痛,因为stw 期间用户线程完全是暂停的。
    我们能做的只有 优化代码尽可能少的stw,根据场景选择选择垃圾回收器,适合的最好的。如果你写Java:ZGC、G1、CMS、parralell GC总有一款适合你,如果你写Go 不如看看bfe重写GC模块的案例。

    • 下游响应较慢,但超时时间较长

    很多时候平响毛刺并不直接因为我们服务的原因,下游耗时时间忽然增加,又恰好我们的超时时间又设置的很长,毫无疑问我们会随着下游的抖动而一起抖动,如果依赖的下游很多,我门这样随机出现毛刺的概率也会相应的提升。

    • 某时段CPU消耗骤升

    这一块的原因其实就是一开始说的cpu毛刺,某小时间段内的cpu使用率飙升我们的操作迟迟得不到处理或者处理缓慢就会出现大量的毛刺。

    • 误用epoll的问题

    这是一个很小的原因,但是很多时候线上出现的很长时间的无效链接、大量的接入层502可能就是这个原因导致的。
    epoll(event poll)可以理解为是一个盒子收集缓冲区信号通知,内部维护了socket注册列表(epoll_ctl:红黑树)和一个就绪队列(epoll_wait:rdllist双向链表)对外提供事件通知,外部会拿到epoll_wait返回的就绪文件描述符集合,然后循环事件进行处理。

     

     

    epoll有两种模式:LT、ET。LT水平触发相当于会只要可读、可写就会有事件给出。但是在ET边缘触发模式(条件触发)下,有数据到来仅通知一次(系统不会充斥大量不关心的就绪文件描述符,只返回新的)。

    webp
    ET模式下:
    有多个连接同时到达,服务器的就绪队列瞬间积累多个就绪连接,accept只处理一个连接,导致就绪队列中剩下的连接都得不到处理,可能会发生饥饿现象,导致一些连接始终到达不了出发条件而一直无法处理产生无响应状态,导致毛刺或者接入层502的产生。
    还有一种情况是:文件描述符如果不是非阻塞的,那这个一直读或一直写势必会在最后一次阻塞。这样就不能在阻塞在epoll_wait上了,造成其他文件描述符的任务饥饿,导致无法处理。

    remarks:图都是网上找的

    定位问题

    火焰图

    在分析服务性能极限,优化代码性能时通常会用火焰图来打印各种profile来进行分析。
    挂火焰图分析通常是压服务极限时使用的。(
    常见压测的套路:
    1、压服务极限(发现代码问题,优化现有代码)
    2、压单机极限(用来评估整体容量,通常和第一步合并进行,cpu used 60%~70%)
    3、压集群极限(按照目标峰值压测)
    4、按照上述环节压降级

    直接贴几个工具吧:
    C :sudo perf record -F 99 -p 22645 -g -- sleep 30
    Go 语言:go-torch
    Java :https://github.com/jvm-profiling-tools
    https://github.com/brendangregg/FlameGraph 生成图片就可以了。

    shell 命令

    对于线上的应用火焰图可能不太合适,因为拉取cpu、内存profile的过程对于cpu、带宽消耗很多,所以通常就找一台机器用原生的命令拉取一下快照(也会有损耗但是还好)
    通常来说:
    1、top 看一下当前消耗较大的进程
    2、top -p 拉目标进程分析单个进程内消耗情况
    3、找到最大的线程
    4、jstack 看一下对应的具体情况(如果是Java 应用的话)

     

    展开全文
  • 原标题:令人困扰的DAC输出毛刺消灭记DAC基础知识:静态技术规格以及它们对DC的偏移、增益和线性等特性的影响在平衡双电阻 (R-2R) 和电阻串数模转换器 (DAC) 的各种拓扑结构间是基本一致的。然而,R-2R和电阻串DAC的...

    原标题:令人困扰的DAC输出毛刺消灭记

    DAC基础知识:静态技术规格以及它们对DC的偏移、增益和线性等特性的影响在平衡双电阻 (R-2R) 和电阻串数模转换器 (DAC) 的各种拓扑结构间是基本一致的。然而,R-2R和电阻串DAC的短时毛刺脉冲干扰方面的表现却有着显著的不同。

    我们可以在DAC以工作采样率运行时观察到其动态不是线性。造成动态非线性的原因很多,但是影响最大的是短时毛刺脉冲干扰、转换率/稳定时间和采样抖动。

    用户可以在DAC以稳定采样率在其输出范围内运行时观察短时毛刺脉冲干扰。图1显示的是一个16位R-2R DAC,DAC8881上的此类现象。

    图1

    这个16位DAC (R-2R) 输出显示了7FFFh – 8000h代码变化时的短时毛刺脉冲干扰的特性。

    到底发生了什么?

    在理想情况下,DAC的输出按照预期的方向从一个电压值移动到下一个电压值。但实际情况中,DAC电路在某些代码到代码转换的过程中具有下冲或过冲特性。

    这一特性在每一次代码到代码转换时都不一致。某些转换中产生的下冲或过冲特性会比其它转换更加明显。而短时毛刺脉冲干扰技术规格量化的就是这些特性。DAC短时毛刺脉冲干扰会瞬时输出错误电压来干扰闭环系统。

    图2显示的是具有单突短时毛刺脉冲干扰的DAC的示例。一个电阻串DAC产生的通常就是这种类型的短时毛刺脉冲干扰。

    图2 单突DAC输出短时毛刺脉冲干扰特性

    在图2中,代码转换的位置是从7FFFh—8000h。如果你将这些数变换为二进制形式,需要注意的是这两个十六进制代码的每个位或者从1变换为0,或者从0变换为1。

    短时毛刺脉冲干扰技术规格量化了这个毛刺脉冲现象所具有的能量,能量单位为纳伏秒,即nV-sec (GI)。这个短时毛刺脉冲干扰的数量等于曲线下面积的大小。

    单突短时毛刺脉冲干扰是由DAC内部开关的不同步造成的。那是什么引起了这一DAC现象呢?原因就是内部DAC开关的同步不总是那么精确。由于集成开关电容充电或放电,你能在DAC的输出上看到这些电荷交换。

    R-2R DAC产生两个区域的短时毛刺脉冲干扰错误(图3)。由于出现了双脉冲误差,从负短时毛刺脉冲干扰 (G1) 中减去正短时毛刺脉冲干扰 (G2) 来产生最终的短时毛刺脉冲干扰技术规格。

    图3 具有R-2R内部结构的DAC表现出双突短时毛刺脉冲干扰

    图3中的代码转换仍然是从7FFFh至8000h。

    为了理解DAC短时毛刺脉冲干扰的源头,我们必须首先定义主进位转换。在主进位转换点上,最高有效位 (MSB)从低变高时, 较低的位从高变为低,反之亦然。其中一个此类代码变换示例就是0111b变为1000b,或者是从1000 000b变为0111 1111b的更加明显的变化。

    有些人也许会认为这一现象在DAC的输出表现出巨大的电压变化时出现。实际上,这并不是每个DAC编码机制都会出现的情况。

    图4和图5显示了这种类型的毛刺脉冲对一个8位DAC的影响。对于DAC用户来说,这一现象在单个最低有效位 (LSB) 步长时出现,或者在一个5V、8位系统中,在19.5mV步长时出现。

    图4

    在这个8位DAC配置中,此内部开关有7个R-2R引脚被接至VREF,有1个R-2R引脚接地。

    图5

    在这个DAC配置中,此内部开关有1个R-2R引脚被接至VREF,有7个R-2R引脚接地。

    在DAC载入代码时,会有两个区域产生输出毛刺脉冲:同时触发多个开关的开关同步和开关电荷转移。

    此电阻串DAC具有一个单开关拓扑。一个电阻串DAC抽头连接到巨大电阻串的不同点。开关网络不需要主进位上的多个转换,因此,产生毛刺脉冲的可能进性较低。开关电荷将会产生一个较小的毛刺脉冲,但是与R-2R结构DAC产生的毛刺脉冲相比就显得微不足道了。

    代码转换期间,R-2R DAC具有多个同时开关切换。任何同步的缺失都导致短时间的开关全为高电平或全为低电平,从而使得DAC的电压输出迁移至电压轨。然后这些开关恢复,在相反的方向上产生一个单突短时毛刺脉冲干扰。然后输出稳定。

    这些毛刺脉冲的电压位置是完全可预计的。在使用R-2R DAC时,最糟糕的情况是毛刺脉冲误差出现在所有数字位切换,同时仍然用小电压变化进行转换时。在这种情况下,用主进位转换进行DAC代码变化;从代码1000…变换为0111…

    检查真实DAC运行状态

    现在,我们已经定义了针对短时毛刺脉冲干扰误差的备选代码转换,我们可以仔细观察一下16位DAC8881(R-2R DAC) 和16位DAC8562(电阻串DAC)的R-2R和电阻串DAC短时毛刺脉冲干扰。

    在图6中,DAC8881的短时毛刺脉冲干扰为37.7 nV-sec,而DAC8562的短时毛刺脉冲干扰为0.1 nV-sec。在这两张图中,x轴的刻度为500ns/p,而y轴的刻度为50mV/p。

    图6 R-2R和电阻串短时毛刺脉冲干扰性能

    毛刺脉冲消失了

    如果存在DAC短时毛刺脉冲干扰问题,用户可以使用外部组件来减小毛刺脉冲幅度(图7a),或者完全消除短时毛刺脉冲干扰能量(图7b)。

    图7 用一阶低通滤波器

    (a) 或采样/保持解决方案 (b) 来减少短时毛刺脉冲干扰误差

    DAC之后的RC滤波器可减少毛刺脉冲幅度(图7a)。短时毛刺脉冲干扰周期决定了适当的RC比。RC滤波器3dB的频率比短时毛刺脉冲干扰频率提前十倍频。在选择组件时需要确保电阻器的电阻值较低,否则的它将会与电阻负载一起产生一个压降。由于毛刺脉冲能量从不会丢失,执行单极低通滤波器的代价就是在稳定时间加长的同时误差被分布在更长的时间段内。

    第二种方法是使用一个采样/保持电容器和放大器(图7b)。外部开关和放大器消除了DAC内部开关产生的毛刺脉冲,从而获得较小的采样/保持 (S/H) 开关瞬态。在这个设计中,开关在DAC的整个主进位转换期间保持打开状态。一旦转换完成,开关关闭,从而在CH采样电容器上设定新输出电压。当DAC准备升级其输出时,此电容器在外部开关打开时继续保持新电压。这个解决方案成本较高,也会占据更多的板级空间,但能够在不增加稳定时间的情况下减少/消除毛刺脉冲。

    结论

    短时毛刺脉冲干扰是一个非常重要的动态非线性的DAC特性,你将会在器件以工作采样率运行时遇到这个问题。但是,这只是冰山一角。影响高速电路的其它因素还有转换率和稳定时间。请随时关注下一篇与这一主题相关的文章。

    “每月一晒,九月晒苹果”,承包你整个九月的话题。众多网友亲情奉献,关于苹果你不知道的隐藏秘籍,帮你装13,帮你充牛人。更是有惊喜大奖等待你的参与~更多详情点击阅读原文~~

    ↓↓↓↓点击阅读原文,查看九月论坛活动相关内容返回搜狐,查看更多

    责任编辑:

    展开全文
  • 利用最优权值系数,将灰色理论、人工神经网络和遗传算法有机结合,构建组合算法,依据3种数学方法建立3种组合模型:组合算术平均模型、组合平方和平均模型以及组合比例平均模型,并分别将3种组合模型应用于45钢铣削毛刺的...
  • 在DAC基础知识:静态技术规格,我们探讨了静态技术规格以及它们对DC的偏移、增益和线性等特性的影响。这些特性在平衡双电阻 (R-2R) 和电阻串数模转换器 (DAC) 的各种拓扑结构间是基本一致的。然而,R-2R和电阻串...

    在DAC基础知识:静态技术规格中,我们探讨了静态技术规格以及它们对DC的偏移、增益和线性等特性的影响。这些特性在平衡双电阻 (R-2R) 和电阻串数模转换器 (DAC) 的各种拓扑结构间是基本一致的。然而,R-2R和电阻串DAC的短时毛刺脉冲干扰方面的表现却有着显著的不同。

    我们可以在DAC以工作采样率运行时观察到其动态不是线性。造成动态非线性的原因很多,但是影响最大的是短时毛刺脉冲干扰、转换率/稳定时间和采样抖动。

    用户可以在DAC以稳定采样率在其输出范围内运行时观察短时毛刺脉冲干扰。图1显示的是一个16位R-2R DAC,DAC8881上的此类现象。

    图1

    这个16位DAC (R-2R) 输出显示了7FFFh – 8000h代码变化时的短时毛刺脉冲干扰的特性。

    到底发生了什么?

    在理想情况下,DAC的输出按照预期的方向从一个电压值移动到下一个电压值。但实际情况中,DAC电路在某些代码到代码转换的过程中具有下冲或过冲特性。

    这一特性在每一次代码到代码转换时都不一致。某些转换中产生的下冲或过冲特性会比其它转换更加明显。而短时毛刺脉冲干扰技术规格量化的就是这些特性。DAC短时毛刺脉冲干扰会瞬时输出错误电压来干扰闭环系统。

    图2显示的是具有单突短时毛刺脉冲干扰的DAC的示例。一个电阻串DAC产生的通常就是这种类型的短时毛刺脉冲干扰。

    图2

    单突DAC输出短时毛刺脉冲干扰特性。

    在图2中,代码转换的位置是从7FFFh到8000h。如果你将这些数变换为二进制形式,需要注意的是这两个十六进制代码的每个位或者从1变换为0,或者从0变换为1。

    短时毛刺脉冲干扰技术规格量化了这个毛刺脉冲现象所具有的能量,能量单位为纳伏秒,即nV-sec (GI)。这个短时毛刺脉冲干扰的数量等于曲线下面积的大小。

    单突短时毛刺脉冲干扰是由DAC内部开关的不同步造成的。那是什么引起了这一DAC现象呢?原因就是内部DAC开关的同步不总是那么精确。由于集成开关电容充电或放电,你能在DAC的输出上看到这些电荷交换。

    R-2R DAC产生两个区域的短时毛刺脉冲干扰错误(图3)。由于出现了双脉冲误差,从负短时毛刺脉冲干扰 (G1) 中减去正短时毛刺脉冲干扰 (G2) 来产生最终的短时毛刺脉冲干扰技术规格。

    图3

    具有R-2R内部结构的DAC表现出双突短时毛刺脉冲干扰

    图3中的代码转换仍然是从7FFFh至8000h。

    为了理解DAC短时毛刺脉冲干扰的源头,我们必须首先定义主进位转换。在主进位转换点上,最高有效位 (MSB)从低变高时, 较低的位从高变为低,反之亦然。其中一个此类代码变换示例就是0111b变为1000b,或者是从1000 000b变为0111 1111b的更加明显的变化。

    有些人也许会认为这一现象在DAC的输出表现出巨大的电压变化时出现。实际上,这并不是每个DAC编码机制都会出现的情况。更多细节请见参考文献1。

    图4和图5显示了这种类型的毛刺脉冲对一个8位DAC的影响。对于DAC用户来说,这一现象在单个最低有效位 (LSB) 步长时出现,或者在一个5V、8位系统中,在19.5mV步长时出现。

    图4

    在这个8位DAC配置中,此内部开关有7个R-2R引脚被接至VREF,有1个R-2R引脚接地。

    图5

    在这个DAC配置中,此内部开关有1个R-2R引脚被接至VREF,有7个R-2R引脚接地。

    在DAC载入代码时,会有两个区域产生输出毛刺脉冲:同时触发多个开关的开关同步和开关电荷转移。

    此电阻串DAC具有一个单开关拓扑。一个电阻串DAC抽头连接到巨大电阻串的不同点。开关网络不需要主进位上的多个转换,因此,产生毛刺脉冲的可能进性较低。开关电荷将会产生一个较小的毛刺脉冲,但是与R-2R结构DAC产生的毛刺脉冲相比就显得微不足道了。

    代码转换期间,R-2R DAC具有多个同时开关切换。任何同步的缺失都导致短时间的开关全为高电平或全为低电平,从而使得DAC的电压输出迁移至电压轨。然后这些开关恢复,在相反的方向上产生一个单突短时毛刺脉冲干扰。然后输出稳定。

    这些毛刺脉冲的电压位置是完全可预计的。在使用R-2R DAC时,最糟糕的情况是毛刺脉冲误差出现在所有数字位切换,同时仍然用小电压变化进行转换时。在这种情况下,用主进位转换进行DAC代码变化;从代码1000…变换为0111…。

    展开全文
  • Linux 机器 CPU 毛刺问题排查

    千次阅读 2020-10-14 18:00:00
    作者:jasonzxpan,腾讯 IEG 运营开发工程师本文排查一个Linux 机器 CPU 毛刺问题,排查过程不变更进程状态、也不会影响线上服务,最后还对 CPU 毛刺带来的风险进行...
  • 为了降低采集过程各种噪声干扰以及老数据的磁带掉粉等因素造成的地震数据异常,处理与地层性质无关的抖动和毛刺干扰.采用时序RBF神经网络在线重构的方法.结果表明:在保留实际信息的前提下能有效的去除地震数据...
  • [转]消除FPGA设计毛刺问题

    千次阅读 2014-10-23 13:05:00
    一.FPGA(Field ...在FPGA的设计,毛刺现象是长期困扰电子设计工程师的设计问题之一,是影响工程师设计效率和数字系统设计有效性和可靠性的主要因素。由于信号在FPGA的内部走线和通过逻辑单元时造成的延迟,...
  • 问题很容易复现,只要mbus总线出现类似如下的上电波形,上电的过程有一个小于100ms的电源掉电,一定会出现单片机异常。 问题的原因是LDO的输出端连接了一个0.1uf的电容,由于这种异常的上电波形导致电容上的电...
  • GAN有两个网络,一个是generator(生成图片的网络),还有一个是discriminator(判别网络)。 在我们训练过程当中,生成网络G的目标就是尽量生成真实的图片去"欺骗"网络D。 网络D的目标就是区分生成的图片与真实的...
  • 因此对网络数据进行实时的精细化分析,能够发现毫秒级的网络毛刺并使之与应用相关联,有助于网络团队第一时间深入虚拟网络定位故障。通过网络数据分析系统进一步挖掘更大时间尺度上的网络风险,掌握网络运行的健康...
  • 本文提到 CPU 统计和产生 core 文件的工具详见simple-perf-tools仓库。 问题描述 某服务所在机器统计显示,其 CPU 使用率在高峰时段出现毛刺。 暂时未收服务调用方的不良反馈。 初步排查 查看 CPU 1 分钟...
  • 本文分析了深亚微米下超大规模SoC的电源设计存在的问题...芯片供电电源网络上的一个很小的电压波动或毛刺噪声,都可能引起芯片逻辑功能的误动作,或者影响芯片逻辑动作的速度,降低了芯片的性能。因此,电源设计显得
  • 组合逻辑和门控时钟很容易产生毛刺,用组合逻辑的输出作为时钟很容易使系统产生误动作。  2、 不建议使用行波时钟。行波记数器虽然原理简单,设计方便,但级连时钟(行波时钟)最容易造成时钟偏差(△T),级数多...
  • 玩转Python图像处理

    千人学习 2020-06-12 16:58:51
    本课程尝试抛弃传统的使用复杂公式介绍算法的形式,尽量通过简单、通俗易懂的生活实例来帮助学习者理解算法的基本逻辑 3)案例驱动、强调实战 OpenCV是一个庞大的资源库,提供了非常多的函数帮助我们高效地处理...
  • Windows网络通信

    2019-11-28 23:49:50
    网络编程在Windows平台上有俩个主要版本:Winsock1和Winsock2 #include <WinSock.h> #pragma comment(lib, "WSock32.Lib") #include <WinSock2.h> #pragma comment(lib, "ws2_32.lib") //获取处理...
  • 在本文,我们着重于有效消除去毛刺后出现的振铃伪影和皱纹,并提出了一种基于双注意力深图像先验(DADIP)网络和二维(2D)模糊核估计的卷积神经网络的新型盲去污方法网络(CNN)。 在DADIP网络中,双重关注机制...
  • 前言在点击率CTR(Click Through Rate)预估算法的推荐场景使用 Tensorflow Serving热更新较大模型时会出现短暂的延时毛刺,导致业务侧超时,降低算法效果...
  • 在本文,我们着重于有效消除去毛刺后出现的振铃伪影和皱纹,并提出了一种基于双注意力深图像先验(DADIP)网络和二维(2D)模糊核估计的卷积神经网络的新型盲去污方法。网络(CNN)。 在DADIP网络中,双重关注机制...
  • GAN生成对抗网络综述

    千次阅读 多人点赞 2019-08-30 20:33:17
    在VAE,真实样本X通过神经网络计算出均值方差(假设隐变量服从正态分布),然后通过采样得到采样变量Z并进行重构。VAE和GAN均是学习了隐变量 [公式] 到真实数据分布的映射。但是和GAN不同的是: GAN的思路比较...
  • 如何根据训练/验证损失曲线诊断我们的神经网络

    千次阅读 多人点赞 2019-12-13 14:14:22
    在关于训练神经网路的诸多技巧Tricks(完全总结版)这篇文章,我们大概描述了大部分所有可能在训练神经网络中使用的技巧,这对如何提升神经网络的准确度是很有效的。 然而在实际,在方法几乎定型的时候,我们往往...
  • 记一次耗时毛刺排查

    2018-12-24 18:41:26
    前段时间的某天,注意到一个服务的平均耗时出现了如下图的毛刺现象。 image 耗时毛刺 注意到毛刺出现极其规律,每30分钟出现一个毛刺。考虑到这种规律性,并结合服务的流量较小(20 QPS)推测,可能是某个定时...
  • 本文排查一个Linux 机器 CPU 毛刺问题,排查过程不变更进程状态、也不会影响线上服务,最后还对 CPU 毛刺带来的风险进行了分析和验证。 本文提到 CPU 统计和产生 core 文件的工具详见 simple-perf-tools 仓库...
  • 消息发送队列积压数可以反映网络速度、通信对端的读取速度、以及自身的发送速度等,因此对于服务调用时延的精细化分析对于问题定位非常有帮助,它的采集方式代码示例如下: publicvoid channelActive...
  • 摘要:我们在在线业务使用hbase读写数据时,可能会发现,HBase的平均延迟会很低,可能会低于1ms,但P999延迟(99.9%请求返回的最大时间)可能会高达数百ms。这就是所谓的"毛刺",这些毛刺可能会造成我们的在线业务...
  • 本实用新型涉及计算机技术领域,具体为一种计算机网络设备用连接线。背景技术:计算机统称为电脑,是一种现代高速计算的电子计算机设备,同时可以数值计算和逻辑计算,同时具有存储记忆的功能,可以按照程序运行,其...
  • 1数字电路设计的几个基本概念: 1.1 建立时间和保持时间:     图1建立时间和保持时间关系图 建立时间(setup time)是指在触发器的时钟信号上升沿到来以前,数据...
  • 计算机网络-判断题网络域名地址便于用户记忆,通俗易懂,可以采用英文也可以...(E) 网络中机器的标准名称包括域名和主机名,采取多段表示方法,各段间用圆点分开。 (R )网络域名地址一般都通俗易懂,大多采用英文名...
  • 对于网络传输,最常用的报文有TCP和UDP两种形式,Jeffrey Erman[1]等人在2007年发表的一篇名为基于半监督学习的实时/离线流量区分的文章,已经详述通过聚类等算法实现了流量的区分,而且实验结果特别理想,这就为我...
  • 在进行深度学习神经网络的训练过程,为了提高网络模型的准去度,这里就其中的一些技巧进行概要描述大。 然而在实际,在原理和方法几乎定型的时候,我们往往需要针对自己的任务和自己设计的神经网络进行debug...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,465
精华内容 1,386
关键字:

网络中的毛刺