CN105573932B - 一种基于寄存器的多位宽数据跨时钟域访问方法 - Google Patents
一种基于寄存器的多位宽数据跨时钟域访问方法 Download PDFInfo
- Publication number
- CN105573932B CN105573932B CN201510927374.2A CN201510927374A CN105573932B CN 105573932 B CN105573932 B CN 105573932B CN 201510927374 A CN201510927374 A CN 201510927374A CN 105573932 B CN105573932 B CN 105573932B
- Authority
- CN
- China
- Prior art keywords
- register
- main equipment
- slave device
- data
- signal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1689—Synchronisation and timing concerns
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1678—Details of memory controller using bus width
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明涉及一种基于寄存器的多位宽数据跨时钟域访问方法,通过定义寄存器A和寄存器B,包括在寄存器A和寄存器B中分别设置控制位和数据位,通过寄存器A中的控制位有效判断从设备是否空闲,可方便应用于多主操作的***中;在主设备读取从设备数据时,通过寄存器B中的控制位判断数据位是否有效,主设备未读响应前寄存器中的控制位和数据一直保持有效,主设备可以在空闲的情况下随时获取从设备的数据,避免了对主设备资源的占用;此外通过设置寄存器A和寄存器B对于时钟跨度大的异步信号之间的数据交互仍可以通过控制位保证数据的正确性,避免访问错误或异常,具有高可靠性。
Description
技术领域
本发明属于集成电路设计技术,涉及一种基于寄存器的多位宽数据跨时钟域访问方法,特别是时钟频率差距大,可靠性要求高的情况下。
背景技术
随着集成电路规模的不断扩大,一个完整的电路中往往包含多个时钟,时钟的不匹配经常需要经过跨时钟域处理,稍有不慎便会造成访问出错或异常。
针对集成电路设计中经常遇到的多位宽的异步信号的跨时钟域交互,目前主要通过对控制信号同步的方法进行多位宽的数据同步,该方法需要额外的控制信号的同步,并需要长时间占用主设备,对于多主操作的情况也不适用,避免异步信号交互,特别是时钟跨度大的异步信号交互引起的访问错误或异常,提高数据访问的可靠性极为重要。
发明内容
为了解决背景技术中提及的问题,本发明提供了一种基于寄存器的多位宽数据跨时钟域访问方法,定义中间寄存器,即使时钟跨度大或多主操作的情况下也能正常进行多位宽异步信号之间的数据交互,避免访问错误或异常,具有高可靠性。
本发明的技术方案是:
一种基于寄存器的多位宽数据跨时钟域访问方法,其特殊之处在于,不同时钟域的主设备和从设备通过访问寄存器A和寄存器B进行数据交互,定义从设备地址位宽为x,从设备数据位宽为y,寄存器A的位宽大于等于x+1;寄存器B的位宽大于等于y+1;定义寄存器A的控制位表示从设备是否正在被访问;寄存器B的控制位表示寄存器B中数据位是否有效;
包括以下步骤:
步骤1):主设备读寄存器A,若寄存器A控制位为零即空闲状态,则进入步骤2,若寄存器A控制位为1即占用状态,则继续步骤1;
步骤2):主设备写寄存器A,其中,控制位写1,选择x位写入从设备地址;
步骤3):判断主设备对从设备的操作状态:
如果是主设备对从设备是写操作,则进入步骤4);
如果是主设备对从设备是读操作,则进入步骤5);
步骤4):主设备写寄存器B,选择y位写入与步骤2中从设备地址对应的数据,写操作结束;
步骤5):主设备读寄存器B:
当寄存器B控制位为0时,继续读寄存器B;
当寄存器B控制位为1时,选择y位即为步骤2对应从设备地址的数据,读操作结束。
上述寄存器A和寄存器B的控制位均为最高位,选择x位为低x位,选择y位为低y位。
上述寄存器A和寄存器B的控制位均为最低位,选择x位为高x位,选择y位为高y位。
步骤4)主设备对寄存器B写操作具体为:
写开始信号wr_sta位于主设备时钟域,通过两级时钟锁存转换到从设备时钟域,从设备收到写开始信号后锁存需要写入的从设备的地址和数据,同时产生写响应信号wr_sta_ack,写响应信号wr_sta_ack经过两级同步后反馈到主设备时钟域后撤销写开始信号wr_sta;
从设备收到写数据的下一个从设备时钟周期向主设备发送从设备写完成信号sub_wr_rdy,从设备写完成信号sub_wr_rdy经同步产生主设备时钟域的主设备写完成信号wr_rdy,主设备写完成信号wr_rdy为一个主设备的时钟周期,主设备收到主设备写完成信号wr_rdy信号后,从设备撤销从设备写完成信号sub_wr_rdy,同时将寄存器A最高位置零,表示跨时钟域写操作结束。
步骤5主设备发起对寄存器B的读操作具体为:
主设备第一次发起对寄存器B的读操作即表示对从设备的读开始;
读开始信号rd_sta位于主设备时钟域,通过两级时钟锁存转换到从设备时钟域,从设备收到读开始信号rd_sta后,一方面锁存需读取的从设备的数据地址,并产生读响应信号rd_sta_ack,读响应信号rd_sta_ack经过两级同步后反馈到主设备后撤销读开始信号rd_sta;另一方面从设备输出数据rd_data,同时输出数据有效信号,数据有效信号同步到主设备时钟域后为主设备数据有效信号cfg_rdvld,并在主设备数据有效信号cfg_rdvld有效时将输出数据rd_data按低位对齐赋值给寄存器B,主设备数据有效信号cfg_rdvld为寄存器B的最高位,此时,寄存器B最高位为1,低y位为需要读取的从设备的值;
主设备读取寄存器B中的数据位,并发送读完成信号rd_rdy,在读完成信号rd_rdy和数据有效信号cfg_rdvld同时有效的下一个主设备时钟周期将寄存器A最高位置零,表示跨时钟域读操作结束。
本发明所具有的有益效果:
1、本发明提供的一种基于寄存器的多位宽数据跨时钟域访问方法,避免多位宽异步信号特别是时钟频率相差大的跨时钟域操作不当出现访问错误或异常,通过控制位保证数据的正确性,具有高可靠性。
2、不同时钟域的主设备和从设备通过访问寄存器A和寄存器B来进行跨时钟域的数据传递,包括在寄存器A和寄存器B中设置控制位和数据位,通过寄存器A中的控制位有效判断从设备是否空闲,可方便应用于多主操作的***中;在主设备读取从设备数据时,通过寄存器B中的控制位判断数据位是否有效,主设备未读响应前寄存器中的控制位和数据一直保持有效,主设备可以在空闲的情况下随时获取从设备的数据,避免了对主设备资源的占用。
附图说明
图1是本发明的一种基于寄存器的多位宽数据跨时钟域访问方法。
具体实施方式
下面结合附图和具体实施例对本发明的技术方案做进一步详细描述。
针对本发明涉及的一种基于寄存器的多位宽数据跨时钟域访问方法,本文给出了其应用在不同时钟域下主设备(寄存器访问总线)访问从设备(子模块)寄存器上,如图1所示,定义寄存器A和寄存器B,寄存器A与寄存器B属于寄存器访问总线时钟域(PLB总线时钟135MHz),子模块寄存器属于子模块时钟域(音频编解码模块12.288MHz),寄存器A和寄存器B作为入口地址,寄存器访问总线通过访问寄存器A和寄存器B来配置或获取子模块寄存器的值,包括以下步骤(假设子模块的寄存器地址位宽为x,寄存器数据位宽为y):
步骤1:寄存器访问总线读寄存器A,若寄存器A最高位为零,则进入步骤2,若寄存器A最高位为1,则继续步骤1;
步骤2:寄存器访问总线写寄存器A,其中,最高位写1,低x位写入待读写的子模块寄存器地址,如果是写子模块寄存器,则进入步骤3,如果是读子模块寄存器,则进入步骤4;
步骤3:寄存器访问总线写寄存器B,低y位写入与步骤2中子模块寄存器地址对应的寄存器的值;
步骤4:寄存器访问总线反复读寄存器B,当寄存器B最高位为1时,低y为即为步骤2对应的子模块寄存器的值。
本发明提供的一种基于寄存器的多位宽数据跨时钟域访问方法应用在不同时钟域的进行寄存器访问上,定义寄存器访问总线时钟域下的寄存器A和寄存器B,寄存器访问总线通过对寄存器A和寄存器B的读写操作,完成对子模块寄存器的读写。为了防止跨时钟域时信号或数据出错,采用握手机制进行处理,规定子模块寄存器读写过程,防止数据出错。即使时钟跨度较大情况下,寄存器访问总线时钟也能正常访问子模块寄存器,避免访问错误或异常,具有高可靠性。
在上述实施例的基础上,优选地,所述步骤1用于判断总线时钟域下的寄存器A和寄存器B是否空闲:寄存器A最高位为零,表示空闲;寄存器A最高位为1,表示暂时被占用。
在上述实施例的基础上,优选地,所述步骤3寄存器访问总线对寄存器B写操作,表示寄存器访问总线对子模块寄存器写开始;写开始信号wr_sta位于寄存器访问总线时钟域,通过两级时钟锁存转换到子模块时钟域,子模块收到写开始信号后锁存需要配置的子模块寄存器的地址和数据,并产生写响应信号wr_sta_ack,wr_sta_ack经过两级同步后反馈到寄存器访问总线时钟域后撤销wr_sta;
子模块寄存器收到写数据后向寄存器访问总线发送写完成信号sub_wr_rdy,sub_wr_rdy经同步产生寄存器访问总线时钟域的写完成信号wr_rdy,wr_rdy为一个寄存器访问总线时钟周期,寄存器访问总线收到wr_rdy信号后,子模块撤销sub_wr_rdy,同时将寄存器A最高位置零,表示本次子模块寄存器写操作结束。
在上述实施例的基础上,优选地,所述步骤4寄存器访问总线第一次对寄存器B进行读操作即表示对子模块寄存器读开始;
读开始信号rd_sta位于寄存器访问总线时钟域,并通过两级时钟锁存转换到子模块时钟域,子模块收到rd_sta后,一方面锁存需读取的子模块寄存器地址,并产生读响应信号rd_sta_ack,rd_sta_ack经过两级同步后反馈到总线时钟域后撤销rd_sta;另一方面子模块将子模块寄存器中的数据rd_data输出,同时输出数据有效信号,数据有效信号同步到寄存器访问总线时钟域后为cfg_rdvld,并在cfg_rdvld有效时将rd_data按低位对齐赋值给寄存器B,cfg_rdvld为寄存器B的最高位,此时,寄存器B最高位为1,低y位为需要读取的子模块寄存器的值;
寄存器访问总线发送读完成信号rd_rdy,在rd_rdy和读数据有效信号cfg_rdvld同时有效的下一个时钟周期(寄存器访问总线时钟周期)将寄存器A最高位置零,表示本次子模块寄存器读操作结束。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细地说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (5)
1.一种基于寄存器的多位宽数据跨时钟域访问方法,其特征在于,不同时钟域的主设备和从设备通过访问寄存器A和寄存器B进行数据交互,定义从设备地址位宽为x,从设备数据位宽为y,寄存器A的位宽大于等于x+1;寄存器B的位宽大于等于y+1;定义寄存器A的控制位表示从设备是否正在被访问;寄存器B的控制位表示寄存器B中数据位是否有效;
包括以下步骤:
步骤1):主设备读寄存器A,若寄存器A控制位为零即空闲状态,则进入步骤2,若寄存器A控制位为1即占用状态,则继续步骤1;
步骤2):主设备写寄存器A,其中,控制位写1,选择x位写入从设备地址;
步骤3):判断主设备对从设备的操作状态:
如果是主设备对从设备是写操作,则进入步骤4);
如果是主设备对从设备是读操作,则进入步骤5);
步骤4):主设备写寄存器B,选择y位写入与步骤2中从设备地址对应的数据,写操作结束;
步骤5):主设备读寄存器B:
当寄存器B控制位为0时,继续读寄存器B;
当寄存器B控制位为1时,选择y位即为步骤2对应从设备地址的数据,读操作结束。
2.根据权利要求1所述的一种基于寄存器的多位宽数据跨时钟域访问方法,其特征在于:所述寄存器A和寄存器B的控制位均为最高位,选择x位为低x位,选择y位为低y位。
3.根据权利要求1所述的一种基于寄存器的多位宽数据跨时钟域访问方法,其特征在于:所述寄存器A和寄存器B的控制位均为最低位,选择x位为高x位,选择y位为高y位。
4.根据权利要求2所述的一种基于寄存器的多位宽数据跨时钟域访问方法,其特征在于,步骤4)主设备对寄存器B写操作具体为:
写开始信号wr_sta位于主设备时钟域,通过两级时钟锁存转换到从设备时钟域,从设备收到写开始信号后锁存需要写入的从设备的地址和数据,同时产生写响应信号wr_sta_ack,写响应信号wr_sta_ack经过两级同步后反馈到主设备时钟域后撤销写开始信号wr_sta;
从设备收到写数据的下一个从设备时钟周期向主设备发送从设备写完成信号sub_wr_rdy,从设备写完成信号sub_wr_rdy经同步产生主设备时钟域的主设备写完成信号wr_rdy,主设备写完成信号wr_rdy为一个主设备的时钟周期,主设备收到主设备写完成信号wr_rdy信号后,从设备撤销从设备写完成信号sub_wr_rdy,同时将寄存器A最高位置零,表示跨时钟域写操作结束。
5.根据权利要求4所述的一种基于寄存器的多位宽数据跨时钟域访问方法,其特征在于,步骤5主设备发起对寄存器B的读操作具体为:
主设备第一次发起对寄存器B的读操作即表示对从设备的读开始;
读开始信号rd_sta位于主设备时钟域,通过两级时钟锁存转换到从设备时钟域,从设备收到读开始信号rd_sta后,一方面锁存需读取的从设备的数据地址,并产生读响应信号rd_sta_ack,读响应信号rd_sta_ack经过两级同步后反馈到主设备后撤销读开始信号rd_sta;另一方面从设备输出数据rd_data,同时输出数据有效信号,数据有效信号同步到主设备时钟域后为主设备数据有效信号cfg_rdvld,并在主设备数据有效信号cfg_rdvld有效时将输出数据rd_data按低位对齐赋值给寄存器B,主设备数据有效信号cfg_rdvld为寄存器B的最高位,此时,寄存器B最高位为1,低y位为需要读取的从设备的值;
主设备读取寄存器B中的数据位,并发送读完成信号rd_rdy,在读完成信号rd_rdy和数据有效信号cfg_rdvld同时有效的下一个主设备时钟周期将寄存器A最高位置零,表示跨时钟域读操作结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510927374.2A CN105573932B (zh) | 2015-12-11 | 2015-12-11 | 一种基于寄存器的多位宽数据跨时钟域访问方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510927374.2A CN105573932B (zh) | 2015-12-11 | 2015-12-11 | 一种基于寄存器的多位宽数据跨时钟域访问方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105573932A CN105573932A (zh) | 2016-05-11 |
CN105573932B true CN105573932B (zh) | 2018-04-20 |
Family
ID=55884091
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510927374.2A Active CN105573932B (zh) | 2015-12-11 | 2015-12-11 | 一种基于寄存器的多位宽数据跨时钟域访问方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105573932B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108519947A (zh) * | 2018-04-02 | 2018-09-11 | 郑州云海信息技术有限公司 | 一种Linux下读写寄存器的方法及工具 |
CN109445855B (zh) * | 2018-10-30 | 2021-11-16 | 天津津航计算技术研究所 | 一种用于多路低速外设集成的桥接装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102789262A (zh) * | 2012-07-19 | 2012-11-21 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种跨时钟域异步信号同步电路 |
CN102929808A (zh) * | 2012-11-02 | 2013-02-13 | 长沙景嘉微电子股份有限公司 | 一种高可靠性的跨时钟域数据传输电路 |
CN204143430U (zh) * | 2014-09-23 | 2015-02-04 | 无锡华大国奇科技有限公司 | 弹性先进先出存储器 |
CN104484011A (zh) * | 2014-11-25 | 2015-04-01 | 上海高性能集成电路设计中心 | 一种分布控制双时钟异步发送、接收模块及fifo装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8898502B2 (en) * | 2011-07-05 | 2014-11-25 | Psion Inc. | Clock domain crossing interface |
US20140223217A1 (en) * | 2013-02-01 | 2014-08-07 | Broadcom Corporation | Power and system management information visibility |
-
2015
- 2015-12-11 CN CN201510927374.2A patent/CN105573932B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102789262A (zh) * | 2012-07-19 | 2012-11-21 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种跨时钟域异步信号同步电路 |
CN102929808A (zh) * | 2012-11-02 | 2013-02-13 | 长沙景嘉微电子股份有限公司 | 一种高可靠性的跨时钟域数据传输电路 |
CN204143430U (zh) * | 2014-09-23 | 2015-02-04 | 无锡华大国奇科技有限公司 | 弹性先进先出存储器 |
CN104484011A (zh) * | 2014-11-25 | 2015-04-01 | 上海高性能集成电路设计中心 | 一种分布控制双时钟异步发送、接收模块及fifo装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105573932A (zh) | 2016-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109918303B (zh) | 一种芯片、芯片调试方法及装置、设备、介质 | |
CN101931580B (zh) | Arinc 659背板数据总线接口芯片片上*** | |
CN110221994B (zh) | 一种数据位宽转换的方法及装置、计算机可读存储介质 | |
WO2020232859A1 (zh) | 分布式存储***、数据写入方法、装置和存储介质 | |
CN105573932B (zh) | 一种基于寄存器的多位宽数据跨时钟域访问方法 | |
CN102737727B (zh) | 双倍速率同步动态随机存储器稳定性测试的方法及*** | |
CN112000513A (zh) | 一种计算机及其vpd数据操作方法、装置、存储介质 | |
US20040139241A1 (en) | Input/output device and method of setting up identification information in input/output device | |
CN110720126B (zh) | 传输数据掩码的方法、内存控制器、内存芯片和计算机*** | |
CN105095122B (zh) | 控制内存芯片的方法、芯片控制器和内存控制器 | |
CN108920299B (zh) | 储存媒体 | |
CN107748704A (zh) | 基于fpga的内存镜像实现的方法及装置 | |
CN111861858A (zh) | 一种启动图像压缩功能验证的方法、装置及相关设备 | |
CN101902436A (zh) | 板间通信方法、装置及*** | |
CN108334337B (zh) | 含自动管理功能的低延迟指令调度器及过滤猜测访问方法 | |
CN109800109A (zh) | 一种数据备份方法、***及板卡和存储介质 | |
CN113535084B (zh) | 一种大容量sas硬盘的实现方法 | |
EP4258116A1 (en) | Data transmission circuit and data transmission method | |
CN112397121B (zh) | 存储设备、存储器及数据处理方法 | |
US11755502B2 (en) | Methods of controlling power consumption, boards, electronic devices and storage media | |
CN109271277A (zh) | 数据库宕机后的访问方法、装置和*** | |
CN106933755A (zh) | 一种基于cpci背板的轮询通信方法 | |
CN113454611B (zh) | 校验地址和控制信号完整性的方法、相关产品 | |
JP3401729B2 (ja) | スプリットバス制御回路 | |
CN114896312A (zh) | 数据交换方法、电子设备、计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |