一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种跨时钟域的寄存器读写电路及方法与流程

2021-04-27 14:00:00 来源:中国专利 TAG:寄存器 读写 时钟 电路 方法


1.本发明涉及寄存器读写技术领域,具体而言,涉及一种跨时钟域的寄存器读写电路及方法。


背景技术:

2.在高性能、低功耗的大规模集成电路的设计中,跨时钟域、跨电压域的设计不可避免。当同步信号进入异步时钟域时,如果不作任何处理,那么来自异步时钟域的信号在某时刻可能会无法满足建立时间而产生亚稳态,导致数据错误,使得电路逻辑功能失效。现有的异步时钟域的信号处理方式通常有以下几种方式:
3.1、使用两级触发器进行同步,消除亚稳态。该方式电路结构简单,一般只用于单比特的信号传输。而且通常适用于高频的时钟采集低频时钟的信号,当低频时钟需要采集来自高频时钟的信号时,需要对高频的信号进行拓展超过低频的时钟周期,然后由低频时钟进行同步。
4.2、对于多比特数据传输,通常使用异步的先入先出(fifo)存储器,其本质是双端的随机存取存储器(ram),由一个时钟域写入,另一个时钟域读取,依靠空/满信号控制数据的读写,通常在两时钟域相差不大且数据传输不连续时,通过选用合适的fifo深度来达到速度与功能的平衡。
5.3、单比特或多比特数据的异步传输通常也采用握手电路,其中数据发送方发送请求,由数据接收方反馈确认。请求和确认两个握手信号跨时钟域传输后经过两级触发器同步,从而完成对另一方数据读写的控制。
6.上述跨时钟域的数据处理方式只有2和3可以用于多比特寄存器的读写。然而当快速时钟和慢速时钟相差过大时,低速时钟往往会导致高速时钟的读写效率大幅下降。如,在mcu中总线速度处于兆赫兹(106hz)数量级;而目标ip的寄存器有时为千赫兹(103hz)数量级,如实时时钟电路(rct)。此时使用异步fifo或握手机制操作目标寄存器,会导致总线在读写寄存器时受到来自慢速时钟的反馈信号(fifo的满/空信号,握手信号)影响,因而总线需要等待低速时钟才能完成读写,导致高速总线速度被低速限制。另外,当系统待机时rtc依然工作,两者处于不同电压域,因此跨时钟域的信号还需要经过电平转换(level shift),所以会导致更长的不确定状态。此时穿越level shift的时钟将变得不可靠,进而导致在此情况下更无法使用异步fifo进行同步。
7.现有技术中提供了一种高速与低速时钟域之间的数据传输的同步电路,在写慢速时钟寄存器时,采用的是双触发器同步快速时钟的写使能信号后再产生慢速时钟的写入信号,但由于该双触发器需要顺序完成两个操作,需要慢速时钟的2个周期,因此,对于相差3倍以上、数十倍乃至上百倍的两个时钟域,写入速度更为缓慢,异步时钟之间的数据同步会浪费相当长的总线时钟周期,影响系统运行效率,尤其在跨电压域的寄存器访问时,电平转换(level shift)电路引起信号的不确定时间增大,继而引起时钟不准确导致数据同步困难。对于读寄存器,是将慢速时钟触发器产生的读信号同步至快速时钟,刷新快速时钟的读
寄存器,这种读信号机制,读取速度和时间会受慢速时钟的影响。


技术实现要素:

8.本发明提供了一种跨时钟域的寄存器读写方法,能够解决上述问题。
9.本发明提供的技术方案如下:
10.一种跨时钟域的寄存器读写电路,包括:
11.读寄存器电路,连接在慢速时钟域的n个寄存器与快速时钟域的总线接口之间,用于在总线选中目标寄存器进行读操作时,多级缓存目标寄存器中的数据并将缓存的数据与原始数据比较,在两者相等时通知总线读取数据;以及
12.写寄存器电路,连接在慢速时钟域的寄存器与快速时钟域的总线接口之间,用于在总线选中目标寄存器进行写操作时,对总线的写数据线锁存后向目标寄存器写入数据。
13.更进一步地,所述读寄存器电路包括:
14.多路选择器,与慢速时钟域的n个寄存器连接,用于根据总线控制信号从n个寄存器中选中目标寄存器,并将所述目标寄存器数据作为读数据线输出到触发器;以及
15.触发器,连接在多路选择器与快速时钟域的总线接口之间,用于对目标寄存器中的数据进行多级缓存后将缓存的数据与原始数据进行比较,两者相等时通知总线读取数据。
16.更进一步地,所述触发器包括:
17.前i级触发器,用于对目标寄存器中的数据进行i级缓存后将缓存的数据与原始数据进行比较,两者相等时将目标寄存器中的数据传递到后级触发器,并通知总线读取数据;
18.后级触发器,用于对接收到的目标寄存器中的数据存储后经总线接口传递至总线。
19.更进一步地,所述写寄存器电路包括:
20.地址译码器,与快速时钟域的总线接口连接,用于根据总线的地址线和写使能信号选择目标寄存器;
21.锁存器,与慢速时钟域的n个寄存器连接,用于对总线的写数据线锁存后向目标寄存器写入数据。
22.更进一步地,所述写寄存器电路还包括:
23.写使能信号产生电路,用于产生锁存器的写使能信号,所述写使能信号由总线的使能信号产生。
24.更进一步地,所述写使能信号产生电路,包括:
25.前级触发器,用于接入总线的使能信号,并将输出后信号与接入的信号相与产生脉冲信号,传递至后j级触发器;
26.后j级触发器,用于产生写使能信号,并通知总线写入数据。
27.更进一步地,所述使能信号产生电路,包括:
28.计数器,用于接入总线的使能信号,在计数值为k时产生写使能信号,计数值为2k-1时产生通知总线写入数据的信号并清零计数器。
29.本发明还提供一种跨时钟域的寄存器读写方法,应用于所述的跨时钟域的寄存器读写电路,所述方法包括:
30.在总线选中目标寄存器进行读操作时,多级缓存目标寄存器中的数据并将缓存的数据与原始数据比较,在两者相等时通知总线读取数据;
31.在总线选中目标寄存器进行写操作时,对总线的写数据线锁存后向目标寄存器写入数据。
32.更进一步地,所述在总线选中目标寄存器进行读操作时,多级缓存目标寄存器数据并将缓存的数据与原始数据比较,在两者相等时通知总线读取数据,具体包括:
33.根据总线控制信号从n个寄存器中选中目标寄存器,并将所述目标寄存器数据作为读数据线输出到触发器;
34.触发器对目标寄存器数据进行多级缓存后与原始数据进行比较,两者相等时通知总线读取数据。
35.更进一步地,所述触发器对目标寄存器数据进行多级缓存后与原始数据进行比较,两者相等时通知总线读取数据,具体包括:
36.前i级触发器对目标寄存器数据进行i级缓存后与原始数据进行比较,两者相等时将目标寄存器数据传递到后级触发器,并通知总线读取数据;
37.后级触发器对接收到的目标寄存器数据存储后经总线接口传递至总线。
38.本发明采用多级缓存目标寄存器数据并与原始数据比较的确认机制,以及采用锁存器结构进行写操作,可以有效避免异步信号的亚稳态风险,同时由于电路结构简单,无需握手反馈即实现快速时钟域的总线对慢速时钟域的n个寄存器的快速写入,也解决了时钟相差过大时寄存器读写效率低的问题;在两个时钟域间使用锁存器存储,不需要传输时钟信号,因此可以用于跨电压域的寄存器读写。
39.为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
40.为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
41.图1为本发明实施例一提供的总体电路框图;
42.图2为本发明实施例二至三提供的读寄存器电路图;
43.图3为本发明实施例三提供的读寄存器电路时序图;
44.图4为本发明实施例四提供的写寄存器电路图;
45.图5为本发明实施例五提供的写寄存器电路时序图;
46.图6为本发明实施例五提供的使能信号产生电路图;
47.图7为本发明实施例五提供的另一种写寄存器电路图;
48.图8为本发明实施例六提供的跨时钟域的寄存器读写方法流程图;
49.图9为本发明实施例六提供的步骤s1流程图;
50.图10为本发明实施例六提供的步骤s2流程图;
51.图11为本发明实施例六提供的步骤s12流程图;
52.图中:
53.sclk为慢速时钟域
54.fclk为快速时钟域
55.mux为多路选择器
56.writeen为写使能信号
57.addr为地址线
58.rdata为读数据线
59.wdata为写数据线
60.ff1、ff2、ffrd、ffwr均为触发器
61.l1、l2、ln均为锁存器
62.select、write、read、enable、ready、fclk分别为总线相关控制信号
63.图1、2、4中加粗线为多比特数据,细线为单比特数据。
具体实施方式
64.下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
65.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
66.实施例一
67.本发明实施例提供了一种跨时钟域的寄存器读写电路,如图1所示,包括:
68.读寄存器电路,连接在慢速时钟域的n个寄存器与快速时钟域的总线接口之间,用于在总线选中目标寄存器进行读操作时,多级缓存目标寄存器中的数据并将缓存的数据与原始数据比较,在两者相等时通知总线读取数据;以及
69.写寄存器电路,连接在慢速时钟域的寄存器与快速时钟域的总线接口之间,用于在总线选中目标寄存器进行写操作时,对总线的写数据线锁存后向目标寄存器写入数据。
70.上述总线所在的时钟域为微控制器总线的高速时钟fclk驱动的时钟域(以下称高速时钟域fclk),其总线速度可达48mhz;目标ip模块、寄存器rct所在慢速时钟域sclk为32khz,且两者处于不同电压域,因此信号需要经过level shift,但这会导致系统长时间处于不确定状态,因而本实施例通过多次采样进行避免系统长时间处于不确定状态。
71.具体地,高速时钟域fclk的系统总线可为ahb、apb、axi等,系统总线的控制信号和地址经过总线接口转换为写使能信号writeen和地址线addr,总线的读/写数据线分别经过读/写控制逻辑转为写数据线wdata和读数据线rdata。
72.本实施例中,采用多级缓存目标寄存器数据并与原始数据比较的确认机制,以及采用锁存结构进行写操作,可以有效避免异步信号的亚稳态风险,无需握手反馈即实现快速时钟域的总线对慢速时钟域的寄存器的快速写入,解决了时钟相差过大时寄存器读写效
率低下的问题。
73.实施例二
74.本发明实施例提供一种跨时钟域的寄存器读写电路,如图2所示,在实施例一的基础上,其中的读寄存器电路包括:
75.多路选择器mux,与寄存器1,寄存器2,
……
寄存器n连接,用于根据总线控制信号从n个寄存器中选中目标寄存器,并将目标寄存器数据作为读数据线rdata输出到触发器;以及
76.触发器,连接在多路选择器mux与快速时钟域的总线接口之间,用于对目标寄存器数据进行多级缓存后与将缓存的数据与原始数据进行比较,两者相等时通知总线读取数据。
77.具体地,慢速时钟域sclk的n个寄存器数据经过由地址线addr控制的多路选择器mux之后输出为读数据线rdata,当总线选中目标寄存器进行读操作时,即总线的控制信号select和read均为高电平,也即ce为高电平,此时跨过时钟域的多比特读数据线rdata会产生不定值,行多级缓存后与原始数据进行比较,当两者相等时即认为数据已经稳定,通知总线读取数据。
78.实施例三
79.本发明实施例提供一种跨时钟域的寄存器读写电路,如图2所示,在实施例二的基础上,其中的触发器包括:
80.前i级触发器,用于对目标寄存器数据进行i级缓存后与原始数据进行比较,两者相等时将目标寄存器数据传递到后级触发器,并通知总线读取数据;
81.后级触发器,用于对接收到的目标寄存器数据存储后经总线接口传递至总线。
82.具体地,前i级触发器至少包含两级触发器,即i≥2,且各级触发器均为d触发器。
83.以i=2为例,ff1和ff2分别为前两级触发器,对目标寄存器数据即读数据线rdata缓存两次后,再与原始读数据线rdata进行比较,当两者相等时即认为数据已经稳定,此时向后级触发器ffrd传递稳定数值,同时产生ready信号通知总线读取。
84.从图3所示的时序图可以看出,在不定值x的时间少于2个高速时钟域fclk周期时,总线从外设的目标寄存器地址到读取到目标寄存器的数据只需要5个高速时钟域fclk周期,并且针对不同电平转换(level shift)的不确定时间,若不定值x的时间更长时,可以通过改变图2中触发器(ff)的级数i,来增加采样读数据线rdata的次数,从而增加有限个高速时钟域fclk周期的采样延迟,达到消除未知态的目的。
85.实施例四
86.本发明实施例提供一种跨时钟域的寄存器读写电路,如图4所示,在实施例一的基础上,其中的写寄存器电路包括:
87.地址译码器,与快速时钟域的总线接口连接,用于根据总线的地址线addr和写使能信号writeen选择目标寄存器;
88.锁存器l1~ln,分别与n个寄存器连接,用于对总线的写数据线锁存后向目标寄存器写入数据。
89.具体地,在慢速时钟域sclk的n个寄存器前分别插入了锁存器l1~ln,写数据线wdata接入了锁存器的输入端d,每个锁存器的使能端e由对应的地址和写使能信号writeen
共同确定。
90.本实施例中,在两个时钟域间使用锁存器存储,不需要传输时钟信号,因此可以用于跨电压域的寄存器读写。在慢速时钟域sclk中,写使能信号writeen和地址线addr控制地址译码器选择对应的目标寄存器,写数据wdata通过锁存器锁存并由目标寄存器读取,读数据rdata直接来自目标寄存器的数据。
91.实施例五
92.本发明实施例提供一种跨时钟域的寄存器读写电路,在实施例四的基础上,其中的写寄存器电路还包括:
93.写使能信号产生电路,用于产生锁存器的写使能信号writeen,所述写使能信号由总线的使能信号enable产生。
94.作为一种优选实施方式,使能信号产生电路,如图4所示,包括:
95.前级触发器ffwr,用于接入总线的使能信号enable,并将输出后信号与接入的信号相与产生脉冲信号,传递至后两级触发器;
96.后级触发器,用于产生写使能信号writeen,并通知总线写入数据。
97.具体地,j为偶数,且j≥2,且各级触发器均为d触发器。
98.以j=2为例,ff3和ff4分别为后两级触发器,分别位于写使能信号writeen前后,在高速时钟域fclk,写使能信号writeen由总线的使能信号enable产生,具体是将使能信号enable经过触发器ffwr之后在ffwr_q端取反并与原信号enable相与产生一个脉冲信号,该脉冲经过触发器ff3之后即为writeen,经过触发器ff4之后为总线的ready信号。
99.从图5所示的时序可以看出,当总线向地址为0x01的寄存器写入数据时,wdata经过电平转换(level shift)在跨越时钟域之后,在锁存器l1的l1_d端已经有未知态产生,为了保证数据准确,writeen只有在wdata稳定以后才产生一个高电平脉冲,使锁存器l1锁存wdata信号,在此之后,该有效数据即可被寄存器1正确读出。同样,不定值x的时间在2个快速时钟域fclk周期内,总线从选中的目标寄存器到将数据写入到寄存器只需要5个快速时钟域fclk时钟周期,写入速度明显优于现有技术。当不定值x的时间更长时,可以改变图4中触发器ff的级数j=4,如图6所示,写使能信号writeen前设置有触发器ff5和ff6,写使能信号writeen后设置有触发器ff7和ff8,以此类推。由于在图4基础上写使能信号writeen前后各增加了一级触发器(ff),可以保证写使能信号writeen时序产生在有效的wdata中间,从而消除未知态。
100.作为另一种优选实施方式,使能信号产生电路,如图7所示,包括:
101.计数器,用于接入总线的使能信号enable,在计数值为k(k≥2)时产生写使能信号writeen,计数值为2k-1时产生通知总线写入数据的信号并清零计数器。
102.具体地,图7中的使能信号产生电路,是将图4中触发器ffwr、ff1和ff2写使能信号脉冲产生电路替换为一个由计数器组成的电路,该电路在使能信号enable下,在计数值为k时产生写使能信号writeen,计数至2k-1时产生ready信号并清零计数器。当k取2时,同样也可以实现图5所示的时序,从而实现相同功能。当不定值x的时间更长时,通过增加k的个数,延长稳定时间来消除未知态。
103.实施例六
104.本发明实施例提供一种跨时钟域的寄存器读写方法,应用于跨时钟域的寄存器读
写电路,如图8所示,该方法包括:
105.步骤s1、在总线选中目标寄存器进行读操作时,多级缓存目标寄存器数据并将缓存的数据与原始数据比较,在两者相等时通知总线读取数据;
106.步骤s2、在总线选中目标寄存器进行写操作时,对总线的写数据线锁存后向目标寄存器写入数据。
107.其中的步骤s1,如图9所示,具体包括:
108.步骤s11、根据总线控制信号从n个寄存器中选中目标寄存器,并将所述目标寄存器数据作为读数据线rdata输出到触发器;
109.步骤s12、触发器对目标寄存器数据进行多级缓存后,将缓存的数据与原始数据进行比较,两者相等时通知总线读取数据。
110.其中的步骤s2,如图10所示,具体包括:
111.步骤s21、地址译码器根据总线的地址线addr和写使能信号writeen选择目标寄存器;
112.步骤s22、锁存器对总线的写数据线锁存后向目标寄存器写入数据。
113.进一步地,如图11所示,步骤s12具体包括:
114.步骤s121、前i级触发器对目标寄存器数据进行i级缓存后将缓存的数据与原始数据进行比较,两者相等时将目标寄存器数据传递到后级触发器,并通知总线读取数据;
115.步骤s122、后级触发器对接收到的目标寄存器数据存储后经总线接口传递至总线。
116.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜