本发明的目的在于针对目前嵌入式微处理器应用系统的特点,提出一种以系统时钟为基准,并结合可编程逻辑器件对时钟的丢失或时钟的毛刺进行检测的方法。
本发明的构思是这样的:
嵌入式微处理器应用系统中,以系统时钟作为基准,当待检时钟(如串型通信时钟,交换网络的同步与比特时钟)正常时,系统时钟与待检时钟的频率比应为一定值n,如果允许两者频率比有误差,则频率比应在n1~n2之间(n1<n<n2),当待检时钟时钟丢失时,此时待检时钟呈现一直为高或为低的状态,相当于频率为零的时钟,两者频率比大于误差上限n2;当待检时钟出现毛刺时,此时待检时钟相当于变为一个高频时钟,则两者频率比小于误差下限n1。
由此,只要对待检时钟与系统时钟的频率比进行检测和比较,即可实现对待检时钟的丢失或毛刺进行检测。
实现本发明目的的技术方案依次包括如下步骤:
①预先设定系统时钟与待检时钟的频率比(n=系统时钟频率/待检时钟频率),n1和n2(n1<n<n2),n1=n-i,n2=n+j,根据精度要求可设i=1、2或3,j=1、2或3。n1和n2的值分别设定时钟毛刺比较器和时钟丢失比较器中;
②由脉冲信号控制一个系统时钟计数器的清零,清零后,计数器从头开始对系统时钟进行计数;
③通过一个触发器捕获待检时钟的上升沿(即信号由低电平转为高电平的时刻);
④通过一个脉冲发生器对触发器捕获的状态发出相应的脉冲信号;
⑤通过两个比较器,时钟丢失比较器和时钟毛刺比较器,将计数器的计数值分别与设定的n1、n2进行比较;
⑥将比较结果告知CPU。
整个过程可在可编程逻辑器件内部实现。所说的可编程逻辑器件可采用市售产品,如Altera公司的可编程逻辑器件。下面将结合附图对本发明的详细内容进行阐述。
由图1可见,当待检时钟正常时,脉冲信号在一个待检时钟的周期内产生两个脉冲;
由图2可见,当待检时钟短暂丢失时,待检时钟表现为高电平,脉冲信号的间隔超过一个正常待检时钟周期;
由图3可见,当待检时钟出现毛刺时,待检时钟表现为一较窄宽度的高频波形,此时脉冲信号的间隔低于一个正常待检时钟周期。
由图4可见,该方法包括以下步骤:
①启动检测电路;
②通过计数器8开始对系统时钟进行计数;
③通过触发器9捕获待检时钟的上升沿。如上升沿到来,触发器翻转,其状态输入脉冲发生器10;
④脉冲发生器发出相应的脉冲信号,该脉冲信号一方面指令系统时钟计数器8清零,重新开始计数;另一方面将清零前计数器8的计数值与时钟毛刺比较器11中的设定值误差下限n1进行比较,时钟毛刺比较器11的工作原理是,脉冲发生器的脉冲信号作为其使能信号,当存在脉冲信号时,如果计数值小于n1,输出高电平,反之为低电平。
⑤如果待检时钟丢失,则上升沿不会到来,此时由时钟丢失比较器12随时将计数值和设定值误差上限n2进行比较。时钟丢失比较器12的工作原理是,当计数值大于n2时,输出为高电平,反之为低电平;
⑥如果时钟丢失比较器12和时钟毛刺比较器11的比较结果为真,即信号由低电平变为高电平,则报送CPU13说明产生了时钟丢失或时钟毛刺现象;
⑥计数器8在脉冲信号控制下不断进行,因此整个时钟检测不断进行。
对该方案有三点说明:
(1)采用上升沿作为计数基准,是考虑到毛刺本身的特点,一般毛刺较窄,即使下降沿先出现,随后便会出现上升沿,因此以上升沿作为计数基准是可行的,如要求以下降沿为计数基准,只需加一反相器即可,也可将两种电路接合起来,同时以毛刺的上升和下降沿为计数基准;
(2)对于宽度小于系统时钟的毛刺,仍然可以捕捉到,这在下面的详细描述中给予说明;
(3)实际使用该方法时,判断丢失时钟和毛刺出现的计数值可根据要控制的精度灵活设定,即合理设定误差下限n1和误差上限n2的大小,类似于一个带通滤波器,在n1<计数值<n2时为正常,n1和n2的范围越大,检测的精度越低,反之则越高。一般,n可根据系统时钟和待检测时钟的频率比来确定,n=系统时钟频率/待检时钟频率,如用64M的系统时钟来检测4M的时钟,则n=64/4=16,可选定n1=15,n2=17,如果容许4MHz时钟的相位等有较大误差,可适当放宽取值范围,如n1=14,n2=18。
图5为可编程逻辑实现电路图。
根据图4所示的方案框图的具体可编程逻辑的实现电路图如附图5所示,该图可用Altera公司的MaxPlusⅡ软件实现。在可编程逻辑设计软件环境中将可编程逻辑实现电路画好,编译并烧入可编程逻辑器件,将系统时钟和待检时钟输入器件管脚,而将输出管脚和CPU相连即可实现该方法。图中以系统时钟64M,待检测时钟4M为例,则两者关系为16倍,在图中电路以大于18和小于14作为判决条件,判断时钟是否丢失或出现毛刺。
由图5可见,该实现电路包括:
一个具有同步清零端的计数器25、时钟丢失比较器14、比较器26和带使能端的D触发器15构成的时钟毛刺比较器16、T触发器17和D触发器18构成的触发器19、D触发器20和异或门21构成的脉冲发生器22、三输入或门23和与门24构成的状态保持电路。
计数器25的同步清零控制信号来自脉冲发生器22;时钟丢失比较器14的信号来自计数器25,它判断当计数值大于n2大于18时,输出为高电平,反之为低电平;时钟毛刺比较器16的使能端信号来自脉冲发生器22;
组成触发器19的T触发器17的T端接VCC,因此只要来的脉冲宽度大于可编程逻辑器件的触发器建立时间(一般较小,如8ns),就可使T触发器5翻转,从而检测出来,该方法可达到较高的精度正在于此。D触发器18的作用在于用系统时钟同步一下,以使后面的脉冲发生器22产生的脉冲宽度保持恒定;
三输入或门23和与门24用于保持时钟丢失或时钟毛刺产生的高电平信号,是整个电路和CPU的接口部分。图5中此处电路产生的作用是,一旦出现时钟丢失或毛刺,就将产生的高电平保持住并输到CPU,直到CPU响应并发出清零信号为止。这部分可根据需要进行修改以符合各利CPU的需要。
可编程逻辑实现电路中的输出信号可直接连到CPU的中断脚,也可将该输出信号连接到CPU的一般I/O脚,如图6所示。图6中还有另外一I/O脚接时钟检测电路的清零控制脚,用于CPU控制时钟检测电路的清零和启动。
上述电路在工作时,脉冲信号在一个待检时钟的周期内产生两个脉冲,计数器的计数值在14到18之间时,待检时钟是正常的;大于或小于14或18时,即为时钟丢失或产生毛刺。在实际应用中,可根据要求精度进行调整这两个值,从而可以非常灵活地使用该方法。
上述方法和实现电路已在几块设计单板中使用,如在目前广泛使用的Motorola的MPC860 CPU内部的多通道通信控制器(QMC)中的使用,应用该方法后,一旦时钟出现毛刺或丢失,该电路即可通知CPU进行处理,不至于多通道通信控制器在错误状态下不停地运行,效果良好。与常规的使用专门芯片(如单稳电路)来检测时钟相比,该方法和电路不仅省略了芯片,而且实现了芯片所不能实现的功能和性能。所以,在广泛的嵌入式微处理器系统的应用中,如果存在时钟检测问题,只要使用该通用性强、高精度的方法和电路,即可非常简捷、有效的解决问题。