CN105573932A - 一种基于寄存器的多位宽数据跨时钟域访问方法 - Google Patents

一种基于寄存器的多位宽数据跨时钟域访问方法 Download PDF

Info

Publication number
CN105573932A
CN105573932A CN201510927374.2A CN201510927374A CN105573932A CN 105573932 A CN105573932 A CN 105573932A CN 201510927374 A CN201510927374 A CN 201510927374A CN 105573932 A CN105573932 A CN 105573932A
Authority
CN
China
Prior art keywords
register
data
equipment
main equipment
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.)
Granted
Application number
CN201510927374.2A
Other languages
English (en)
Other versions
CN105573932B (zh
Inventor
王婷
田泽
许宏杰
陈威宇
曹朋朋
马超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xian Aeronautics Computing Technique Research Institute of AVIC
Original Assignee
Xian Aeronautics Computing Technique Research Institute of AVIC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xian Aeronautics Computing Technique Research Institute of AVIC filed Critical Xian Aeronautics Computing Technique Research Institute of AVIC
Priority to CN201510927374.2A priority Critical patent/CN105573932B/zh
Publication of CN105573932A publication Critical patent/CN105573932A/zh
Application granted granted Critical
Publication of CN105573932B publication Critical patent/CN105573932B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1678Details 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对应从设备地址的数据,读操作结束。
上述控制位为最高位,选择x位为低x位,选择y位为低y位。
上述控制位为最低位,选择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所述的一种基于寄存器的多位宽数据跨时钟域访问方法,其特征在于:所述控制位为最高位,选择x位为低x位,选择y位为低y位。
3.根据权利要求1所述的一种基于寄存器的多位宽数据跨时钟域访问方法,其特征在于:所述控制位为最低位,选择x位为高x位,选择y位为高y位。
4.根据权利要求1或2或3所述的一种基于寄存器的多位宽数据跨时钟域访问方法,其特征在于,步骤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最高位置零,表示跨时钟域读操作结束。
CN201510927374.2A 2015-12-11 2015-12-11 一种基于寄存器的多位宽数据跨时钟域访问方法 Active CN105573932B (zh)

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 true CN105573932A (zh) 2016-05-11
CN105573932B 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)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108519947A (zh) * 2018-04-02 2018-09-11 郑州云海信息技术有限公司 一种Linux下读写寄存器的方法及工具
CN109445855A (zh) * 2018-10-30 2019-03-08 天津津航计算技术研究所 一种用于多路低速外设集成的桥接装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102789262A (zh) * 2012-07-19 2012-11-21 中国航天科技集团公司第九研究院第七七一研究所 一种跨时钟域异步信号同步电路
US20130013950A1 (en) * 2011-07-05 2013-01-10 Psion Inc. Clock domain crossing interface
CN102929808A (zh) * 2012-11-02 2013-02-13 长沙景嘉微电子股份有限公司 一种高可靠性的跨时钟域数据传输电路
US20140223031A1 (en) * 2013-02-01 2014-08-07 Broadcom Corporation Clock domain crossing serial interface, direct latching, and response codes
CN204143430U (zh) * 2014-09-23 2015-02-04 无锡华大国奇科技有限公司 弹性先进先出存储器
CN104484011A (zh) * 2014-11-25 2015-04-01 上海高性能集成电路设计中心 一种分布控制双时钟异步发送、接收模块及fifo装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130013950A1 (en) * 2011-07-05 2013-01-10 Psion Inc. Clock domain crossing interface
CN102789262A (zh) * 2012-07-19 2012-11-21 中国航天科技集团公司第九研究院第七七一研究所 一种跨时钟域异步信号同步电路
CN102929808A (zh) * 2012-11-02 2013-02-13 长沙景嘉微电子股份有限公司 一种高可靠性的跨时钟域数据传输电路
US20140223031A1 (en) * 2013-02-01 2014-08-07 Broadcom Corporation Clock domain crossing serial interface, direct latching, and response codes
CN204143430U (zh) * 2014-09-23 2015-02-04 无锡华大国奇科技有限公司 弹性先进先出存储器
CN104484011A (zh) * 2014-11-25 2015-04-01 上海高性能集成电路设计中心 一种分布控制双时钟异步发送、接收模块及fifo装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108519947A (zh) * 2018-04-02 2018-09-11 郑州云海信息技术有限公司 一种Linux下读写寄存器的方法及工具
CN109445855A (zh) * 2018-10-30 2019-03-08 天津津航计算技术研究所 一种用于多路低速外设集成的桥接装置
CN109445855B (zh) * 2018-10-30 2021-11-16 天津津航计算技术研究所 一种用于多路低速外设集成的桥接装置

Also Published As

Publication number Publication date
CN105573932B (zh) 2018-04-20

Similar Documents

Publication Publication Date Title
EP1825382B1 (en) Low protocol, high speed serial transfer for intra-board or inter-board data communication
CN109918303B (zh) 一种芯片、芯片调试方法及装置、设备、介质
US7669086B2 (en) Systems and methods for providing collision detection in a memory system
US20190272252A1 (en) Method of processing deadlock of i2c bus, electronic device and communication system
CN113254368B (zh) 从axi总线到opb总线的数据写入方法及读取方法
US8145868B2 (en) Method and system for providing frame start indication in a memory system having indeterminate read data latency
CN101931580B (zh) Arinc 659背板数据总线接口芯片片上系统
US8055976B2 (en) System and method for providing error correction and detection in a memory system
US8359521B2 (en) Providing a memory device having a shared error feedback pin
TWI430085B (zh) 具有分離循環冗餘碼訊框之有效率帶內可靠性技術的方法、積體電路與系統以及動態隨機存取記憶體裝置
US10120590B2 (en) Method for providing read data flow control or error reporting using a read data strobe
CN107066746B (zh) 基于i2c接口通过cpld来实现pca9555功能的方法
CN103605632A (zh) 一种axi总线与ahb总线的通信方法与装置
CN105573932A (zh) 一种基于寄存器的多位宽数据跨时钟域访问方法
WO2024078089A1 (zh) 一种芯片及其数据传输方法
CN107748704A (zh) 基于fpga的内存镜像实现的方法及装置
US10769038B2 (en) Counter circuitry and methods including a master counter providing initialization data and fault detection data and wherein a threshold count difference of a fault detection count is dependent upon the fault detection data
CN103389924B (zh) 应用于随机存储器的ecc存储系统
CN102568605B (zh) 系统总线检错纠错方法和nand flash控制器
CN102204099A (zh) 复位装置
CN101902436A (zh) 板间通信方法、装置及系统
US11226790B2 (en) Arithmetic processing apparatus with delay-and-swap processing circuit
CN104572317A (zh) 主板及利用主板的基板管理控制器获取时间信息的方法
CN113722143A (zh) 一种程序流监控方法、装置、电子设备以及存储介质
CN107704403B (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