在设计电路的时候,常常会在两个芯片的信号线上串联一个电阻,这个电阻常常是0欧,22欧,33欧或更大阻值的电阻。位置的话有放在信号发射端也有放在接收端的。

今天就来和大家分享下,信号线上串接电阻的作用。
1、阻抗匹配,吸收反射信号
当信号频率比较高,上升沿比较陡时我们就需要考虑信号的阻抗连续问题了。
首先来看下光从空气照射到玻璃时,除了折射还会发生发射。

当信号频率比较高,上升沿比较陡时,电子信号经过阻抗不同的地方时也会产设反射。PCB的单线阻抗一般会设计成50Ω,发射端阻抗一般是17到40,而接收端一般是MOS管的输入,阻抗是比较大的,所以信号在接受端会产生反射,反射的信号又与源信号叠加,这样就会在接收端反复反射,直到趋于稳定。

信号反射,在实际电路中波形会表现为,实际在电路中的表现就是信号会出现过冲,下冲或者振铃。过冲和振铃很容易产生EMC问题或者在接收端产生误码。

比如这是之前测试的一个25MHZ的一个信号,当加的串接电阻是0欧姆时,可以看到信号的过冲非常明显,

当我串接的电阻为33欧时,信号的过冲有了很好的改善。

需要注意的是,串接电阻用作阻抗匹配是一般是接到信号的发射端,不能接到信号的接收端,阻值的话一般100欧以内,阻值大了信号会畸变,可能有时序问题。


2.吸收干扰脉冲
如果两个芯片间的信号线比较长,

或者走线的时候和一些时钟信号等快速跳变的信号靠的比较近的时候,

这个信号线很容易受到干扰或者信号线上会耦合到一些毛刺或窄脉冲。如果接收端是边沿触发有效,那么信号收到干扰后,必定会有误操作或者脉冲计数变多。

就好比之前做过一个项目,电极输出的脉冲信号经过光耦接到我们的FPGA,FPGA在接受到下降沿了之后进行数据处理。在调试的时候发现,一个周期内,本来之应该有6144个中断信号,但实际FPGA的脉冲信号有时会多余6144,经过查看PCB发现,我们这个线走线比较长,并且中间有一段和一个时钟线隔的比较近,后来在靠近FPGA的这边串接了一个1K的电阻后,脉冲数就正常了。
因为这种干扰或者耦合到的一些毛刺,它的电压幅值可能跟正常信号查不到,但是它的整个能量是非常小的,经过一个电阻后,基本就可以把它吸收了。

然后复位信号上串联电阻也是这个道理,可以吸收干扰信号或者静电干扰;
需要注意的是这个电阻一般推荐放在接收端,并且信号的频率不应太高,阻值的话根据实际情况可以适当选择。

3.便于调试测试
如果信号两端的芯片都是BGA的芯片或者一些引脚比较密的地方,有时候需要测试这个信号的波形或电平,不串接电阻的话我们将很难测试这个信号的波形,或者电平,这会给我们调试测试带来很多困难。
所以对于这种我们常常在信号线上串联一个0欧姆电阻,作为预留,方便PCBA的调试和测试。

如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象
我目前正在尝试学习RubyonRails和测试框架RSpec。assigns在此RSpec测试中做什么?describe"GETindex"doit"assignsallmymodelas@mymodel"domymodel=Factory(:mymodel)get:indexassigns(:mymodels).shouldeq([mymodel])endend 最佳答案 assigns只是检查您在Controller中设置的实例变量的值。这里检查@mymodels。 关于ruby-o
这段代码似乎创建了一个范围从a到z的数组,但我不明白*的作用。有人可以解释一下吗?[*"a".."z"] 最佳答案 它叫做splatoperator.SplattinganLvalueAmaximumofonelvaluemaybesplattedinwhichcaseitisassignedanArrayconsistingoftheremainingrvaluesthatlackcorrespondinglvalues.Iftherightmostlvalueissplattedthenitconsumesallrvaluesw
你能解释一下吗?我想评估来自两个不同来源的值和计算。一个消息来源为我提供了以下信息(以编程方式):'a=2'第二个来源给了我这个表达式来评估:'a+3'这个有效:a=2eval'a+3'这也有效:eval'a=2;a+3'但我真正需要的是这个,但它不起作用:eval'a=2'eval'a+3'我想了解其中的区别,以及如何使最后一个选项起作用。感谢您的帮助。 最佳答案 您可以创建一个Binding,并将相同的绑定(bind)与每个eval相关联调用:1.9.3p194:008>b=binding=>#1.9.3p194:009>eva
我无法运行Spring。这是错误日志。myid-no-MacBook-Pro:myid$spring/Users/myid/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/spring-0.0.10/lib/spring/sid.rb:17:in`fiddle_func':uninitializedconstantSpring::SID::DL(NameError)from/Users/myid/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/spring-0.0.10/li
我在RoR应用程序中有一个提交表单,是使用simple_form构建的。当字段为空白时,应用程序仍会继续下一步,而不会提示错误或警告。默认情况下,这些字段应该是required:true;但即使手动编写也行不通。该应用有3个步骤:NewPost(新View)->Preview(创建View)->Post。我的Controller和View的摘录会更清楚:defnew@post=Post.newenddefcreate@post=Post.new(params.require(:post).permit(:title,:category_id))ifparams[:previewButt
目录一、inout在设计文件中的使用方法1.1、inout的第一种使用方法1.2、inout实现的第二种使用方法1.3、inout使用总结 二、inout在仿真测试中的使用方法一、inout在设计文件中的使用方法在FPGA的设计过程中,有时候会遇到双向信号(既能作为输出,也能作为输入的信号叫双向信号)。比如,IIC总线中的SDA信号就是一个双向信号,QSPIFlash的四线操作的时候四根信号线均为双向信号。在Verilog中用关键字inout定义双向信号,这里总结一下双向信号的处理方法。1.1、inout的第一种使用方法 实际上,双向信号的本质是由一个三态门组成的,三态门可以输出高电平,低电
我一直在Heroku上尝试不同的缓存策略,并添加了他们的memcached附加组件,目的是为我的应用程序添加Action缓存。但是,当我在我当前的应用程序上查看Rails.cache.stats时(安装了memcached并使用dalligem),在执行应该缓存的操作后,我得到current和total_items为0。在Controller的顶部,我想缓存我有的Action:caches_action:show此外,我修改了我的环境配置(对于在Heroku上运行的配置)config.cache_store=:dalli_store我是否可以查看其他一些统计数据,看看它是否有效或我做错
我在我的机器上安装了ruby版本1.9.3,并且正在为我的个人网站开发一个octopress项目。我为我的gems使用了rvm,并遵循了octopress.org记录的所有步骤。但是我在我的rake服务器中发现了一些错误。这是我的命令日志。Tin-Aung-Linn:octopresstal$ruby--versionruby1.9.3p448(2013-06-27revision41675)[x86_64-darwin12.4.0]Tin-Aung-Linn:octopresstal$rakegenerate##GeneratingSitewithJekyllidenticals
我想从gtk3中的Widget发出自定义信号。在GTK2中,有一个名为signal_new的函数来创建一个新信号。您可以在此处查看示例:https://github.com/ruby-gnome2/ruby-gnome2/blob/ec373f87e672dbeeaa157f9148d18b34713bb90e/glib2/sample/type-register.rb在GTK3中,这个功能似乎不再可用。那么在ruby的GTK3中创建自定义信号的新方法是什么? 最佳答案 GTK3更改为使用define_signal方法而不是si