CN112948294B - 面向SOC的全域并行收发数据的双通道SpaceWire控制器及控制方法 - Google Patents
面向SOC的全域并行收发数据的双通道SpaceWire控制器及控制方法 Download PDFInfo
- Publication number
- CN112948294B CN112948294B CN202110297635.2A CN202110297635A CN112948294B CN 112948294 B CN112948294 B CN 112948294B CN 202110297635 A CN202110297635 A CN 202110297635A CN 112948294 B CN112948294 B CN 112948294B
- Authority
- CN
- China
- Prior art keywords
- data
- soc
- receiver
- spacewire
- bus
- 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
- 238000000034 method Methods 0.000 title claims abstract description 22
- 230000005540 biological transmission Effects 0.000 claims abstract description 62
- 238000004364 calculation method Methods 0.000 claims description 4
- 238000007726 management method Methods 0.000 description 41
- 230000009977 dual effect Effects 0.000 description 4
- 230000005856 abnormality Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
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
-
- 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/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及面向SOC的全域并行收发数据的双通道SpaceWire控制器及控制方法,属于芯片设计领域;采用读写分离的通道主动申请总线、自主并行收发数据,无需SOC中CPU参与;收发数据采用分时分块传输,每次猝发传输;并行传输数据通过增加CRC校验和ID号的机制保证数据传输的可靠性和一致性。本发明实现了高速总线控制器在数据链路端实现自主传输数据的要求,并可应用于SOC中含高速总线接口的设计中,具有较高的可移植性和通用性。
Description
技术领域
本发明属于SOC设计领域,涉及一种面向SOC的具备全域并行收发数据能力的双通道SpaceWire控制器及控制方法。
背景技术
SpaceWire总线是一种全双工的高速串行总线标准,总线传输的最大速率为400Mbps,典型工作速率为200Mbps。目前SpaceWire总线作为空间电子系统间的高速总线传输通道,具有速率高,传输数据量大的特点。现有的SpaceWire控制器通常配置一个专用的SRAM用来缓存数据,当SpaceWire总线传输大数据块的过程中,通常由CPU负责将大块的数据拆分成若干个小包后,发送到SpaceWire控制器的独有存储区中再发送;在接收数据过程中当 SpaceWire独有的存储区存满后,需要中断CPU,并由CPU帮助SpaceWire搬运数据,传送大数据块的过程中需要多次中断CPU,严重地影响了CPU执行其他任务。
发明内容
本发明解决的技术问题是:克服现有技术的不足,提出一种面向SOC的具备全域并行收发数据能力的双通道SpaceWire控制器及控制方法,实现了在 SOC内部,无需CPU参与的情况下,自主搬运数据,提高了数据存储的实时性和可靠性,从而提高了SOC的整体性能和可靠性,具有较高的可移植性和通用性。
本发明解决技术的方案是:
面向SOC的全域并行收发数据的双通道SpaceWire控制器,包括SOC 总线使用权控制模块、发送管理模块、接收管理模块、发送器A、发送器B、接收器A和接收器B;
SOC总线使用权控制模块:实时查询SOC总线网络的空闲状态和 SpaceWire数据请求状态,当SpaceWire数据请求和总线网络空闲同时有效时,获得SOC总线的使用权,并行实现发送管理模块和SOC可访问的存储器之间、接收管理模块和SOC可访问的存储器之间的数据搬运;
发送管理模块:向SOC总线使用权控制模块实时发送SpaceWire数据读取请求;将SOC总线使用权控制模块从SOC可访问的存储器读取的数据同时发送给发送器A和发送器B;
接收管理模块:向SOC总线使用权控制模块实时发送SpaceWire数据写入请求;当SOC总线使用权控制模块获得SOC总线的使用权后,对接收器A 和接收器B接收的数据进行校验和比对,将正确的数据通过SOC总线使用权控制模块写入SOC可访问的存储器。
SOC总线使用权控制模块采用独立的读通道和写通道并行读写SOC可访问的存储器;在独立的读、写通道采用独立的地址、控制和数据周期进行数据传输,保证全双工的SpaceWire总线并行执行发送数据和接收数据的搬运。
SOC总线使用权控制模块采用分时分块搬运数据的方式,分别在发送管理模块和SOC可访问的存储器之间搬运数据,在接收管理模块和SOC可访问的存储器之间搬运数据;
分时分块搬运数据的具体方法为:SOC总线使用权控制模块获得总线使用权后,采用猝发传输的方式,传输长度为128字节,如果数据长度fet_len小于等于128字节,则一次猝发传输完成后,释放总线;如果数据长度fet_len 大于128字节,则进行n次传输,每次传输完成后,均要求释放总线,然后再重新申请总线的使用权,以防止SpaceWire总线控制器长时间独占总线,影响 SOC的其他总线传输,传输次数n的计算方法:
n为fet_len%128向上取整的结果。
发送管理模块将SOC总线使用权控制模块从SOC可访问的存储器读取的数据添加CRC检验码和ID号,形成新的数据结构,发送给发送器A和发送器B。
ID号的取值范围为0~255,ID号从0开始,每发送一帧数据后,ID号加 1,当ID号达到255后,下一帧的ID号为0。
发送管理模块向发送器A和发送器B发送数据的过程中,实时监测 SpaceWire总线网络状态,若SpaceWire总线网络链接断开,则发送管理模块停止发送当前数据帧,并自动清空发送缓存中残留的数据。
接收管理模块对接收器A和接收器B接收的数据进行校验和比对,将正确的数据通过SOC总线使用权控制模块写入SOC可访问的存储器的实现方式如下:
接收管理模块分别对接收器A和接收器B接收的数据进行CRC校验,如果其中一个接收器接收到的数据中存在CRC校验错误,而另一接收器接收到的数据CRC校验正确,则将正确的数据通过SOC总线使用权控制模块写入 SOC可访问的存储器,同时产生错误通道号和错误类型;
如果两个接收器接收到的数据都存在CRC校验错误,则清空两接收器中的数据,并产生错误通道号和错误类型;
如果两个接收器接收到的数据CRC校验均正确,则进行ID号比配,如果 ID号一致,则将接收器A的数据通过SOC总线使用权控制模块写入SOC可访问的存储器;
如果两个接收器接收到的数据ID号不一致,则将接收到的数据分别存放到各自接收器的备份缓存中,设存放入接收器A备份缓存的数据为F(A’),存放入接收器B备份缓存的数据为F(B’),等待下一帧数据的接收;
设接收器A接收到的新一帧数据为F(A),接收器B接收到的新一帧数据为F(B),根据F(A’)、F(B’)、F(A)和F(B)这四帧数据ID号的关系,进行如下处理:
(1)如果F(A’)的ID=F(B)的ID且F(B’)的ID=F(A)的ID, F(A’)的ID<F(B’)的ID,则先将F(A’)通过SOC总线使用权控制模块写入SOC可访问的存储器,再将F(B’)通过SOC总线使用权控制模块写入SOC 可访问的存储器,最后清空接收器A缓存、接收器A备份缓存、接收器B缓存、接收器B备份缓存;
(2)如果F(A’)的ID=F(B)的ID,F(B’)的ID≠F(A)的ID,且F(B)的ID=上一帧已经写入SOC可访问存储器的数据ID+1,则将F(A’) 通过SOC总线使用权控制模块写入SOC可访问的存储器,清空接收器A缓存、接收器A备份缓存、接收器B缓存、接收器B备份缓存,并产生通道乱序中断,交由软件处理;
(3)如果F(B’)的ID=F(A)的ID,F(A’)的ID≠F(B)的ID,且F(A)的ID=上一帧已经写入SOC可访问存储器的数据ID+1,则将F(B’) 通过SOC总线使用权控制模块写入SOC可访问的存储器,清空接收器A缓存、接收器A备份缓存、接收器B缓存、接收器B备份缓存,并产生通道乱序中断,交由软件处理;
(4)如果F(A’)的ID=F(B)的ID,F(B’)的ID≠F(A)的ID,且F(B)的ID≠上一帧已经写入SOC可访问存储器的数据ID+1,则清空接收器A缓存、接收器A备份缓存、接收器B缓存、接收器B备份缓存,并产生通道乱序中断,交由软件处理;
(5)如果F(B’)的ID=F(A)的ID,F(A’)的ID≠F(B)的ID,且F(A)的ID≠上一帧已经写入SOC可访问存储器的数据ID+1,则清空接收器A缓存、接收器A备份缓存、接收器B缓存、接收器B备份缓存,并产生通道乱序中断,交由软件处理;
(6)如果F(A’)的ID≠F(B)的ID且F(B’)的ID≠F(A)的ID,则清空接收器A缓存、接收器A备份缓存、接收器B缓存、接收器B备份缓存,并产生通道乱序中断,交由软件处理。
当接收管理模块的接收缓存已经满且SOC总线网络的空闲状态无效时,接收器A和接收器B暂停接收数据帧,直到SOC总线网络的空闲状态有效后,将接收缓存的空间释放一些后,再继续接收剩余的数据。
发送器A和发送器B相同,按照SpaceWire协议编码并向外发送数据;
接收器A和接收器B相同,按照SpaceWire协议解码并接收数据。
面向SOC的全域并行收发数据的双通道SpaceWire控制方法,包括如下步骤:
发送管理模块向SOC总线使用权控制模块实时发送SpaceWire数据读取请求;
接收管理模块向SOC总线使用权控制模块实时发送SpaceWire数据写入请求;
SOC总线使用权控制模块实时查询SOC总线网络的空闲状态、SpaceWire 数据读取和写入请求状态,当SpaceWire数据读取和写入请求以及总线网络空闲同时有效时,获得SOC总线的使用权,并行实现对SOC可访问的存储器的读取和写入操作;
读取时,根据SpaceWire数据读取请求,从SOC可访问的存储器的指定地址读取指定长度的数据,发送给发送管理模块;
发送管理模块将接收的数据添加CRC检验码和ID号,形成新的数据结构,发送给发送器A和发送器B;同时,发送管理模块实时监测SpaceWire总线网络状态,若SpaceWire总线网络链接断开,则发送管理模块停止发送当前数据帧,并自动清空发送缓存中残留的数据;
写入时,接收管理模块对接收器A和接收器B接收的数据进行校验和比对,将正确的数据,根据SpaceWire数据写入请求通过SOC总线使用权控制模块写入SOC可访问的存储器的指定地址中。
本发明与现有技术相比的有益效果是:
(1)本发明针对高速总线控制器和存储器之间的数据搬运的接口设计,提出了一种主动请求存储器访问权的设计,由SpaceWire控制器主动申请并存取数据,不需要CPU在SpaceWire控制器和存储器之间负责搬运数据,提高了CPU的执行效率。
(2)本发明针对SpaceWire总线高速传输的可靠性问题,提出了一种双通道并行传输的方法,在有效数据中增加CRC校验信息和ID号信息,CRC校验信息能够检验每个通道传输数据的正确性,ID号能够保证双通道传输数据的同步性,解决了网络拥塞造成的数据延迟问题,提高了SpaceWire控制器在空间应用的可靠性。
附图说明
图1为本发明面向SOC的双通道SpaceWire控制器的结构;
图2为发送管理模块发送数据的数据结构;
图3为本发明双通道SpaceWire控制器在SOC中应用示例。
具体实施方式
下面结合附图对本发明作进一步阐述。
本发明设计了一种面向SOC的双通道SpaceWire控制器,该控制器能够实现在CPU无干预的情况下自主实现SOC内任一存储器的读写访问, SpaceWire控制器的发送数据和接收数据能够实现并行存取,SOC示例如图3 所示,该SOC内包括CPU,双通道的SpaceWire控制,其他外设控制器,还包括的存储器有片上存储器,片外的SRAM,EEPROM,NAND FLASH和DDR 存储器等,SpaceWire控制器能自主访问上述任一存储器,本发明能够释放 CPU为SpaceWire控制器搬运数据的压力,能够大大提高SpaceWire总线自主搬运数据的能力。
如图1所示,本发明包括如下模块:SOC总线使用权控制模块、发送管理模块、接收管理模块、发送器A、发送器B、接收器A和接收器B。
发送器A和发送器B相同,按照SpaceWire协议编码并向外发送数据;
接收器A和接收器B相同,按照SpaceWire协议解码并接收数据。
SOC总线使用权控制模块:实时查询SOC总线网络的空闲状态和 SpaceWire数据请求状态,当SpaceWire数据请求和总线网络空闲同时有效时,获得SOC总线的使用权,并行分时分块在发送管理模块和SOC可访问的存储器之间、接收管理模块和SOC可访问的存储器之间搬运数据。采用查询方式能够保证数据传输的实时性。
并行搬运数据的具体方法为:采用独立的读通道和写通道并行读写SOC 可访问的存储器;在独立的读写数据通道采用独立的地址、控制和数据周期进行数据传输,这样可以保证全双工的SpaceWire总线并行执行发送数据和接收数据的搬运。
分时分块搬运数据的具体方法为:获得总线使用权后,采用猝发传输的方式,传输长度为128字节,如果数据长度fet_len小于等于128字节,则一次猝发传输完成后,释放总线;如果数据长度fet_len大于128字节,则进行n 次传输,每次传输完成后,均要求释放总线,然后再重新申请总线的使用权,以防止SpaceWire总线控制器长时间独占总线,影响SOC的其他总线传输,传输次数n的计算方法:
n=fet_len%128向上取整的结果
发送管理模块:向SOC总线使用权控制模块实时发送SpaceWire数据读取请求;负责将搬运过来的待发送的数据增加CRC校验和ID号,并将待发送的数据同时写入到双通道SpaceWire控制器的发送器并同时发送,及异常处理。
发送数据的数据结构如图2所示。
发送数据CRC检验的计算公式:
crc_new[0]=crc_reg[30]^data[1]^crc_reg[24]^data[7];
crc_new[1]=data[6]^data[7]^data[0]^crc_reg[30]^crc_reg[31]^ data[1]^crc_reg[24]^crc_reg[25];
crc_new[2]=crc_reg[26]^data[5]^data[6]^data[7]^crc_reg[30]^ data[0]^data[1]^crc_reg[31]^crc_reg[24]^crc_reg[25];
crc_new[3]=data[4]^crc_reg[26]^data[5]^crc_reg[27]^data[6]^ data[0]^crc_reg[31]^crc_reg[25];
crc_new[4]=data[4]^crc_reg[26]^data[5]^crc_reg[27]^crc_reg[28]^data[7]^crc_reg[30]^data[1]^crc_reg[24]^data[3];
crc_new[5]=data[4]^crc_reg[27]^data[6]^crc_reg[28]^data[7]^ crc_reg[29]^crc_reg[30]^data[0]^data[1]^crc_reg[31]^data[2]^crc_reg[24]^data[3]^crc_reg[25];
crc_new[6]=crc_reg[26]^data[5]^data[6]^crc_reg[28]^crc_reg[29]^data[0]^crc_reg[30]^crc_reg[31]^data[1]^data[2]^data[3]^crc_reg[25];
crc_new[7]=data[4]^crc_reg[26]^data[5]^crc_reg[27]^data[7]^ crc_reg[29]^data[0]^crc_reg[31]^data[2]^crc_reg[24];
crc_new[8]=data[4]^crc_reg[27]^data[6]^crc_reg[28]^data[7]^ crc_reg[24]^crc_reg[0]^data[3]^crc_reg[25];
crc_new[9]=crc_reg[26]^data[5]^data[6]^crc_reg[28]^crc_reg[29]^data[2]^data[3]^crc_reg[25]^crc_reg[1];
crc_new[10]=data[4]^crc_reg[26]^crc_reg[2]^data[5]^crc_reg[27]^data[7]^crc_reg[29]^data[2]^crc_reg[24];
crc_new[11]=data[4]^crc_reg[27]^data[6]^crc_reg[3]^crc_reg[28]^data[7]^crc_reg[24]^data[3]^crc_reg[25];
crc_new[12]=crc_reg[26]^data[5]^data[6]^crc_reg[28]^data[7]^ crc_reg[4]^crc_reg[29]^crc_reg[30]^data[1]^data[2]^crc_reg[24]^data[3]^crc_reg[25];
crc_new[13]=data[4]^crc_reg[26]^data[5]^crc_reg[27]^data[6]^ crc_reg[29]^data[0]^crc_reg[30]^crc_reg[5]^crc_reg[31]^data[1]^data[2]^crc_reg[25];
crc_new[14]=data[4]^crc_reg[26]^data[5]^crc_reg[27]^crc_reg[28]^crc_reg[30]^data[0]^data[1]^crc_reg[31]^crc_reg[6]^ data[3];
crc_new[15]=data[4]^crc_reg[27]^crc_reg[28]^crc_reg[29]^data[0]^crc_reg[31]^data[2]^crc_reg[7]^data[3];
crc_new[16]=crc_reg[28]^data[7]^crc_reg[29]^data[2]^crc_reg[24]^data[3]^crc_reg[8];
crc_new[17]=crc_reg[9]^data[6]^crc_reg[29]^crc_reg[30]^data[1]^data[2]^crc_reg[25];
crc_new[18]=crc_reg[26]^data[5]^crc_reg[10]^crc_reg[30]^data[0]^data[1]^crc_reg[31];
crc_new[19]=data[4]^crc_reg[27]^crc_reg[11]^data[0]^crc_reg[31];
crc_new[20]=crc_reg[28]^crc_reg[12]^data[3];
crc_new[21]=crc_reg[29]^crc_reg[13]^data[2];
crc_new[22]=data[7]^crc_reg[14]^crc_reg[24];
crc_new[23]=data[6]^data[7]^crc_reg[30]^data[1]^crc_reg[15]^ crc_reg[24]^crc_reg[25];
crc_new[24]=crc_reg[26]^data[5]^data[6]^data[0]^crc_reg[31]^ crc_reg[16]^crc_reg[25];
crc_new[25]=data[4]^crc_reg[17]^crc_reg[26]^data[5]^crc_reg[27];
crc_new[26]=data[4]^crc_reg[18]^crc_reg[27]^crc_reg[28]^data[7]^crc_reg[30]^data[1]^crc_reg[24]^data[3];
crc_new[27]=data[6]^crc_reg[19]^crc_reg[28]^crc_reg[29]^data[0]^crc_reg[31]^data[2]^data[3]^crc_reg[25];
crc_new[28]=crc_reg[26]^data[5]^crc_reg[20]^crc_reg[29]^crc_reg[30]^data[1]^data[2];
crc_new[29]=data[4]^crc_reg[27]^crc_reg[21]^crc_reg[30]^data[0]^data[1]^crc_reg[31];
crc_new[30]=crc_reg[28]^data[0]^crc_reg[22]^crc_reg[31]^data[3];
crc_new[31]=crc_reg[29]^crc_reg[23]^data[2];
变量含义如下:
data[7:0]:当前待发送的SpaceWire数据,以字节为单位;
crc_reg[31:0],针对上一个已经发送的SpaceWire数据生成的CRC32校验码;
crc_new[31:0],针对当前data生成的CRC32检验码;
^:异或运算符。
ID号的取值范围为0~255,ID号从0开始,每发送一帧数据后,ID号加 1,当ID号达到255后,下一帧的ID号为0。
当数据发送过程中,SpaceWire总线网络发生断开链接的事件,则发送管理模块停止发送当前数据帧,并自动清空发送器中残留的数据。
发送管理模块与SOC总线使用权控制模块之间交互的信号有发送管理模块提供取数地址信号fet_addr、取数长度信号fet_len和取数请求信号fet_req; SOC总线使用权控制模块提供数据信号fet_rdata、数据有效信号fet_dvalid。
接收管理模块:向SOC总线使用权控制模块实时发送SpaceWire数据写入请求;负责对双通道接收的数据帧进行校验、ID号一致性比对与处理、数据上传及异常处理。
接收管理模块对从双通道接收到的数据进行CRC校验以及ID号比配,如果CRC校验正确且ID号一致,则将接收到的数据(默认A通道)自主传输到 SOC可访问的存储器中。
设接收器A为A通道,接收器B为B通道,接收数据CRC异常的设计方法:如果某一通道接收到的数据中存在CRC校验错误,而另一通道的数据正确,则将正确的数据自主传输到SOC可访问的存储器中,同时产生错误通道号和错误类型;如果两个通道接收到的数据都存在CRC校验错误,则清空两通道接收器中的数据,并产生错误通道号和错误类型。
接收数据ID号异常的设计方法:如果双通道接收到的数据仅ID号不一致,将接收到的数据分别存放到各自接收器的备份缓存中,等待下一帧数据的接收,当下一帧接收到的数据中ID号和备份缓存中的数据ID号一致且ID号较小的数据帧先上传到SOC可访问存储体中,然后再将ID号一致且较大的数据帧上传到SOC可访问的存储体中;如果备份缓存中的数据帧ID号和新接收到的数据帧ID号均不一致,则将两帧数据均清空,并产生通道乱序中断,交由软件处理。
具体实现方法如下:
如果两个接收器接收到的数据CRC校验均正确,ID号不一致,则将接收到的数据分别存放到各自接收器的备份缓存中,设存放入接收器A备份缓存的数据为F(A’),存放入接收器B备份缓存的数据为F(B’),等待下一帧数据的接收;
设接收器A接收到的新一帧数据为F(A),接收器B接收到的新一帧数据为F(B),根据F(A’)、F(B’)、F(A)和F(B)这四帧数据ID号的关系,进行如下处理:
(1)如果F(A’)的ID=F(B)的ID且F(B’)的ID=F(A)的ID, F(A’)的ID<F(B’)的ID,则先将F(A’)通过SOC总线使用权控制模块写入SOC可访问的存储器,再将F(B’)通过SOC总线使用权控制模块写入SOC 可访问的存储器,最后清空接收器A缓存、接收器A备份缓存、接收器B缓存、接收器B备份缓存;
(2)如果F(A’)的ID=F(B)的ID,F(B’)的ID≠F(A)的ID,且F(B)的ID=上一帧已经写入SOC可访问存储器的数据ID+1,则将F(A’) 通过SOC总线使用权控制模块写入SOC可访问的存储器,清空接收器A缓存、接收器A备份缓存、接收器B缓存、接收器B备份缓存,并产生通道乱序中断,交由软件处理;
(3)如果F(B’)的ID=F(A)的ID,F(A’)的ID≠F(B)的ID,且F(A)的ID=上一帧已经写入SOC可访问存储器的数据ID+1,则将F(B’) 通过SOC总线使用权控制模块写入SOC可访问的存储器,清空接收器A缓存、接收器A备份缓存、接收器B缓存、接收器B备份缓存,并产生通道乱序中断,交由软件处理;
(4)如果F(A’)的ID=F(B)的ID,F(B’)的ID≠F(A)的ID,且F(B)的ID≠上一帧已经写入SOC可访问存储器的数据ID+1,则清空接收器A缓存、接收器A备份缓存、接收器B缓存、接收器B备份缓存,并产生通道乱序中断,交由软件处理;
(5)如果F(B’)的ID=F(A)的ID,F(A’)的ID≠F(B)的ID,且F(A)的ID≠上一帧已经写入SOC可访问存储器的数据ID+1,则清空接收器A缓存、接收器A备份缓存、接收器B缓存、接收器B备份缓存,并产生通道乱序中断,交由软件处理;
(6)如果F(A’)的ID≠F(B)的ID且F(B’)的ID≠F(A)的ID,则清空接收器A缓存、接收器A备份缓存、接收器B缓存、接收器B备份缓存,并产生通道乱序中断,交由软件处理。
无法获得SOC总线使用权的设计方法:接收缓存已经满且无法获得SOC 总线网络的使用权时,SpaceWire控制器的接收器暂停接收数据帧停,直到获得SOC总线使用权后将接收缓存的空间释放一些后,再继续接收剩余的数据。
接收管理模块与SOC总线使用权控制模块之间交互的信号有接收管理模块提供存数地址信号str_addr、存数据信号str_wdata、存数据有效信号 str_dvalid、存数长度信号str_len和存数请求信号str_req;SOC总线使用权控制模块提供存数据完成信号str_done。
面向SOC的全域并行收发数据的双通道SpaceWire控制方法,包括如下步骤:
发送管理模块向SOC总线使用权控制模块实时发送SpaceWire数据读取请求;
接收管理模块向SOC总线使用权控制模块实时发送SpaceWire数据写入请求;
SOC总线使用权控制模块实时查询SOC总线网络的空闲状态、SpaceWire 数据读取和写入请求状态,当SpaceWire数据读取和写入请求以及总线网络空闲同时有效时,获得SOC总线的使用权,并行实现对SOC可访问的存储器的读取和写入操作;
读取时,根据SpaceWire数据读取请求,从SOC可访问的存储器的指定地址读取指定长度的数据,发送给发送管理模块;
发送管理模块将接收的数据添加CRC检验码和ID号,形成新的数据结构,发送给发送器A和发送器B;同时,发送管理模块实时监测SpaceWire总线网络状态,若SpaceWire总线网络链接断开,则发送管理模块停止发送当前数据帧,并自动清空发送缓存中残留的数据;
写入时,接收管理模块对接收器A和接收器B接收的数据进行校验和比对,将正确的数据,根据SpaceWire数据写入请求通过SOC总线使用权控制模块写入SOC可访问的存储器的指定地址中。
本发明采用读写分离的通道主动申请总线、自主并行收发数据,无需SOC 中CPU参与;收发数据采用分时分块传输,每次猝发传输;并行传输数据通过增加CRC校验和ID号的机制保证数据传输的可靠性和一致性。本发明实现了高速总线控制器在数据链路端实现自主传输数据的要求,并可应用于SOC 中含高速总线接口的设计中,具有较高的可移植性和通用性。
本发明说明书中未详细描述的内容为本领域技术人员公知技术。
Claims (9)
1.面向SOC的全域并行收发数据的双通道SpaceWire控制器,其特征在于:包括SOC总线使用权控制模块、发送管理模块、接收管理模块、发送器A、发送器B、接收器A和接收器B;
SOC总线使用权控制模块:实时查询SOC总线网络的空闲状态和SpaceWire数据请求状态,当SpaceWire数据请求和总线网络空闲同时有效时,获得SOC总线的使用权,并行实现发送管理模块和SOC可访问的存储器之间、接收管理模块和SOC可访问的存储器之间的数据搬运;
发送管理模块:向SOC总线使用权控制模块实时发送SpaceWire数据读取请求;将SOC总线使用权控制模块从SOC可访问的存储器读取的数据同时发送给发送器A和发送器B;
接收管理模块:向SOC总线使用权控制模块实时发送SpaceWire数据写入请求;当SOC总线使用权控制模块获得SOC总线的使用权后,对接收器A和接收器B接收的数据进行校验和比对,将正确的数据通过SOC总线使用权控制模块写入SOC可访问的存储器;
接收管理模块对接收器A和接收器B接收的数据进行校验和比对,将正确的数据通过SOC总线使用权控制模块写入SOC可访问的存储器的实现方式如下:
接收管理模块分别对接收器A和接收器B接收的数据进行CRC校验,如果其中一个接收器接收到的数据中存在CRC校验错误,而另一接收器接收到的数据CRC校验正确,则将正确的数据通过SOC总线使用权控制模块写入SOC可访问的存储器,同时产生错误通道号和错误类型;
如果两个接收器接收到的数据都存在CRC校验错误,则清空两接收器中的数据,并产生错误通道号和错误类型;
如果两个接收器接收到的数据CRC校验均正确,则进行ID号比配,如果ID号一致,则将接收器A的数据通过SOC总线使用权控制模块写入SOC可访问的存储器;
如果两个接收器接收到的数据ID号不一致,则将接收到的数据分别存放到各自接收器的备份缓存中,设存放入接收器A备份缓存的数据为F(A’),存放入接收器B备份缓存的数据为F(B’),等待下一帧数据的接收;
设接收器A接收到的新一帧数据为F(A),接收器B接收到的新一帧数据为F(B),根据F(A’)、F(B’)、F(A)和F(B)这四帧数据ID号的关系,进行如下处理:
(1)如果F(A’)的ID=F(B)的ID且F(B’)的ID=F(A)的ID,F(A’)的ID<F(B’)的ID,则先将F(A’)通过SOC总线使用权控制模块写入SOC可访问的存储器,再将F(B’)通过SOC总线使用权控制模块写入SOC可访问的存储器,最后清空接收器A缓存、接收器A备份缓存、接收器B缓存、接收器B备份缓存;
(2)如果F(A’)的ID=F(B)的ID,F(B’)的ID≠F(A)的ID,且F(B)的ID=上一帧已经写入SOC可访问存储器的数据ID+1,则将F(A’)通过SOC总线使用权控制模块写入SOC可访问的存储器,清空接收器A缓存、接收器A备份缓存、接收器B缓存、接收器B备份缓存,并产生通道乱序中断,交由软件处理;
(3)如果F(B’)的ID=F(A)的ID,F(A’)的ID≠F(B)的ID,且F(A)的ID=上一帧已经写入SOC可访问存储器的数据ID+1,则将F(B’)通过SOC总线使用权控制模块写入SOC可访问的存储器,清空接收器A缓存、接收器A备份缓存、接收器B缓存、接收器B备份缓存,并产生通道乱序中断,交由软件处理;
(4)如果F(A’)的ID=F(B)的ID,F(B’)的ID≠F(A)的ID,且F(B)的ID≠上一帧已经写入SOC可访问存储器的数据ID+1,则清空接收器A缓存、接收器A备份缓存、接收器B缓存、接收器B备份缓存,并产生通道乱序中断,交由软件处理;
(5)如果F(B’)的ID=F(A)的ID,F(A’)的ID≠F(B)的ID,且F(A)的ID≠上一帧已经写入SOC可访问存储器的数据ID+1,则清空接收器A缓存、接收器A备份缓存、接收器B缓存、接收器B备份缓存,并产生通道乱序中断,交由软件处理;
(6)如果F(A’)的ID≠F(B)的ID且F(B’)的ID≠F(A)的ID,则清空接收器A缓存、接收器A备份缓存、接收器B缓存、接收器B备份缓存,并产生通道乱序中断,交由软件处理。
2.根据权利要求1所述的面向SOC的全域并行收发数据的双通道SpaceWire控制器,其特征在于:SOC总线使用权控制模块采用独立的读通道和写通道并行读写SOC可访问的存储器;在独立的读、写通道采用独立的地址、控制和数据周期进行数据传输,保证全双工的SpaceWire总线并行执行发送数据和接收数据的搬运。
3.根据权利要求1所述的面向SOC的全域并行收发数据的双通道SpaceWire控制器,其特征在于:SOC总线使用权控制模块采用分时分块搬运数据的方式,分别在发送管理模块和SOC可访问的存储器之间搬运数据,在接收管理模块和SOC可访问的存储器之间搬运数据;
分时分块搬运数据的具体方法为:SOC总线使用权控制模块获得总线使用权后,采用猝发传输的方式,传输长度为128字节,如果数据长度fet_len小于等于128字节,则一次猝发传输完成后,释放总线;如果数据长度fet_len大于128字节,则进行n次传输,每次传输完成后,均要求释放总线,然后再重新申请总线的使用权,以防止SpaceWire总线控制器长时间独占总线,影响SOC的其他总线传输,传输次数n的计算方法:
n为fet_len%128向上取整的结果。
4.根据权利要求1所述的面向SOC的全域并行收发数据的双通道SpaceWire控制器,其特征在于:发送管理模块将SOC总线使用权控制模块从SOC可访问的存储器读取的数据添加CRC检验码和ID号,形成新的数据结构,发送给发送器A和发送器B。
5.根据权利要求4所述的面向SOC的全域并行收发数据的双通道SpaceWire控制器,其特征在于:ID号的取值范围为0~255,ID号从0开始,每发送一帧数据后,ID号加1,当ID号达到255后,下一帧的ID号为0。
6.根据权利要求1所述的面向SOC的全域并行收发数据的双通道SpaceWire控制器,其特征在于:发送管理模块向发送器A和发送器B发送数据的过程中,实时监测SpaceWire总线网络状态,若SpaceWire总线网络链接断开,则发送管理模块停止发送当前数据帧,并自动清空发送缓存中残留的数据。
7.根据权利要求1所述的面向SOC的全域并行收发数据的双通道SpaceWire控制器,其特征在于:当接收管理模块的接收缓存已经满且SOC总线网络的空闲状态无效时,接收器A和接收器B暂停接收数据帧,直到SOC总线网络的空闲状态有效后,将接收缓存的空间释放一些后,再继续接收剩余的数据。
8.根据权利要求1所述的面向SOC的全域并行收发数据的双通道SpaceWire控制器,其特征在于:
发送器A和发送器B相同,按照SpaceWire协议编码并向外发送数据;
接收器A和接收器B相同,按照SpaceWire协议解码并接收数据。
9.面向SOC的全域并行收发数据的双通道SpaceWire控制方法,其特征在于,所述控制方法利用权利要求1所述的面向SOC的全域并行收发数据的双通道SpaceWire控制器实现,包括如下步骤:
发送管理模块向SOC总线使用权控制模块实时发送SpaceWire数据读取请求;
接收管理模块向SOC总线使用权控制模块实时发送SpaceWire数据写入请求;
SOC总线使用权控制模块实时查询SOC总线网络的空闲状态、SpaceWire数据读取和写入请求状态,当SpaceWire数据读取和写入请求以及总线网络空闲同时有效时,获得SOC总线的使用权,并行实现对SOC可访问的存储器的读取和写入操作;
读取时,根据SpaceWire数据读取请求,从SOC可访问的存储器的指定地址读取指定长度的数据,发送给发送管理模块;
发送管理模块将接收的数据添加CRC检验码和ID号,形成新的数据结构,发送给发送器A和发送器B;同时,发送管理模块实时监测SpaceWire总线网络状态,若SpaceWire总线网络链接断开,则发送管理模块停止发送当前数据帧,并自动清空发送缓存中残留的数据;
写入时,接收管理模块对接收器A和接收器B接收的数据进行校验和比对,将正确的数据,根据SpaceWire数据写入请求通过SOC总线使用权控制模块写入SOC可访问的存储器的指定地址中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110297635.2A CN112948294B (zh) | 2021-03-19 | 2021-03-19 | 面向SOC的全域并行收发数据的双通道SpaceWire控制器及控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110297635.2A CN112948294B (zh) | 2021-03-19 | 2021-03-19 | 面向SOC的全域并行收发数据的双通道SpaceWire控制器及控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112948294A CN112948294A (zh) | 2021-06-11 |
CN112948294B true CN112948294B (zh) | 2024-02-09 |
Family
ID=76226949
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110297635.2A Active CN112948294B (zh) | 2021-03-19 | 2021-03-19 | 面向SOC的全域并行收发数据的双通道SpaceWire控制器及控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112948294B (zh) |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1044196A (zh) * | 1988-12-30 | 1990-07-25 | 阿尔卡特尔有限公司 | 使多总线多处理器系统解除阻断的方法 |
CN101477505A (zh) * | 2008-12-23 | 2009-07-08 | 北京中星微电子有限公司 | 一种主、从设备之间通过总线传输数据的方法 |
CN102487347A (zh) * | 2009-12-18 | 2012-06-06 | 哈尔滨工业大学 | 航天智能总线接口系统和使用该接口系统的航天智能网络系统 |
RU140982U1 (ru) * | 2012-10-09 | 2014-05-20 | Открытое акционерное общество Научно-производственный центр "Электронные вычислительно-информационные системы" (ОАО НПЦ "ЭЛВИС") | Микросхема адаптера удаленных устройств |
CN104135412A (zh) * | 2014-07-28 | 2014-11-05 | 北京航天自动控制研究所 | 一种面向多点互联应用的串行总线冗余通信方法 |
CN105187227A (zh) * | 2015-06-12 | 2015-12-23 | 北京航空航天大学 | 一种应用rmap协议实现can总线设备即插即用的装置 |
CN205091734U (zh) * | 2015-06-15 | 2016-03-16 | 珠海欧比特控制工程股份有限公司 | 一种基于CPCI接口的SpaceWire总线节点通讯模块 |
CN108234337A (zh) * | 2017-12-06 | 2018-06-29 | 北京时代民芯科技有限公司 | 一种支持主机接口的SpaceWire总线路由器 |
CN108462620A (zh) * | 2018-02-11 | 2018-08-28 | 北京控制工程研究所 | 一种吉比特级SpaceWire总线系统 |
CN109831349A (zh) * | 2018-12-27 | 2019-05-31 | 中国空间技术研究院 | 一种SpaceWire总线自由拓扑误码率测试系统及方法 |
CN110995604A (zh) * | 2019-11-28 | 2020-04-10 | 北京时代民芯科技有限公司 | 一种扩展SpaceWire端口的SpaceWire路由器级联结构 |
CN210666762U (zh) * | 2019-12-27 | 2020-06-02 | 珠海欧比特宇航科技股份有限公司 | 一种通用板卡 |
CN112468209A (zh) * | 2020-10-29 | 2021-03-09 | 西安空间无线电技术研究所 | 一种基于SpaceWire总线实现的在轨高速注入系统及方法 |
-
2021
- 2021-03-19 CN CN202110297635.2A patent/CN112948294B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1044196A (zh) * | 1988-12-30 | 1990-07-25 | 阿尔卡特尔有限公司 | 使多总线多处理器系统解除阻断的方法 |
CN101477505A (zh) * | 2008-12-23 | 2009-07-08 | 北京中星微电子有限公司 | 一种主、从设备之间通过总线传输数据的方法 |
CN102487347A (zh) * | 2009-12-18 | 2012-06-06 | 哈尔滨工业大学 | 航天智能总线接口系统和使用该接口系统的航天智能网络系统 |
RU140982U1 (ru) * | 2012-10-09 | 2014-05-20 | Открытое акционерное общество Научно-производственный центр "Электронные вычислительно-информационные системы" (ОАО НПЦ "ЭЛВИС") | Микросхема адаптера удаленных устройств |
CN104135412A (zh) * | 2014-07-28 | 2014-11-05 | 北京航天自动控制研究所 | 一种面向多点互联应用的串行总线冗余通信方法 |
CN105187227A (zh) * | 2015-06-12 | 2015-12-23 | 北京航空航天大学 | 一种应用rmap协议实现can总线设备即插即用的装置 |
CN205091734U (zh) * | 2015-06-15 | 2016-03-16 | 珠海欧比特控制工程股份有限公司 | 一种基于CPCI接口的SpaceWire总线节点通讯模块 |
CN108234337A (zh) * | 2017-12-06 | 2018-06-29 | 北京时代民芯科技有限公司 | 一种支持主机接口的SpaceWire总线路由器 |
CN108462620A (zh) * | 2018-02-11 | 2018-08-28 | 北京控制工程研究所 | 一种吉比特级SpaceWire总线系统 |
CN109831349A (zh) * | 2018-12-27 | 2019-05-31 | 中国空间技术研究院 | 一种SpaceWire总线自由拓扑误码率测试系统及方法 |
CN110995604A (zh) * | 2019-11-28 | 2020-04-10 | 北京时代民芯科技有限公司 | 一种扩展SpaceWire端口的SpaceWire路由器级联结构 |
CN210666762U (zh) * | 2019-12-27 | 2020-06-02 | 珠海欧比特宇航科技股份有限公司 | 一种通用板卡 |
CN112468209A (zh) * | 2020-10-29 | 2021-03-09 | 西安空间无线电技术研究所 | 一种基于SpaceWire总线实现的在轨高速注入系统及方法 |
Non-Patent Citations (6)
Title |
---|
SpaceWire总线的流量控制机制研究;赵云富;吴一帆;孙强;许娜;吴军;;微电子学与计算机(第01期);全文 * |
SpaceWire高速总线节点控制器的设计与实现;柳萌;安军社;史毅龙;江源源;姜文奇;;电子技术应用(第11期);全文 * |
基于AMBA总线的SpaceWire控制模块IP核设计;陈启宏;伊小素;王明;吴嘉宝;康阳;;电子测量技术(第03期);论文第1-4节,图2,图7 * |
多功能三通道200 Mb/s抗辐照SpaceWire节点控制器设计与实现;刘欢;陈卫国;王剑峰;吴龙胜;;微电子学与计算机(第11期);全文 * |
测试系统的SpaceWire节点控制器的研发;巴峰;陈湘陇;华广胜;经小川;杨铭;;现代测量与实验室管理(第02期);全文 * |
面向RMAP协议的SpaceWire节点IP核设计;赵光权;毛宁元;梁军;刘劲松;;计算机测量与控制(第12期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112948294A (zh) | 2021-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200174953A1 (en) | Methods and apparatus for synchronizing uplink and downlink transactions on an inter-device communication link | |
US11379278B2 (en) | Methods and apparatus for correcting out-of-order data transactions between processors | |
US4777595A (en) | Apparatus for transferring blocks of information from one node to a second node in a computer network | |
US4332027A (en) | Local area contention network data communication system | |
CN108132897B (zh) | 一种基于zynq平台软核的srio控制器 | |
CN108107827B (zh) | 一种基于zynq平台软核的srio控制方法 | |
US5721955A (en) | System for transferring portion of data to host from buffer if size of packet is greater than first threshold value but less than second threshold value | |
CN104866454B (zh) | 面向板级高速总线的写报文前瞻处理方法及装置 | |
US20040117368A1 (en) | Transmitting acknowledgements using direct memory access | |
CN100405309C (zh) | 文件控制系统和文件控制装置 | |
CN110120980B (zh) | 非稳定链路的可靠文件传输方法、计算机设备及存储介质 | |
US7603488B1 (en) | Systems and methods for efficient memory management | |
US8255601B2 (en) | Transmitting system, apparatus, and method | |
CN110798479B (zh) | 动态可重构高速串行总线与以太网的互操作装置与方法 | |
US20200034186A1 (en) | Methods and apparatus for verifying completion of groups of data transactions between processors | |
CN103368703B (zh) | 数据包重传方法、数据包接收方法及装置 | |
CN112948294B (zh) | 面向SOC的全域并行收发数据的双通道SpaceWire控制器及控制方法 | |
CN113904723B (zh) | 一种红外通讯方法及装置、存储介质及电子装置 | |
US20060015774A1 (en) | System and method for transmitting data in storage controllers | |
CN101056157B (zh) | 一种传输控制装置及其控制方法 | |
CN116266800A (zh) | 组播传输方法、装置和系统 | |
CN105099505B (zh) | 一种适用于脉冲超宽带无线网络的通信系统 | |
CN118502323B (zh) | 工业以太网数据的传输方法和fpga | |
US20170295237A1 (en) | Parallel processing apparatus and communication control method | |
CN115442267B (zh) | 一种基于arinc664协议的icmp方法 |
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 |