CN101667837A - 一种基于理德-所罗门码的ecc控制器 - Google Patents

一种基于理德-所罗门码的ecc控制器 Download PDF

Info

Publication number
CN101667837A
CN101667837A CN200910034091A CN200910034091A CN101667837A CN 101667837 A CN101667837 A CN 101667837A CN 200910034091 A CN200910034091 A CN 200910034091A CN 200910034091 A CN200910034091 A CN 200910034091A CN 101667837 A CN101667837 A CN 101667837A
Authority
CN
China
Prior art keywords
decoding
coding
state
register
cpu
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
CN200910034091A
Other languages
English (en)
Other versions
CN101667837B (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.)
CCore Technology Suzhou Co Ltd
Original Assignee
CCore Technology Suzhou 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 CCore Technology Suzhou Co Ltd filed Critical CCore Technology Suzhou Co Ltd
Priority to CN201210406165.XA priority Critical patent/CN103067026B/zh
Priority to CN 200910034091 priority patent/CN101667837B/zh
Publication of CN101667837A publication Critical patent/CN101667837A/zh
Application granted granted Critical
Publication of CN101667837B publication Critical patent/CN101667837B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Error Detection And Correction (AREA)

Abstract

本发明涉及一种基于理德-所罗门码的ECC控制器,设有编码寄存器、解码寄存器、控制寄存器、状态寄存器、纠错逻辑、数据分割逻辑,控制模块,CPU在向编码寄存器或解码寄存器输入数据的同时,数据分割逻辑将编/解码数据以符号的方式传输到理德-所罗门码编/解码模块内,进行编/解码处理,实现了单一数据流完成数据传输过程和相应ECC码或纠错码产生的过程,且实现了数据传输与ECC码或纠错码运算并行处理的ECC控制器。

Description

一种基于理德-所罗门码的ECC控制器
技术领域
本发明涉及一种编/解码控制器,具体涉及一种基于理德-所罗门码的ECC控制器,属于数据存储领域。
背景技术
随着嵌入式技术在各种电子产品中的广泛应用,嵌入式系统中的数据存储器成为必不可少的部件,这就存在大量的储存介质,为了保证储存介质中数据的可靠性,系统通常包括一个编/解码控制器,用来对存储数据进行编码,将编码后的数据存入储存介质中,当用户需要读取储存介质内数据时,编/解码控制器对读回的数据进行解码,解码过程中一旦发现有错误码,编/解码控制器进行纠错操作,保证了数据的可靠性。
附图1为现有的编/解码控制器应用框图,现有的编/解码控制器需要配合直接存储访问控制器102、内部存储器103和外部存储器接口206来工作。
编码时,原始数据存储在内部存储器103中,CPU使能直接存储访问控制器102,同时配置源地址为内部存储器103的地址,目的地址为外部存储器207的地址,原始数据在直接存储访问控制器102的控制下,由系统总线传输经外部存储器接口206将编码数据传入外部存储器207中,同时,通过外部存储器接口206的原始数据又经过编/解码控制器内部系统总线传入编/解码模块106进行编码运算。当原始数据全部传输结束后,编/解码模块106会将相应生成的ECC码存储在总线接口中,CPU通过系统总线读取该ECC码,并通过外部存储器接口206将ECC码存储在外部存储器207中,完成编码过程。
解码时,解码数据存储在外部存储器207中,CPU使能直接存储访问控制器102,配置源地址为外部存储器207的地址,目的地址为内部存储器103的地址,解码数据在直接存储访问控制器102的控制下,由系统总线传输经外部存储器接口206将解码数据传入内部存储器103中,同时,通过外部存储器接口206的解码数据又经过编/解码控制器内部系统总线传入编/解码模块106进行解码运算。
当解码数据全部传输结束后,如果没有发现错误,解码运算结束;如果发现错误,编/解码模块106会计算出解码数据中错误码的地址和纠错码并存储在总线接口模块中,CPU通过系统总线读取该错误码地址和纠错码,并通过错误码地址从内部存储器103中读回错误码,与纠错码运算后生成正确数据并通过系统总线将正确数据写回到内部存储器103,完成解码过程。
现有技术,比较适合大批量数据进行编/解码运算的场合,但是针对小批量数据的编/解码运算而言,传统的应用架构不仅在结构上比较繁杂,需要增加其它功能模块来配合工作,且要配置各个模块来协调工作,所以导致整个编/解码过程耗时长、控制复杂、效率低。
发明内容
本发明要解决的技术问题是提供一种采用单一数据流完成数据传输过程和相应ECC码或纠错码产生的过程,且实现数据传输与ECC码或纠错码运算并行处理的ECC控制器。
为达到上述目的,本发明采用的技术方案是:一种基于理德-所罗门码的ECC控制器,该ECC控制器包括:理德-所罗门码编/解码模块,系统总线接口、数据分割逻辑以及控制模块。
所述理德-所罗门码编/解码模块主要由编码电路、译码求解电路、错误符号地址求解电路和纠错码求解电路组成,当处于编码状态时,用于对编码数据进行运算生成相应的ECC码,当处于解码状态时,用于判断解码数据是否存在错误符号,如存在则计算生成错误符号地址和对错误符号进行纠错的纠错码。
所述ECC控制器还包括系统总线接口、数据分割逻辑以及控制模块。
所述系统总线接口,主要由编码寄存器、解码寄存器、控制寄存器、状态寄存器、纠错逻辑组成;编码寄存器用于存放编码数据和ECC码,CPU将编码数据写入编码寄存器,触发理德-所罗门码编/解码模块工作,编码寄存器与数据分割逻辑连接;解码寄存器用于存放解码数据,CPU将解码数据写入解码寄存器,触发理德-所罗门码编/解码模块工作,解码寄存器与所述数据分割逻辑连接;控制寄存器用于接收CPU输出的控制信息,将其转化为相应的控制信号输出到控制模块,通过控制模块实现CPU对编/解码过程的控制,其与所述控制模块连接;状态寄存器,用于接收标识所述ECC控制器的状态信息,实现CPU对所述ECC控制器的状态查询,其与所述控制模块连接;纠错逻辑用于对解码数据进行符号纠错,纠错逻辑接收理德-所罗门码编/解码模块在解码过程中生成的错误符号地址和对应的纠错码,同时接收解码寄存器中错误符号地址对应的错误符号,对错误符号和纠错码进行运算后得到正确符号并将正确符号传输到解码寄存器,从而将错误符号更新为正确符号,其与解码寄存器、理德-所罗门码编/解码模块连接。
所述数据分割逻辑,用于将编码或解码数据划分为若干个符号分多个时钟周期输入所述理德-所罗门码编/解码模块,同时,会触发外部总线至等待状态,禁止CPU的访问,防止因CPU的误操作而导致编/解码无法正常结束的现象。
所述控制模块,包含一组状态机,响应数据分割逻辑、理德-所罗门码编/解码模块的反馈信号及CPU对编码寄存器、解码寄存器和控制寄存器的操作,产生相应的控制信号,控制编/解码过程,并将理德-所罗门码编/解码模块的状态反馈到CPU可查询的所述状态寄存器内,同时完成不同状态之间的跳转,其中一组状态机包括:
(1)空闲状态,所述ECC控制器处于空闲状态,控制模块正在监测CPU的操作;
(2)编码初始化状态,用于启动编码流程,对理德-所罗门码编/解码模块在编码过程中使用到的相关变量进行初始化。当有数据写入编码寄存器时,使能所述编码电路,使得编码电路处于编码工作状态;
(3)解码初始化状态,用于启动解码流程,对理德-所罗门码编/解码模块在解码过程中使用到的相关变量进行初始化。当有数据写入解码寄存器时,使能所述编码电路,使得编码电路处于解码工作状态;
(4)正常编码状态,用于响应CPU对编码寄存器的操作,触发理德-所罗门码编/解码模块对编码寄存器内数据进行编码操作;
(5)正常解码状态,用于响应CPU对解码寄存器的操作,触发理德-所罗门码编/解码模块对解码寄存器内数据进行解码操作;
(6)编码成功状态,用于判断编码是否结束,并将此编码成功状态信息输入可供CPU查询的状态寄存器内;
(7)解码成功状态,用于判断解码是否结束,并将此解码成功状态信息输入可供CPU查询的状态寄存器内;
(8)译码状态,当编码电路工作在解码状态时输出的解码伴随式S(X)不为‘0’时跳转到该译码状态,使能所述译码求解电路产生错误位置多项式L(x)和错误值多项式W(x);
(9)查错状态,用于使能错误符号地址求解电路和纠错码求解电路查找错误符号的具体位置并计算纠错码。
上述技术方案中的有关内容解释如下:
1、上述方案中,还包括选通器,用于在编码和解码工作状态下复用所述数据分割逻辑,其第一输入端与所述编码寄存器连接,第二输入端与所述解码寄存器连接,输出端与数据分割逻辑连接。
2、上述方案中,还包括第一与门,用于将控制模块的错误符号数目异常信号与控制寄存器内解码异常中断使能位进行运算,产生通知CPU的中断信号,其输入端与控制寄存器的解码异常中断使能位、控制模块连接,输出端通过总线与CPU连接。
3、上述方案中,还包括第二与门,用于将控制模块监测CPU非法操作而产生的非法编码信号或非法解码信号或非法模式切换信号与系统异常中断使能位进行运算,产生通知CPU的中断信号,其输入端与控制寄存器的系统异常中断使能位、控制模块连接,输出端通过总线与CPU连接。
4、上述方案中,所述控制寄存器的控制信息包含以下控制位:
(1)解码异常中断使能位,用于使能解码异常而产生的中断。
解码异常中断使能位状态        含义
       有效                 中断使能
       无效                 中断关闭
(2)系统异常中断使能位,用于使能由CPU操作不当导致所述理德-所罗门码ECC控制器异常而产生的中断,
系统异常中断使能位状态        含义
       有效                 中断使能
       无效                 中断关闭
(3)复用模式选择位,用于选择所述ECC控制器是否工作在复用模式,
复用模式选择位状态            含义
       有效        复用模式,编/解码寄存器复用相同的地址
       无效        正常模式,编/解码寄存器有独立的地址
(4)复用地址工作模式选择位,用于控制复用地址在复用模式时的工作模式选择,
复用地址工作模式选择位状态    含义
       有效        复用地址作为解码寄存器的地址使用
       无效        复用地址作为编码寄存器的地址使用
(5)强制解码位,用于使能解码初始化状态,强制触发理德-所罗门码编/解码模块进行解码运算,解码数据为存放在解码寄存器中的值,
强制解码位状态        含义
    有效          强制发生解码
    无效             无作用
(6)强制编码位,用于使能编码初始化状态,强制触发理德-所罗门码编/解码模块进行编码运算,编码数据为存放在编码寄存器中的值,
强制编码位状态        含义
有效              强制发生编码
无效                  无作用
(7)复位位,用于生成所述理德-所罗门码ECC控制器的同步复位信号,可以复位控制模块的状态机和状态标志,
复位位状态            含义
有效               复位控制模块
无效                  无作用
以上为控制寄存器的各个控制位的作用。
5、上述方案中,所述状态寄存器的状态信息包含以下状态标志位:
(1)系统异常标志位,用于表示ECC控制器的异常状态,如编/解码数据写入顺序不正确导致系统进入异常状态,当系统异常中断使能位有效时触发中断,
通过控制寄存器的复位位或通过开始一个新的编/解码过程可以使系统异常标志位变为无效,
系统异常标志位状态    含义
有效                系统异常
无效                系统正常
(2)解码异常标志位,当解码数据的错误符号个数超过了ECC控制器的纠错能力时有效,同时,解码异常中断使能位有效时触发中断,
通过控制寄存器的复位位或通过开始一个新的编/解码过程可以使解码异常标志位变为无效,
解码异常标志位状态    含义
有效                解码异常
无效                  其他
(3)解码成功标志位,会在两种情况下有效,(a)解码过程没有发现错误符号,(b)解码过程发现有错误符号,错误符号个数在所述ECC控制器的纠错能力之内,可以发现并纠正所有的错误符号,
通过控制寄存器的复位位或通过开始一个新的编/解码过程可以使解码成功标志位变为无效,
解码成功标志位状态        含义
有效                    解码成功
无效                      其他
(4)解码忙标志位,会在两种情况下使能,(a)CPU使能强制解码位,强制发生解码,(b)CPU向解码寄存器内写数据,
当解码结束,解码成功标志位或解码异常标志位有效后,解码忙标志位变为无效,也可以通过复位位或通过开始一个新的编码过程使解码忙标志位变为无效,
解码忙标志位状态           含义
有效                     正在解码
无效                       其他
(5)编码成功标志位,当编码数据通过数据分割逻辑全部输入到理德-所罗门码编/解码模块后,编码过程结束,相应的ECC码存放在编码寄存器中,编码成功标志位有效,
通过复位位或通过开始一个新的编/解码过程可以使编码成功标志位变为无效,
编码成功标志位状态         含义
有效            编码结束,编码寄存器已存储了有效ECC码
无效                       其他
(6)编码忙标志位,会在两种情况下使能,(a)CPU使能强制编码位,强制发生编码,(b)CPU向编码寄存器写数据,
当编码结束,编码成功标志位有效后,编码忙标志位变为无效,也可以通过复位位或通过开始一个新的解码过程使编码忙标志位变为无效,
编码忙标志位状态           含义
有效                     正在编码
无效                       其他
以上为状态寄存器的各个状态位的作用。
6、上述方案中,所述控制模块的状态机还包括:
(1)强制编码状态,用于响应CPU对控制寄存器中强制编码控制位的设置,强制发起一个编码过程,强制编码过程中,触发外部总线至等待状态,禁止CPU对所述ECC控制器的进一步操作;
(2)强制解码状态,用于响应CPU对控制寄存器中强制解码控制位的设置,强制发起一个解码过程,强制解码过程中,触发外部总线至等待状态,禁止CPU对所述ECC控制器的进一步操作;
(3)系统异常状态,表示所述理德-所罗门码ECC控制器发生异常,并将该ECC控制器异常的状态信息输入可供CPU查询的状态寄存器内;
(4)解码异常状态,表示解码数据的错误符号个数超过ECC控制器的纠错能力,并将此解码异常的状态信息输入可供CPU查询的状态寄存器内。
本发明工作原理是:设有编码寄存器、解码寄存器、控制寄存器、状态寄存器、纠错逻辑、数据分割逻辑,CPU在向编码寄存器或解码寄存器输入数据的同时,数据分割逻辑将编/解码数据以符号的方式传输到理德-所罗门码编/解码模块内,进行编/解码处理,CPU通过控制寄存器实现对编/解码过程的控制,状态寄存器用于标识ECC控制器的状态信息。
由于上述技术方案运用,本发明与现有技术相比具有下列优点和效果:
1、本发明编/解码过程可以通过CPU对基于理德-所罗门码的ECC控制器直接访问完成,编码时,CPU将原始数据写入编码寄存器,数据分割逻辑对原始数据进行处理后输入到理德-所罗门码编/解码模块,生成相应的ECC码;解码时,CPU将解码数据写入解码寄存器,数据分割逻辑将解码数据进行处理后输入到理德-所罗门码编/解码模块进行解码。编/解码过程不需要其它模块配合工作,只需要提供和CPU之间的接口逻辑,简化了硬件结构,控制简单。
2、本发明解码过程发现错误符号时,硬件自动根据理德-所罗门码编/解码模块提供的错误符号地址和纠错码对解码寄存器中的错误符号进行纠错,纠错无需CPU参与,提高了纠错效率。
3、编码时,原始数据的输入和编码电路是并行工作的,一旦所有的原始数据经数据分割逻辑后全部输入到理德-所罗门码编/解码模块,CPU即可读编码寄存器中的ECC码,实现了从编码数据写入到有效ECC码生成的零等待运算过程,编码效率高。
4、编/解码过程中,CPU将编码数据或解码数据写入编码寄存器或解码寄存器,数据分割逻辑将编码数据或解码数据划分为若干个符号分多个时钟周期输入理德-所罗门码编/解码模块,这种基于寄存器传输的方式不仅硬件结构实现简单、且速度快、可靠性高。
附图说明
附图1为现有编/解码控制器系统示意图;
附图2为本发明基于理德-所罗门码的ECC控制器系统示意图;
附图3为本发明基于理德-所罗门码的ECC控制器逻辑结构图;
附图4为本发明数据分割逻辑工作示意图;
附图5为本发明理德-所罗门码编/解码模块内信号原理图;
附图6为本发明控制模块的状态机工作原理图。
具体实施方式
下面结合附图及实施例对本发明作进一步描述:
实施例:一种基于理德-所罗门码的ECC控制器
本实施例基于理德-所罗门码编/解码,其处理的数据符号由4个二进制数据组成,基于有限域GF(24)运算,可以保护9个符号即36位有效数据,产生6个符号即24位ECC码,可对随机的3个符号纠错,构成RS(15,9)编码结构,从附图2、3可知,基于理德-所罗门码的ECC控制器由理德-所罗门码编/解码模块202、系统总线接口201、数据分割逻辑309、控制模块203组成,其与外部存储器接口206、CPU104连接,附图3为基于理德-所罗门码的ECC控制器逻辑结构图,其各部分作用如下:
理德-所罗门码编/解码模块202,该理德-所罗门码编/解码模块202主要由编码电路501、译码求解电路502、错误符号地址求解电路504和纠错码求解电路503组成,当处于编码状态时,用于对编码数据进行运算生成相应的ECC码,当处于解码状态时,用于判断解码数据是否存在错误符号,如存在则计算生成错误符号地址和对错误符号进行纠错的纠错码。
系统总线接口,由编码寄存器301、解码寄存器302、控制寄存器303、状态寄存器304、纠错逻辑310组成。
编码寄存器301用于存放编码数据和ECC码,CPU104将编码数据写入编码寄存器301,触发理德-所罗门码编/解码模块202工作,编码寄存器301与数据分割逻辑309连接。
解码寄存器302用于存放解码数据,CPU104将解码数据写入解码寄存器302,触发理德-所罗门码编/解码模块202工作,解码寄存器302与所述数据分割逻辑309连接。
控制寄存器303用于接收CPU104输出的控制信息,实现CPU104对编/解码过程的控制,其与所述控制模块203连接,由以下控制位组成:
(1)解码异常中断使能位TMEIE,用于使能解码异常而产生的中断,
解码异常中断使能位状态            含义
有效                            中断使能
无效                            中断关闭
(2)系统异常中断使能位ISSIE,用于使能由CPU操作不当导致所述理德-所罗门码ECC控制器异常而产生的中断,
系统异常中断使能位状态            含义
有效                            中断使能
无效                            中断关闭
(3)复用模式选择位SHARE,用于选择所述ECC控制器是否工作在复用模式,
复用模式选择位状态                含义
有效                复用模式,编/解码寄存器复用相同的地址
无效                正常模式,编/解码寄存器有独立的地址
(4)复用地址工作模式选择位SDIR,用于控制复用地址在复用模式SHARE=1时的工作模式选择,
复用地址工作模式选择位状态        含义
有效                复用地址作为解码寄存器的地址使用
无效                复用地址作为编码寄存器的地址使用
(5)强制解码位FDE,用于使能解码初始化状态START_DE,强制触发理德-所罗门码编/解码模块202进行解码运算,解码数据为存放在解码寄存器302中的值,
强制解码位状态                    含义
有效                          强制发生解码
无效                             无作用
(6)强制编码位FEN,用于使能编码初始化状态START_EN,强制触发理德-所罗门码编/解码模块202进行编码运算,编码数据为存放在编码寄存器301中的值,
强制编码位状态                    含义
有效                          强制发生编码
无效                             无作用
(7)复位位RST,用于生成所述理德-所罗门码ECC控制器的同步复位信号RST_reset,可以复位控制模块203的状态机和状态标志,
复位  位状态                含义
有效                    复位控制模块
无效                       无作用
以上为控制寄存器303的各个控制位的作用。
状态寄存器304用于接收标识所述ECC控制器的状态信息,实现CPU104对所述ECC控制器的状态查询,其与所述控制模块203连接,由以下状态位组成:
(1)系统异常标志位ISS_FLAG,用于表示ECC控制器的异常状态,如编/解码数据写入顺序不正确导致系统进入异常状态,当系统异常中断使能位有效时触发中断,
通过控制寄存器303的复位位RST或通过开始一个新的编/解码过程可以使系统异常标志位ISS_FLAG变为无效,
系统异常标志位状态          含义
有效                      系统异常
无效                      系统正常
(2)解码异常标志位TME_FLAG,当解码数据的错误符号个数超过了ECC控制器的纠错能力时有效,同时,解码异常中断使能位有效时触发中断,
通过控制寄存器303的复位位RST或通过开始一个新的编/解码过程可以使解码异常标志位TME_FLAG无效,
解码异常标志位状态          含义
有效                      解码异常
无效                        其他
(3)解码成功标志位DOK_FLAG,会在两种情况下有效,(a)解码过程没有发现错误符号,(b)解码过程发现有错误符号,但错误符号个数在ECC控制器的纠错能力之内,可以发现并纠正所有的错误符号,
通过控制寄存器303的复位位RST或通过开始一个新的编/解码过程可以使解码成功标志位DOK_FLAG无效,
解码成功标志位状态          含义
有效                      解码成功
无效                        其他
(4)解码忙标志位DBUSY,会在两种情况下使能,(a)CPU使能强制解码位FDE,强制发生解码,(b)CPU向解码寄存器302写数据,
当解码结束,解码成功标志位DOK_FLAG或解码异常标志位TME_FLAG有效后,解码忙标志位DBUSY变为无效,也可以通过复位位RST或通过开始一个新的编码过程使解码忙标志位DBUSY无效,
解码忙标志位状态                含义
有效                          正在解码
无效                            其他
(5)编码成功标志位EOK_FLAG,当编码数据通过数据分割逻辑309全部输入到理德-所罗门码编/解码模块202后,编码过程结束,相应的ECC码存放在编码寄存器中,编码成功标志位有效,
通过复位位RST或通过开始一个新的编/解码过程可以使编码成功标志位EOK_FLAG无效,
编码成功标志位状态              含义
有效            编码结束,编码寄存器已存储了有效ECC码
无效                            其他
(6)编码忙标志位EBUSY,会在两种情况下使能,(a)CPU使能强制编码位FEN,强制发生编码,(b)CPU向编码寄存器301写数据,
当编码结束,编码成功标志位有效后,编码忙标志位EBUSY变为无效,也可以通过复位位RST或通过开始一个新的解码过程使编码忙标志位EBUSY无效,
编码忙标志位状态                含义
有效                          正在编码
无效                            其他
以上为状态寄存器304的各个状态位的作用。
纠错逻辑310用于对解码数据进行符号纠错,纠错逻辑310接收理德-所罗门码编/解码模块202在解码过程中生成的错误符号地址和对应的纠错码,同时接收解码寄存器302中错误符号地址对应的错误符号,对错误符号和纠错码进行运算后得到正确符号并将正确符号传输到解码寄存器302,从而将错误符号更新为正确符号,其与解码寄存器302、理德-所罗门码编/解码模块202连接。
数据分割逻辑309,用于将编码或解码数据划分为若干个符号分多个时钟周期输入所述理德-所罗门码编/解码模块202,同时,会触发外部总线至等待状态wait-state,防止期间因CPU104的误操作而导致编/解码无法正常结束的现象;数据分割逻辑对编/解码数据的分割处理过程如附图4所示,基于符号编码,以4-bit作为一个符号单元进行分割,在编码数据分割过程中,ENS0、ENS1、ENS2、ENS3、ENS4、ENS5、ENS6、ENS7、ENS8为连续的符号单元,正常编码FEN=0中的编码数据分割分为以下三种情况,(a)CPU以字节向编码寄存器301输入数据,会触发外部总线即系统总线至等待状态wait-state,写入的字节分割为两个符号ENS0和ENS1并依次输入理德-所罗门码编/解码模块202,在ENS0、ENS1传输结束的前一个时钟周期,则使外部总线即系统总线的等待状态wait-state变为无效,进行下一轮字节输入并分割为ENS2、ENS3;(b)CPU以半字向编码寄存器301输入数据,会触发外部总线即系统总线至等待状态wait-state,写入的半字分割为四个符号ENS0、ENS1、ENS2和ENS3并依次输入理德-所罗门码编/解码模块202,在ENS0、ENS1、ENS2、ENS3传输结束的前一个时钟周期,则使外部总线即系统总线的等待状态wait-state变为无效,进行下一轮半字输入并分割为ENS4、ENS5、ENS6、ENS7;(c)CPU以字向编码寄存器301输入数据,会触发外部总线即系统总线至等待状态wait-state,写入的字分割为八个符号ENS0、ENS1、ENS2、ENS3、ENS4、ENS5、ENS6和ENS7并依次输入理德-所罗门码编/解码模块202,在ENS0、ENS1、ENS2、ENS3、ENS4、ENS5、ENS6、ENS7传输结束的前一个时钟周期,则使外部总线即系统总线的等待状态wait-state变为无效,进行下一轮字输入。在强制编码FEN=1过程中,会触发外部总线即系统总线至等待状态wait-state,数据分割逻辑309将已经储存在编码寄存器中的编码数据分为ENS0、ENS1、ENS2、ENS3、ENS4、ENS5、ENS6、ENS7和ENS8共9个符号单元并依次输出至理德-所罗门码编/解码模块202,在ENS0、ENS1、ENS2、ENS3、ENS4、ENS5、ENS6、ENS7、ENS8传输结束后,则使外部总线即系统总线的等待状态wait-state变为无效。数据分割逻辑309在正常解码FDE=0和强制解码FDE=1中对解码数据的分割处理过程同在编码中对编码数据的分割处理过程所述。
控制模块203,包含一组状态机,响应数据分割逻辑309、理德-所罗门码编/解码模块202的反馈信号及CPU对编码寄存器301、解码寄存器302和控制寄存器303的操作,产生相应的控制信号,控制编/解码过程,并将理德-所罗门码编/解码模块202的状态反馈到CPU104可查询的所述状态寄存器304内,同时完成状态之间的跳转,其中一组状态机包括:空闲状态IDLE,编码初始化状态START_EN,解码初始化状态START_DE,正常编码状态USUAL_EN,正常解码状态USUAL_DE,编码成功状态EOK,解码成功状态DOK,译码状态EUC,查错状态FIND,强制编码状态FORCE_EN,强制解码状态FORCE_DE、系统异常状态ISS和解码异常状态TME:
(1)空闲状态IDLE,所述ECC控制器处于空闲状态,控制模块203正在监测CPU104的操作,
(2)编码初始化状态START_EN,用于启动编码流程,对理德-所罗门码编/解码模块202在编码过程中使用到的相关变量进行初始化。当有数据写入编码寄存器时,使能所述编码电路501,使得编码电路501处于编码工作状态,
(3)解码初始化状态START_DE,用于启动解码流程,对理德-所罗门码编/解码模块202在解码过程中使用到的相关变量进行初始化。当有数据写入解码寄存器时,使能所述编码电路501,使得编码电路501处于解码工作状态,
(4)正常编码状态USUAL_EN,用于响应CPU104对编码寄存器301的操作,触发理德-所罗门码编/解码模块202对编码寄存器301内数据进行编码操作,
(5)正常解码状态USUAL_DE,用于响应CPU104对解码寄存器302的操作,触发理德-所罗门码编/解码模块202对解码寄存器302内数据进行解码操作,
(6)编码成功状态EOK,用于判断编码是否结束,并将此编码成功状态信息输入可供CPU104查询的状态寄存器304内,
(7)解码成功状态DOK,用于判断解码是否结束,并将此解码成功状态信息输入可供CPU104查询的状态寄存器304内,
(8)译码状态EUC,当编码电路501工作在解码状态时输出的解码伴随式S(X)不为‘0’时跳转到该译码状态EUC,使能所述译码求解电路502产生错误位置多项式L(x)和错误值多项式W(x),
(9)查错状态FIND,用于使能错误符号地址求解电路504和纠错码求解电路503,查找错误符号的具体位置并计算纠错码。
(10)强制编码状态FORCE_EN,用于响应CPU对控制寄存器303中强制编码控制位FEN的设置,强制发起一个编码过程,强制编码过程中,触发外部总线至等待状态wait-state,禁止CPU对所述ECC控制器的进一步操作;
(11)强制解码状态FORCE_DE,用于响应CPU对控制寄存器303中强制解码控制位FDE的设置,强制发起一个解码过程,强制解码过程中,触发外部总线至等待状态wait-state,禁止CPU对所述ECC控制器的进一步操作;
(12)系统异常状态ISS,表示所述理德-所罗门码ECC控制器发生异常,并将该ECC控制器异常的状态信息输入可供CPU查询的状态寄存器304内;
(13)解码异常状态TME,表示解码数据的错误符号个数超过ECC控制器的纠错能力,并将此解码异常的状态信息输入可供CPU查询的状态寄存器304内。
由附图6可以看出,空闲状态IDLE、编码初始化状态START_EN、解码初始化状态START_DE和系统异常状态ISS是四个比较特殊的状态,在满足条件的前提下,状态机可以由任意状态到达空闲状态IDLE状态或编码初始化状态START_EN状态或解码初始化状态START_DE状态,在编码或解码过程中,编码数据或解码数据写入顺序发生错误或者复用模式选择位SHARE、复用地址工作模式选择位SDIR的非法改变会导致系统进入系统异常状态ISS状态。
具体的条件如下:
1、空闲状态IDLE,复位控制模块203中状态机至空闲状态IDLE状态有两种情况:
(1)、系统复位信号system reset触发下运行空闲状态IDLE;
(2)、CPU使能控制寄存器303中的复位位RST,在同步复位信号RST_reset触发下运行空闲状态IDLE。
2、编码初始化状态START_EN,控制模块203中状态机跳转到编码初始化状态START_EN状态运行的条件有两种:
(1)、复用模式选择位SHARE=0或复用模式选择位SHARE=1且复用地址工作模式选择位SDIR=0,监测到CPU向编码寄存器301写编码数据;
(2)、复用模式选择位SHARE=0或复用模式选择位SHARE=1且复用地址工作模式选择位SDIR=0,CPU使能控制寄存器303的强制编码位FEN。
3、解码初始化状态START_DE,控制模块203中状态机跳转到解码初始化状态START_DE状态运行的条件有两种:
(1)、复用模式选择位SHARE=0或复用模式选择位SHARE=1且复用地址工作模式选择位SDIR=1,监测到CPU向解码寄存器302写解码数据;
(2)、复用模式选择位SHARE=0或复用模式选择位SHARE=1且复用地址工作模式选择位SDIR=1,CPU使能控制寄存器303的强制解码位FDE。
4、系统异常状态ISS,控制模块203跳转到系统异常状态ISS状态运行的转换条件有三种:
(1)、在编码时,CPU写数据到编码寄存器301的顺序发生错误;
(2)、在解码时,CPU写数据到解码寄存器302的顺序发生错误;
(3)、在编码或解码过程中,CPU改变控制寄存器303内复用模式选择位SHARE或复用地址工作模式选择位SDIR的信息。
复用模式选择位SHARE或复用地址工作模式选择位SDIR,只有在编码或解码过程结束后才能改变,即只有在空闲状态IDLE状态、编码成功状态EOK状态、解码成功状态DOK状态、解码异常状态TME状态和系统异常状态ISS状态时可以改变,在其它状态改变时会生成非法模式切换信号illegal_mode_change,导致状态机跳转到系统异常状态ISS状态,并将系统异常状态写入状态寄存器304的系统异常标志位ISS_FLAG,系统异常标志位ISS_FLAG与系统异常中断使能位ISSIE经第二与门308进行与运算产生通知CPU的中断信号。
除了以上四种状态比较特殊外,其它的状态的转换都依赖于状态机当前所处的状态和当前的输入。系统复位后,所述ECC控制器处于空闲状态IDLE状态,控制模块203开始监测CPU的操作,主要的数据通路有两种情况:
1、一旦发现满足编码初始化状态START_EN的跳转条件时,控制模块203中状态机跳转到编码初始化状态START_EN状态,在编码初始化状态START_EN下初始化理德-所罗门码编/解码模块202,准备开始一个新的编码过程;同时要判断引起状态机跳转到编码初始化状态START_EN的条件,来决定下一个时钟周期状态机的状态,有两种情况:
(a)复用模式选择位SHARE=0或复用模式选择位SHARE=1且复用地址工作模式选择位SDIR=0,当监测到CPU向编码寄存器301写数据时,触发正常编码使能信号usual_en_ena,状态机跳转到正常编码状态USUAL_EN。
(b)复用模式选择位SHARE=0或复用模式选择位SHARE=1且复用地址工作模式选择位SDIR=0,CPU使能控制寄存器303的强制编码位FEN,触发强制编码使能信号force_en_ena,状态机跳转到强制编码状态FORCE_EN。
在正常编码状态下,正常编码状态USUAL_EN的跳转又分为两种情况:
(a)CPU104按顺序将编码数据写入到编码寄存器301中,随着编码数据的写入,同时,数据分割逻辑309将其分解为若干个4-bit的符号单元输出到理德-所罗门码编/解码模块202,当36位编码数据全部输入理德-所罗门码编/解码模块202后,编码结束,相应的ECC码存储在编码寄存器301中,此时,触发正常编码结束信号usual_en_end,状态机从正常编码状态USUAL_EN跳转到编码成功状态EOK,编码结束;
(b)CPU写入编码数据的顺序发生错误,控制模块203监测到CPU104写数据到编码寄存器301的顺序发生错误而产生非法编码信号illegal_en_acc,在该非法编码信号illegal_en_acc触发下状态机从正常编码状态USUAL_EN跳转到系统异常状态ISS状态,并将系统异常状态写入状态寄存器304的系统异常标志位ISS_FLAG,系统异常标志位ISS_FLAG与系统异常中断使能位ISSIE经第二与门308进行与运算产生通知CPU的中断信号。
在强制编码状态下,会触发外部总线即系统总线至等待状态wait-state,数据分割逻辑309将已经储存在编码寄存器中的编码数据分为ENS0、ENS1、ENS2、ENS3、ENS4、ENS5、ENS6、ENS7和ENS8共9个符号单元并依次输出至理德-所罗门码编/解码模块202,在ENS0、ENS1、ENS2、ENS3、ENS4、ENS5、ENS6、ENS7、ENS8传输结束后,则使外部总线即系统总线的等待状态wait-state变为无效。当编码寄存器301中的编码数据全部输出至理德-所罗门码编/解码模块202后,编码结束,相应的ECC码存储在编码寄存器301的ECC码部分,此时,触发强制编码结束信号force_en_end,状态机从强制编码状态FORCE_EN跳转到编码成功状态EOK,编码结束。
强制编码状态FORCE_EN主要适用于连续的两组编码数据相近的情况下,CPU可以改变编码数据的一部分后,使能控制寄存器303的强制编码位FEN,开始强制编码,这样不仅节省了编码时间,而且减少了CPU的操作。
2、一旦发现满足解码初始化状态START_DE的跳转条件时,触发解码使能信号start_decode,状态机跳转到解码初始化状态START_DE,在解码初始化状态START_DE下初始化理德-所罗门码编/解码模块202,准备开始一个新的解码过程;同时要判断引起状态机跳转到解码初始化状态START_DE的条件,来决定下一个时钟周期状态机的状态,有两种情况:
(a)复用模式选择位SHARE=0或复用模式选择位SHARE=1且复用地址工作模式选择位SDIR=1,当监测到CPU向解码寄存器302写解码数据时,触发正常解码使能信号usual_de_ena,状态机跳转到正常解码状态USUAL_DE;
(b)复用模式选择位SHARE=0或复用模式选择位SHARE=1且复用地址工作模式选择位SDIR=1,CPU使能控制寄存器303的强制解码位FDE,触发强制解码使能信号force_de_ena,状态机跳转到强制解码状态FORCE_DE。
在正常解码状态下,正常解码状态USUAL_DE的跳转又分为两种情况:
(a)CPU按顺序将解码数据写入到解码寄存器中,随着解码数据的写入,同时,数据分割逻辑309将其分解为若干个4-bit的符号单元,依次输出到理德-所罗门码编/解码模块202,当60-bit的解码数据全部输入理德-所罗门码编/解码模块202后,理德-所罗门码编/解码模块202生成有效的解码伴随式S(x);
(b)CPU写入解码数据的顺序发生错误,控制模块203监测CPU104写数据到解码寄存器的顺序发生错误而产生非法解码信号illegal_de_acc,在非法解码信号illegal_de_acc触发下状态机从正常解码状态USUAL_DE跳转到系统异常状态ISS,并将系统异常状态写入状态寄存器304的系统异常标志位ISS_FLAG,系统异常标志位ISS_FLAG与系统异常中断使能位ISSIE经第二与门308进行与运算产生通知CPU的中断信号。
在强制解码状态下,会触发外部总线即系统总线至等待状态wait-state,数据分割逻辑309将已经储存在解码寄存器中的解码数据分为DES0、DES1、DES2、DES3、DES4、DES5、DES6、DES7、DES8、DES9、DES10、DES11、DES12、DES13和DES14共15个符号单元并依次输出至理德-所罗门码编/解码模块202,在DES0、DES1、DES2、DES3、DES4、DES5、DES6、DES7、DES8、DES9、DES10、DES11、DES12、DES13、DES14传输结束后,则使外部总线即系统总线的等待状态wait-state变为无效。同时理德-所罗门码编/解码模块202生成有效的解码伴随式S(x)。
根据编码电路501生成解码伴随式S(x)的值,状态机又分为两种通路:
1、解码伴随式S(x)=0,表示解码数据没有错误符号;
2、解码伴随式S(x)≠0,表示解码数据有错误符号。
当解码伴随式S(x)=0时,表示解码数据正确,不需要纠错,触发解码结束信号de_no_err,状态机直接跳转到解码成功状态DOK。
当解码伴随式S(x)≠0时,表示解码数据有错误符号,需要纠错,触发正常解码结束信号usual_de_end或强制解码结束信号force_de_end,状态机跳转到译码状态EUC,在译码状态EUC下,控制模块203使能译码求解电路502,译码求解电路502根据解码伴随式S(x)计算出错误位置多项式L(x)和错误值多项式W(x),且使能euclid_done信号表示错误位置多项式L(x)和错误值多项式W(x)计算完成。
译码状态EUC的跳转分为两种情况:
(a)译码求解电路错误信号euclid_err无效,表示译码求解电路502工作正常,状态机跳转到查错状态FIND状态;
(b)译码求解电路错误信号euclid_err有效,表示译码求解电路502工作不正常,状态机跳转到解码异常状态TME,并将解码异常状态写入状态寄存器304的解码异常标志位TME_FLAG,解码异常标志位TME_FLAG与解码异常中断使能位TMEIE经第一与门进行与运算产生通知CPU的中断信号。
结合附图5所示,在查错状态FIND状态时,控制模块203使能错误符号地址求解电路504和纠错码求解电路503。通过对错误位置多项式L(x)和错误值多项式W(x)进行运算获得错误符号地址信号eaddr[3:0]和纠错码信号val[3:0],纠错逻辑310会根据错误符号地址信号eaddr[3:0]和纠错码信号val[3:0]对解码寄存器302内相应的错误符号地址内的解码数据进行硬件纠错,其过程为:纠错逻辑310接收错误符号地址求解电路504在解码过程中生成的错误符号地址信号eaddr[3:0]和纠错码求解电路503生成的纠错码信号val[3:0];同时接收解码寄存器302中错误符号地址对应的错误符号;对错误符号和纠错码进行运算后得到正确符号并将正确符号传输到解码寄存器302,从而将错误符号更新为正确符号。
控制模块203根据错误符号地址求解电路504输出的found信号记录下查错状态FIND下系统查找到的错误符号个数。
控制模块203在监测到查错结束信号done后,状态机的跳转包括两种情况:
1、控制模块203记录的系统查找到的错误符号数目不超过ECC控制器最大可纠错符号数目,表示系统可以正确纠错,状态机跳转到解码成功状态DOK;
2、控制模块203记录的系统查找到的错误符号数目超过了ECC控制器的最大可纠错符号数目,表示系统不能正确纠错,生成错误符号数目异常信号too_many_error,状态机跳转到解码异常状态TME,本实施例中,系统最大可纠错符号数目为3,当错误符号个数大于3个时产生错误符号数目异常信号too_many_error,状态机跳转到解码异常状态,并将解码异常状态写入状态寄存器304的解码异常标志位TME_FLAG,解码异常标志位TME_FLAG与解码异常中断使能位TMEIE经第一与门进行与运算产生通知CPU的中断信号。
当状态机跳转到不同的状态时,都会触发状态寄存器304中相应的状态标志位,以供CPU查询并获知系统的工作状态。编码成功状态EOK、解码成功状态DOK、解码异常状态TME和系统异常状态ISS是四个结束状态,当CPU开始一个新的编码或解码过程时,状态机会从结束状态跳转到编码初始化状态START_EN或解码初始化状态START_DE,开始新的工作流程。
上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。

Claims (7)

1、一种基于理德-所罗门码的ECC控制器,该ECC控制器包括理德-所罗门码编/解码模块(202),该理德-所罗门码编/解码模块(202)主要由编码电路(501)、译码求解电路(502)、错误符号地址求解电路(504)和纠错码求解电路(503)组成,当处于编码状态时,用于对编码数据进行运算生成相应的ECC码,当处于解码状态时,用于判断解码数据是否存在错误符号,如存在则计算生成错误符号地址和对错误符号进行纠错的纠错码;
其特征在于:所述ECC控制器还包括系统总线接口(201)、数据分割逻辑(309)以及控制模块(203);
所述系统总线接口(201),主要由编码寄存器(301)、解码寄存器(302)、控制寄存器(303)、状态寄存器(304)、纠错逻辑(310)组成;编码寄存器(301)用于存放编码数据和ECC码,CPU(104)将编码数据写入编码寄存器(301),触发理德-所罗门码编/解码模块(202)工作,编码寄存器(301)与数据分割逻辑(309)连接;解码寄存器(302)用于存放解码数据,CPU(104)将解码数据写入解码寄存器(302),触发理德-所罗门码编/解码模块(202)工作,解码寄存器(302)与所述数据分割逻辑(309)连接;控制寄存器(303)用于接收CPU(104)输出的控制信息,将其转化为相应的控制信号输出到控制模块(203),通过控制模块(203)实现CPU(104)对编/解码过程的控制,其与所述控制模块(203)连接;状态寄存器(304),用于接收标识所述ECC控制器的状态信息,实现CPU(104)对所述ECC控制器的状态查询,其与所述控制模块(203)连接;纠错逻辑(310)用于对解码数据进行符号纠错,纠错逻辑(310)接收理德-所罗门码编/解码模块(202)在解码过程中生成的错误符号地址和对应的纠错码,同时接收解码寄存器(302)中错误符号地址对应的错误符号,对错误符号和纠错码进行运算后得到正确符号并将正确符号传输到解码寄存器,从而将错误符号更新为正确符号,其与解码寄存器(302)、理德-所罗门码编/解码模块(202)连接;
所述数据分割逻辑(309),用于将编码或解码数据划分为若干个符号分多个时钟周期输入所述理德-所罗门码编/解码模块(202),同时,会触发外部总线至等待状态(wait-state),禁止CPU(104)的访问,防止期间因CPU(104)的误操作而导致编/解码无法正常结束的现象;
所述控制模块(203),包含一组状态机,响应数据分割逻辑(309)、理德-所罗门码编/解码模块(202)的反馈信号及CPU对编码寄存器(301)、解码寄存器(302)和控制寄存器(303)的操作,产生相应的控制信号,控制编/解码过程,并将理德-所罗门码编/解码模块(202)的状态反馈到CPU(104)可查询的所述状态寄存器(304)内,同时完成不同状态之间的跳转,其中一组状态机包括:
(1)空闲状态(IDLE),所述ECC控制器处于空闲状态,控制模块(203)正在监测CPU(104)的操作,
(2)编码初始化状态(START_EN),用于启动编码流程,对理德-所罗门码编/解码模块(202)在编码过程中使用到的相关变量进行初始化。当有数据写入编码寄存器时,使能所述编码电路(501),使得编码电路(501)处于编码工作状态,
(3)解码初始化状态(START_DE),用于启动解码流程,对理德-所罗门码编/解码模块(202)在解码过程中使用到的相关变量进行初始化。当有数据写入解码寄存器时,使能所述编码电路(501),使得编码电路(501)处于解码工作状态,
(4)正常编码状态(USUAL_EN),用于响应CPU(104)对编码寄存器(310)的操作,触发理德-所罗门码编/解码模块(202)对编码寄存器(301)内数据进行编码操作,
(5)正常解码状态(USUAL_DE),用于响应CPU(104)对解码寄存器(302)的操作,触发理德-所罗门码编/解码模块(202)对解码寄存器(302)内数据进行解码操作,
(6)编码成功状态(EOK),用于判断编码是否结束,并将此编码成功状态信息输入可供CPU(104)查询的状态寄存器(304)内,
(7)解码成功状态(DOK),用于判断解码是否结束,并将此解码成功状态信息输入可供CPU(104)查询的状态寄存器(304)内,
(8)译码状态(EUC),当编码电路(501)工作在解码状态时输出的解码伴随式S(X)不为‘0’时跳转到该译码状态(EUC),使能所述译码求解电路(502)产生错误位置多项式L(x)和错误值多项式W(x),
(9)查错状态(FIND),用于使能错误符号地址求解电路(504)和纠错码求解电路(503)查找错误符号的具体位置并计算纠错码。
2、根据权利要求1所述的ECC控制器,其特征在于:还包括选通器(306),用于在编码和解码工作状态下复用所述数据分割逻辑(309),其第一输入端与所述编码寄存器(301)连接,第二输入端与所述解码寄存器(302)连接,输出端与数据分割逻辑(309)连接。
3、根据权利要求1所述的ECC控制器,其特征在于:还包括第一与门(307),用于将控制模块(203)的错误符号数目异常信号(too_many_error)与控制寄存器(303)内解码异常中断使能位(TMEIE)进行运算,产生通知CPU的中断信号,其输入端与控制寄存器(303)的解码异常中断使能位(TMEIE)、控制模块(203)连接,输出端通过总线与CPU连接。
4、根据权利要求1所述的ECC控制器,其特征在于:还包括第二与门(308),用于将控制模块(203)监测CPU(104)非法操作而产生的非法编码信号(illegal_en_acc)或非法解码信号(illegal_de_acc)或非法模式切换信号(illegal_mode_change)与系统异常中断使能位进行运算,产生通知CPU的中断信号,其输入端与控制寄存器(303)的系统异常中断使能位(ISSIE)、控制模块(203)连接,输出端通过总线与CPU连接。
5、根据权利要求1所述的ECC控制器,其特征在于:所述控制寄存器(303)的控制信息包含以下控制位:
(1)解码异常中断使能位(TMEIE),用于使能解码异常而产生的中断,
解码异常中断使能位状态         含义
有效                           中断使能
无效                           中断关闭
(2)系统异常中断使能位(ISSIE),用于使能由CPU(104)操作不当导致所述理德-所罗门码ECC控制器异常而产生的中断,
系统异常中断使能位状态         含义
有效                           中断使能
无效                           中断关闭
(3)复用模式选择位(SHARE),用于选择所述ECC控制器是否工作在复用模式,
复用模式选择位状态           含义
有效                         复用模式,编/解码寄存器复用相同的地址
无效                         正常模式,编/解码寄存器有独立的地址
(4)复用地址工作模式选择位(SDIR),用于控制复用地址在复用模式(SHARE=1)时的工作模式选择,
复用地址工作模式选择位状态   含义
有效                         复用地址作为解码寄存器的地址使用
无效                         复用地址作为编码寄存器的地址使用
(5)强制解码位(FDE),用于使能解码初始化状态(START_DE),强制触发理德-所罗门码编/解码模块(202)进行解码运算,解码数据为存放在解码寄存器(302)中的值,
强制解码位状态           含义
有效                     强制发生解码
无效                     无作用
(6)强制编码位(FEN),用于使能编码初始化状态(START_EN),强制触发理德-所罗门码编/解码模块(202)进行编码运算,编码数据为存放在编码寄存器(301)中的值,
强制编码位状态                    含义
有效                              强制发生编码
无效                              无作用
(7)复位位(RST),用于生成所述理德-所罗门码ECC控制器的同步复位信号(RST_reset),可以复位控制模块(203)的状态机和状态标志,
复位位状态                        含义
有效                              复位控制模块
无效                              无作用
以上为控制寄存器(303)的各个控制位的作用。
6、根据权利要求1所述的ECC控制器,其特征在于:所述状态寄存器(304)的状态信息包含以下状态标志位:
(1)系统异常标志位(ISS_FLAG),用于表示ECC控制器的异常状态,如编/解码数据写入顺序不正确导致系统进入异常状态,当系统异常中断使能位有效时触发中断,
通过控制寄存器(303)的复位位(RST)或通过开始一个新的编/解码过程可以使系统异常标志位(ISS_FLAG)变为无效,
系统异常标志位状态                含义
有效                              系统异常
无效                              系统正常
(2)解码异常标志位(TME_FLAG),当解码数据的错误符号个数超过了ECC控制器的纠错能力时有效,同时,解码异常中断使能位有效时触发中断,
通过控制寄存器(303)的复位位(RST)或通过开始一个新的编/解码过程可以使解码异常标志位(TME_FLAG)变为无效,
解码异常标志位状态                含义
有效                              解码异常
无效                              其他
(3)解码成功标志位(DOK_FLAG),会在两种情况下有效,(a)解码过程没有发现错误符号,(b)解码过程发现有错误符号,错误符号个数在所述ECC控制器的纠错能力之内,可以发现并纠正所有的错误符号,
通过控制寄存器(303)的复位位(RST)或通过开始一个新的编/解码过程可以使解码成功标志位(DOK_FLAG)变为无效,
解码成功标志位状态                含义
有效                              解码成功
无效                              其他
(4)解码忙标志位(DBUSY),会在两种情况下使能,(a)CPU使能强制解码位(FDE),强制发生解码,(b)CPU向解码寄存器(302)写数据,
当解码结束,解码成功标志位(DOK_FLAG)或解码异常标志位(TME_FLAG)有效后,解码忙标志位(DBUSY)变为无效,也可以通过复位位(RST)或通过开始一个新的编码过程使解码忙标志位(DBUSY)变为无效,
解码忙标志位状态       含义
有效                   正在解码
无效                   其他
(5)编码成功标志位(EOK_FLAG),当编码数据通过数据分割逻辑(309)全部输入到理德-所罗门码编/解码模块(202)后,编码过程结束,相应的ECC码存放在编码寄存器中,编码成功标志位有效,
通过复位位(RST)或通过开始一个新的编/解码过程可以使编码成功标志位(EOK_FLAG)变为无效,
编码成功标志位状态          含义
有效                        编码结束,编码寄存器已存储了有效ECC码
无效                        其他
(6)编码忙标志位(EBUSY),会在两种情况下使能,(a)CPU使能强制编码位(FEN),强制发生编码,(b)CPU向编码寄存器(301)写数据,
当编码结束,编码成功标志位(EOK_FLAG)有效后,编码忙标志位(EBUSY)变为无效,也可以通过复位位(RST)或通过开始一个新的解码过程使编码忙标志位(EBUSY)变为无效,
编码忙标志位状态           含义
有效                       正在编码
无效                       其他
以上为状态寄存器(304)的各个状态位的作用。
7、根据权利要求1所述的ECC控制器,其特征在于:所述控制模块(203)的状态机还包括:
(1)强制编码状态(FORCE_EN),用于响应CPU对控制寄存器(303)中强制编码控制位(FEN)的设置,强制发起一个编码过程,强制编码过程中,触发外部总线至等待状态(wait-state),禁止CPU对所述ECC控制器的进一步操作;
(2)强制解码状态(FORCE_DE),用于响应CPU对控制寄存器(303)中强制解码控制位(FDE)的设置,强制发起一个解码过程,强制解码过程中,触发外部总线至等待状态(wait-state),禁止CPU对所述ECC控制器的进一步操作;
(3)系统异常状态(ISS),表示所述理德-所罗门码ECC控制器发生异常,并将该ECC控制器异常的状态信息输入可供CPU查询的状态寄存器(304)内;
(4)解码异常状态(TME),表示解码数据的错误符号个数超过ECC控制器的纠错能力,并将此解码异常的状态信息输入可供CPU查询的状态寄存器(304)内。
CN 200910034091 2009-08-21 2009-08-21 一种基于理德-所罗门码的ecc控制器 Active CN101667837B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201210406165.XA CN103067026B (zh) 2009-08-21 2009-08-21 应用于理德-所罗门码的ecc控制器
CN 200910034091 CN101667837B (zh) 2009-08-21 2009-08-21 一种基于理德-所罗门码的ecc控制器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200910034091 CN101667837B (zh) 2009-08-21 2009-08-21 一种基于理德-所罗门码的ecc控制器

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201210406165.XA Division CN103067026B (zh) 2009-08-21 2009-08-21 应用于理德-所罗门码的ecc控制器

Publications (2)

Publication Number Publication Date
CN101667837A true CN101667837A (zh) 2010-03-10
CN101667837B CN101667837B (zh) 2013-04-10

Family

ID=41804304

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201210406165.XA Active CN103067026B (zh) 2009-08-21 2009-08-21 应用于理德-所罗门码的ecc控制器
CN 200910034091 Active CN101667837B (zh) 2009-08-21 2009-08-21 一种基于理德-所罗门码的ecc控制器

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201210406165.XA Active CN103067026B (zh) 2009-08-21 2009-08-21 应用于理德-所罗门码的ecc控制器

Country Status (1)

Country Link
CN (2) CN103067026B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101848059A (zh) * 2010-04-09 2010-09-29 西安电子科技大学 抑制总线串扰的自适应时间编解码装置及其编解码方法
CN102447478A (zh) * 2011-09-21 2012-05-09 中广核工程有限公司 一种核电站事故规程数字化逻辑设计的编码方法及系统
CN102541761A (zh) * 2012-01-17 2012-07-04 苏州国芯科技有限公司 应用于嵌入式芯片的只读高速缓冲存储器
CN102568605A (zh) * 2011-12-23 2012-07-11 青岛海信信芯科技有限公司 系统总线检错纠错方法和nand flash控制器
CN109347490A (zh) * 2018-12-09 2019-02-15 江苏华存电子科技有限公司 一种用于数据纠错ecc译码核主控装置
CN111143109A (zh) * 2019-12-16 2020-05-12 浙江大学 一种ecc内存管理器、方法及电子设备
CN113434328A (zh) * 2021-08-26 2021-09-24 西安热工研究院有限公司 一种分散控制系统逻辑组态编译纠错方法和系统

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3562544B2 (ja) * 1996-08-13 2004-09-08 ソニー株式会社 復号化装置および復号化方法
KR100917883B1 (ko) * 2003-02-25 2009-09-16 삼성전자주식회사 에러 정정을 위한 에러 플래그 생성 장치 및 그 방법
CN100437805C (zh) * 2006-01-16 2008-11-26 华中科技大学 高密度光盘的纠错编码方法及数据格式编制方法
US7900122B2 (en) * 2007-01-04 2011-03-01 Broadcom Corporation Simplified RS (Reed-Solomon) code decoder that obviates error value polynomial calculation

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101848059A (zh) * 2010-04-09 2010-09-29 西安电子科技大学 抑制总线串扰的自适应时间编解码装置及其编解码方法
CN101848059B (zh) * 2010-04-09 2013-08-14 西安电子科技大学 抑制总线串扰的自适应时间编解码装置及其编解码方法
CN102447478A (zh) * 2011-09-21 2012-05-09 中广核工程有限公司 一种核电站事故规程数字化逻辑设计的编码方法及系统
CN102568605A (zh) * 2011-12-23 2012-07-11 青岛海信信芯科技有限公司 系统总线检错纠错方法和nand flash控制器
CN102568605B (zh) * 2011-12-23 2014-12-24 青岛海信信芯科技有限公司 系统总线检错纠错方法和nand flash控制器
CN102541761A (zh) * 2012-01-17 2012-07-04 苏州国芯科技有限公司 应用于嵌入式芯片的只读高速缓冲存储器
CN102541761B (zh) * 2012-01-17 2014-10-22 苏州国芯科技有限公司 应用于嵌入式芯片的只读高速缓冲存储器
CN109347490A (zh) * 2018-12-09 2019-02-15 江苏华存电子科技有限公司 一种用于数据纠错ecc译码核主控装置
CN111143109A (zh) * 2019-12-16 2020-05-12 浙江大学 一种ecc内存管理器、方法及电子设备
CN113434328A (zh) * 2021-08-26 2021-09-24 西安热工研究院有限公司 一种分散控制系统逻辑组态编译纠错方法和系统
CN113434328B (zh) * 2021-08-26 2021-11-30 西安热工研究院有限公司 一种分散控制系统逻辑组态编译纠错方法和系统

Also Published As

Publication number Publication date
CN103067026A (zh) 2013-04-24
CN103067026B (zh) 2016-03-02
CN101667837B (zh) 2013-04-10

Similar Documents

Publication Publication Date Title
CN101667837B (zh) 一种基于理德-所罗门码的ecc控制器
EP2901292B1 (en) Techniques associated with protecting system critical data written to non-volatile memory
CN101807165B (zh) 用于快速缓存命中检测的系统和方法
US8181094B2 (en) System to improve error correction using variable latency and associated methods
CN104115126A (zh) 使用代数码的多阶段ecc编码
US20050188292A1 (en) Method and apparatus for encoding special uncorrectable errors in an error correction code
CN102624403A (zh) 用于对级联纠错码的有效解码的方法和系统
CN102117662A (zh) 用于8-位存储器设备的差错校正机制
CN101882467B (zh) Ecc参数可配置的存储器控制装置
CN101477481A (zh) 一种自动纠错系统及方法
CN101140543B (zh) 支持flash页操作与流水线纠错码的数据交换装置与方法
CN101794623B (zh) 存储设备的纠错装置及方法
CN101488369B (zh) Bch码控制器接口电路
US11106533B2 (en) Memory systems and writing methods of the memory systems
CN101634938A (zh) 固态硬盘的数据迁移方法、数据迁移装置及固态硬盘
WO2015016877A1 (en) Memory unit
CN101499325B (zh) 一种具有可变纠错能力的非易失性存储系统及方法
CN101697490B (zh) 一种应用在基于理德-所罗门码的ecc模块上的解码方法
CN102063342A (zh) 一种闪存存储设备数据的管理方法及系统
CN111475868B (zh) 适用于功能和信息安全芯片的cpu指令保护方法及系统
CN105138412B (zh) 嵌入式微处理器高速缓存的混合纠错装置与方法
CN103885850A (zh) 存储器在线检查系统及方法
CN105320575A (zh) 一种双模冗余流水线的自校验及恢复装置与方法
CN109766213A (zh) 一种基于汉明码实现数据纠错的存储器电路
CN103631669B (zh) 一种纠错sram的回写方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: Room C2031, Suzhou Pioneer Park, 209 Zhuyuan Road, Suzhou High-tech Zone, Jiangsu Province

Patentee after: Suzhou Guoxin Technology Co., Ltd.

Address before: Room C2031, Suzhou Pioneer Park, 209 Zhuyuan Road, Suzhou High-tech Zone, Jiangsu Province

Patentee before: C*Core Technology (Suzhou) Co., Ltd.

CP01 Change in the name or title of a patent holder