CN112506846B - 一种芯片内部模块间通信系统及方法 - Google Patents

一种芯片内部模块间通信系统及方法 Download PDF

Info

Publication number
CN112506846B
CN112506846B CN202011473817.2A CN202011473817A CN112506846B CN 112506846 B CN112506846 B CN 112506846B CN 202011473817 A CN202011473817 A CN 202011473817A CN 112506846 B CN112506846 B CN 112506846B
Authority
CN
China
Prior art keywords
module
data
receiving module
sent
sending
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
Application number
CN202011473817.2A
Other languages
English (en)
Other versions
CN112506846A (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.)
Shenzhen Dapu Microelectronics Co Ltd
Original Assignee
Shenzhen Dapu Microelectronics Co Ltd
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 Shenzhen Dapu Microelectronics Co Ltd filed Critical Shenzhen Dapu Microelectronics Co Ltd
Priority to CN202011473817.2A priority Critical patent/CN112506846B/zh
Publication of CN112506846A publication Critical patent/CN112506846A/zh
Application granted granted Critical
Publication of CN112506846B publication Critical patent/CN112506846B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Communication Control (AREA)

Abstract

本发明公开了一种芯片内部模块间通信系统及方法。接收模块用于将自身包含的FIFO的空间状态发送至发送模块;发送模块用于根据预发送给接收模块的数据量及空间状态,判断当前预发送给接收模块的数据是否能够成功发送;若是,则将当前预发送给接收模块的数据发送给接收模块。可见,接收端将FIFO的空间状态传递给发送端且由发送端判断数据是否可以发送,发送端不必每个时钟周期都获取FIFO的空间状态,从而可以有效解耦发送端和接收端对时序的要求,提高了发送接收效率,且灵活了后端设计,降低了后端实现复杂度。

Description

一种芯片内部模块间通信系统及方法
技术领域
本发明涉及芯片内部通信领域,特别是涉及一种芯片内部模块间通信系统及方法。
背景技术
传统芯片内部模块间通信,为了提高Timing(响应时间)和吞吐量,通常在接收端设置FIFO(First Input First Output,先进先出),接收端通过将FIFO的满状态传递给发送端来通知发送端本次传输能否被接收端接收,这就要求FIFO的满状态必须被接收端正确采样,在Timing收敛时就要求单个时钟周期内满足setup/hold timing(建立/保持响应时间)要求,否则发送端发送的数据就有可能丢失,从发送端观察无疑形成了一个loop。
对于较大模块,在后端物理实现时往往需要单独做harden flow(固化流程),在harden flow过程中,后端工程师虽然可以尽力将模块接口信号timing margin(时序余量)放大,但是两个独立harden模块(发送模块和接收模块)可能会因摆放位置和连接路线的不确定性导致模块间的timing恶化,而无法满足单时钟周期Timing要求。这样后端工程师为了满足单时钟周期Timing要求,需要反复调整发送模块和接收模块的信号位置、模块位置及Harden形状,影响芯片后端设计进度,更严重的是仍无法满足芯片Timing要求。由于Timing受限于接收模块状态传递延迟的大小,如果无法满足单个时钟周期Timing要求,只能降低工作频率。
具体地,芯片内部模块间通信方式如图1所示,通信时序如图2所示,其通信原理为:发送模块A在一个时钟周期开始时,发送Valid或Ready信号至接收模块B,并向接收模块B传输DATA(数据)放入FIFO,直至接收模块B反馈ACK信号,一次传输完成,ACK信号是接收模块B在FIFO满状态时取反得到的,这就要求ACK信号需要在单个时钟周期内反馈给发送模块A,否则传输就会停止,影响传输性能。
在高性能芯片中,发送模块A和接收模块B都是独立harden模块,这两个模块中的ACK信号输入输出Timing margin、模块harden形状、信号出入口位置及两模块的布局摆放位置就很关键,否则无法满足时钟速率要求,影响芯片性能。可见,传统的芯片内部模块间通信的传输时钟频率较低,且后端实现复杂度较高。
因此,如何提供一种解决上述技术问题的方案是本领域的技术人员目前需要解决的问题。
发明内容
本发明的目的是提供一种芯片内部模块间通信系统及方法,接收端将FIFO的空间状态传递给发送端且由发送端判断数据是否可以发送,发送端不必每个时钟周期都获取FIFO的空间状态,从而可以有效解耦发送端和接收端对时序的要求,提高了发送接收效率,且灵活了后端设计,降低了后端实现复杂度。
为解决上述技术问题,本发明提供了一种芯片内部模块间通信系统,包括:
接收模块,用于将自身包含的FIFO的空间状态发送至发送模块;
发送模块,用于根据预发送给所述接收模块的数据量及所述空间状态,判断当前预发送给所述接收模块的数据是否能够成功发送;若是,则将当前预发送给所述接收模块的数据发送给所述接收模块。
优选地,所述接收模块具体用于将表征自身包含的FIFO的空间状态的读指针格雷码发送至发送模块;其中,所述读指针格雷码的bit间传输延迟差<接收端时钟周期;
则所述发送模块具体用于根据所述读指针格雷码确定所述FIFO的空间状态。
优选地,当从所述接收模块直接到所述发送模块的传输路径存在时序违例时,所述接收模块具体用于将读指针格雷码延迟发送至所述发送模块,以通过放大Max Delay约束来防止时序违例;其中,Max Delay为所述接收模块向所述发送模块发送读指针格雷码的延时时间。
优选地,当从所述发送模块直接到所述接收模块的传输路径存在时序违例时,所述芯片内部模块间通信系统还包括:
串接于所述传输路径上的N个级联的D触发器;其中,N≥(所述发送模块向所述接收模块传输数据的延时时间/接收端时钟周期)-1;且N为正整数。
优选地,所述FIFO的待设计深度值在传输连续性的约束条件下,基于所述D触发器的级数及所述接收模块向所述发送模块发送FIFO的空间状态的延时时间确定。
优选地,所述FIFO的待设计深度值=4+所述D触发器的级数+((Max Delay/发送端时钟周期)+1);其中,Max Delay为所述接收模块向所述发送模块发送FIFO的空间状态的延时时间。
优选地,所述发送模块具体用于将当前预发送给所述接收模块的数据以数据包形式发送给所述接收模块;
且所述发送模块还用于在向所述接收模块发送数据包的同时,将每个数据包的SOP和EOP发送给所述接收模块;
则所述接收模块还用于根据每个数据包的SOP和EOP区分开不同数据包。
优选地,所述数据包包括包头部分、数据部分及校验部分;所述包头部分包括表征数据源头ID的SID、表征数据目的ID的DID、用于对每个数据包进行连续编码的SEQ、表征用户发送命令的CMD及表征数据包的数据长度的PLD Len;所述校验部分包括用于对所述包头部分进行保护的ECC校验码和用于对所述数据部分进行保护的CRC校验码。
优选地,所述发送模块包括:
HSI_TFF子模块,用于接收待发送数据,并将所述待发送数据按照预设数据包结构进行封包处理,且将封包处理得到的数据包按照所述接收模块的接收数据位宽要求进行位宽转化,得到待发送数据包;
HSI_PTX子模块,用于接收所述接收模块传输的FIFO的空间状态,并根据预发送给所述接收模块的数据量及所述空间状态,判断所述FIFO是否处于非满状态;若是,则启动所述待发送数据包的发送操作;若否,则停止所述待发送数据包的发送操作;还用于在向所述接收模块发送数据包的同时,将每个数据包的SOP和EOP发送给所述接收模块;
所述接收模块包括:
HSI_PRX_AFF子模块,用于接收所述发送模块发送的数据包及每个数据包的SOP和EOP,以根据每个数据包的SOP和EOP区分开不同数据包;还用于将FIFO的空间状态发送至所述发送模块;
HSI_PRX子模块,用于对区分开的每个数据包进行解析,并对解析后的数据包的包头部分进行ECC校验、数据部分进行CRC校验、包头部分的SID和DID进行发送接收错误检测、包头部分的SEQ进行数据包丢失检测、包头部分的PLD Len进行数据长度检查;
HSI_RFF子模块,用于基于后端子模块对数据包的数据处理要求,将校验完的数据包进行数据位宽转化及数据传输缓冲,以供后端子模块进行处理。
为解决上述技术问题,本发明还提供了一种芯片内部模块间通信方法,应用于芯片内发送模块,包括:
接收接收模块发送的其内包含的FIFO的空间状态;
根据预发送给所述接收模块的数据量及所述空间状态,判断当前预发送给所述接收模块的数据是否能够成功发送;
若是,则将当前预发送给所述接收模块的数据发送给所述接收模块。
为解决上述技术问题,本发明还提供了一种芯片内部模块间通信方法,应用于芯片内接收模块,包括:
接收发送模块发送的数据,并将接收的数据放入自身包含的FIFO;
将所述FIFO的空间状态发送至所述发送模块,以使所述发送模块根据预发送给所述接收模块的数据量及所述空间状态判断出当前预发送给所述接收模块的数据能够成功发送时再执行数据发送操作。
本发明提供了一种芯片内部模块间通信系统,包括接收模块和发送模块。接收模块用于将自身包含的FIFO的空间状态发送至发送模块;发送模块用于根据预发送给接收模块的数据量及空间状态,判断当前预发送给接收模块的数据是否能够成功发送;若是,则将当前预发送给接收模块的数据发送给接收模块。可见,接收端将FIFO的空间状态传递给发送端且由发送端判断数据是否可以发送,发送端不必每个时钟周期都获取FIFO的空间状态,从而可以有效解耦发送端和接收端对时序的要求,提高了发送接收效率,且灵活了后端设计,降低了后端实现复杂度。
本发明还提供了一种芯片内部模块间通信方法,与上述通信系统具有相同的有益效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中的一种芯片内部模块间通信方式的示意图;
图2为现有技术中的一种芯片内部模块间通信时序图;
图3为本发明实施例提供的一种芯片内部模块间通信系统的结构示意图;
图4为本发明实施例提供的一种芯片内部模块间通信系统的具体结构示意图;
图5为本发明实施例提供的一种芯片内部模块间通信系统的优化结构示意图;
图6为本发明实施例提供的一种接收端反馈读指针Max Delay Path的示意图;
图7为本发明实施例提供的一种数据包的组成结构图;
图8为本发明实施例提供的一种发送模块的结构示意图;
图9为本发明实施例提供的一种接收模块的结构示意图。
具体实施方式
本发明的核心是提供一种芯片内部模块间通信系统及方法,接收端将FIFO的空间状态传递给发送端且由发送端判断数据是否可以发送,发送端不必每个时钟周期都获取FIFO的空间状态,从而可以有效解耦发送端和接收端对时序的要求,提高了发送接收效率,且灵活了后端设计,降低了后端实现复杂度。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参照图3,图3为本发明实施例提供的一种芯片内部模块间通信系统的结构示意图。
该芯片内部模块间通信系统包括:
接收模块B,用于将自身包含的FIFO的空间状态发送至发送模块A;
发送模块A,用于根据预发送给接收模块B的数据量及空间状态,判断当前预发送给接收模块B的数据是否能够成功发送;若是,则将当前预发送给接收模块B的数据发送给接收模块B。
具体地,本申请的芯片内部模块间通信系统包括发送模块A和接收模块B,其工作原理为:
接收模块B内含有FIFO,接收模块B可检测FIFO的空间状态,即FIFO当前可继续接收的数据量。接收模块B将FIFO的空间状态循环发送至发送模块A,目的是使发送模块A根据FIFO的空间状态确定FIFO当前可继续接收的数据量。
发送模块A在接收到接收模块B传输过来的FIFO的空间状态后,根据FIFO的空间状态确定FIFO当前可继续接收的数据量,并根据预发送给接收模块B的数据量及FIFO当前可继续接收的数据量,判断当前预发送给接收模块B的数据是否能够成功发送,若能够成功发送;则将当前预发送给接收模块B的数据发送给接收模块B;若不能够成功发送;则不将当前预发送给接收模块B的数据发送给接收模块B。
比如,发送模块A根据FIFO的空间状态确定FIFO当前可继续接收的数据量为6,此时发送模块A预发送给接收模块B的数据量为10,则发送模块A确定有6个数据量的数据可被接收模块B接收,先依次向接收模块B发送6个数据量的数据,在新的FIFO的空间状态没有传输过来之前,发送模块A确定剩余4个数据量的数据不可被接收模块B接收,不继续向接收模块B发送数据;等待接收模块B传输过来新的FIFO的空间状态后,再根据新的FIFO的空间状态进行剩余4个数据量的数据发送。
可见,发送端在发送数据之前不需要单个时钟周期内判断接收端是否接收成功,只需要根据发送端当前所需发送的数据量和接收端当前能够接收的接收量来判断是否可以继续发送数据到接收端。且发送模块A不需要每个时钟周期都获取FIFO的空间状态,不影响发送模块A向接收模块B正确传输数据,从而实现真正的单向通信。
需要说明的是,发送模块A和接收模块B既支持同步时钟处理,又支持异步时钟处理,可根据实际情况选择,本申请在此不做特别的限定。
本发明提供了一种芯片内部模块间通信系统,包括接收模块和发送模块。接收模块用于将自身包含的FIFO的空间状态发送至发送模块;发送模块用于根据预发送给接收模块的数据量及空间状态,判断当前预发送给接收模块的数据是否能够成功发送;若是,则将当前预发送给接收模块的数据发送给接收模块。可见,接收端将FIFO的空间状态传递给发送端且由发送端判断数据是否可以发送,发送端不必每个时钟周期都获取FIFO的空间状态,从而可以有效解耦发送端和接收端对时序的要求,提高了发送接收效率,且灵活了后端设计,降低了后端实现复杂度。
在上述实施例的基础上:
请参照图4,图4为本发明实施例提供的一种芯片内部模块间通信系统的具体结构示意图。
作为一种可选的实施例,接收模块B具体用于将表征自身包含的FIFO的空间状态的读指针格雷码发送至发送模块A;其中,读指针格雷码的bit间传输延迟差<接收端时钟周期;
则发送模块A具体用于根据读指针格雷码确定FIFO的空间状态。
具体地,接收模块B可将FIFO的空间状态采用读指针格雷码方式进行传输,则发送模块A根据读指针格雷码[Rcv Resp(Rptr-Gray)]确定FIFO的空间状态,即FIFO当前可继续接收的数据量。
需要说明的是,由于接收端空间传输读指针格雷码有多个bit,所以后端实现时要保证这些bit之间的传输延迟差小于一个接收端时钟周期,以保证接收端能正确采样接收端状态。
此外,发送模块A可设置用于累计发送模块A向接收模块B发送的数据量的本地写指针。发送模块A在每次接收到接收模块B传输过来的FIFO的空间状态后,均将本地写指针从0开始累计数值,具体是发送模块A向接收模块B发送1个数据量的数据后,将本地写指针加1处理,当本地写指针对应的数据量等于FIFO当前可继续接收的数据量时,不继续向接收模块B发送数据,等待接收模块B传输过来新的FIFO的空间状态。
请参照图5,图5为本发明实施例提供的一种芯片内部模块间通信系统的优化结构示意图。
作为一种可选的实施例,当从接收模块B直接到发送模块A的传输路径存在时序违例时,接收模块B具体用于将读指针格雷码延迟发送至发送模块A,以通过放大Max Delay约束来防止时序违例;其中,Max Delay为接收模块B向发送模块A发送读指针格雷码的延时时间。
具体地,在后端设计时,可能存在发送模块A和接收模块B之间时序违例(TimingViolation),时序违例是指数据逻辑传递延迟在一个时钟周期内无法满足接收端所要求的建立/保持时间,形成时序违例,从而导致逻辑错误。
如果从接收模块B直接到发送模块A的传输路径存在时序违例,可以在SDC(Synopsys Design Constraints,Synopsys设计约束)中通过格雷码传输特性放大MaxDelay(接收模块B向发送模块A发送读指针格雷码的延时时间)约束,以解决从接收模块B直接到发送模块A的传输路径存在的时序违例,对系统性能也不会产生任何影响。
请参照图6,图6为本发明实施例提供的一种接收端反馈读指针Max Delay Path的示意图。图6中接收端到发送端的传输路径可以设置max delay constraint(最大延迟约束),具体延迟值可以根据后端布线延迟确定,可以大于1个接收端时钟周期或发送端时钟周期。
作为一种可选的实施例,当从发送模块A直接到接收模块B的传输路径存在时序违例时,芯片内部模块间通信系统还包括:
串接于传输路径上的N个级联的D触发器;其中,N≥(发送模块A向接收模块B传输数据的延时时间/接收端时钟周期)-1;且N为正整数。
进一步地,如果从发送模块A直接到接收模块B的传输路径存在时序违例,可通过在发送模块A到接收模块B的传输路径上插入N个级联的D触发器进行优化时序,插入D触发器不会对系统性能产生任何影响。
具体地,插入D触发器进行优化时序的原理为:发送模块A和接收模块B内传输数据时便采用的是D触发器,接收模块B要求与相邻模块的通信满足单时钟周期Timing要求,在未插入D触发器之前,接收模块B要求与发送模块A的D触发器通信满足单时钟周期Timing要求,但发送模块A和接收模块B之间的传输距离太远,导致接收端无法满足单时钟周期Timing要求;而在插入D触发器之后,接收模块B要求与相邻连接的D触发器通信满足单时钟周期Timing要求,接收模块B和相邻连接的D触发器之间的传输距离较近,使得接收端可满足单时钟周期Timing要求。
需要说明的是,对于在发送模块A到接收模块B的传输路径上插入的D触发器的数量N,N≥(发送模块A向接收模块B传输数据的延时时间/接收端时钟周期)-1,比如,发送模块A向接收模块B传输数据的延时时间/接收端时钟周期=2,可在发送模块A到接收模块B的传输路径上插入1个D触发器。
作为一种可选的实施例,FIFO的待设计深度值在传输连续性的约束条件下,基于D触发器的级数及接收模块B向发送模块A发送FIFO的空间状态的延时时间确定。
进一步地,考虑到接收端的读指针格雷码传递到发送端可能无法在一个时钟周期内完成,所以为了满足传输的连续性,在设计接收模块B时需要考虑FIFO的深度设计。在发送模块A到接收模块B的传输路径上插入的D触发器的级数,及接收模块B向发送模块A发送FIFO的空间状态的延时时间Max Delay,都会影响FIFO的深度设计,如当一些特殊设计需要布线路径更长时,需要增加D触发器的个数时或者Max Delay约束需要进一步放大时,为了满足传输的连续性,需适当增加FIFO深度,所以在设计接收模块B时,FIFO的待设计深度值可在传输连续性的约束条件下,基于D触发器的级数及接收模块B向发送模块A发送FIFO的空间状态的延时时间确定。
需要说明的是,即使接收端的读指针格雷码被延迟多个时钟周期传递到发送端,只要接收端的FIFO深度设计合适,仍然不会影响通信性能。
作为一种可选的实施例,FIFO的待设计深度值=4+D触发器的级数+
((Max Delay/发送端时钟周期)+1);其中,Max Delay为接收模块B向发送模块A发送FIFO的空间状态的延时时间。
具体地,在设计接收模块B时,FIFO的待设计深度值可直接根据如下关系式确定:FIFO的待设计深度值=4+D触发器的级数+((Max Delay/发送端时钟周期)+1)。
作为一种可选的实施例,发送模块A具体用于将当前预发送给接收模块B的数据以数据包形式发送给接收模块B;
且发送模块A还用于在向接收模块B发送数据包的同时,将每个数据包的SOP和EOP发送给接收模块B;
则接收模块B还用于根据每个数据包的SOP和EOP区分开不同数据包。
具体地,发送模块A可将发送给接收模块B的数据以数据包的形式发送,与此同时,发送模块A还将每个数据包的SOP(Start Of Packet,数据包的起点)和EOP(End OfPacket,数据包的终点)发送给接收模块B,以使接收模块B根据每个数据包的SOP和EOP区分开不同数据包,便于后续数据包的处理。
请参照图7,图7为本发明实施例提供的一种数据包的组成结构图。
作为一种可选的实施例,数据包包括包头部分、数据部分及校验部分;包头部分包括表征数据源头ID的SID、表征数据目的ID的DID、用于对每个数据包进行连续编码的SEQ、表征用户发送命令的CMD及表征数据包的数据长度的PLD Len;校验部分包括用于对包头部分进行保护的ECC校验码和用于对数据部分进行保护的CRC校验码。
具体地,发送模块A向接收模块B发送的数据包分为包头部分、数据部分(各个模块可以按照各自特点定义PayLoad内部格式)及校验部分三部分,其中,数据包的包头部分包括SID(Source Device ID,源头设备ID),用于表示数据包从哪里发出、DID(DestinationDevice ID,目的设备ID),用于表示数据包最终发向哪里、SEQ(sequence,顺序),用于连续计数,表示发出的数据包是第几个数据包,以避免数据包丢失(只检测连续性)、CMD(Command Prompt,命令提示符),用于标记用户发送命令(各个模块可以按照各自特点定义CMD内容)、PLD Len(Payload length,数据包数据长度);数据包的校验部分包括ECC(ErrorCorrecting Code,错误检查和纠正)校验码,用于对包头部分进行保护、CRC(CyclicRedundancy Check,循环冗余校验)校验码,用于对数据部分进行保护。
请参照图8及图9,图8为本发明实施例提供的一种发送模块的结构示意图,图9为本发明实施例提供的一种接收模块的结构示意图。
作为一种可选的实施例,发送模块A包括:
HSI_TFF子模块,用于接收待发送数据,并将待发送数据按照预设数据包结构进行封包处理,且将封包处理得到的数据包按照接收模块B的接收数据位宽要求进行位宽转化,得到待发送数据包;
HSI_PTX子模块,用于接收接收模块B传输的FIFO的空间状态,并根据预发送给接收模块B的数据量及空间状态,判断FIFO是否处于非满状态;若是,则启动待发送数据包的发送操作;若否,则停止待发送数据包的发送操作;还用于在向接收模块B发送数据包的同时,将每个数据包的SOP和EOP发送给接收模块B;
接收模块B包括:
HSI_PRX_AFF子模块,用于接收发送模块A发送的数据包及每个数据包的SOP和EOP,以根据每个数据包的SOP和EOP区分开不同数据包;还用于将FIFO的空间状态发送至发送模块A;
HSI_PRX子模块,用于对区分开的每个数据包进行解析,并对解析后的数据包的包头部分进行ECC校验、数据部分进行CRC校验、包头部分的SID和DID进行发送接收错误检测、包头部分的SEQ进行数据包丢失检测、包头部分的PLD Len进行数据长度检查;
HSI_RFF子模块,用于基于后端子模块对数据包的数据处理要求,将校验完的数据包进行数据位宽转化及数据传输缓冲,以供后端子模块进行处理。
具体地,本申请的发送模块A(HSI_TX(High Speed Interface–
Transmitting,高速接口-发送))包括HSI_TFF(High Speed Interface–
Transmitting FIFO,高速接口-FIFO发送)子模块和HSI_PTX(High SpeedInterface–Packet Transmitting,高速接口-数据包发送)子模块,其工作原理为:
HSI_TFF子模块用于接收待发送数据,将待发送数据按照预设数据包结构(如图7所示数据包结构)进行封包处理,然后将封包处理得到的数据包按照接收模块B的接收数据位宽要求进行位宽转化,得到待发送数据包,并将待发送数据包传递给HSI_PTX子模块。其中,HSI_TFF子模块的HIS_TAFF用于数据包的包头部分的处理,HSI_TFF子模块的HIS_TDFF用于数据包的数据部分的处理,HSI_TFF子模块与其前端子模块的交互信号主要包括缓存握手信号和内部封包逻辑信号。
HSI_PTX子模块用于接收接收模块B传输的FIFO的空间状态(实际接收的是表征FIFO的空间状态的读指针格雷码),并根据预发送给接收模块B的数据量及FIFO的空间状态,判断FIFO是否处于非满状态;若FIFO处于非满状态,说明发送模块A可继续向接收模块B传递数据,则启动待发送数据包的发送操作;若FIFO处于满状态,说明发送模块A不可继续向接收模块B传递数据,则停止待发送数据包的发送操作。HSI_PTX子模块还用于在向接收模块B发送数据包的同时,将每个数据包的SOP和EOP发送给接收模块B,以使接收模块B根据每个数据包的SOP和EOP区分开不同数据包。
本申请的接收模块B(HSI_TX(High Speed Interface–Receiving,高速接口-接收))包括HSI_PRX_AFF(High Speed Interface–Packet Receiving Asynchronous FIFO,高速接口-FIFO数据包异步接收)子模块、HSI_PRX(High Speed Interface–PacketReceiving,高速接口-数据包接收)子模块及HSI_RFF(High Speed Interface–ReceivingFIFO,高速接口-FIFO接收)子模块,其工作原理为:
HSI_PRX_AFF子模块用于接收发送模块A发送的数据包及每个数据包的SOP和EOP,以根据每个数据包的SOP和EOP区分开不同数据包,并将区分开的每个数据包传递至HSI_PRX子模块。HSI_PRX_AFF子模块还用于将FIFO的空间状态(实际发送的是表征FIFO的空间状态的读指针格雷码)发送至发送模块A。
HSI_PRX子模块用于对区分开的每个数据包进行解析,具体按照如图7所示数据包结构对数据包进行解析,并对解析后的数据包进行一系列安全检查操作:1)对数据包的包头部分进行ECC校验,以对包头部分的内容进行错误检查和纠正;2)对数据包的数据部分进行CRC校验,以校验数据传输过程中可能出现的错误;3)对数据包的包头部分的SID和DID进行发送接收错误检测,以判断数据包的数据发送和数据接收是否正确;4)对数据包的包头部分的SEQ进行数据包丢失检测,若SEQ不连续,则确定数据包丢失;若SEQ连续,则确定数据包未丢失;5)对数据包的包头部分的PLD Len进行数据长度检查,以判断数据包的数据长度是否正确。在HSI_PRX子模块对整个数据包校验完后,将校验完的数据包发送至HSI_RFF子模块。
HSI_RFF子模块用于基于后端子模块对数据包的数据处理要求,将校验完的数据包进行数据位宽转化及数据传输缓冲,以供后端子模块进行处理。
综上,发送模块A和接收模块B之间采用将数据封包方式传递,数据包的包头部分采用ECC保护方式,数据部分采用CRC保护方式,并在包头部分中加入了防止包丢失和路由错误检查,相比于传统数据传输时采用的数据加奇偶校验方式相比,可以有效提高数据传输过程中的安全稳定性。
本申请还提供了一种芯片内部模块间通信方法,应用于芯片内发送模块,包括:
接收接收模块发送的其内包含的FIFO的空间状态;
根据预发送给接收模块的数据量及空间状态,判断当前预发送给接收模块的数据是否能够成功发送;
若是,则将当前预发送给接收模块的数据发送给接收模块。
本申请提供的通信方法的介绍请参考上述通信系统的实施例,本申请在此不再赘述。
本申请还提供了一种芯片内部模块间通信方法,应用于芯片内接收模块,包括:
接收发送模块发送的数据,并将接收的数据放入自身包含的FIFO;
将FIFO的空间状态发送至发送模块,以使发送模块根据预发送给接收模块的数据量及空间状态判断出当前预发送给接收模块的数据能够成功发送时再执行数据发送操作。
本申请提供的通信方法的介绍请参考上述通信系统的实施例,本申请在此不再赘述。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种芯片内部模块间通信系统,其特征在于,包括:
接收模块,用于将自身包含的FIFO的空间状态发送至发送模块;
发送模块,用于根据预发送给所述接收模块的数据量及所述空间状态,判断当前预发送给所述接收模块的数据是否能够成功发送;若是,则将当前预发送给所述接收模块的数据发送给所述接收模块;
其中,所述接收模块具体用于将表征自身包含的FIFO的空间状态的读指针格雷码发送至发送模块;其中,所述读指针格雷码的bit间传输延迟差<接收端时钟周期;
则所述发送模块具体用于根据所述读指针格雷码确定所述FIFO的空间状态;所述空间状态用于表征所述FIFO当前可继续接收的数据量;
并且,所述发送模块根据预发送给所述接收模块的数据量及所述空间状态,判断所述FIFO是否处于非满状态;若是,则启动待发送数据包的发送操作;若否,则停止所述待发送数据包的发送操作。
2.如权利要求1所述的芯片内部模块间通信系统,其特征在于,当从所述接收模块直接到所述发送模块的传输路径存在时序违例时,所述接收模块具体用于将读指针格雷码延迟发送至所述发送模块,以通过放大Max Delay约束来防止时序违例;其中,Max Delay为所述接收模块向所述发送模块发送读指针格雷码的延时时间。
3.如权利要求1所述的芯片内部模块间通信系统,其特征在于,当从所述发送模块直接到所述接收模块的传输路径存在时序违例时,所述芯片内部模块间通信系统还包括:
串接于所述传输路径上的N个级联的D触发器;其中,N≥(所述发送模块向所述接收模块传输数据的延时时间/接收端时钟周期)-1;且N为正整数。
4.如权利要求3所述的芯片内部模块间通信系统,其特征在于,所述FIFO的待设计深度值在传输连续性的约束条件下,基于所述D触发器的级数及所述接收模块向所述发送模块发送FIFO的空间状态的延时时间确定。
5.如权利要求4所述的芯片内部模块间通信系统,其特征在于,所述FIFO的待设计深度值=4+所述D触发器的级数+((Max Delay/发送端时钟周期)+1);其中,Max Delay为所述接收模块向所述发送模块发送FIFO的空间状态的延时时间。
6.如权利要求1所述的芯片内部模块间通信系统,其特征在于,所述发送模块具体用于将当前预发送给所述接收模块的数据以数据包形式发送给所述接收模块;
且所述发送模块还用于在向所述接收模块发送数据包的同时,将每个数据包的SOP和EOP发送给所述接收模块;
则所述接收模块还用于根据每个数据包的SOP和EOP区分开不同数据包。
7.如权利要求6所述的芯片内部模块间通信系统,其特征在于,所述数据包包括包头部分、数据部分及校验部分;所述包头部分包括表征数据源头ID的SID、表征数据目的ID的DID、用于对每个数据包进行连续编码的SEQ、表征用户发送命令的CMD及表征数据包的数据长度的PLD Len;所述校验部分包括用于对所述包头部分进行保护的ECC校验码和用于对所述数据部分进行保护的CRC校验码。
8.如权利要求7所述的芯片内部模块间通信系统,其特征在于,所述发送模块包括:
HSI_TFF子模块,用于接收待发送数据,并将所述待发送数据按照预设数据包结构进行封包处理,且将封包处理得到的数据包按照所述接收模块的接收数据位宽要求进行位宽转化,得到待发送数据包;
HSI_PTX子模块,用于接收所述接收模块传输的FIFO的空间状态,并根据预发送给所述接收模块的数据量及所述空间状态,判断所述FIFO是否处于非满状态;若是,则启动所述待发送数据包的发送操作;若否,则停止所述待发送数据包的发送操作;还用于在向所述接收模块发送数据包的同时,将每个数据包的SOP和EOP发送给所述接收模块;
所述接收模块包括:
HSI_PRX_AFF子模块,用于接收所述发送模块发送的数据包及每个数据包的SOP和EOP,以根据每个数据包的SOP和EOP区分开不同数据包;还用于将FIFO的空间状态发送至所述发送模块;
HSI_PRX子模块,用于对区分开的每个数据包进行解析,并对解析后的数据包的包头部分进行ECC校验、数据部分进行CRC校验、包头部分的SID和DID进行发送接收错误检测、包头部分的SEQ进行数据包丢失检测、包头部分的PLD Len进行数据长度检查;
HSI_RFF子模块,用于基于后端子模块对数据包的数据处理要求,将校验完的数据包进行数据位宽转化及数据传输缓冲,以供后端子模块进行处理。
9.一种芯片内部模块间通信方法,其特征在于,应用于芯片内发送模块,包括:
接收接收模块发送的其内包含的FIFO的空间状态;
根据预发送给所述接收模块的数据量及所述空间状态,判断当前预发送给所述接收模块的数据是否能够成功发送;
若是,则将当前预发送给所述接收模块的数据发送给所述接收模块;
其中,所述方法具体包括:
所述接收模块将表征自身包含的FIFO的空间状态的读指针格雷码发送至发送模块;其中,所述读指针格雷码的bit间传输延迟差<接收端时钟周期;则所述发送模块根据所述读指针格雷码确定所述FIFO的空间状态;所述空间状态用于表征所述FIFO当前可继续接收的数据量;
并且,所述方法具体包括:
所述发送模块根据预发送给所述接收模块的数据量及所述空间状态,判断所述FIFO是否处于非满状态;若是,则启动待发送数据包的发送操作;若否,则停止所述待发送数据包的发送操作。
10.一种芯片内部模块间通信方法,其特征在于,应用于芯片内接收模块,包括:
接收发送模块发送的数据,并将接收的数据放入自身包含的FIFO;
将所述FIFO的空间状态发送至所述发送模块,以使所述发送模块根据预发送给所述接收模块的数据量及所述空间状态判断出当前预发送给所述接收模块的数据能够成功发送时再执行数据发送操作;
其中,所述方法具体包括:
所述接收模块将表征自身包含的FIFO的空间状态的读指针格雷码发送至发送模块;其中,所述读指针格雷码的bit间传输延迟差<接收端时钟周期;则所述发送模块根据所述读指针格雷码确定所述FIFO的空间状态;所述空间状态用于表征所述FIFO当前可继续接收的数据量;
并且,所述方法还包括:
所述发送模块根据预发送给所述接收模块的数据量及所述空间状态,判断所述FIFO是否处于非满状态;若是,则启动待发送数据包的发送操作;若否,则停止所述待发送数据包的发送操作。
CN202011473817.2A 2020-12-15 2020-12-15 一种芯片内部模块间通信系统及方法 Active CN112506846B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011473817.2A CN112506846B (zh) 2020-12-15 2020-12-15 一种芯片内部模块间通信系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011473817.2A CN112506846B (zh) 2020-12-15 2020-12-15 一种芯片内部模块间通信系统及方法

Publications (2)

Publication Number Publication Date
CN112506846A CN112506846A (zh) 2021-03-16
CN112506846B true CN112506846B (zh) 2023-12-19

Family

ID=74973348

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011473817.2A Active CN112506846B (zh) 2020-12-15 2020-12-15 一种芯片内部模块间通信系统及方法

Country Status (1)

Country Link
CN (1) CN112506846B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102006036823A1 (de) * 2006-08-07 2008-02-14 Qimonda Ag Datensynchronisier- und -pufferschaltung zur Synchronisation von seriell empfangenen Datensignalen
CN101222433A (zh) * 2008-01-23 2008-07-16 华为技术有限公司 一种控制数据流量的方法、系统和装置
CN101873299A (zh) * 2009-04-24 2010-10-27 北京兴大豪科技开发有限公司 串行总线和通信方法及系统
CN111427828A (zh) * 2020-03-02 2020-07-17 深圳震有科技股份有限公司 一种spi流控方法、系统、主设备、从设备及存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102006036823A1 (de) * 2006-08-07 2008-02-14 Qimonda Ag Datensynchronisier- und -pufferschaltung zur Synchronisation von seriell empfangenen Datensignalen
CN101222433A (zh) * 2008-01-23 2008-07-16 华为技术有限公司 一种控制数据流量的方法、系统和装置
CN101873299A (zh) * 2009-04-24 2010-10-27 北京兴大豪科技开发有限公司 串行总线和通信方法及系统
CN111427828A (zh) * 2020-03-02 2020-07-17 深圳震有科技股份有限公司 一种spi流控方法、系统、主设备、从设备及存储介质

Also Published As

Publication number Publication date
CN112506846A (zh) 2021-03-16

Similar Documents

Publication Publication Date Title
Fang et al. Design and simulation of UART serial communication module based on VHDL
CN111131091B (zh) 一种面向片上网络的片间互连方法和系统
CN105515926B (zh) 一种基于fpga的二进制同步通信协议控制器
CN111200581B (zh) 基于lvds总线的数据收发模块
CN112118042B (zh) 一种基于星载光纤接口的数据传输方法及装置
Mahat Design of a 9-bit UART module based on Verilog HDL
CN114416626A (zh) 一种基于8b/10b编码的异步串行数据恢复方法
EP1374074A1 (en) Method and apparatus for improving time constraints and extending limited length cables in a multiple-speed bus
CN111324567B (zh) 一种实现串口通讯的方法及单片机系统
CN112506846B (zh) 一种芯片内部模块间通信系统及方法
CN101039323B (zh) 多速率多协议比特流处理器
US9094911B2 (en) Data communication system, method of optimizing preamble length, and communication apparatus
US8792348B1 (en) Serial link interface power control method and apparatus with selective idle data discard
US20230058854A1 (en) Method and system for sequencing data checks in a packet
Sowmya et al. Design of UART module using ASMD technique
CN111966623A (zh) Mcu与多个fpga使用spi进行实时全双工可靠通信的方法
US7701977B2 (en) Method and apparatus to align and standardize packet based parallel interfaces
CN111352893B (zh) 一种fpga和stm32单片机的通信方法
CN112491496A (zh) 一种基于fpga同步串口多级缓存接收转发方法
CN113726755B (zh) 一种slip协议数据的处理方法
CN117792579A (zh) 高速串行接口全双工模式下的应答包传输方法
CN110109615B (zh) 字节流转义字符硬件处理方法
CN114726482B (zh) 一种spi数据传输方法
JP5482306B2 (ja) データ転送制御装置及び電子機器
CN118158300A (zh) 一种基于hdlc协议的通信方法及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant