×
FPGA/DSP > DSP系统 > 详情

数字电路设计盲点实例与对策分析

发布时间:2024-05-03 发布时间:
|

  介绍有关数字电路设计盲点的内容,将分别针对Tinning、数据传输、消耗电流、HDL编写等项目,辅以实例进行现象、原因分析以及对策探讨。首先要介绍的是二进制计数器(Binary Counter)的设计。

 

  有关Tinning的设计盲点

 

  【二进制计数器】

  二进制计数器经常被用来作外部输入脉冲的同步化,此外计数器的输出可负载(Load)到计数器本身,如果某种原因使得同步信号消失,可因为二进制计数器持续维持输出Tinning,直到同步信号恢复正常再度取得同步为止,而且二进制计数器具有抗噪讯特性,所以是种广被使用的电路Block。

  ※现象

  图1-1是典型的二进制计数器电路,该电路是将0~5计数(Count),将6 Counter,不过由于某种原因使得同步信号与计数器(Counter)的输出Tinning产生偏差,就会像产生如图1-2所示的电路输出持续偏差现象。

 

  

 

  

 

  ※原因分析

  Flip Flop可keep已负载于二进制计数器LD的信号,因此若是忘记将「Flip Flop」Reset就会发生上述现象。为了符合设计规格因此利用图1-3的二进制计数器输出,不过由于图1-1的电路,负载之前已将Tinning译码(Decoder),并用D Flip Flop将该信号延迟一位(Bit)作成Load Tinning,因此某种原因使得同步信号与后段Flip Flop判定(Assert)Tinning延迟一位时,Tinning就会持续维持输出偏差状态。

 

  

 

  ※对策

  根据电路Block的动作特性进行延迟计算,通常设计上不会有任何问题,因此采用如图1-4所示的对策,如果因为负载信号的传输延迟造成延迟(delay),祇需在图1-4后面的D Flip Flop作Load就可解决上述问题。

  图1-1的电路原先是与图1-3的电路相同,不过可能是进行Bread Board评鉴测试时发生译码错误(miss),或者是负载信号传输的Line Delay无法满足Set Up与Hold Tinning,因此插入D Flip Flop作Careless Miss对策。

  【夹杂延迟无法提高Clock频率】

  ※现象

  这是经常发生的典型失败设计实例,主要原因是计数器的Illegal State对策不当造成Clock频率无法提高。在理论合成阶段理论压缩的PLD,有许多情况虽然不致构成障碍,然而实际上却潜伏许多无法厘清盲点。图2-1是十进制计数器设计实例,图中的3至8 Line Decoder相当于74137的TTL Micro。

 

  

 

  ※原因分析

  如上所述Clock频率无法提高,主要原因是不当的Illegal State对策所造成。由于Illegal State对策上因为某种因,使得必要的Counter以外的值插入State,为了顺利回复原正常状态因此设置Illegal State,不过该对策却会压迫动作性能,造成本末倒置的反效果。

  ※对策

  将Illegal State对策降至最小范围,根据State Machine的情况充分检讨,设法使Clock数能回复原正常状态,且不会产生其它问题。尤其是二进制计数器(Binary Counter),可以应用过去Disc Lead IC设计手法,简化Illegal Sta te的Decoder。图2-2是根据上述方式设计的电路图,如图所示Illegal State(此时为Ah以上)的Decoder是由负载条件决定,并刻意使Flip Flop的输出变成1,再使负载条件能完全成立进行Decoder(此时为Bh,Dh,Fh),进而使电路恢复正常状态。

 

  

 

  【计数器切换造成分布不均】

  ※现象

  为制作时间分析仪因此在输入端分别设置可储存检测中的数据的计数器,以及可将数据记忆至Memory的计数器(Counter),不过由于计数器产生分布不均现象,所以无法正确检测。时间分析仪又称为「Multi Channel Analyzer」,它的主要功能是将时间分割作信号分类。图3-1是2频时间分析仪的Counter Channel切换电路,图中的InO Switch是用来作初期化,图中的下半段是产生频道切换时间的电路,本电路图是美国Beige Bag Software公司设计的 Spice A-D 2000 Versi on3.0.2。Sig主要用意是希望用时间分析仪检测的脉冲,Out1是区分成Counter U6脉冲,它是用信号Sel进行区分,当Sel为「H」时利用计数器(Count er)U4计数(Count),若是「L」时则利用计数器(Counter)U6计数(Count)。此外脉冲在区分成U4时会读取U6的数据,脉冲在区分成U6(Out3)时会读取U4(Out2)的数据(位图标)。U9与U10在切换计数器(Counter)时会将U4与U6清除(Clear)。此外从计数器读取数据后会作清除动作,因此利用U13、U16、U14产生Tinning信号。

 

  

 

  ※原因分析

  输入至Counter Clock的Selector作异步切换,造成选择(Selector)切换与Coun ter的频率特性同时出现,如图3-2所示更恶劣的情况是通过切换时的切换脉冲被分断成Out 1与Out2,形成双重计数(Double Count)现象,即使使用正确的时间选择(Selector)做切换,都无法解决上述双重计数的问题。

 

  

  图3-2 图3-1电路的Time Chart

 

  ※对策

  由于上述电路是以Selector作切换,所以没有简易的对策可供参考,必需将被测信号与系列Clock同步化(图3-3),同时Counter也需使用同步Type,并将Counter改成一个,使频道(Channel)切换时前频道的计数数据(Count Data)能被Latch同时还能清除Counter。由图3-3可知它是利用Master Clock的Mck使U3、U4、U12、U14同步动作,并利用U3、U4、U12、U14输出的的结果,使得Mck也作能同步动作。在被测Sig的脉冲,U2的Q一旦变成H时,与Mck同步化的Out 0就成为H,在此同时U3对Out 0反转,利用输出Q将U2清除,其结果使得Out 0对Sig的站立发生反应,输出脉冲信号Out 0,信号与Mck同步化而且可使Clock成为H,如此便可在Mast er Clock获得同步的被测信号Out 0,因此用U4将信号Out 0 Counter,进而获得输出Out 2,随着时间切换,利用脉冲Sel可以获得时间内的计数结果,同时还可清除(Clear)U,,并开始下个检测动作。不过必需注意的是Clear若有Out 0时会将它作1的初期化。虽然检测脉冲在同步化后,祇检测站立部分并将它计数(Coun t),然而实际上并非祇是单纯的同步化,而是藉由Flip Flop的Clock的输入,使得幅宽狭窄的脉冲也无法遗漏,不过作业上存有Dead Time,因此若是连续性的幅宽狭窄脉冲不断出现时,上述方法就不适用,换句话说被测信号的脉冲幅宽必需是Master Clock的两倍以上。

 

  

 

  如图3-4所示的Tinning,切换时的Data Latch与Clear是利用Mast Clock Mck下降执行,所以不会影响检测动作。Tinning除了Counter之外还具有Latch成份,因此会在下个频道检测中记录(Memory)上个频道的数据并列入计算范围,如此一来理论上频道之间就无任何不协调,此外由于可检测的频率受到限制,因此可以进行正确的量测动作。

 

  

 


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
单片机程序的三种方式介绍