发明内容
本发明的目的是克服了上述现有技术的缺点,提供一种电路可靠性高、性能稳定,能实现对IO端口同时引入高电平毛刺和低电平毛刺的应用场合的毛刺消除的双沿防抖电路结构。
为了实现上述目的,本发明的双沿防抖电路结构具有如下构成:
该双沿防抖电路结构,其主要特点是,所述的电路结构包括:
边沿检测及信号同步模块,用于对输入的带有毛刺的输入信号进行同步,并检测所述的输入信号上的毛刺信号的边沿极性,对所述的输入信号中毛刺信号进行初步滤除,并将初步滤除所述的毛刺信号的输入信号进行锁存;
防抖及数据锁存模块,与所述的边沿检测及信号同步模块相连接,对经过所述的边沿检测及信号同步模块处理过的输入信号进行进一步毛刺信号滤除,以进一步滤除毛刺信号的输入信号为依据生成最终的输出信号,并对所述的输出信号进行锁存及输出。
较佳地,所述的边沿检测及信号同步模块包括:
第一级同步单元,接收所述的带有毛刺的输入信号以及防抖时钟信号和防抖复位信号,该第一级同步单元利用所述的防抖时钟信号及防抖复位信号对所述的带有毛刺的输入信号进行第一次同步,输出第一级同步信号,及对第一级同步信号进行取反后得到的第一级同步取反信号;
边沿检测及反馈单元,与所述的第一级同步单元相连接,接收所述的第一级同步信号及第一级同步取反信号;该边沿检测及反馈单元对所述的第一级同步信号进行边沿极性检测并筛选,并输出筛选后的同步信号;
第二级同步单元,与所述的边沿检测及反馈单元相连接,接收所述的筛选后的同步信号;该第二级同步单元对所述的筛选后的同步信号进行第二次同步,该第二级同步单元的输出端输出二级同步信号,且该二级同步信号锁存于该第二级同步单元中。
更佳地,所述的第一级同步单元由第一D触发器构成;
该第一D触发器的时钟端接收所述的防抖时钟信号,该第一D触发器的复位端接收所述的防抖复位信号,该第一D触发器的输入端接收所述的带有毛刺的输入信号,该第一D触发器的Q端输出所述的第一级同步信号,该第一D触发器的端输出所述的第一级同步取反信号。
进一步地,所述的边沿检测及反馈单元由二输入同或门、第二D触发器以及二通道多路复用器构成;
所述的二输入同或门的两个输入端分别用于接收所述的带有毛刺的输入信号及第一级同步信号;
所述的第二D触发器的置位端与所述的二输入同或门的输出端相连接,该第二D触发器的时钟端接收所述的防抖时钟信号,该第二D触发器的输入端接低电平,该第二D触发器的Q端输出第一控制信号;
所述的二通道多路复用器的第一输入端及第二输入端分别接收所述的第一级同步信号及第一级同步取反信号;该二通道多路复用器的控制端与所述的第二D触发器的Q端相连接,用于接收所述的第一控制信号;该二通道多路复用器的输出端用于输出所述的筛选后的同步信号。
更进一步地,所述的第二级同步单元由第三D触发器构成;
该第三D触发器的时钟端接收所述的防抖时钟信号,该第三D触发器的复位端接收所述的防抖复位信号,该第三D触发器的输入端接收所述的筛选后的同步信号,该第三D触发器的Q端输出所述的二级同步信号,且该二级同步信号锁存于所述的第三D触发器内。
更佳地,所述的防抖及数据锁存模块包括:
组合逻辑组单元,用于接收所述的带有毛刺的输入信号、第一级同步信号、筛选后的同步信号以及二级同步信号,并对接收到的所述的带有毛刺的输入信号、第一级同步信号、筛选后的同步信号以及二级同步信号进行逻辑判断,用于进行进一步毛刺信号滤除,该组合逻辑组单元的输出端输出进一步滤除毛刺的滤波信号;
延时单元,与所述的组合逻辑组单元相连接,用于接收所述的滤波信号,该延时单元用于对所述的滤波信号进行延迟处理,生成延迟滤波信号,该延迟滤波信号通过该延时单元的输出端进行输出;
跨时钟域同步单元,用于消除异步时钟域间的亚稳态问题,该跨时钟域同步单元的接收端用于接收启动使能信号,该跨时钟域同步单元的输出端输出时钟门控信号;
时钟产生单元,分别与所述的组合逻辑组单元的输出端、延时单元的输出端以及跨时钟域同步单元的输出端相连接;该时钟产生单元以输入的所述的滤波信号、延迟滤波信号以及时钟门控信号为依据生成时钟信号,该时钟信号由所述的时钟产生单元的输出端输出;
数据锁存单元,分别与所述的时钟产生单元的输出端及所述的第二级同步单元的输出端相连接;该数据锁存单元对输入的时钟信号及二级同步信号进行处理,生产完全滤除双沿毛刺的输出信号,并将该输出信号进行锁存及输出。
进一步地,所述的组合逻辑组单元由四输入与门、四输入或非门以及二输入或门构成;
所述的四输入与门的四个输入端分别接收所述的带有毛刺的输入信号、第一级同步信号、筛选后的同步信号以及二级同步信号;
所述的四输入或非门的四个输入端分别接收所述的带有毛刺的输入信号、第一级同步信号、筛选后的同步信号以及二级同步信号;
所述的二输入或门的两个输入端分别与所述的四输入与门的输出端及四输入或非门的输出端相连接,该二输入或门的输出端构成所述的组合逻辑组单元的输出端,该二输入或门的输出端用于输出所述的滤波信号。
进一步地,所述的跨时钟域同步单元由一D触发器组构成,该D触发器组的输入端构成所述的跨时钟域同步单元的接收端,由该D触发器组的输入端接收所述的启动使能信号,该D触发器组还接入所述的防抖时钟信号及防抖复位信号,由该D触发器组的输出端构成所述的跨时钟域同步单元的输出端,该D触发器组以所述的启动使能信号、防抖时钟信号及防抖复位信号为依据,由该D触发器组的输出端输出所述的时钟门控信号。
更进一步地,所述的D触发器组由第五D触发器、第六D触发器及第七D触发器构成;
所述的第五D触发器、第六D触发器及第七D触发器的时钟端均接入所述的防抖时钟信号;
所述的第五D触发器、第六D触发器及第七D触发器的复位端均接入所述的防抖复位信号;
所述的第五D触发器的Q端与所述的第六D触发器的输入端相连接;所述的第六D触发器的Q端与所述的第七D触发器的输入端相连接;
所述的第五D触发器的输入端构成所述的D触发器组的输入端,该第五D触发器的输入端接入所述的启动使能信号;
所述的第七D触发器的Q端构成所述的D触发器组的输出端,用于输出所述的时钟门控信号。
进一步地,所述的时钟产生单元由三输入与门构成,该三输入与门的三个输入端分别与所述的组合逻辑组单元的输出端、延时单元的输出端及跨时钟域同步单元的输出端相连接,该三输入与门的输出端与所述的数据锁存单元相连接。
进一步地,所述的数据锁存单元由第四D触发器构成,该第四D触发器的输入端与所述的第二级同步单元的输出端相连接,该第四D触发器的时钟端与所述的时钟产生单元的输出端相连接,该第四D触发器的复位端接收所述的防抖复位信号,该第四D触发器的Q端输出输出信号,且所述的输出信号锁存于该第四D触发器中。
更佳地,所述的防抖及数据锁存模块包括:
组合逻辑组单元,用于接收所述的带有毛刺的输入信号、第一级同步信号、筛选后的同步信号以及二级同步信号,并对接收到的所述的带有毛刺的输入信号、第一级同步信号、筛选后的同步信号以及二级同步信号进行逻辑判断,用于进行进一步毛刺信号滤除,该组合逻辑组单元的输出端输出进一步滤除毛刺的滤波信号;
延时单元,与所述的组合逻辑组单元相连接,用于接收所述的滤波信号,该延时单元用于对所述的滤波信号进行延迟处理,生成延迟滤波信号,该延迟滤波信号通过该延时单元的输出端进行输出;
第二延时单元,其接收端用于接收启动使能信号;
锁存时钟生成单元,分别与所述的组合逻辑组单元的输出端、延时单元的输出端以及第二延时单元的输出端相连接;
反相器单元,其输入端与所述的锁存时钟生成单元的输出端相连接;
锁存器组单元,分别与所述的锁存时钟生成单元的输出端、反相器单元的输出端以及第二级同步单元的输出端相连接;该锁存器组单元对所述的锁存时钟生成单元、反相器单元及第二级同步单元输出的信号进行处理,生产完全滤除双沿毛刺的输出信号,并将该输出信号进行锁存及输出。
进一步地,所述的锁存时钟生成单元由第二三输入与门构成,该第二三输入与门的三个输入端分别与所述的组合逻辑组单元的输出端、延时单元的输出端以及第二延时单元的输出端相连接;该第二三输入与门的输出端构成所述的锁存时钟生成单元的输出端。
更进一步地,所述的反相器单元由非门构成;该非门的输入端构成所述的反相器单元的输入端,该非门的输入端与所述的锁存时钟生成单元的输出端相连接;该非门的输出端构成所述的反相器单元的输出端。
更进一步地,所述的锁存器组单元由第一锁存器和第二锁存器级联构成;
所述的第一锁存器和第二锁存器的复位端分别接收所述的防抖复位信号;
所述的第一锁存器的D输入端与所述的第二级同步单元的输出端相连接;所述的第一锁存器的CK输入端与所述的反相器单元的输出端相连接;
所述的第二锁存器的D输入端的与所述的第一锁存器的Q输出端相连接;所述的第二锁存器的CK输入端与所述的锁存时钟生成单元的输出端相连接;
所述的第二锁存器的Q输出端构成所述的锁存器组单元的输出端,用于输出所述的输出信号。
该双沿防抖电路结构,由边沿检测及信号同步模块及防抖及数据锁存模块构成,通过这两个模块对输入IO端口的带有毛刺的输入信号进行同步,并对输入信号上的毛刺信号的边沿极性进行检查,再通过多次输入信号毛刺滤除,确保输出的信号无毛刺,可有效消除输入信号上的高电平毛刺和低电平毛刺,提高防抖电路针对数字电路进行毛刺的消除的准确性和可靠度,同时减少了软件开销。
具体实施方式
为了能够更清楚地描述本发明的技术内容,下面结合具体实施例来进行进一步的描述。
本发明公开的一种双沿防抖电路结构,其中,所述的电路结构无需依赖软件就能很好的消除输入波形上的高电平毛刺及低电平毛刺,性能稳定,可靠性高。
参阅图1所示,图1为本发明的一实施例中的双沿防抖电路结构的边沿检测及信号同步模块及防抖及数据锁存模块的连接关系示意图,从图中可以看出本发明的双沿防抖电路结构包括:
边沿检测及信号同步模块,用于对输入的带有毛刺的输入信号进行同步,并检测所述的输入信号的上的毛刺信号的边沿极性,对所述的输入信号中毛刺信号进行初步滤除,并将初步滤除所述的毛刺信号的输入信号进行锁存;
防抖及数据锁存模块,与所述的边沿检测及信号同步模块相连接,对经过所述的边沿检测及信号同步模块处理过的输入信号进行进一步毛刺信号滤除,以进一步滤除毛刺信号的输入信号为依据生成最终的输出信号,并对所述的输出信号进行锁存及输出。
其中,边沿检测及信号同步模块输入了带有毛刺的输入信号datain、防抖时钟信号dbc_clk及防抖复位信号dbc_rstn,所述的防抖及数据锁存模块除了与所述的边沿检测及信号同步模块的输出端相连接外还接收防抖时钟信号dbc_clk、防抖复位信号dbc_rstn以及启动使能信号io_db_en,该防抖及数据锁存模块以上述接收到的信号为依据,最终输出输出信号dataout。
如图2所示,图2为本发明的一实施例中的双沿防抖电路结构的具体模块连接关系示意图,从图2可以看出,在上述实施例的双沿防抖电路结构中,
所述的边沿检测及信号同步模块包括:
第一级同步单元,接收所述的带有毛刺的输入信号以及防抖时钟信号和防抖复位信号,该第一级同步单元利用所述的防抖时钟信号及防抖复位信号对所述的带有毛刺的输入信号进行第一次同步,输出第一级同步信号,及对第一级同步信号进行取反后得到的第一级同步取反信号;
边沿检测及反馈单元,与所述的第一级同步单元相连接,接收所述的第一级同步信号及第一级同步取反信号;该边沿检测及反馈单元对所述的第一级同步信号进行边沿极性检测并筛选,并输出筛选后的同步信号;
第二级同步单元,与所述的边沿检测及反馈单元相连接,接收所述的筛选后的同步信号;该第二级同步单元对所述的筛选后的同步信号进行第二次同步,该第二级同步单元的输出端输出二级同步信号,且该二级同步信号锁存于该第二级同步单元中;
而所述的防抖及数据锁存模块包括:
组合逻辑组单元,用于接收所述的带有毛刺的输入信号、第一级同步信号、筛选后的同步信号以及二级同步信号,并对接收到的所述的带有毛刺的输入信号、第一级同步信号、筛选后的同步信号以及二级同步信号进行逻辑判断,用于进行进一步毛刺信号滤除,该组合逻辑组单元的输出端输出进一步滤除毛刺的滤波信号;
延时单元,与所述的组合逻辑组单元相连接,用于接收所述的滤波信号,该延时单元用于对所述的滤波信号进行延迟处理,生成延迟滤波信号,该延迟滤波信号通过该延时单元的输出端进行输出;
跨时钟域同步单元,用于消除异步时钟域间的亚稳态问题,该跨时钟域同步单元的接收端用于接收启动使能信号,该跨时钟域同步单元的输出端输出时钟门控信号;
时钟产生单元,分别与所述的组合逻辑组单元的输出端、延时单元的输出端以及跨时钟域同步单元的输出端相连接;该时钟产生单元以输入的所述的滤波信号、延迟滤波信号以及时钟门控信号为依据生成时钟信号,该时钟信号由所述的时钟产生单元的输出端输出;
数据锁存单元,分别与所述的时钟产生单元的输出端及所述的第二级同步单元的输出端相连接;该数据锁存单元对输入的时钟信号及二级同步信号进行处理,生产完全滤除双沿毛刺的输出信号,并将该输出信号进行锁存及输出。
图2中,上半部分中标有序号1的虚线框中的单元为组成所述的边沿检测及信号同步模块的组成单元,而下半部分中标有序号1的虚线框中的单元为组成所述的防抖及数据锁存模块的组成单元,当然,边沿检测及信号同步模块及防抖及数据锁存模块的组成方式并不局限于本实施例中的这种组合方式,也可以通过其他的功能模块组成实现其功能。
在上述实施例中,边沿检测及信号同步模块基本工作原理为:首先在防抖时钟信号dbc_clk的上升沿采样带有毛刺的输入信号datain(本实施例中,以输入信号是带有双沿毛刺的IO端口输入信号进行说明,在实际应用中,也可以针对单边的毛刺信号进行毛刺滤除),经第一级同步单元后输出第一级同步信号datain1;接着,用边沿检测及反馈单元对输入信号进行边沿检测及筛选,如果IO端口输入的带有毛刺的输入信号datain与第一级同步信号datain1相同,则边沿检测及反馈单元选择第一级同步信号datain1输出;反之,若IO端口输入的带有毛刺的输入信号datain与第一级同步信号datain1不同,则边沿检测及反馈单元选择第一级同步信号datain1的取反信号第一级同步取反信号datain1_n输出,输出信号为筛选后的同步信号datain1_r(即筛选后的同步信号datain1_r为第一级同步信号datain1或第一级同步取反信号datain1_n)。随后,通过第二级同步单元对筛选后的同步信号datain1_r做二级同步,输出信号为二级同步信号datain2。这部分由边沿检测及信号同步模块来实现,该边沿检测及信号同步模块的作用有两个:
(1)输入同步:通过两级同步单元对采样的带有双沿毛刺的输入信号进行同步(在本实施例中以带有双沿毛刺的输入信号进行举例,在实际应用中可以针对带有单沿毛刺的输入信号进行处理);
(2)初步防抖:边沿检测及反馈单元用于判断当前输入信号上的毛刺的边沿极性,同时起到反馈回路的作用,实时监控每一个防抖时钟信号dbc_clk上升沿的输入信号,以初步滤除检测到的双沿毛刺信号(小于一个防抖时钟信号dbc_clk时钟周期的信号),同时锁存检测到的正常信号。
在上述实施例中,所述的防抖及数据锁存模块的工作原理如下:
通过组合逻辑组单元对前述四个时间节点的输入信号:带有毛刺的输入信号datain、第一级同步信号datain1、筛选后的同步信号datain1_r及二级同步信号datain2进行逻辑判断及进一步防抖,当且仅当四个时间节点的输入信号均相同时(即均为逻辑“1”或均为逻辑“0”)才认为带有毛刺的输入信号上的双沿毛刺信号已完全滤除,此时输出的滤波信号dout才能被允许传递到下一级电路(即输出端dout才能输出逻辑“1”);
IO端口防抖电路启动使能信号io_db_en是在电路的CPU时钟域通过寄存器配置载入,此处经过跨时钟域同步单元,以消除异步时钟域间的亚稳态问题,该跨时钟域同步单元用于输出时钟门控信号clk_gate。
前述组合逻辑组单元的输出信号滤波信号dout经延时单元同步后,在时钟门控信号clk_gate的控制下,通过时钟产生单元生成时钟信号dout_clk供给最后一级数据锁存单元使用。
数据锁存单元在时钟信号dout_clk的驱动下,把经两级同步的二级同步信号datain2锁存,作为最终的输出信号dataout,该输出信号dataout为一个已滤除了双沿毛刺的干净方波;至此,电路完成IO端口的双沿防抖操作。
综述所述,所述的防抖及数据锁存模块的作用也有两个:二级防抖作用和数据锁存作用。
在本发明中提到的毛刺信号是指小于一个防抖时钟信号dbc_clk的时钟周期的信号。
在上述实施例中,所述的边沿检测及信号同步模块可由图3中的电路结构组成,图3为本发明的一实施例中的双沿防抖电路结构中的边沿检测及信号同步模块的电路结构示意图,在上述实施例中,所述的第一级同步单元由第一D触发器构成;
该第一D触发器的时钟端接收所述的防抖时钟信号,该第一D触发器的复位端接收所述的防抖复位信号,该第一D触发器的输入端接收所述的带有毛刺的输入信号,该第一D触发器的Q端输出所述的第一级同步信号,该第一D触发器的端输出所述的第一级同步取反信号。
所述的边沿检测及反馈单元由二输入同或门、第二D触发器以及二通道多路复用器构成;
所述的二输入同或门的两个输入端分别用于接收所述的带有毛刺的输入信号及第一级同步信号;
所述的第二D触发器的置位端与所述的二输入同或门的输出端相连接,该第二D触发器的时钟端接收所述的防抖时钟信号,该第二D触发器的输入端接低电平,该第二D触发器的Q端输出第一控制信号;
所述的二通道多路复用器的第一输入端及第二输入端分别接收所述的第一级同步信号及第一级同步取反信号;该二通道多路复用器的控制端与所述的第二D触发器的Q端相连接,用于接收所述的第一控制信号;该二通道多路复用器的输出端用于输出所述的筛选后的同步信号。
所述的第二级同步单元由第三D触发器构成;
该第三D触发器的时钟端接收所述的防抖时钟信号,该第三D触发器的复位端接收所述的防抖复位信号,该第三D触发器的输入端接收所述的筛选后的同步信号,该第三D触发器的Q端输出所述的二级同步信号,且该二级同步信号锁存于所述的第三D触发器内。
在该实施例中,所述的边沿检测及信号同步模块由三个D触发器:第一D触发器101、第二D触发器103、第三D触发器105、二输入同或门102以及二通道多路复用器104组成,其中,三个D触发器均为上升沿触发的D触发器,该电路结构的工作原理如下:
第一D触发器101的时钟端连接防抖时钟,接收防抖时钟信号dbc_clk;复位端连接防抖复位信号dbc_rstn,带有毛刺的输入信号datain(在本实施例中以带双沿毛刺的输入数据为例进行说明)从该第一D触发器的输入端(D端)输入,从Q端和端输出,完成第一级同步,第一D触发器101的Q端输出第一级同步信号datain1,端输出第一级同步取反信号datain1_n。
第一D触发器101的Q端和端分别连接到二通道多路复用器(MUX)104的两个输入端;二输入同或门102的输入端的两个输入端分别接入带有毛刺的输入信号datain和第一级同步信号datain1,二输入同或门102的输出端连接到第二D触发器103的置位端。
第二D触发器103用于产生二通道多路复用器104的第一控制信号,该第一控制信号,由第二D触发器103的Q端输出,该第二D触发器103的输入端(D端)固定输入低电平(逻辑“0”)。
如果带有毛刺的输入信号datain和第一级同步信号datain1数据相同,二输入同或门102输出1,此时第二D触发器103置位端不使能,第二D触发器103在防抖时钟信号dbc_clk的上升沿把输入端(D端)低电平锁存到Q端,即输出0;
如果带有毛刺的输入信号datain和第一级同步信号datain1数据不同,二输入同或门102输出0,此时第二D触发器103的置位端异步置位,即其Q端输出1,其输出第一控制信号sel连接到二通道多路复用器104的控制端S0。
二通道多路复用器104在其控制端S0作用下工作,当控制端S0接收到的控制信号为0时,其输出端Z选择第一级同步信号datain1输出;当控制端S0接收到的控制信号为1时,其输出端Z选择第一级同步取反信号datain1_n输出,二通道多路复用器的输出端Z输出筛选后的同步信号datain1_r到第三D触发器105的输入端(D端)。
如此,该二通道多路复用器104起到反馈电路的作用,实时监控每一个防抖时钟信号dbc_clk时钟上升沿的输入数据,以初步滤除检测到的双沿毛刺信号(毛刺信号为小于一个防抖时钟信号dbc_clk时钟周期的信号),同时锁存检测到的正常信号。
第三D触发器105时钟端连接防抖时钟信号dbc_clk,第三D触发器的复位端连接防抖复位信号dbc_rstn,在防抖时钟信号dbc_clk的上升沿把其输入端(D端)数据(即经二通道多路复用器104筛选的同步数据)锁存到Q端输出,完成二级同步,其输出为筛选后的同步信号datain2。
至此,边沿检测及信号同步模块所实现的第一部分功能采样及同步完成,将带有毛刺的输入信号datain、第一级同步信号datain1、经二通道多路复用器104筛选的同步数据(筛选后的同步信号datain1_r)以及二级同步信号datain2这四个时间节点的数据共同输出给后级电路(即将这四个信号输送给防抖及数据锁存模块),这四个信号就是图3中的虚线框所框的四个信号。
上述实施例中,所述的防抖及数据锁存模块的电路结构可如图4所示,图4为本发明的一实施例中的双沿防抖电路结构中的防抖及数据锁存模块的电路结构示意图,从图中可以看出,所述的跨时钟域同步单元由一D触发器组构成,该D触发器组的输入端接一启动使能信号,该D触发器组还接入防抖时钟信号及防抖复位信号,该D触发器组根据所述的启动使能信号、防抖时钟信号及防抖复位信号为依据,由该触发器组的输出端输出时钟门控信号;
所述的时钟产生单元由三输入与门构成,该三输入与门的三个输入端分别与所述的组合逻辑组单元的输出端、延时单元的输出端及跨时钟域同步单元的输出端相连接,该三输入与门的输出端与所述的数据锁存单元相连接;
所述的数据锁存单元由第四D触发器构成,该第四D触发器的输入端与所述的第二级同步单元的输出端相连接,该第四D触发器的时钟端与所述的时钟产生单元的输出端相连接,该第四D触发器的复位端接收所述的防抖复位信号,该第四D触发器的Q端输出输出信号,且所述的输出信号锁存于该第四D触发器中。
在该实施例中,所述的防抖及数据锁存模块由组合逻辑组单元201、延时单元202、D触发器组203构成的跨时钟域同步单元(D触发器组中的D触发器为上升沿触发的D触发器)、三输入与门204以及第四D触发器205构成,其工作原理如下:
组合逻辑单元组201的四个输入端分别接入带有毛刺的输入信号datain、第一级同步信号datain1、二通道多路复用器104输出的筛选后的同步信号datain1_r以及二级同步信号datain2这四个时间节点的数据,当且仅当这四个时间节点的输入数据均相同时(即均为逻辑“1”或均为逻辑“0”)才认为带有毛刺的输入信号上的双沿毛刺信号已完全滤除,此时信号才能被允许传递到下一级电路,即组合逻辑组单元的输出端输出的滤波信号dout才能输出逻辑“1”以开启后级三输入与门的204;反之,这四个信号中的任意一个或多个时间节点的数据与其余的不同,则认为带有毛刺的输入信号上的毛刺信号并未滤除干净,经过组合逻辑组单元的逻辑判断后,会控制输出端输出的滤波信号dout输出逻辑“0”以关闭后级三输入与门204,从而实现对毛刺信号的屏蔽,确保带有毛刺的输入信号不会传递给后级电路。
组合逻辑组单元201的输出滤波信号dout连接到延时单元202的输入端,通过延时单元同步,滤除可能存在的组合逻辑毛刺,延时短语输出端输出延迟滤波信号dout_dly,该延迟滤波信号dout_dly连接到三输入与门204的输入端。
在该实施例中,所述的组合逻辑组单元由四输入与门AND4、四输入或非门NOR4以及二输入或门OR2构成(在其他实施例中,所述的组合逻辑组单元也可由其他逻辑模块构成);其组成结构如图5所示,图5为本发明的一实施例中的双沿防抖电路结构中的组合逻辑组单元的电路结构示意图;
所述的四输入与门AND4的四个输入端分别接收所述的带有毛刺的输入信号、第一级同步信号、筛选后的同步信号以及二级同步信号;
所述的四输入或非门NOR4的四个输入端分别接收所述的带有毛刺的输入信号、第一级同步信号、筛选后的同步信号以及二级同步信号;
所述的二输入或门OR2的两个输入端分别与所述的四输入与门AND4的输出端及四输入或非门NOR4的输出端相连接,该二输入或门OR2的输出端构成所述的组合逻辑组单元的输出端,该二输入或门OR2的输出端用于输出所述的滤波信号。
D触发器组203由多个上升沿触发的D触发器级联而成,其时钟端连接防抖时钟信号dbc_clk,复位端连接防抖复位信号dbc_rstn;该D触发器组的输入端构成所述的跨时钟域同步单元的接收端,该D触发器组的输入端连接启动使能信号io_db_en,该信号为IO端口消毛刺电路启动使能信号,高电平有效,由于该信号是在电路的CPU时钟域通过寄存器配置载入,故此处通过D触发器组203实现信号的跨时钟域同步,以消除异步时钟域间信号相互采样引起的亚稳态问题,由该D触发器组的输出端构成所述的跨时钟域同步单元的输出端,其输出为时钟门控信号clk_gate。
在该实施例中,所述的D触发器组由第五D触发器DFF5、第六D触发器DFF6及第七D触发器DFF7构成;其结构如图6所示,图6为本发明的一实施例中的双沿防抖电路结构中的D触发器组的电路结构示意图。
所述的第五D触发器DFF5、第六D触发器DFF6及第七D触发器DFF7的时钟端均接入所述的防抖时钟信号;
所述的第五D触发器DFF5、第六D触发器DFF6及第七D触发器DFF7的复位端均接入所述的防抖复位信号;
所述的第五D触发器DFF5的Q端与所述的第六D触发器DFF6的输入端相连接;所述的第六D触发器DFF6的Q端与所述的第七D触发器DFF7的输入端相连接;
所述的第五D触发器DFF5的输入端构成所述的D触发器组的输入端,该第五D触发器DFF5的输入端接入所述的启动使能信号;
所述的第七D触发器DFF7的Q端构成所述的D触发器组的输出端,用于输出所述的时钟门控信号。
三输入与门204的三个输入端分别连接组合逻辑单元组201的输出端输出的滤波信号dout、延时单元202的输出的延迟滤波信号dout_dly及D触发器组203的输出的时钟门控信号clk_gate,滤波信号dout在时钟门控信号clk_gate的控制下,从三输入与门204的输出端生成时钟信号dout_clk,连接到第四D触发器205的时钟端。
第四D触发器205在异步时钟信号dout_clk的驱动下,把经两级触发器同步的输入信号二级同步信号datain2锁存,作为最终的输出信号dataout,该输出信号dataout为一个已完全滤除了双沿毛刺的干净方波,至此,双沿防抖电路结构完成IO端口的双沿防抖操作。
若采用现有技术中的上升沿防抖电路对上述的带有双沿毛刺的输入信号进行防抖操作,其滤波效果如图7所示,图7为现有技术中的上升沿防抖电路的工作时序图,虽然上升沿防抖电路能够滤除高电平的毛刺,但对于低电平的毛刺却无法很好的进行滤除,图7中第1行为防抖时钟信号的波形图,第2行为带有毛刺的输入信号的波形图,第3行为输出信号的波形图。
若采用现有技术中的下降沿防抖电路对上述的带有双沿毛刺的输入信号进行防抖操作,其滤波效果如图8所示,图8为现有技术中的下降沿防抖电路的工作时序图,虽然下降沿防抖电路能够滤除低电平的毛刺,但对于高电平的毛刺却无法很好的进行滤除,图8中第1行为防抖时钟信号的波形图,第2行为带有毛刺的输入信号的波形图,第3行为输出信号的波形图。
而采用本发明的双沿防抖电路结构对上述的带有双沿毛刺的输入信号进行防抖操作,其滤波效果如图9所示,图9为本发明的一实施例中的双沿防抖电路结构的工作时序图,从图中可以看出本发明的双沿防抖电路结构能够很好的消除带有双沿毛刺的输入信号上的高电平的毛刺以及低电平的毛刺,输出干净的方波,图9中第1行为防抖时钟信号的波形图,第2行为带有毛刺的输入信号的波形图,第3行为输出信号的波形图。
通过对图7至9的对比,可明显看出,传统的单沿防抖电路只能滤除单一边沿的毛刺,对于双沿毛刺防抖问题无法解决;而本发明所述双沿防抖电路结构能完全滤除同时存在的双沿毛刺,滤除效果上佳。
图10为运用Cadence Hspice模拟电路仿真工具对本发明的一实施例中的双沿防抖电路结构进行仿真得到的电路仿真波形示意图,由仿真结果可知,本发明的双沿防抖电路结构能完全滤除IO端口上输入波形上的双沿毛刺,其实现效果与图9保持一致,图10中第1行为防抖时钟信号的波形图,第2行为带有毛刺的输入信号的波形图,第3行为输出信号的波形图。
除了上述实施例中提到的这种电路组成方式外,本发明的双沿防抖电路结构还可以由如图11、12所示的电路结构构成,其中,图11为本发明的另一实施例中的双沿防抖电路结构的具体模块连接关系示意图,其中绘有编号1的虚线框中包含边沿检测及信号同步模块的组成单元,其中绘有编号2的虚线框中包含防抖及数据锁存模块的组成单元;图12为本发明的另一实施例中的双沿防抖电路结构中的防抖及数据锁存模块的电路结构示意图,其中虚线框中的信号由上级电路模块提供;在该双沿防抖电路结构中所述的防抖及数据锁存模块还可以由以下电路结构构成:
所述的防抖及数据锁存模块包括:
组合逻辑组单元,用于接收所述的带有毛刺的输入信号、第一级同步信号、筛选后的同步信号以及二级同步信号,并对接收到的所述的带有毛刺的输入信号、第一级同步信号、筛选后的同步信号以及二级同步信号进行逻辑判断,用于进行进一步毛刺信号滤除,该组合逻辑组单元的输出端输出进一步滤除毛刺的滤波信号;
延时单元,与所述的组合逻辑组单元相连接,用于接收所述的滤波信号,该延时单元用于对所述的滤波信号进行延迟处理,生成延迟滤波信号,该延迟滤波信号通过该延时单元的输出端进行输出;
第二延时单元,其接收端用于接收启动使能信号,该第二延时单元起到延时的作用;
锁存时钟生成单元,分别与所述的组合逻辑组单元的输出端、延时单元的输出端以及第二延时单元的输出端相连接;
反相器单元,其输入端与所述的锁存时钟生成单元的输出端相连接;
锁存器组单元,分别与所述的锁存时钟生成单元的输出端、反相器单元的输出端以及第二级同步单元的输出端相连接;该锁存器组单元对所述的锁存时钟生成单元、反相器单元及第二级同步单元输出的信号进行处理,生产完全滤除双沿毛刺的输出信号,并将该输出信号进行锁存及输出。
所述的锁存时钟生成单元由第二三输入与门构成,该第二三输入与门的三个输入端分别与所述的组合逻辑组单元的输出端、延时单元的输出端以及第二延时单元的输出端相连接;该第二三输入与门的输出端构成所述的锁存时钟生成单元的输出端。
所述的反相器单元由非门构成;该非门的输入端构成所述的反相器单元的输入端,该非门的输入端与所述的锁存时钟生成单元的输出端相连接;该非门的输出端构成所述的反相器单元的输出端。
所述的锁存器组单元由第一锁存器LATCH1和第二锁存器LATCH2级联构成;
所述的第一锁存器LATCH1和第二锁存器LATCH2的复位端分别接收所述的防抖复位信号;
所述的第一锁存器LATCH1的D输入端与所述的第二级同步单元的输出端相连接;所述的第一锁存器LATCH1的CK输入端与所述的反相器单元的输出端相连接;
所述的第二锁存器LATCH2的D输入端的与所述的第一锁存器LATCH1的Q输出端相连接;所述的第二锁存器LATCH2的CK输入端与所述的锁存时钟生成单元的输出端相连接;
所述的第二锁存器LATCH2的Q输出端构成所述的锁存器组单元的输出端,用于输出所述的输出信号。
在该实施例中,通过将上述实施例中的跨时钟同步单元改为第二延时单元,改变了时钟门控信号clk_gate的信号同步方式;同时,将最后一级数据存储方式做了一些改变,将数据锁存单元改为锁存器组单元由触发器存储改为锁存器存储,具体为“时钟产生单元”改成“锁存时钟生成单元”,同时增加“反相器单元”,“数据锁存单元”改成“锁存器组单元”,根据功能模块的改动,相应的,将上述实施例中的“D触发器组”替换为“第二延时单元”,同时将“第四D触发器”替换为了“第一锁存器LATCH1”和“第二锁存器LATCH2”,同时增加了反相器单元,锁存器LATCH1、2的时钟输入端为反相的(第一锁存器LATCH1的CK端接锁存时钟生成单元输出的信号dout_clk的反相时钟信号,第二锁存器LATCH 2的CK端接锁存时钟生成单元输出的信号dout_clk的时钟信号)。
通过该种电路结构同样能够实现上述实施例中所要达到的双沿防抖的技术效果。
上述实施例中的双沿防抖电路结构与该领域已知技术相比,本发明的双沿防抖电路结构能针对IO端口会引入同时具备高电平毛刺和低电平毛刺的输入信号的应用场合,实现IO端口的双沿防抖以取代原有的单沿防抖技术,提高了IO端口消毛刺电路的准确性和可靠性,同时减少了软件开销,与现有技术相比,本发明实现了IO端口的双沿防抖技术以取代原有的单沿防抖技术,提高了消毛刺电路的准确性和可靠性。
采用该双沿防抖电路结构,该电路结构由边沿检测及信号同步模块及防抖及数据锁存模块构成,通过这两个模块对输入IO端口的带有毛刺的输入信号进行同步,并对输入信号上的毛刺信号的边沿极性进行检查,再通过多次输入信号毛刺滤除,确保输出的信号无毛刺,可有效消除输入信号上的高电平毛刺和低电平毛刺,提高防抖电路针对数字电路进行毛刺的消除的准确性和可靠度,同时减少了软件开销。
在此说明书中,本发明已参照其特定的实施例作了描述。但是,很显然仍可以作出各种修改和变换而不背离本发明的精神和范围。因此,说明书和附图应被认为是说明性的而非限制性的。