CN115687228B - 一种基于PCIe总线的星载固态存储***及方法 - Google Patents

一种基于PCIe总线的星载固态存储***及方法 Download PDF

Info

Publication number
CN115687228B
CN115687228B CN202310001279.4A CN202310001279A CN115687228B CN 115687228 B CN115687228 B CN 115687228B CN 202310001279 A CN202310001279 A CN 202310001279A CN 115687228 B CN115687228 B CN 115687228B
Authority
CN
China
Prior art keywords
data
storage
fifo
module
unit
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
CN202310001279.4A
Other languages
English (en)
Other versions
CN115687228A (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.)
National Space Science Center of CAS
Original Assignee
National Space Science Center of CAS
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 National Space Science Center of CAS filed Critical National Space Science Center of CAS
Priority to CN202310001279.4A priority Critical patent/CN115687228B/zh
Publication of CN115687228A publication Critical patent/CN115687228A/zh
Application granted granted Critical
Publication of CN115687228B publication Critical patent/CN115687228B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明属于星载固态存储器、航天存储与传输技术领域,具体涉及一种基于PCIe总线的星载固态存储***及方法。本发明***包括:数据接收模块接收外部主控模块CPU软件发送的工程数据和应用数据;数据存储模块接收数据接收模块解析的数据,并根据类别存储至存储阵列两个固定分区中;数据发送模块根据主控模块CPU软件指令回放存储模块中的延时数据,并发送至主控模块CPU软件;通信控制模块通过串行总线与主控模块CPU软件进行通信,完成存储相关指令控制与状态反馈;和时钟管理模块将外部输入的时钟由DCM生成FPGA内部需要的不同频率时钟,并生成全局复位信号。本发明高度模块化,逻辑清晰,功能划分明确,重用性强,可扩展性强。

Description

一种基于PCIe总线的星载固态存储***及方法
技术领域
本发明属于星载固态存储器、航天存储与传输技术领域,具体涉及一种基于PCIe总线的星载固态存储***及方法。
背景技术
星载总线技术在星载数据采集和传输中十分重要,目前在航天领域被广泛应用的总线或网络主要包括RS422,RS485,CAN总线,1553总线,LVDS等。虽然这些总线具有很广泛的应用,但是随着航天探测任务的复杂化和困难化,以及更先进的数据采集设备例如合成孔径雷达、多光谱成像仪被应用在了航天领域中,星载总线需要数据量日益增大,而这些总线在传输的速率、通信的距离,协议的配合以及功耗方面均存在不足。为了满足大容量数据传输和存储需求,需要应用更快速更稳定更高效的总线协议。
PCIe (peripheral component interconnect express)是一种高速串行计算机扩展总线标准,是由英特尔在2001年提出的,旨在替代旧的PCI(Peripheral ComponentInterconnect,***组件互联),PCI-X和AGP(Accelerated Graphical Port)总线标准。PCIe属于高速串行点对点双通道高带宽传输,所连接的设备独享通道带宽,不共享总线带宽,主要支持主动电源管理,错误报告,端对端的可靠性传输,热插拔以及服务质量(QOS)等功能。它的主要优势就是数据传输速率高,PCIe 3.0的速度可达8GT/s,而且还有相当大的发展潜力,适合航天场景下的数据传输。
星载固态存储***是卫星平台的关键***之一,作为数据枢纽支撑卫星任务的开展实施。星载固态存储***主要功能是接收来自主控模块计算机单元CPU软件的***工程数据(反映科学实验***各主控模块以及接口的工作状态数据)和应用数据(在轨产生的科学数据、视频数据和图像数据的总称),将其按照工参区、载荷区两个固定分区分类存储;在接收到计算机单元的回放指令后将数据读出发送至计算机单元;并完成与计算机单元的指令和状态交互。
当前星载固态存储***多为定制化设计,即根据不同的卫星型号任务需对有效载荷数据类型、存储容量、存储速率等需求重新进行方案设计,导致研发效率不高、重用性较差等,因此需对***进行层次化、模块化和规整化等架构设计,提高星载存储***的可重构性和普适性。
发明内容
本发明的目的在于克服现有技术缺陷,提出了一种基于PCIe总线的星载固态存储器***,本发明还公开了一种基于PCIe总线的星载固态存储器方法。
为达到上述目的,本发明通过下述技术方案实现。
本发明提出了一种基于PCIe总线的星载固态存储***,应用于存储硬件中,所述***包括:数据接收模块和数据存储模块;其中,
所述数据接收模块,用于接收外部主控模块发送的工程数据和应用数据,并进行PCIe物理层协议解析和数据应用层协议解析,生成对应的标识信号,并将数据乒乓缓存至对应的FIFO中;
所述数据存储模块,采用固定分区存储方式,根据数据类型对数据进行分别独立循环存储,并在收到回放指令后将延时数据取出传输至计算机单元CPU软件。
作为上述技术方案的一种改进,所述数据接收模块,包括:PCIe协议解析接收单元、应用层协议解析单元、科学数据编码前FIFO单元和工程数据编码前FIFO单元;其中,
所述PCIe协议解析接收单元,用于接收来自外部主控模块发送的工程数据和应用数据,采用PCIe专用IP核对接收的数据完成PCIe物理层协议解析,并将解析后的数据流转化后写入AXI总线;
所述应用层协议解析单元,用于接收PCIe协议解析接收单元解析后的工程数据、应用数据,对接收的数据进行数据包格式判别,并根据判别的数据类型将数据缓存至对应的工程数据FIFO或应用数据FIFO中,具体包括:若同步字为0x55AA且标识域为0xED1D,则判定数据为工程数据包并启动一次数据接收,并将接收的数据写入工程数据FIFO中缓存;若同步字为0x55AA且标识域为0x6D1D~0x6DFD,则判定为应用数据包并启动一次数据接收,并将接收的数据写入应用数据FIFO中缓存;若同步字不为0x55AA或同步字为0x55AA时标识域无效,则不接收数据;
所述科学数据编码前FIFO单元,用于设置应用数据FIFO相关参数,并提供prog_full信号给数据存储模块作为读FIFO触发条件;
所述工程数据编码前FIFO单元,用于设置工程数据FIFO相关参数,并提供prog_full信号给数据存储模块作为读FIFO触发条件。
作为上述技术方案的一种改进,所述数据存储模块,包括:RS编码管理单元、数据缓存单元、FLASH控制管理单元和存储数据输出单元;其中,
所述RS编码管理单元,用于接收数据接收模块缓存的工程数据和应用数据,并根据对应的标识信号,对有效数据进行RS纠错编码后,将数据乒乓缓存至数据缓存单元;
所述数据缓存单元,通过对SDRAM存储空间进行固定分区,其中分区I用来缓存工程数据;分区II用来缓存应用数据,然后等待存储调度写入FLASH芯片中;还用于生成反映各数据缓存区状态信号;
所述FLASH控制管理单元,用于完成对工程数据和应用数据的存储控制以及完成对FLASH芯片底层驱动的逻辑实现;
所述存储数据输出单元,用于对回放的延时存储数据进行RS译码,并写入FIFO缓存进行输出预处理操作。
作为上述技术方案的一种改进,所述数据缓存单元,通过对SDRAM存储空间进行固定分区,其中分区I用来缓存工程数据;分区II用来缓存应用数据,然后等待存储调度写入FLASH芯片中,具体包括:
当工程数据缓存FIFO或应用数据缓存FIFO任一缓存数据量达到阈值时,则启动对应缓存FIFO读操作;此时,若RS编码使能信号有效,则对读取的数据进行RS编码并写入异步乒乓FIFO缓存,若RS编码使能信号无效,则对读取的数据直接写入异步乒乓FIFO缓存;数据写入异步乒乓FIFO时记录对应通道号。
当任一异步FIFO缓存数据量达到256*128bits时,RS编码管理单元输出有效的对应异步乒乓FIFO半满信号,接收到RS编码后异步乒乓FIFO读使能信号后,输出对应FIFO缓存数据和通道号;
当存在异步乒乓FIFO半满信号有效时启动对应异步乒乓FIFO读操作和SDRAM写操作,并根据来自‘RS编码管理’模块的通道号将编码后的数据源包写入SDRAM对应分区缓存;
当SDRAM工程数据分区或应用数据分区的任一分区缓存数据量满4簇时,启动1次FLASH写操作,数据缓存单元根据来自FLASH控制管理单元的SDRAM读请求信号和读地址将目标数据从SDRAM中按簇读出并写入后端异步缓存FIFO;FLASH控制管理单元根据数据缓存单元发送的信号完成异步缓存FIFO一簇数据读取。
作为上述技术方案的一种改进,所述完成对FLASH芯片底层驱动的逻辑实现,具体包括:
生成FLASH存储器件操作的驱动信号并符合操作时序要求;操作包括复位、读、写和擦除;
自动在存储区的每一个已使用簇的空余区加载簇标记信息以及***时间码信息;
通过软件命令启动针对指定FLASH存储区的操作;
自动检测存储区内部出错的信息,并对出错的簇和块进行标记,并及时通知设备软件;
维护表示硬件工作状态的相关信息,且该信息可由软件从特定地址读取其内容;
每次加电后自动生成反映存储区所有块使用情况的BAT,并由软件从指定地址读取;
对计算机单元CPU软件发送的存储块地址进行自动管理,根据存储任务调度完成对通信控制模块中缓存的未使用块地址、待回放块地址、待擦除块地址、待标记无效块地址、CPU读簇地址的自动取用、校验与转发。
作为上述技术方案的一种改进,所述***还包括数据发送模块;所述数据发送模块,包括: SCI接收FIFO单元、ENG接收FIFO单元、数据调度单元和PCIe数据发送单元;其中,
所述SCI接收FIFO单元,用于接收数据存储模块回放的应用数据,进行跨时钟域处理;设置SCI接收FIFO相关参数,并提供prog_full信号给数据调度单元作为读FIFO触发条件;
所述ENG接收FIFO单元,用于接收数据存储模块回放的工程数据,进行跨时钟域处理;设置ENG接收FIFO相关参数,并提供prog_full信号给数据调度单元作为读FIFO触发条件;
所述数据调度单元,用于监测SCI接收FIFO单元和ENG接收FIFO单元的prog_full信号状态,若存在prog_full信号为‘1’时,则置位GPIO信号有效,通知CPU软件读取PCIe总线,否则GPIO输出高电平表示PCIe不可读;当SCI接收FIFO单元和ENG接收FIFO单元的prog_full信号均有效时,优先读取ENG接收FIFO即工程数据;
所述PCIe数据发送单元,用于在物理层时分复用数据接收模块相同链路,传输层由PCIe IP核自主仲裁调度;在CPU软件接收到GPIO信号有效后,发起读取PCIe总线请求,基于PCIe总线的星载固态存储***根据调度读取对应SCI接收FIFO或ENG接收FIFO,将数据放在AXI总线上由PCIe IP核读取并发送至CPU软件,完成数据传输。
作为上述技术方案的一种改进,所述***还包括通信控制模块;所述通信控制模块,包括:UART通信管理单元、BAT缓存管理单元和存储地址管理单元;其中,
所述BAT缓存管理单元,用于启动FLASH芯片复位配置操作,当完成对存储阵列所有FLASH芯片的复位配置后,由CPU软件指令启动BAT组织操作;
所述UART通信管理单元,用于监测UART总线通信状态,按照UART协议接收控制信息;并基于CPU软件与基于PCIe总线的星载固态存储***间命令帧和数据帧通信约束对收到的串行输入数据进行解析,若连续三个字节为0xEB90A1则认为检测到命令帧头,开始对命令帧中的参数进行接收和解析,否则一直判断收到的数据是否为0xEB90A1;在收到完整的命令帧后判断累加和是否正确,若正确则执行相应的命令并返回正确的应答;若不正确则不执行命令并返回相应的应答;将解析后的命令或状态,包括存储软复位、外部数据输入开关、RS编码开关、RS译码开关、存储初始化结束、FLASH芯片复位、数传状态、存储起始块计数、存储标记无效和存储时间码,转发至内部其他功能模块;用于根据指令,包括状态查询、读BAT和数据点读,分别完成数据查询,包括硬件状态字、BAT信息和指定簇,并反馈至CPU软件;还用于对接收到的命令帧进行累加和校验,若累加和正确,则进行指令解析或启动存储块地址接收缓存,若累加和不正确,则不进行指令解析,即不会进行命令转发或存储块地址等信息接收缓存,直接向CPU软件反馈帧错误信息;
所述存储地址管理单元,用于将解析后的多个存储新块地址、回放块地址和擦除块地址写入DPRAM分区进行管理,并根据存储状态信息进行内部存储地址的自主维护。
作为上述技术方案的一种改进,所述***还包括时钟管理模块;所述时钟管理模块,包括:主控时钟管理单元和复位逻辑管理单元;
所述主控时钟管理单元包括CSU5.1.1 DCM0,输入为外部晶振提供的时钟,输出用于SDRAM相关逻辑使用的时钟和NAND FLASH相关逻辑使用的时钟;
所述复位逻辑管理单元,用于产生各模块使用的复位信号,其中,DCM0输出的LOCKED信号经逻辑粘合后,生成uart_rst信号输出,仅供通信控制模块复位使用;DCM0输出产生的uart_rst复位信号与来自UART通信管理单元的UART指令复位cmd_FPGA_rst信号相与,然后经BUFG产生全局复位信号sys_rst,供除通信控制模块外其他模块复位使用。
本发明还提出了一种基于PCIe总线的星载固态存储方法,基于上述之一所述的***实现,所述方法包括:
存储硬件加电后,基于PCIe总线的星载固态存储***自动启动FLASH芯片复位配置操作,当完成对存储阵列所有FLASH芯片的复位配置后,由CPU软件指令启动BAT组织操作;在遍历存储阵列所有簇空余区的数据期间,进行相应汉明译码操作,当存储阵列NANDFLASH的BAT信息均被CPU读取后,存储***接收到“初始化结束”命令后进入常规任务管理状态;
数据存储模块监测来自内部数据缓存单元的各数据缓存区状态,当SDRAM任一分区缓存数据量满4簇时,数据存储模块根据任务调度启动1次FLASH写操作,向数据缓存模块发送SDRAM读请求信号,开始四级流水数据写入;
每级流水加载完有效数据后,清理相应的SDRAM空间使用标识;在编程结束后检测存储区内部编程状态,对出错的簇和块进行标记,并通知存储管理软件;若发生存储失败,则自动将失败簇数据重新写入替代块;
当数据存储模块接收到数据回放指令时,根据通信控制模块发送的回放地址,启动读FLASH操作,按簇将对应数据读出后发送至储数据输出单元;
当数据存储模块接收到数据擦除指令时,根据通信控制模块发送的擦除地址,按四级流水启动对FLASH块的擦除操作。
作为上述技术方案的一种改进,所述方法还设计了检错纠错编码保护机制和坏块管理机制:其中,
所述检错纠错编码保护机制具体为:
对于存储在NAND FLASH主存储区的数据,选用性能较高的RS编码技术,即工程数据和应用数据存储前先进行RS编码,然后写至主存储区,在数据回放时,先进行RS译码纠错,然后传输至CPU软件;
对于NAND FLASH每页空余区的辅助信息存储,选用简单可靠的汉明编码技术,即存储文件信息时进行汉明编码保护,在读取文件信息时,进行汉明译码纠错;
所述坏块管理机制具体为:
对于NAND FLASH芯片出厂时存在的无效块,将其作为静态坏块进行处理,不再使用;
对于在芯片的使用过程中新增的无效块,将其作为动态坏块由软件和硬件共同进行管理,具体方法包括:对于编程失败的情况,在本块内已经正常编程的页进行正常的读操作,但编程失败页本身的数据在另一个有效块中重新写入,同时对该块进行标记,避免以后对该块的进一步写入或擦除;对于擦除失效块,在基于PCIe总线的星载固态存储***中对该块进行标记无效,避免以后对该块的写入或擦除;动态坏块可选择今后不再使用,也可选择进行存储区维护后再次使用。
与现有技术相比,本发明的优势在于:
1.数据传输速率高,采用了高传输速率的PCIe总线用于载荷数据交互;
2.***接口简单且高度统一,外部数据接口仅采用PCIe总线,减少使用总线的类型,开发中无需对各种总线协议进行配置,减少设计复杂度;
3.***内部高度模块化,逻辑清晰,功能划分明确,重用性强,可扩展性强。
附图说明
图1是基于PCIe总线的星载固态存储***功能框图;
图2是基于PCIe总线的星载固态存储***结构图;
图3是数据存储通路数据流和控制流图;
图4是数据接收模块调用关系图
图5是数据存储模块调用关系图;
图6是RS编码管理模块调用关系图;
图7是数据缓存模块调用关系图;
图8是FLASH控制管理模块调用关系图
图9是存储数据输出模块调用关系图;
图10是四级流水写FLASH操作示意图;
图11是数据发送模块调用关系图;
图12是计算机单元通讯模块调用关系图;
图13是时钟管理模块调用关系图。
具体实施方式
本发明的目的在于,为解决现有星载固态存储***面临的问题,本发明提出了一种基于PCIe总线的星载固态存储***设计,将PCIe总线作为星载固态存储***的统一数据接口与上位机CPU进行数据的高速传输,极大提升了数据传输速率。内部各模块间统一使用AXI4总线通信,其速度可与PCIe高速接口相匹配。此外,本发明针对现有的星载固态存储***存在的繁冗复杂、通用性差、难升级、难维护、成本高等技术问题,提供了一种层次化、模块化和规整化的设计方法,具体含义如下:
1)层次化:将***划分为若干模块,然后更进一步划分每个模块直到这些模块功能足够明确。
2)模块化:所有模块有定义好的接口和功能,便于它们之间可以很容易地相互连接而不会产生副作用。
3)规整化:设计时在不影响功能的前提下追求各模块的一致性,通用模块可以复用,以便减少设计不同模块的数量。
从而实现星载固态存储***的标准化、可重构性和普适性,也有利于降低开发成本。
下面结合附图和实施例对本发明的技术方案进行详细的说明。
实施例1
如图1所示,为基于PCIe总线的星载固态存储***功能框图;如图2所示,为基于PCIe总线的星载固态存储***结构图。本发明的基于PCIe总线的星载固态存储***的功能主要包括:
1)数据接收功能;接收外部主控模块CPU软件发送的工程数据和应用数据;
2)数据存储功能;接收数据接收模块解析的数据,并根据类别存储至存储阵列两个固定分区中;
3)数据发送功能;根据主控模块CPU软件指令回放存储模块中的延时数据,并发送至主控模块CPU软件;
4)通信控制功能;通过串行总线与主控模块CPU软件进行通信,完成存储相关指令控制与状态反馈;
5)时钟管理功能;将外部输入的时钟由DCM生成FPGA(Field Programmable GateArray,现场可编程门阵列)内部需要的不同频率时钟,并生成全局复位信号。
***数据流和控制流
数据存储通路数据流和控制流如图3所示,图中曲线部分为数据流,虚线部分为控制流。
数据流:
基于PCIe总线的星载固态存储***通过1路x4 Lane PCIe接口接收来自外部CPU软件的***工程数据、应用数据;采用Xilinx提供的PCIe专用IP核完成PCIe物理层协议解析。
基于PCIe总线的星载固态存储***对接收到的数据进行数据包格式判别,若同步字为0x55AA且标识域为0xED1D,则判定数据为工程数据包并启动一次数据接收,一次数据接收长度为2024字节,并将接收的数据写入工程数据FIFO中缓存;若同步字为0x55AA且标识域为0x6D1D~0x6DFD,则判定为应用数据包并启动一次数据接收,一次数据接收长度为2024字节,并将接收的数据写入应用数据FIFO中缓存;若同步字不为0x55AA或同步字为0x55AA时标识域无效,则不接收数据。
***初始化结束后,若检测到工程数据缓存FIFO或应用数据缓存FIFO任一缓存数据量达到阈值(2016*16bits),则启动对应缓存FIFO读操作;此时,若RS(252,256)编码使能信号有效(默认编码使能信号有效),则对读取的数据进行RS编码并写入异步乒乓FIFO缓存,若RS(252,256)编码使能信号无效,则对读取的数据直接写入异步乒乓FIFO缓存;数据写入异步乒乓FIFO时记录对应通道号。
当任一异步FIFO缓存数据量达到256*128bits时,输出有效的对应异步乒乓FIFO半满信号,接收到RS编码后异步乒乓FIFO读使能信号后,输出对应FIFO缓存数据和通道号。
基于PCIe总线的星载固态存储***监测来自‘RS编码管理’模块的异步乒乓FIFO半满信号,当存在半满信号有效时启动对应异步乒乓FIFO读操作和SDRAM写操作,并根据来自‘RS编码管理’模块的通道号将编码后的数据源包写入SDRAM对应分区缓存。
数据缓存模块设计有反映各数据缓存区状态信号,供数据存储模块查询;当SDRAM平台工参数据分区或载荷科学数据分区的任一分区缓存数据量满4簇(4*4096*128bits)时,数据存储模块启动1次FLASH写操作,数据缓存模块根据来自‘FLASH控制管理’模块的SDRAM读请求信号和读地址将目标数据从SDRAM中按簇读出并写入后端异步缓存FIFO。FLASH控制管理模块根据数据缓存模块发送的缓存FIFO半满、簇数据读取结束等信号完成异步缓存FIFO一簇数据读取。
FLASH控制管理模块监测来自内部‘数据缓存模块’的各数据缓存区状态,当SDRAM任一分区缓存数据量满4簇(4*4096*128bits)时,数据存储模块根据任务调度启动1次FLASH写操作,向数据缓存模块发送SDRAM读请求信号和读地址,开始四级流水数据写入。
每级流水加载完有效数据后,将簇标记信息(包括时间码)写入FLASH簇空余区,并清理相应的SDRAM空间使用标识;在编程结束后检测存储区内部编程状态,对出错的簇和块进行标记,并通知CPU软件;若发生存储失败,则自动将失败簇数据重新写入替代块。
(FLASH页、簇、块:FLASH存储介质以每8K字节的主存储区(Main Array)外加448字节的空余区(Spare Array)为一页(Page),128页组成一个块(Block),8192块组成一个芯片器件(Device),选用的FLASH模块为4个芯片叠装而成。本设计中16个叠装模块内相同序号的芯片将被看作一个整体同时进行各种操作,即所谓的并行扩展操作。16片并行的FLASH芯片相同地址的页被看作一个基本单位,即“簇”,因此1“簇”的基本存储空间为8K×128bits。)
当基于PCIe总线的星载固态存储***处于‘开始数传’工作模式时,存储数据输出模块接收来自FLASH控制管理模块的回放数据;当RS(252,256)译码开关打开时(默认译码开关打开),存储数据输出模块在接收数据的同时进行RS译码,并根据回放通道标识将译码后数据写入对应一级缓存FIFO;当RS(252,256)译码开关关闭时,直接根据回放通道标识将有效数据写入对应一级缓存FIFO;两个一级缓存FIFO均设置为4096*128bits大小。
任一一级缓存FIFO内数据量达到阈值(504*128bits)时,且对应二级缓存FIFO有效时,启动读一级缓存FIFO写入对应二级缓存FIFO操作;两个二级缓存FIFO均设置为512*128bits大小。任一二级缓存FIFO内数据量达到阈值(126*128bits)时,将工程数据或应用数据发送至数据发送模块。当基于PCIe总线的星载固态存储***处于‘停止数传’工作模式时,一级缓存FIFO与二级缓存FIFO处于复位状态。
数据发送模块设置2个数据接收FIFO分别缓存存储数据输出模块发送的延时工程数据和延时应用数据,当任一缓存FIFO数据量达到2024字节,触发GPIO信号通知CPU软件读取PCIe,数据发送模块根据仲裁调度发送1包延时工程数据或延时应用数据至PCIe总线,完成1包数据的回放发送。
控制流:
通信模块控制监测UART总线通信状态,按照UART协议接收总线数据。
通信控制模块对收到的串行输入数据进行解析,若连续三个字节为0xEB90A1则认为检测到命令帧头,开始对命令帧中的参数进行接收和解析,否则一直判断收到的数据是否为0xEB90A1。
在收到完整的命令帧后判断累加和是否正确,若正确则执行相应的命令并返回正确的应答;若不正确则不执行命令并返回相应的应答。
通信控制模块将解析后的存储软复位、外部数据输入开关、RS编码开关、RS译码开关、存储初始化结束、Flash芯片复位、数传状态、存储起始块计数、存储标记无效、存储时间码等命令或状态转发至内部其他功能模块。
将解析后的多个存储新块地址、回放块地址和擦除块地址(最多各64块)写入DPRAM分区进行管理,并根据存储控制模块反馈的存储状态信息进行内部存储地址的自主维护;存储管理软件根据硬件状态字完成存储新块地址、回放块地址和擦除地址的自动管理与分发。
根据存储状态查询、读BAT(Block Assignment Table,块分配表)、数据点读指令分别完成硬件状态字、BAT信息、指定簇数据的查询反馈。
本发明将PCIe总线成功应用于星载固态存储***,实现了高速数据的有效传输,解决了传统数据总线对高速数据的支撑问题,达到了国内领先水平;
实施例2
本发明提出了一种星载固态存储***层次化、模块化和规整化的设计方法,实现了星载固态存储***的快速构建与项目实施,方案的普适性有效解决了***研发效率不高、重用性差等问题。
CSC1数据接收模块通过1路x4 Lane PCIe中数据接收接口接收来自CPU软件的工程数据、应用数据,进行PCIe物理层协议解析和数据应用层协议解析,生成对应的标识信号,并将数据乒乓缓存至对应FIFO中,调用关系如图4所示。
数据接收模块内部,包括PCIe协议解析接收、应用层协议解析、科学数据(SCI)编码前FIFO、工程数据(ENG)编码前FIFO模块等。
PCIe协议解析接收模块过1路x4 Lane PCIe接口接收来自外部CPU软件的工程数据、应用数据,例化Xilinx提供的DMA/Bridge Subsystem for PCI Express IP核完成PCIe物理层协议解析,解析后的数据流转化为64bits的数据写入AXI总线。
应用层协议解析模块对接收到的数据进行数据包格式判别:
1)若同步字为0x55AA且标识域为0xED1D,则判定数据为工程数据包并启动一次数据接收,一次数据接收长度为2024字节,并将接收的数据写入工程数据FIFO中缓存;
2)若同步字为0x55AA且标识域为0x6D1D~0x6DFD,则判定为应用数据包并启动一次数据接收,一次数据接收长度为2024字节,并将接收的数据写入应用数据FIFO中缓存;
3)若同步字不为0x55AA或同步字为0x55AA时标识域无效,则不接收数据。
科学数据(SCI)编码前FIFO模块设置应用数据FIFO写时钟250MHz,写深度为32768*64,读时钟32MHz,读深度为16384*128,prog_full信号阈值为252*128bit,并提供prog_full信号给“数据存储模块”作为读FIFO触发条件。
工程数据(ENG)编码前FIFO模块设置工程数据FIFO写时钟250MHz,写深度为32768*64,读时钟32MHz,读深度为16384*128,prog_full信号阈值为252*128bit,并提供prog_full信号给“数据存储模块”作为读FIFO触发条件。
CSC2数据存储模块主要实现对数据接收模块接收的工程数据和应用数据的编码缓存,然后将数据包存储至存储阵列中,并在收到回放指令后将延时数据取出传输至计算机单元CPU软件。CSC2数据存储模块主要包括RS编码管理、数据缓存模块、FLASH控制管理和存储数据输出四部分,调用关系如图5所示。
CSU2.1 RS编码管理主要完成对接收到的工程数据和应用数据进行RS(256,252)编码保护。RS编码管理模块接收数据接收模块缓存的工程数据和应用数据,根据对应的标识信号,将数据传输至RS(256,252)编码模块;对有效数据进行RS(256,252)纠错编码后,将数据乒乓缓存至数据缓存FIFO中。调用关系如图6所示。
CSU2.2数据缓存模块通过外部SDRAM芯片缓存RS编码后的平台数据和科学数据,然后等待存储调度写入FLASH芯片中。数据缓存模块支持对SDRAM存储空间进行固定分区,其中分区I用来缓存工程数据;分区II用来缓存应用数据;***初始化完成后,基于PCIe总线的星载固态存储***监测数据缓存FIFO的状态,当缓存数据量达到256*128bits时,根据工程数据或应用数据的数据类别将数据写入SDRAM对应分区分别缓存;当SDRAM工程数据分区或应用数据分区的任一分区缓存数据量满4簇时,启动1次FLASH写操作,将目标数据根据地址从SDRAM中按簇读出并写入后端SDRAM输出缓存FIFO。调用关系如图7所示。
CSU2.3 FLASH控制管理模块主要完成对工程数据和应用数据的存储控制以及对NAND FLASH芯片的底层驱动逻辑实现,包括:1)生成FLASH存储器件复位、读、写、擦除等操作的驱动信号并符合其时序要求;2)自动在存储区的每一个已使用簇的空余区加载簇标记信息以及***时间码信息;3)可通过软件命令启动针对指定FLASH存储区的复位、写、回放、擦除等操作;4)自动检测存储区内部编程、擦除等出错的信息,对出错的簇和块进行标记,并及时通知设备软件;5)具备表示硬件工作状态的相关信息,且该信息可由软件从特定地址读取其内容;6)每次加电后自动生成反映存储区所有块使用情况的“块分配表”(BAT),并可由软件从指定地址读取;7)支持对计算机单元CPU软件发送的存储块地址的自动管理,根据存储任务调度完成对通信控制功能中缓存的未使用块地址、待回放块地址、待擦除块地址、待标记无效块地址、CPU读簇地址的自动取用、校验与转发等功能。调用关系如图8所示。
CSU2.4存储数据输出模块对回放的延时存储数据进行RS译码,并写入FIFO缓存进行输出预处理操作,调用关系如图9所示。
数据存储模块内部,包括RS编码管理、数据缓存、FLASH控制管理模块等。
RS编码管理模块在***初始化结束后,若检测到应用数据缓存FIFO(CSU1. 3 SCI编码前FIFO)或工程数据缓存FIFO(CSU1. 4 ENG编码前FIFO)任一缓存数据量达到阈值(252*128bits),则启动对应缓存FIFO读操作;此时,若RS(252,256)编码使能信号有效(默认编码使能信号有效),则对读取的数据进行RS编码(CSU2.2.1 RS编码器0~ CSU2.2.16 RS编码器15)并写入异步乒乓FIFO缓存(SCU2.2.17 RS编码后FIFO_A或SCU2.2.18 RS编码后FIFO_B),若RS(252,256)编码使能信号无效,则对读取的数据直接写入异步乒乓FIFO缓存(SCU2.2.17 RS编码后FIFO_A或SCU2.2.18 RS编码后FIFO_B);数据写入异步乒乓FIFO时记录对应通道标识。
当任一异步FIFO(SCU2.2.17 RS编码后FIFO_A或SCU2.2.18 RS编码后FIFO_B)缓存数据量达到256*128bits时,输出有效的对应异步乒乓FIFO半满信号,接收到RS编码后异步乒乓FIFO读使能信号后,输出对应FIFO缓存数据和通道号。
数据缓存模块支持对SDRAM存储空间进行固定分区,其中分区I用来缓存工程数据;分区II用来缓存应用数据。设计SDRAM支持对科学数据和工程参数分区各缓存4组,每组4簇,每簇数据量4K*128bits。
***初始化完成后,基于PCIe总线的星载固态存储***监测来自CSU2.1 RS编码管理模块的数据接收缓存FIFO(SCU2.2.17 RS编码后FIFO_A或SCU2.2.18 RS编码后FIFO_B)的状态,当任一FIFO的缓存数据量达到256*128bits时,启动对应异步乒乓FIFO读操作和SDRAM写操作,并根据工程数据或应用数据的数据类别将数据写入SDRAM对应分区分别缓存。
数据缓存模块设计有反映各数据缓存区状态的信号,供CSU2.3 FLASH控制管理模块查询;当SDRAM平台工程数据分区或应用数据分区的任一分区缓存数据量满4簇(4*4096*128bits)时,数据存储模块启动1次FLASH写操作,数据缓存模块根据来自CSU2.3 FLASH控制管理模块的SDRAM读请求信号和读地址将目标数据从SDRAM中按簇读出并写入后端异步缓存FIFO(CSU2.2.2 SDRAM输出FIFO)。FLASH控制管理模块根据数据缓存模块发送的缓存FIFO半满、簇数据读取结束等信号完成异步缓存FIFO一簇数据读取。
基于PCIe总线的星载固态存储***根据Xilinx提供的DDR3 SDRAM相关IP核完成SDRAM底层逻辑驱动(CSU2.2.1 SDRAM底层驱动),并完成对SDRAM读、写等操作调度控制。
FLASH控制管理模块内部,包括FLASH复位配置、组织BAT、FLASH写、FLASH读、FLASH擦除模块等。
(1)存储方案设计
为提高存储吞吐率,数据存储模块设计采用四级流水线操作方案,即按四级流水进行NAND FLASH阵列的写和擦除操作,按簇进行NAND FLASH数据的读取操作。四级流水线操作示意图见图10。
存储区管理机制采用固定分区存储方式:根据任务要求,设置两个存储分区,根据数据类型进行分别存储,将工程数据存储至工程数据区,应用数据存储至应用数据分区,两个存储分区(工程数据区和应用数据区)的数据独立循环存储,任一存储区存满后,自动擦除最旧的部分数据,并以新数据覆盖;回放时首先回放工程数据区数据,然后再回放应用数据区数据。
(2)存储工作模式
1) 只写模式
将应用数据和工程数据记录至存储区中,不进行下传回放。
2) 只读模式
将存储区中延时应用数据和延时工程数据回放下传,不存储新数据。
3) 边擦边写模式
存储区存满后,即进入边写边擦模式,即在存储新数据时擦除最先存储的数据,以实现存储区的滚动存储。
4) 边写边读模式
支持边存储边回放工作模式,即存储新数据时,同时进行数据回放操作。
5) 边擦边写边读模式
存储区存满后,支持边擦除边写边回放工作模式。
(3)存储工作流程
存储硬件加电后,基于PCIe总线的星载固态存储***自动启动FLASH芯片复位配置操作(CSU2.3.1 FLASH复位配置),当完成对存储阵列所有FLASH芯片的复位配置后,由CPU软件指令启动BAT组织操作(CSU2.3.2 组织BAT)。在遍历存储阵列所有簇空余区的数据期间,进行相应汉明译码操作(CSU2.3.2.1 汉明译码0~ CSU2.3.2.4 汉明译码3),当存储阵列NAND FLASH的BAT信息均被CPU读取后,存储***接收到“初始化结束”命令后进入常规任务管理状态。
数据存储模块监测来自内部CSU2.2 数据缓存模块的各数据缓存区状态,当SDRAM任一分区缓存数据量满4簇(4*4096*128bits)时,数据存储模块根据任务调度启动1次FLASH写操作(CSU2.3.3 FLASH写),向数据缓存模块发送SDRAM读请求信号,开始四级流水数据写入。
每级流水加载完有效数据后,清理相应的SDRAM空间使用标识;在编程结束后检测存储区内部编程状态,对出错的簇和块进行标记,并通知存储管理软件;若发生存储失败,则自动将失败簇数据重新写入替代块。
当数据存储模块接收到数据回放指令时,根据CSC4 通信控制模块发送的回放地址,启动读FLASH操作(CSU2.3.4 FLASH读),按簇将对应数据读出后发送至CSU2.4 存储数据输出模块。
当数据存储模块接收到数据擦除指令时,根据CSC4 通信控制模块发送的擦除地址,按四级流水启动对FLASH块的擦除操作(CSU2.3.5 FLASH擦除)。
数据存储模块支持在调试过程中对FLASH任一簇主存储区和空余区的数据点读操作(CSU2.3.7 FLASH点读)。
数据存储模块采取的可靠性措施:
1) 检错纠错编码保护机制
针对NAND FLASH位翻转和单粒子翻转问题,设计检错纠错编码保护机制。对于存储在NAND FLASH主存储区的数据,选用性能较高的RS(256,252)编码技术,即工程数据和应用数据存储前先进行RS(256,252)编码,然后写至主存储区,在数据回放时,先进行RS(256,252)译码纠错,然后传输至CPU软件;对于NAND FLASH每页空余区的辅助信息存储,选用简单可靠的汉明编码技术,即存储文件信息时进行汉明编码保护,在读取文件信息时,进行汉明译码纠错。通过设计RS(256,252)编译码和汉明编译码保护机制,提高了数据存储的可靠性。
2) 坏块管理机制
NAND FLASH芯片的特点之一是在出厂时就存在一定比例的无效块,对无效块的读操作是允许的,但由于对无效块的写和擦除操作应尽量避免。对于出厂无效块的管理,根据厂家提供的测试手册和用户二次测试结果进行综合,将出厂无效块作为静态坏块进行处理,今后不再使用。
在芯片的使用过程中,有可能还会有新的无效块产生,具体表现为在编程或擦除过程中出现编程失败或擦除失败的情况。新增无效块作为动态坏块由软件和硬件共同进行管理,具体方法为对于编程失败的情况,在本块内已经正常编程的页可以进行正常的读操作,但编程失败页本身的数据在另一个有效块中重新写入,同时对该块进行标记,避免以后对该块的进一步写入或擦除。对于擦除失效块,在***中对该块进行标记(CSU2.3.6 FLASH标记无效),避免以后对该块的写入或擦除。动态坏块可选择今后不再使用,也可选择进行存储区维护后再次使用。
通过设计软硬件协同配合的坏块管理机制,可以保证数据的存储正确性和有效性。同时,存储管理设计损耗均衡机制,以尽可能减小动态坏块产生的几率。
在FPGA处于‘开始数传’工作模式时,CSU2.4 存储数据输出模块接收来自CSU2.3FLASH控制管理模块回放的延时数据;当RS(252,256)译码开关打开时(默认译码开关打开),“数据输出子模块”在接收数据的同时进行RS译码,并将译码后数据写入乒乓FIFO缓存;当RS(252,256)译码开关关闭时,直接将有效数据写入乒乓FIFO缓存;乒乓缓存两个FIFO均设置为8192*128bits大小;当任一乒乓FIFO非空,且后端CSC3数据发送模块对应类型接收FIFO非满,则读取CSU2.4 存储数据输出模块对应FIFO,然后将数据发送至CSC3数据发送模块。
数据发送模块主要实现将数据存储模块回放的延时数据发送至CARP CPU软件。数据发送模块通过在物理层时分复用“数据接收模块”中相同1路x4 Lane PCIe链路,根据监测的回放工程数据FIFO、回放应用数据FIFO的缓存状态,仲裁后读取对应FIFO中数据并通过PCIe发送接口将回放数据传输至计算机单元CPU软件中,完成回放数据的传输。调用关系如图11所示。
数据发送模块内部,包括SCI接收FIFO、ENG接收FIFO、数据调度、PCIe数据发送模块等。
SCI接收FIFO模块用于接收CSC2数据存储模块回放的应用数据,进行跨时钟域处理。
设置SCI接收FIFO写时钟32MHz,写深度为8192*128,读时钟250MHz,读深度为16384*64,prog_full信号阈值为253*64bit(1包数据),并提供prog_full信号给CSU3.3数据调度模块作为读FIFO触发条件。
ENG接收FIFO模块用于接收CSC2数据存储模块回放的工程数据,进行跨时钟域处理。
设置ENG接收FIFO写时钟32MHz,写深度为8192*128,读时钟250MHz,读深度为16384*64,prog_full信号阈值为253*64bit(1包数据),并提供prog_full信号给CSU3.3数据调度模块作为读FIFO触发条件。
数据调度模块监测CSU3.1 SCI接收FIFO和CSU3.2 ENG接收FIFO的prog_full信号状态,若存在prog_full信号为‘1’时,则置位GPIO信号有效,通知CPU软件读取PCIe总线,否则GPIO输出高电平表示PCIe不可读。
当CSU3.1 SCI接收FIFO和CSU3.2 ENG接收FIFO的prog_full信号均有效时,优先读取ENG接收FIFO即工程数据。
PCIe数据发送模块在物理层时分复用CSC1数据接收模块相同的1路x4 Lane PCIe链路,传输层由PCIe IP核自主仲裁调度。
在CPU软件接收到GPIO信号有效后,发起读取PCIe总线请求,基于PCIe总线的星载固态存储***根据调度读取对应SCI接收FIFO或ENG接收FIFO,将数据放在AXI总线上由PCIe IP核读取并发送至CPU软件,完成数据传输。
CSC4通信控制模块通过UART总线接收来自计算机单元CPU软件的UART协议数据,并完成UART协议的解析与命令转发;缓存CPU软件发送的存储块地址,将未使用块地址、待回放块地址、待擦除块地址等地址分别缓存至DPRAM不同存储空间中;锁存计算机单元发送的时间码信息、RS编码开启/关闭指令、RS译码开启/关闭指令、存储软复位指令等控制信息;组织存储硬件状态字信息、BAT表信息等状态信息,根据UART协议组织数据帧,发送至CPU软件完成数据交互。调用关系如图12所示。
通信控制模块内部,包括UART通信管理、BAT缓存管理、存储地址管理模块等。
BAT缓存管理模块在存储硬件加电后,基于PCIe总线的星载固态存储***自动启动FLASH芯片复位配置操作(CSU2.3.1 FLASH复位配置),当完成对存储阵列所有FLASH芯片的复位配置后,由CPU软件指令启动BAT组织操作(CSU2.3.2 组织BAT)。
UART通信管理模块监测UART总线通信状态,按照UART协议接收控制信息,CPU软件与基于PCIe总线的星载固态存储***间命令帧和数据帧通信约束详见6节CSCI数据。
UART通信管理模块对收到的串行输入数据进行解析,若连续三个字节为0xEB90A1则认为检测到命令帧头,开始对命令帧中的参数进行接收和解析,否则一直判断收到的数据是否为0xEB90A1;在收到完整的命令帧后判断累加和是否正确,若正确则执行相应的命令并返回正确的应答;若不正确则不执行命令并返回相应的应答。
UART通信管理模块将解析后的存储软复位、外部数据输入开关、RS编码开关、RS译码开关、存储初始化结束、Flash芯片复位、数传状态、存储起始块计数、存储标记无效、存储时间码等命令或状态转发至内部其他功能模块。
UART通信管理模块根据状态查询、读BAT、数据点读等指令分别完成硬件状态字、BAT信息、指定簇等数据查询反馈至CPU软件。
基于PCIe总线的星载固态存储***在扫描存储区组织BAT时,每组织1条BAT项,则启动1次BAT项写CSU4.1.1 BAT缓存DPRAM操作。当根据CPU软件指令组织完要求长度的BAT项后,CPU软件启动BAT项读取操作,BAT缓存管理模块根据CPU软件指令将CSU4.1.1 BAT缓存DPRAM中对应BAT项读出并发送至CPU软件,如此反复,直至所有BAT项读取完毕,即完成了存储区的硬件初始化操作。
存储地址管理模块将解析后的多个存储新块地址、回放块地址和擦除块地址(最多各64块)写入DPRAM分区进行管理,并根据存储控制模块反馈的存储状态信息进行内部存储地址的自主维护;计算机单元CPU软件根据存储硬件状态字完成对基于PCIe总线的星载固态存储***的存储新块地址、回放块地址和擦除地址的自动管理与下发。
UART通信管理模块对接收到的命令帧进行累加和校验,若累加和正确,则进行指令解析或启动存储块地址接收缓存,若累加和不正确,则不进行指令解析,即不会进行命令转发或存储块地址等信息接收缓存,直接向CPU软件反馈帧错误信息。
当CSU4.2 UART通信管理模块接收到“0x33 存储地址管理”命令帧后,状态机跳转至接收数据帧的状态中,等待过程中设置等待时间阈值为20ms(若主机在规定时间(20us到15ms之间)没有接收到从机发出的应答数据,则认为本通道上的信号本次传输失败。),若超时未接收到有效的数据帧,则自动接收本次数据帧的接收进程,并向CPU软件反馈帧错误信息。若接收到有效的数据帧,则先将当前两个通道写、回、擦分区各自的DPRAM指针锁存,然后将接收的存储块地址信息写入DPRAM中,待数据接收完成后,进行数据帧的累加和校验。若校验通过,则结束本次数据帧接收进程,若校验不通过,则使用预先锁存的指针恢复DPRAM至本次接收前状态,等效擦除掉刚接收的无效数据。
CSC5时钟管理模块将输入的100MHz时钟信号生成200MHz时钟信号作为SDRAM逻辑时钟,生成32MHz时钟信号作为存储逻辑时钟;将DCM产生的Locked信号处理后作为***全局复位信号;并支持设置CPU状态寄存器,作为***软复位信号。调用关系如图13所示。
时钟管理模块内部,包括主控时钟管理、复位逻辑管理模块等。
主控时钟管理模块主要由CSU5.1.1 DCM0组成,输入为外部晶振提供的100MHz时钟,输出用于SDRAM相关逻辑使用的200MHz时钟和NAND FLASH相关逻辑使用的32MHz时钟。
复位逻辑管理模块产生通信控制模块使用的复位信号和其他模块使用的复位信号。
DCM0输出的LOCKED信号经逻辑粘合后,生成uart_rst信号输出,仅供通信控制模块复位使用。
DCM0输出产生的uart_rst复位信号与来自通信管理模块的UART指令复位cmd_FPGA_rst信号相与,然后经BUFG产生全局复位信号sys_rst,供除通信控制模块外其他模块复位使用。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。

Claims (9)

1.一种基于PCIe总线的星载固态存储***,应用于存储硬件中,其特征在于,所述***包括:数据接收模块和数据存储模块;其中,
所述数据接收模块,用于接收外部主控模块发送的工程数据和应用数据,并进行PCIe物理层协议解析和数据应用层协议解析,生成对应的标识信号,并将数据乒乓缓存至对应的FIFO中;
所述数据存储模块,采用固定分区存储方式,根据数据类型对数据进行分别独立循环存储,并在收到回放指令后将延时数据取出传输至计算机单元CPU软件;
所述数据接收模块,包括:PCIe协议解析接收单元、应用层协议解析单元、科学数据编码前FIFO单元和工程数据编码前FIFO单元;其中,
所述PCIe协议解析接收单元,用于接收来自外部主控模块发送的工程数据和应用数据,采用PCIe专用IP核对接收的数据完成PCIe物理层协议解析,并将解析后的数据流转化后写入AXI总线;
所述应用层协议解析单元,用于接收PCIe协议解析接收单元解析后的工程数据、应用数据,对接收的数据进行数据包格式判别,并根据判别的数据类型将数据缓存至对应的工程数据FIFO或应用数据FIFO中,具体包括:若同步字为0x55AA且标识域为0xED1D,则判定数据为工程数据包并启动一次数据接收,并将接收的数据写入工程数据FIFO中缓存;若同步字为0x55AA且标识域为0x6D1D~0x6DFD,则判定为应用数据包并启动一次数据接收,并将接收的数据写入应用数据FIFO中缓存;若同步字不为0x55AA或同步字为0x55AA时标识域无效,则不接收数据;
所述科学数据编码前FIFO单元,用于设置应用数据FIFO相关参数,并提供prog_full信号给数据存储模块作为读FIFO触发条件;
所述工程数据编码前FIFO单元,用于设置工程数据FIFO相关参数,并提供prog_full信号给数据存储模块作为读FIFO触发条件。
2.根据权利要求1所述的基于PCIe总线的星载固态存储***,其特征在于,所述数据存储模块,包括:RS编码管理单元、数据缓存单元、FLASH控制管理单元和存储数据输出单元;其中,
所述RS编码管理单元,用于接收数据接收模块缓存的工程数据和应用数据,并根据对应的标识信号,对有效数据进行RS纠错编码后,将数据乒乓缓存至数据缓存单元;
所述数据缓存单元,通过对SDRAM存储空间进行固定分区,其中分区I用来缓存工程数据;分区II用来缓存应用数据,然后等待存储调度写入FLASH芯片中;还用于生成反映各数据缓存区状态信号;
所述FLASH控制管理单元,用于完成对工程数据和应用数据的存储控制以及完成对FLASH芯片底层驱动的逻辑实现;
所述存储数据输出单元,用于对回放的延时存储数据进行RS译码,并写入FIFO缓存进行输出预处理操作。
3.根据权利要求2所述的基于PCIe总线的星载固态存储***,其特征在于,所述数据缓存单元,通过对SDRAM存储空间进行固定分区,其中分区I用来缓存工程数据;分区II用来缓存应用数据,然后等待存储调度写入FLASH芯片中,具体包括:
当工程数据缓存FIFO或应用数据缓存FIFO任一缓存数据量达到阈值时,则启动对应缓存FIFO读操作;此时,若RS编码使能信号有效,则对读取的数据进行RS编码并写入异步乒乓FIFO缓存,若RS编码使能信号无效,则对读取的数据直接写入异步乒乓FIFO缓存;数据写入异步乒乓FIFO时记录对应通道号;
当任一异步FIFO缓存数据量达到256*128bits时,RS编码管理单元输出有效的对应异步乒乓FIFO半满信号,接收到RS编码后异步乒乓FIFO读使能信号后,输出对应FIFO缓存数据和通道号;
当存在异步乒乓FIFO半满信号有效时启动对应异步乒乓FIFO读操作和SDRAM写操作,并根据来自‘RS编码管理’模块的通道号将编码后的数据源包写入SDRAM对应分区缓存;
当SDRAM工程数据分区或应用数据分区的任一分区缓存数据量满4簇时,启动1次FLASH写操作,数据缓存单元根据来自FLASH控制管理单元的SDRAM读请求信号和读地址将目标数据从SDRAM中按簇读出并写入后端异步缓存FIFO;FLASH控制管理单元根据数据缓存单元发送的信号完成异步缓存FIFO一簇数据读取。
4.根据权利要求2所述的基于PCIe总线的星载固态存储***,其特征在于,所述完成对FLASH芯片底层驱动的逻辑实现,具体包括:
生成FLASH存储器件操作的驱动信号并符合操作时序要求;操作包括复位、读、写和擦除;
自动在存储区的每一个已使用簇的空余区加载簇标记信息以及***时间码信息;
通过软件命令启动针对指定FLASH存储区的操作;
自动检测存储区内部出错的信息,并对出错的簇和块进行标记,并及时通知设备软件;
维护表示硬件工作状态的相关信息,且该信息可由软件从特定地址读取其内容;
每次加电后自动生成反映存储区所有块使用情况的BAT,并由软件从指定地址读取;
对计算机单元CPU软件发送的存储块地址进行自动管理,根据存储任务调度完成对通信控制模块中缓存的未使用块地址、待回放块地址、待擦除块地址、待标记无效块地址、CPU读簇地址的自动取用、校验与转发。
5.根据权利要求1所述的基于PCIe总线的星载固态存储***,其特征在于,所述***还包括数据发送模块;所述数据发送模块,包括: SCI接收FIFO单元、ENG接收FIFO单元、数据调度单元和PCIe数据发送单元;其中,
所述SCI接收FIFO单元,用于接收数据存储模块回放的应用数据,进行跨时钟域处理;设置SCI接收FIFO相关参数,并提供prog_full信号给数据调度单元作为读FIFO触发条件;
所述ENG接收FIFO单元,用于接收数据存储模块回放的工程数据,进行跨时钟域处理;设置ENG接收FIFO相关参数,并提供prog_full信号给数据调度单元作为读FIFO触发条件;
所述数据调度单元,用于监测SCI接收FIFO单元和ENG接收FIFO单元的prog_full信号状态,若存在prog_full信号为‘1’时,则置位GPIO信号有效,通知CPU软件读取PCIe总线,否则GPIO输出高电平表示PCIe不可读;当SCI接收FIFO单元和ENG接收FIFO单元的prog_full信号均有效时,优先读取ENG接收FIFO即工程数据;
所述PCIe数据发送单元,用于在物理层时分复用数据接收模块相同链路,传输层由PCIe IP核自主仲裁调度;在CPU软件接收到GPIO信号有效后,发起读取PCIe总线请求,基于PCIe总线的星载固态存储***根据调度读取对应SCI接收FIFO或ENG接收FIFO,将数据放在AXI总线上由PCIe IP核读取并发送至CPU软件,完成数据传输。
6.根据权利要求1所述的基于PCIe总线的星载固态存储***,其特征在于,所述***还包括通信控制模块;所述通信控制模块,包括:UART通信管理单元、BAT缓存管理单元和存储地址管理单元;其中,
所述BAT缓存管理单元,用于启动FLASH芯片复位配置操作,当完成对存储阵列所有FLASH芯片的复位配置后,由CPU软件指令启动BAT组织操作;
所述UART通信管理单元,用于监测UART总线通信状态,按照UART协议接收控制信息;并基于CPU软件与基于PCIe总线的星载固态存储***间命令帧和数据帧通信约束对收到的串行输入数据进行解析,若连续三个字节为0xEB90A1则认为检测到命令帧头,开始对命令帧中的参数进行接收和解析,否则一直判断收到的数据是否为0xEB90A1;在收到完整的命令帧后判断累加和是否正确,若正确则执行相应的命令并返回正确的应答;若不正确则不执行命令并返回相应的应答;将解析后的命令或状态,包括存储软复位、外部数据输入开关、RS编码开关、RS译码开关、存储初始化结束、FLASH芯片复位、数传状态、存储起始块计数、存储标记无效和存储时间码,转发至内部其他功能模块;用于根据指令,包括状态查询、读BAT和数据点读,分别完成数据查询,包括硬件状态字、BAT信息和指定簇,并反馈至CPU软件;还用于对接收到的命令帧进行累加和校验,若累加和正确,则进行指令解析或启动存储块地址接收缓存,若累加和不正确,则不进行指令解析,即不会进行命令转发或存储块地址信息接收缓存,直接向CPU软件反馈帧错误信息;
所述存储地址管理单元,用于将解析后的多个存储新块地址、回放块地址和擦除块地址写入DPRAM分区进行管理,并根据存储状态信息进行内部存储地址的自主维护。
7.根据权利要求6所述的基于PCIe总线的星载固态存储***,其特征在于,所述***还包括时钟管理模块;所述时钟管理模块,包括:主控时钟管理单元和复位逻辑管理单元;
所述主控时钟管理单元包括CSU5.1.1 DCM0,输入为外部晶振提供的时钟,输出用于SDRAM相关逻辑使用的时钟和FLASH相关逻辑使用的时钟;
所述复位逻辑管理单元,用于产生各模块使用的复位信号,其中,DCM0输出的LOCKED信号经逻辑粘合后,生成uart_rst信号输出,仅供通信控制模块复位使用;DCM0输出产生的uart_rst复位信号与来自UART通信管理单元的UART指令复位cmd_FPGA_rst信号相与,然后经BUFG产生全局复位信号sys_rst,供除通信控制模块外其他模块复位使用。
8.一种基于PCIe总线的星载固态存储方法,基于权利要求2-7之一所述的***实现,所述方法包括:
存储硬件加电后,基于PCIe总线的星载固态存储***自动启动FLASH芯片复位配置操作,当完成对存储阵列所有FLASH芯片的复位配置后,由CPU软件指令启动BAT组织操作;在遍历存储阵列所有簇空余区的数据期间,进行相应汉明译码操作,当存储阵列FLASH的BAT信息均被CPU读取后,存储***接收到“初始化结束”命令后进入常规任务管理状态;
数据存储模块监测来自内部数据缓存单元的各数据缓存区状态,当SDRAM任一分区缓存数据量满4簇时,数据存储模块根据任务调度启动1次FLASH写操作,向数据缓存模块发送SDRAM读请求信号,开始四级流水数据写入;
每级流水加载完有效数据后,清理相应的SDRAM空间使用标识;在编程结束后检测存储区内部编程状态,对出错的簇和块进行标记,并通知存储管理软件;若发生存储失败,则自动将失败簇数据重新写入替代块;
当数据存储模块接收到数据回放指令时,根据通信控制模块发送的回放地址,启动读FLASH操作,按簇将对应数据读出后发送至储数据输出单元;
当数据存储模块接收到数据擦除指令时,根据通信控制模块发送的擦除地址,按四级流水启动对FLASH块的擦除操作。
9.根据权利要求8所述的基于PCIe总线的星载固态存储方法,其特征在于,所述方法还设计了检错纠错编码保护机制和坏块管理机制:其中,
所述检错纠错编码保护机制具体为:
对于存储在FLASH主存储区的数据,选用性能较高的RS编码技术,即工程数据和应用数据存储前先进行RS编码,然后写至主存储区,在数据回放时,先进行RS译码纠错,然后传输至CPU软件;
对于FLASH每页空余区的辅助信息存储,选用简单可靠的汉明编码技术,即存储文件信息时进行汉明编码保护,在读取文件信息时,进行汉明译码纠错;
所述坏块管理机制具体为:
对于FLASH芯片出厂时存在的无效块,将其作为静态坏块进行处理,不再使用;
对于在芯片的使用过程中新增的无效块,将其作为动态坏块由软件和硬件共同进行管理,具体方法包括:对于编程失败的情况,在本块内已经正常编程的页进行正常的读操作,但编程失败页本身的数据在另一个有效块中重新写入,同时对该块进行标记,避免以后对该块的进一步写入或擦除;对于擦除失效块,在基于PCIe总线的星载固态存储***中对该块进行标记无效,避免以后对该块的写入或擦除;动态坏块可选择今后不再使用,也可选择进行存储区维护后再次使用。
CN202310001279.4A 2023-01-03 2023-01-03 一种基于PCIe总线的星载固态存储***及方法 Active CN115687228B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310001279.4A CN115687228B (zh) 2023-01-03 2023-01-03 一种基于PCIe总线的星载固态存储***及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310001279.4A CN115687228B (zh) 2023-01-03 2023-01-03 一种基于PCIe总线的星载固态存储***及方法

Publications (2)

Publication Number Publication Date
CN115687228A CN115687228A (zh) 2023-02-03
CN115687228B true CN115687228B (zh) 2023-05-02

Family

ID=85057597

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310001279.4A Active CN115687228B (zh) 2023-01-03 2023-01-03 一种基于PCIe总线的星载固态存储***及方法

Country Status (1)

Country Link
CN (1) CN115687228B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116301266B (zh) * 2023-03-03 2023-11-17 无锡众星微***技术有限公司 一种基于安全认证的PCIe设备带内复位的方法和装置
CN116299463B (zh) * 2023-05-16 2023-08-08 四川天府新区北理工创新装备研究院 一种基于通用计算设备后端的小型sar成像***及方法
CN116501268B (zh) * 2023-06-28 2024-02-27 牛芯半导体(深圳)有限公司 应用于ddr phy的数据读取方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112181304A (zh) * 2020-09-30 2021-01-05 浙江大学 一种星载NAND Flash存储管理***

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105718219B (zh) * 2016-01-19 2018-12-04 浙江大学 基于usb3.0的高速数据传输存储的方法与模块
CN108304923B (zh) * 2017-12-06 2022-01-18 腾讯科技(深圳)有限公司 卷积运算处理方法及相关产品
CN110334040B (zh) * 2019-07-09 2020-11-06 中国科学院国家空间科学中心 一种星载固态存储***

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112181304A (zh) * 2020-09-30 2021-01-05 浙江大学 一种星载NAND Flash存储管理***

Also Published As

Publication number Publication date
CN115687228A (zh) 2023-02-03

Similar Documents

Publication Publication Date Title
CN115687228B (zh) 一种基于PCIe总线的星载固态存储***及方法
JP4477906B2 (ja) ストレージシステム
KR100962769B1 (ko) 수퍼차지 메시지 교환기
CN104520932B (zh) 闪存存储器控制器
CN101965559B (zh) 包括将处理器与内部存储器连接的交叉切换器的用于闪存的存储控制器
CN103282887A (zh) 用于进行后台操作的控制器和方法
CN101681323B (zh) 装置引导的存储器屏障
US10552047B2 (en) Memory system
CN112035381B (zh) 一种存储***及存储数据处理方法
CN103235760B (zh) 基于CLB总线的高利用率NorFLASH存储接口芯片
CN103116551B (zh) 应用于CLB总线的NorFLASH存储接口模块
CN103034454B (zh) 柔性闪存命令
CN102866971A (zh) 传输数据的装置、***及方法
CN101303884B (zh) 与非型闪存控制器和读写控制***及方法
CN110334040B (zh) 一种星载固态存储***
CN107491267B (zh) 一种基于lvds接口的高速图像数据存储装置
CN108628543B (zh) 垃圾回收方法以及使用该方法的装置
US8914587B2 (en) Multi-threaded memory operation using block write interruption after a number or threshold of pages have been written in order to service another request
CN104281413A (zh) 命令队列管理方法、存储器控制器及存储器储存装置
KR102645983B1 (ko) 오픈 채널 벡터 커맨드 실행
CN112597078A (zh) 数据处理***、存储器***和用于操作存储器***的方法
CN110737618B (zh) 内嵌处理器进行快速数据通信的方法、装置及存储介质
CN103019969A (zh) 闪存储存装置及其不良储存区域的判定方法
CN103092781A (zh) 闪存接口的有效利用
CN110119374A (zh) 应用处理器、汽车电子处理器和计算装置

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