版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第10章设计中的常见问题10.1信号毛刺的产生及消除10.2时钟问题10.3复位和清零信号
10.1信号毛刺的产生及消除
10.1.1信号毛刺的产生
信号在可编程器件内部通过连线和逻辑单元时,会有一定的延时,延时的长短与信号通道上的连线长短和逻辑单元的数目有关,同时还受器件的制造工艺、工作电压、温度等条件的影响。信号的高低电平转换也需要一定的过渡时间。由于存在这两方面的因素,多路信号的电平值发生变化时,在信号变化的瞬间,组合逻辑的输出状态不确定,往往会出现一些不正确的尖峰信号,这些尖峰信号称为“毛刺”。如果一个组合逻辑电路中有“毛刺”出现,就说明该电路存在“冒险”。由于信号路径长度的不同,多级组合电路、译码器、数值比较器以及状态计数器等器件本身容易出现冒险现象,时钟端口、清零和置位端口对毛刺信号十分敏感,这些端口出现的任何毛刺都可能会使系统出错,因此判断逻辑电路中是否存在冒险以及如何避免冒险是设计人员必须要考虑的问题。
如图10.1所示的电路就是一个会出现冒险的电路,根据电路结构原理,3位计数器对时钟信号“clk”进行计数,计数值通过一个两级与门逻辑,控制一个D触发器的强制置位端,当信号“q0”、“q1”、“q2”均为“1”时,输出端“out”输出为“1”,其余时刻输出端“out”输出为“0”。
图10.1存在“冒险”的组合逻辑电路的期望时序如图10.2所示。图10.2电路的期望时序实际上,按照如图10.1所示的电路,使用QuartusⅡ进行时序仿真后,获得的实际时序仿真波形如图10.3所示。图10.3实际时序仿真波形当计数器的计数值由“4”变为“5”时,“out”信号产生了意外的脉冲输出,显然此时序无法满足设计要求。对信号线“PROBE1”的时序进行分析,获得如图10.4所示的时序波形。图10.4“PROBE1”的时序波形当信号“q[2..0]”的值由“3”变为“4”以及由“5”变为“6”时,在信号“PROBE1”上会出现两个毛刺,从而导致了输出信号“out”的异常脉冲输出,显然毛刺是由信号“q[2..0]”与“PROBE1”间的如图10.5所示的组合逻辑电路产生的。图10.5产生毛刺的组合逻辑电路查看编译报告中的“ClassicTimingAnalyzer”模块,分析如图10.5所示的组合逻辑部分的延时,获得如图10.6所示的延时矩阵。图10.6获得的延时矩阵信号q[2..0]由“000”变到“111”的过程如表10.1所示。当信号q[2..0]由“011”变为“100”和由“101”变为“110”时,由于器件延时的不同,会出现在某一个时间段内信号“q2”、“q1”和“q0”同时为“1”的情况。
表10.1信号q[2..0]的状态变化表q2q1q000000101001110010111011110.1.2信号毛刺的解决方法
常用的消除信号毛刺的方法有两种:一是通过对后续电路的改进,避免毛刺对后续电路的影响;二是在计数过程和组合逻辑中就避免毛刺的产生。
采用第一种方法,使用如图10.7所示的同步电路设计,在信号“PROBE1”与触发器“PRN”端之间添加一个新的D触发器,由“clk”信号下降沿控制触发,保证在触发的时刻组合逻辑输出的信号已经稳定,同时该触发器输出信号Q通过一个延迟门与“PRN”端组成正反馈回路,保证足够的脉宽。图10.7添加D触发器的电路图10.8改进后的电路的仿真时序改进后的电路的仿真时序如图10.8所示。在如图10.8所示的时序过程中,电路毛刺并没有被消除,只是通过添加触发器将毛刺对后续电路的影响消除了。
这种方法也存在不足,即增加了输出信号与时钟信号之间的延时;另外,当系统的时钟频率很高时,毛刺在时钟信号的下降沿时刻可能还没有消失,仍然会影响后续电路。
另一种能完全避免毛刺产生的方法就是使用格雷码计数器,在每次计数状态变化过程中只有一位信号发生变化,如表10.2所示,这样就避免了毛刺产生的可能。表10.2信号q[2..0]的状态变化表qcqbqa101100000001011010110111图10.9采用格雷码计数器后的电路采用格雷码计数器后的电路如图10.9所示。图10.9中的“modcount”是一个自定义的3位格雷码计数器模块,其描述如下:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYmodcountIS
PORT(clk:INSTD_LOGIC;
reset:INSTD_LOGIC;
q:OUTSTD_LOGIC_VECTOR(2DOWNTO0)
);
ENDENTITYmodcount;
ARCHITECTUREbehavOFmodcountIS
SIGNALrr:STD_LOGIC_VECTOR(2DOWNTO0); --状态变量
CONSTANTst0:STD_LOGIC_VECTOR(2DOWNTO0):="101"; --状态常数设置
CONSTANTst1:STD_LOGIC_VECTOR(2DOWNTO0):="100";
CONSTANTst2:STD_LOGIC_VECTOR(2DOWNTO0):="000";
CONSTANTst3:STD_LOGIC_VECTOR(2DOWNTO0):="001";
CONSTANTst4:STD_LOGIC_VECTOR(2DOWNTO0):="011";
CONSTANTst5:STD_LOGIC_VECTOR(2DOWNTO0):="010";
CONSTANTst6:STD_LOGIC_VECTOR(2DOWNTO0):="110";
CONSTANTst7:STD_LOGIC_VECTOR(2DOWNTO0):="111";
BEGIN
PROCESS(clk)
BEGIN
IF(clk'eventANDclk='1')THEN
CASErrIS
WHENst0=>rr<=st1;
WHENst1=>rr<=st2;
WHENst2=>rr<=st3;
WHENst3=>rr<=st4;
WHENst4=>rr<=st5;
WHENst5=>rr<=st6;
WHENst6=>rr<=st7;
WHENst7=>rr<=st0;
ENDCASE;
q<=rr;
ENDPROCESS;
ENDbehav;
使用格雷码计数器后,系统仿真时序如图10.10所示。图10.10使用格雷码计数器后的仿真时序在如图10.10所示的系统时序中,由于使用了格雷码计数器,每次只改变一位输出值的状态,因此从根本上消除了毛刺的产生,系统更为稳定。
在数字电路中,采用格雷码计数器、同步电路等可以大大减少毛刺,但它并不能完全消除所有的毛刺。毛刺并不是对所有的输入都有危害。例如D触发器的D输入端,只要毛刺不出现在时钟的上升沿并且满足数据的建立和保持时间,一般不会对系统造成危害。因此,在设计数字电路时,需要综合考虑毛刺的影响,在保证电路稳定的情况下,尽量简化设计。10.2时钟问题
在时序电路的设计中,时钟信号常常用来对各类信号进行同步采样,以实现电路的同步,从而保证系统的稳定性。在极限温度、电压或制造工艺存在偏差的情况下,设计不良的时钟将导致系统错误的行为,因此稳定的时钟设计非常关键。在FPGA设计时通常采用全局时钟、门控时钟、多级逻辑时钟和波动式时钟这4种时钟类型。多时钟系统是这4种时钟类型的任意组合。10.2.1信号的建立和保持时间
在设计时钟前,设计者需要考虑的第一件事就是信号的建立和保持时间。所谓信号的“建立时间”,是指在时钟的上升沿或下降沿之前数据必须保持稳定(无跳变)的时间。“保持时间”是指在时钟跳变后数据必须保持稳定的时间。建立时间与保持时间的关系如图10.11所示。为了保证在时钟信号翻转时采集数据的正确性,一般在数据信号发生时间的中间段进行采集,这就要求有足够的信号建立和保持时间,所有采用时钟和数据输入的同步数字电路都要求提供这两个时间参数。图10.11建立时间与保持时间的关系要求数据稳定接收就必须满足建立和保持时间的要求,否则在时钟上升沿或下降沿读取的数据就可能有错误,从而使电路变得不稳定。在FPGA设计中,应该尽量避免在数据建立时间内或其附近读取数据。对于级联的功能模块或者数字逻辑器件,后一模块或器件的工作时钟一般取前一模块或器件工作时钟的反相信号,这样就可以保证时钟的边沿位于数据的保持时间内。10.2.2全局时钟
在一个数字系统中,如果每一个顺序逻辑单元(SequentialLogicElement)都是用同一个参考时钟脉冲来驱动的,则可称该系统为同步系统,驱动同步系统的参考时钟就是全局时钟。全局时钟驱动的同步系统可以小到一个简单的逻辑芯片,大到一个多插槽式模组,其包含的顺序逻辑单元可以是寄存器(Register)、先进先出(FIFO)缓冲器、同步内存(Memory)等。对于一个设计项目来说,全局时钟是最简单和最可预测的时钟。在FPGA设计中,最好的时钟方案是:由专用的全局时钟输入引脚驱动单个主时钟去控制设计项目中的每一个触发器。FPGA芯片一般都具有专用的全局时钟引脚,在设计项目时应尽量采用全局时钟,它能够提供器件中最短的时钟到输出的延时。
图10.12所示的是全局时钟的一个典型实例。
图10.12中的全局时钟控制三级组合电路的运行,每次得到的结果被全局时钟控制的D触发器锁存,使运行过程与全局时钟同步。图10.12全局时钟实例10.2.3门控时钟
在许多应用中,整个设计项目都采用外部的全局时钟是不可能的,所以通常用阵列时钟构成门控时钟。门控时钟常常同微处理器接口有关,例如用地址线去控制写脉冲。每当用组合逻辑来控制触发器时,通常都存在着门控时钟。在使用门控时钟时,应仔细分析时钟函数,以避免毛刺的影响。如果设计满足下述两个条件,则可以保证时钟信号不出现危险的毛刺,门控时钟就可以像全局时钟一样可靠工作:
(1)直接驱动时钟的逻辑中只允许包含一个“与门”或一个“或门”,如果采用其他的附加逻辑,就会在某些工作状态下出现由于逻辑竞争而产生的毛刺。
(2)逻辑门的一个输入作为实际的时钟,而该逻辑门的所有其他输入必须当成地址或控制线,它们遵守相对于时钟的建立和保持时间的约束。
图10.13所示为一个使用与门的门控时钟电路。
将门控时钟与全局时钟同步能改善设计项目的可靠性。使用带有使能端的D触发器可以实现门控时钟与全局时钟的同步。带有使能端的D触发器的符号如图10.14所示。
图10.13使用与门的门控时钟电路图10.14带有使能端的D触发器的符号使用时,将门控时钟接D触发器的使能端,全局时钟接D触发器的时钟输入端,这样就能保持门控时钟与全局时钟的同步。
当产生门控时钟的组合逻辑超过一级,即超过单个的“与门”或“或门”时,该设计项目的可靠性将变得很差。在这种情况下,即使样机或仿真结果没有显示出静态险象,但实际上仍然可能存在危险,所以我们不应该用多级组合逻辑去作为触发器的时钟端。多级逻辑的险象可以通过插入“冗余逻辑”到设计项目中去除,但是FPGA编译器在逻辑综合时会去掉这些冗余逻辑,这就使得验证险象是否真正被去除变得十分困难。为此,设计人员应寻求其他方法来实现电路的功能,尽量避免使用多级门控时钟。10.2.4多时钟系统
在设计中常常会碰到多时钟系统,即在一个系统中存在多个时钟信号,例如异步通信接口或者两个不同时钟信号驱动的微处理器之间的接口。由于两个时钟信号之间要求一定的建立和保持时间,因此上述应用引进了附加的定时约束条件,要求接口系统将某些异步信号同步化。如图10.15所示即为一个双时钟系统的实例。该系统有两路彼此独立的时钟信号:clk_a信号为3MHz,用于驱动触发器A;clk_b信号为6MHz,用于驱动触发器B。两个触发器的输出信号要进行逻辑与操作,这样就要求两路触发器输出的信号能够同步,以保证两信号在进行与操作之前均处于稳定状态,避免出现不可预料的毛刺。由于clk_a和clk_b是相互独立的,分别由这两路时钟信号驱动的data_a和data_b信号的建立时间和保持时间的要求不能得到稳定的保证,因此必须添加如图10.16所示的同步电路来实现两路信号的同步化。图10.15双时钟系统图10.16添加同步电路后的双时钟系统图10.16所示的电路是在图10.15的基础上增加了一个新的触发器,它由clk_b控制,从而保证了经过触发器处理后的data_a信号符合data_b信号的建立时间要求。
以上的例子中,两个时钟信号的频率之间是整数倍关系,即clk_b的频率是clk_a频率的两倍,两者之间可
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度房地产企业股权置换及增资协议3篇
- 售后回租合同(2篇)
- 和出版公司签订的自费出书合同(2篇)
- 二零二五年度国际金融信贷与投资合作协议3篇
- 二零二五年度技术研发合作与知识产权共享协议11篇
- 二零二五年度家居半包装修施工监理合同2篇
- 二零二五年度新型房产抵押借款合同协议3篇
- 2025年度电子音响设备销售与用户体验优化合同汇编
- 《投资学案例研究》课件
- 2024年北师大版二年级语文下册月考试卷含答案
- 2023-2024学年浙江省杭州市上城区教科版四年级上册期末考试科学试卷
- 《三国志》导读学习通超星期末考试答案章节答案2024年
- 期末 (试题) -2024-2025学年外研版(三起)(2024)英语三年级上册
- 2023年成都温江兴蓉西城市运营集团有限公司招聘笔试题库及答案解析
- 松下vf100变频器使用手册
- 机械设计制造及其自动化实习总结报告——某
- 角的概念推广说课课件.
- 压密注浆施工工艺
- 2019-2020学年江苏省徐州市九年级(上)期末英语试卷(解析版)
- 苏教版八年级下《二次根式》单元测试卷(含答案)
- AAEM的应用机理
评论
0/150
提交评论