本实用新型涉及集成电路领域,特别是涉及超大规模集成电路(VLSI)领域的设计系统。
背景技术:
随着时间的推移,集成电路行业发展到2016年,已有类似如Intel这样先进的foundry,提出准备迈入10nm制程的规划。高集成度的推行,也使芯片规模越来越大,功能越来越复杂,设计难度越来越高。
SOC的内部时钟的复杂化,导致跨时钟域的接口越来越多。针对这些异步信号的处理,国外的先驱们,提出来很多建设性意见,为我们国内从业者们指明了道路。一般来讲可分为两大类:利用锁存器加组合器件来处理;另一种就是采取FIFO作为接口缓存。
上述两种处理系统的指导设计一般用到器件较多,一定程度上讲是资源浪费,并且如果输入脉冲高电平宽度低于最快时钟周期的话,一般无法适用。因此,我们要想很好的解决这个问题,我们要处理好四个方面:一是如何简化电路;二是如何适应最小输入脉宽的问题;三是解决好亚稳态问题;四是要提高设计可靠性。
技术实现要素:
本实用新型的目的是针对SOC异步时钟域信号接口问题,针对以上四个方面提出一种简洁的、可靠性高的系统,能解决好亚稳态的问题,并且没有输入脉宽限制。
本实用新型的技术方案包括:
时钟域1、时钟域2和复位电路;支持两个时钟域是完全异步的关系,没有相位关系需求,也没有频率需求。
所述的时钟域1内包含:第一数据锁存器。第一数据锁存器带有异步复位端R和同步时钟端CK,低电平产生复位,时钟上升沿锁存数据输入端D的状态。第一数据锁存器的时钟端CK连接时钟域1内的输入数据脉冲信号;第一数据锁存器的数据端D连接SOC常态高电平数据“1”;第一数据锁存器的异步复位端R连接所述复位电路的输出端;
所述的时钟域2内包含:第二数据锁存器、第三数据锁存器。这两个数据锁存器同样带有异步复位端R和同步时钟端CK,低电平产生复位,时钟上升沿开始锁存数据输入端D的状态。第二数据锁存器的时钟端CK连接时钟域2内的时钟信号;第二数据锁存器的数据端D连接第一数据锁存器的数据输出端Q;第二数据锁存器的异步复位端R连接所述复位电路的输出端;第三数据锁存器的时钟端CK连接时钟域2内的时钟信号;第三数据锁存器的数据端D连接第二数据锁存器的数据输出端Q;第三数据锁存器的异步复位端R连接系统复位信号;
所述复位电路包含一个与门。此与门的两个输入端分别连接系统复位信号和第三数据锁存器的反相数据输出端/Q。
采用上述结构后,本实用新型的有益效果是:
结构简单,一共只用到了4个器件,三个锁存器和一个门单元。
时钟域1中输入脉冲信号连接第一数据锁存器的时钟端CK,此锁存器的数据端D连接SOC常态高电平数据“1”,这样最大限度的保障了不漏信号;同时,时钟域1的输入脉冲信号宽度可以低于时钟域1的时钟单周期宽,从而彻底解决了一般设计中脉冲宽度受限于时钟域1的时钟频率的问题;时钟域2中第三数据锁存器的反相数据输出端/Q,反馈到复位电路,这样做的好处是:使第三数据锁存器的数据输出端Q,输出脉冲信号宽度为时钟域2的时钟单周期宽,即脉冲宽度为单拍宽,从而避免了误触发。总的来讲提高了采集的稳定性和适应性。
时钟域1的输入脉冲信号宽度可以低于系统最快时钟单周期宽,进一步提高了采集的稳定性和适应性。
时钟域2的同步电路,采用两级锁存器进行同步,第三锁存器的输出信号才用到系统中间,第二锁存器仅用于传递;时钟域2中电路经过两级同步很好的解决了亚稳态问题。
附图说明
图1绘示为SOC异步时钟域信号的接口电路图。
图2绘示为图1中clock1快于clock2,各种脉冲宽度的时序波形。
图3绘示为图1中clock2快于clock1,各种脉冲宽度的时序波形。
图4绘示为图1中clock1等于clock2,各种脉冲宽度的时序波形。
具体实施方式
下面结合附图和具体实施方式对本实用新型作进一步详细的说明。
1、电路连接、器件功能、信号命名阐述:
如图1所示,电路用到了4个器件,三个锁存器和一个门单元。
分别为:第一锁存器DFF1,第二锁存器DFF2,第三锁存器DFF3,与门单元AND。锁存器的类型为:带异步复位端的同步触发器。异步复位端定义为R,同步时钟端定义为CK,数据输入端命名为D,数据输出端命名为Q,反相数据输出端命名为/Q。其中输入端包括:D、R、CK;输出端包括:Q、/Q。功能描述如下:异步复位端R,输入低电平“0”时(其他输入端可以是任意值),Q端输出低,/Q输出高,此为异步复位状态;异步复位端R,输入高电平“1”时,在CK的上升沿,Q端输出更新为D端的值,此为锁存瞬间;异步复位端R,输入高电平“1”时,在CK的非上升沿,Q端处于保持状态,即维持最后CK的上升沿的锁存值。clock1、clock2分别为两个时钟域的时钟信号。System_reset_n表示常规的系统复位信号,低电平“0”复位。
如图1所示,所述的DFF1的D端直连一个上拉电阻,CK接脉冲输入,R端来自AND的输出。其中D端的上拉电阻实现了常态高电平“1”的输入,这种连接系统在一般的SOC中都是很常见的处理。所述的DFF2的D端接DFF1的Q端,CK接clock2,R端来自AND的输出。所述的DFF3的D端接DFF2的Q端,CK接clock2,R端来自System_reset_n。AND的输入端分别连System_reset_n、DFF3的反相数据输出/Q。DFF3反相数据/Q起到反馈作用,从而,系统复位、反馈信号复位发生时,都能产生nRST信号,来复位DFF1、DFF2。
2、时序功能仿真分析:
请见附图2、3、4,分别分析了各种时钟关系的电路工作状态。
如图2所示,表示clock1快于clock2的情况。图中Data_in1表示第一个输入脉冲,此脉冲由Data_in输入,脉冲宽度小于clock1的四分之一,同时,脉冲宽度小于系统最快时钟(clock1最快)的四分之一。Data_in1的上升沿到来的瞬间,Q1输出高电平“1”;Data_in1的上升沿之后:第一个clock2的上升沿到来瞬间,Q2输出高电平“1”;第二个clock2的上升沿到来瞬间,Data_out输出高电平“1”,与此同时,nRST生成复位信号,复位DFF1、DFF2,使Q1、Q2输出低;第三个clock2的上升沿到来瞬间,由于Q1、Q2早已变成低电平“0”,此时,“0”传递到Data_out。形成了一个clock2的周期宽度的脉冲Data_out1。
Data_in2表示输入脉冲宽度变宽到等于系统快时钟clock1的情况,同理分析发现:Data_in2形成了Data_out2;Data_in3表示输入脉冲宽度变宽到大于系统快时钟clock1、小于系统慢时钟clock2的情况,同理分析发现:Data_in3形成了Data_out3;Data_in4表示输入脉冲宽度变宽到大于系统慢时钟clock2的情况,同理分析发现:Data_in4形成了Data_out4;Data_in5表示输入脉冲宽度变宽到大于系统慢时钟clock2两倍以上的情况,同理分析发现:Data_in5形成了Data_out5。
如图3所示,表示clock2快于clock1的情况。图中Data_in1表示第一个输入脉冲,此脉冲由Data_in输入,脉冲宽度小于clock1的四分之一,同时,脉冲宽度小于系统最快时钟(clock2最快)的四分之一。Data_in1的上升沿到来的瞬间,Q1输出高电平“1”;Data_in1的上升沿之后:第一个clock2的上升沿到来瞬间,Q2输出高电平“1”;第二个clock2的上升沿到来瞬间,Data_out输出高电平“1”,与此同时,nRST生成复位信号,复位DFF1、DFF2,使Q1、Q2输出低;第三个clock2的上升沿到来瞬间,由于Q1、Q2早已变成低电平“0”,此时,“0”传递到Data_out。形成了一个clock2的周期宽度的脉冲Data_out1。
Data_in2表示输入脉冲宽度变宽到等于系统快时钟clock2的情况,同理分析发现:Data_in2形成了Data_out2;Data_in3表示输入脉冲宽度变宽到大于系统快时钟clock2、小于系统慢时钟clock1的情况,同理分析发现:Data_in3形成了Data_out3;Data_in4表示输入脉冲宽度变宽到大于系统慢时钟clock1的情况,同理分析发现:Data_in4形成了Data_out4;Data_in5表示输入脉冲宽度变宽到大于系统慢时钟clock1两倍以上的情况,同理分析发现:Data_in5形成了Data_out5。
如图4所示,表示clock2等于clock1的情况。图中Data_in1表示第一个输入脉冲,此脉冲由Data_in输入,脉冲宽度小于clock1的四分之一,同时,脉冲宽度小于系统最快时钟(clock2等于clock1)的四分之一。Data_in1的上升沿到来的瞬间,Q1输出高电平“1”;Data_in1的上升沿之后:第一个clock2的上升沿到来瞬间,Q2输出高电平“1”;第二个clock2的上升沿到来瞬间,Data_out输出高电平“1”,与此同时,nRST生成复位信号,复位DFF1、DFF2,使Q1、Q2输出低电平“0”;第三个clock2的上升沿到来瞬间,由于Q1、Q2早已变成低电平“0”,此时,“0”传递到Data_out。形成了一个clock2的周期宽度的脉冲Data_out1。Data_in2表示输入脉冲宽度变宽到等于系统时钟的情况,同理分析发现:Data_in2形成了Data_out2;Data_in3表示输入脉冲变宽到大于系统时钟两倍的情况,同理分析发现:Data_in3形成了Data_out3;Data_in4表示输入脉冲宽度变宽到大于系统时钟三倍的情况,同理分析发现:Data_in4形成了Data_out4;Data_in5表示输入脉冲宽度变宽到大于系统时钟五倍以上的情况,同理分析发现:Data_in5形成了Data_out5。
到此,我们分析了数据、时钟之间各种相对时序关系,总结得到:图1中的系统可以完美实现异步时钟域的接口。