应用于理德-所罗门码的ecc控制器的制作方法

文档序号:7522263阅读:436来源:国知局
专利名称:应用于理德-所罗门码的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可查询的所述状态寄存器内,同时完成不同状态之间的跳转,其中一组状态机包括
(O空闲状态,所述ECC控制器处于空闲状态,控制模块正在监测CPU的操作;
(2)编码初始化状态,用于启动编码流程,对理德-所罗门码编/解码模块在编码过程中使用到的相关变量进行初始化。当有数据写入编码寄存器时,使能所述编码电路,使得编码电路处于编码工作状态;
(3)解码初始化状态,用于启动解码流程,对理德-所罗门码编/解码模块在解码过程中使用到的相关变量进行初始化。当有数据写入解码寄存器时,使能所述编码电路,使得编码电路处于解码工作状态;
(4)正常编码状态,用于响应CPU对编码寄存器的操作,触发理德-所罗门码编/解码模块对编码寄存器内数据进行编码操作;
(5)正常解码状态,用于响应CPU对解码寄存器的操作,触发理德-所罗门码编/解码模块对解码寄存器内数据进行解码操作;
(6)编码成功状态,用于判断编码是否结束,并将此编码成功状态信息输入可供CPU查询的状态寄存器内;
(7)解码成功状态,用于判断解码是否结束,并将此解码成功状态信息输入可供CPU查询的状态寄存器内;
(8)译码状态,当编码电路工作在解码状态时输出的解码伴随式S(X)不为‘0’时跳转到该译码状态,使能所述译码求解电路产生错误位置多项式LU)和错误值多项式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为本发明应用于理德-所罗门码的ECC控制器内信号原理 附图6为本发明控制模块的状态机工作原理图。
具体实施例方式下面结合附图及实施例对本发明作进一步描述
实施例一种应用于理德-所罗门码的ECC控制器
本实施例应用于理德-所罗门码的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=I时的工作模式选择,
复用地址工作模式选择位状态含义
有效复用地址作为解码寄存器的地址使用
无效复用地址作为编码寄存器的地址使用
(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)解码成功标志位D0K_FLAG,会在两种情况下有效,(a)解码过程没有发现错误符号,(b)解码过程发现有错误符号,但错误符号个数在ECC控制器的纠错能力之内,可以发现并纠正所有的错误符号,
通过控制寄存器303的复位位RST或通过开始一个新的编/解码过程可以使解码成功标志位D0K_FLAG无效,
解码成功标志位状态含义
有效解码成功
无效其他
(4)解码忙标志位DBUSY,会在两种情况下使能,(a)CPU使能强制解码位FDE,强制发生解码,(b) CPU向解码寄存器302写数据,
当解码结束,解码成功标志位D0K_FLAG或解码异常标志位TME_FLAG有效后,解码忙标志位DBUSY变为无效,也可以通过复位位RST或通过开始一个新的编码过程使解码忙标志位DBUSY无效,
解码忙标志位状态含义
有效正在解码
无效其他
(5)编码成功标志位E0K_FLAG,当编码数据通过数据分割逻辑309全部输入到理德一所罗门码编/解码模块202后,编码过程结束,相应的ECC码存放在编码寄存器中,编码成功标志位有效,
通过复位位RST或通过开始一个新的编/解码过程可以使编码成功标志位E0K_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作为一个符号单元进行分割,在编码数据分割过程中,ENSO、ENS1、ENS2、ENS3、ENS4、ENS5、ENS6、ENS7、ENS8 为连续的符号单元,正常编码FEN=O中的编码数据分割分为以下三种情况,(a) CPU以字节向编码寄存器301输入数据,会触发外部总线即系统总线至等待状态wait-state,写入的字节分割为两个符号ENSO和ENSl并依次输入理德-所罗门码编/解码模块202,在ENSO、ENSl传输结束的前一个时钟周期,则使外部总线即系统总线的等待状态wait-state变为无效,进行下一轮字节输入并分割为ENS2、ENS3 ; (b) CPU以半字向编码寄存器301输入数据,会触发外部总线即系统总线至等待状态wait-state,写入的半字分割为四个符号ENS0、ENS1、ENS2和ENS3并依次输入理德-所罗门码编/解码模块202,在ENSO、ENSl、ENS2、ENS3传输结束的前一个时钟周期,则使外部总线即系统总线的等待状态wait-state变为无效,进行下一轮半字输入并分割为ENS4、ENS5、ENS6、ENS7 ; (c) CPU以字向编码寄存器301输入数据,会触发外部总线即系统总线至等待状态wait-state,写入的字分割为八个符号ENSO, ENS1、ENS2、ENS3、ENS4、ENS5、ENS6和ENS7并依次输入理德-所罗门码编/解码模块 202,在 ENSO、ENS1、ENS2、ENS3、ENS4、ENS5、ENS6、ENS7 传输结束的前一个时钟周期,则使外部总线即系统总线的等待状态wait-state变为无效,进行下一轮字输入。在强制编码FEN=I过程中,会触发外部总线即系统总线至等待状态wait-state,数据分割逻辑309将已经储存在编码寄存器中的编码数据分为ENSO、ENS1、ENS2、ENS3、ENS4、ENS5、ENS6、ENS7和ENS8共9个符号单元并依次输出至理德-所罗门码编/解码模块202,在ENSO、ENSUENS2、ENS3、ENS4、ENS5、ENS6、ENS7、ENS8传输结束后,则使外部总线即系统总线的等待状态wait-state变为无效。数据分割逻辑309在正常解码FDE=O和强制解码FDE=I中对解码数据的分割处理过程同在编码中对编码数据的分割处理过程所述。
控制模块203,包含一组状态机,响应数据分割逻辑309、理德-所罗门码编/解码模块202的反馈信号及CPU对编码寄存器301、解码寄存器302和控制寄存器303的操作,产生相应的控制信号,控制编/解码过程,并将理德-所罗门码编/解码模块202的状态反馈到CPU104可查询的所述状态寄存器304内,同时完成状态之间的跳转,其中一组状态机包括空闲状态IDLE,编码初始化状态START_EN,解码初始化状态START_DE,正常编码状态USUAL_EN,正常解码状态USUAL_DE,编码成功状态Ε0Κ,解码成功状态D0K,译码状态EUC,查错状态FIND,强制编码状态F0RCE_EN,强制解码状态F0RCE_DE、系统异常状态ISS和解码异常状态TME
Cl)空闲状态IDLE,所述ECC控制器处于空闲状态,控制模块203正在监测CPU104的操作,
(2)编码初始化状态START_EN,用于启动编码流程,对理德-所罗门码编/解码模块202在编码过程中使用到的相关变量进行初始化。当有数据写入编码寄存器时,使能所述编码电路501,使得编码电路501处于编码工作状态,
(3)解码初始化状态STA RT_DE,用于启动解码流程,对理德-所罗门码编/解码模块202在解码过程中使用到的相关变量进行初始化。当有数据写入解码寄存器时,使能所述编码电路501,使得编码电路501处于解码工作状态,
(4)正常编码状态USUAL_EN,用于响应CPU104对编码寄存器301的操作,触发理德-所罗门码编/解码模块202对编码寄存器301内数据进行编码操作,
(5)正常解码状态USUAL_DE,用于响应CPU104对解码寄存器302的操作,触发理德-所罗门码编/解码模块202对解码寄存器302内数据进行解码操作,
(6)编码成功状态Ε0Κ,用于判断编码是否结束,并将此编码成功状态信息输入可供CPU104查询的状态寄存器304内,
(7)解码成功状态D0K,用于判断解码是否结束,并将此解码成功状态信息输入可供CPU104查询的状态寄存器304内,
(8)译码状态EUC,当编码电路501工作在解码状态时输出的解码伴随式S(X)不为‘0’时跳转到该译码状态EUC,使能所述译码求解电路502产生错误位置多项式LU)和错误值多项式W(X),
(9)查错状态FIND,用于使能错误符号地址求解电路504和纠错码求解电路503,查找错误符号的具体位置并计算纠错码。(10)强制编码状态F0RCE_EN,用于响应CPU对控制寄存器303中强制编码控制位FEN的设置,强制发起一个编码过程,强制编码过程中,触发外部总线至等待状态wait-state,禁止CPU对所述ECC控制器的进一步操作;
(11)强制解码状态F0RCE_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)、系统复位信号systemreset触发下运行空闲状态IDLE ;
(2)、CPU使能控制寄存器303中的复位位RST,在同步复位信号RST_reset触发下运行空闲状态IDLE。2、编码初始化状态START_EN,控制模块203中状态机跳转到编码初始化状态START_EN状态运行的条件有两种
(1)、复用模式选择位SHARE=O或复用模式选择位SHARE=I且复用地址工作模式选择位SDIR=O,监测到CPU向编码寄存器301写编码数据;
(2)、复用模式选择位SHARE=O或复用模式选择位SHARE=I且复用地址工作模式选择位SDIR=O, CPU使能控制寄存器303的强制编码位FEN。3、解码初始化状态START_DE,控制模块203中状态机跳转到解码初始化状态START_DE状态运行的条件有两种
(1)、复用模式选择位SHARE=O或复用模式选择位SHARE=I且复用地址工作模式选择位SDIR=I,监测到CPU向解码寄存器302写解码数据;
(2)、复用模式选择位SHARE=O或复用模式选择位SHARE=I且复用地址工作模式选择位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=I且复用地址工作模式选择位SDIR=O,当监测到CPU向编码寄存器301写数据时,触发正常编码使能信号usual_en_ena,状态机跳转到正常编码状态USUAL_EN。(b)复用模式选择位SHARE=O或复用模式选择位SHARE=I且复用地址工作模式选择位SDIR=0,CPU使能控制寄存器303的强制编码位FEN,触发强制编码使能信号force_en_ena,状态机跳转到强制编码状态F0RCE_EN。在正常编码状态下,正常编码状态USUAL_EN的跳转又分为两种情况
(a)CPU104按顺序将编码数据写入到编码寄存器301中,随着编码数据的写入,同时,数据分割逻辑309将其分解为若干个4-bit的符号单元输出到理德-所罗门码编/解码模块202,当36位编码数据全部输入理德-所罗门码编/解码模块202后,编码结束,相应的ECC码存储在编码寄存器301中,此时,触发正常编码结束信号uSual_en_end,状态机从正常编码状态USUAL_EN跳转到编码成功状态Ε0Κ,编码结束;
(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将已经储存在编码寄存器中的编码数据分为ENSO、ENSU ENS2、ENS3、ENS4、ENS5、ENS6、ENS7和ENS8共9个符号单元并依次输出至理德-所罗门码编/解码模块202,在 ENSO、ENSU ENS2、ENS3、ENS4、ENS5、ENS6、ENS7、ENS8 传输结束后,则使外部总线即系统总线的等待状态wait-state变为无效。当编码寄存器301中的编码数据全部输出至理德-所罗门码编/解码模块202后,编码结束,相应的ECC码存储在编码寄存器301的ECC码部分,此时,触发强制编码结束信号forCe_en_end,状态机从强制编码状态F0RCE_EN跳转到编码成功状态Ε0Κ,编码结束。强制编码状态F0RCE_EN主要适用于连续的两组编码数据相近的情况下,CPU可以改变编码数据的一部分后,使能控制寄存器303的强制编码位FEN,开始强制编码,这样不仅节省了编码时间,而且减少了 CPU的操作。2、一旦发现满足解码初始化状态START_DE的跳转条件时,触发解码使能信号start_decode,状态机跳转到解码初始化状态START_DE,在解码初始化状态START_DE下初始化理德-所罗门码编/解码模块202,准备开始一个新的解码过程;同时要判断引起状态机跳转到解码初始化状态START_DE的条件,来决定下一个时钟周期状态机的状态,有两种情况
(a)复用模式选择位SHARE = O或复用模式选择位SHARE =1且复用地址工作模式选择位SDIR=I,当监测到CPU向解码寄存器302写解码数据时,触发正常解码使能信号usual_de_ena,状态机跳转到正常解 码状态USUAL_DE ; (b)复用模式选择位SHARE=O或复用模式选择位SHARE =1且复用地址工作模式选择位SDIR=L 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将已经储存在解码寄存器中的解码数据分为DESO、DESK DES2、DES3、DES4、DES5、DES6、DES7、DES8、DES9、DES10、DES11、DES12、DES13 和 DES14 共 15 个符号单元并依次输出至理德-所罗门码编/解码模块202,在DESO、DES1、DES2、DES3、DES4、DES5、DES6、DES7、DES8、DES9、DES10、DES11、DES12、DES13、DES14传输结束后,则使外部总线即系统总线的等待状态rait-state变为无效。同时理德-所罗门码编/解码模块202生成有效的解码伴随式S(X)。根据编码电路501生成解码伴随式S(X)的值,状态机又分为两种通路
1、解码伴随式S(X)=O,表示解码数据没有错误符号;
2、解码伴随式S(X)古0,表示解码数据有错误符号。当解码伴随式S(X)=O时,表示解码数据正确,不需要纠错,触发解码结束信号de_no_err,状态机直接跳转到解码成功状态D0K。当解码伴随式S(X)古O时,表示解码数据有错误符号,需要纠错,触发正常解码结束信号usual_de_end或强制解码结束信号force_de_end,状态机跳转到译码状态EUC,在译码状态EUC下,控制模块203使能译码求解电路502,译码求解电路502根据解码伴随式S(X)计算出错误位置多项式LU)和错误值多项式W(x),且使能euclicLdone信号表示错误位置多项式LU)和错误值多项式W(X)计算完成。译码状态EUC的跳转分为两种情况
(a)译码求解电路错误信号euclicLerr无效,表示译码求解电路502工作正常,状态机跳转到查错状态FIND状态;
(b)译码求解电路错误信号euclicLerr有效,表示译码求解电路502工作不正常,状态机跳转到解码异常状态TME,并将解码异常状态写入状态寄存器304的解码异常标志位TME_FLAG,解码异常标志位TME_FLAG与解码异常中断使能位TMEIE经第一与门进行与运算产生通知CPU的中断信号。结合附图5所示,在查错状态FIND状态时,控制模块203使能错误符号地址求解电路504和纠错码求解电路503。通过对错误位置多项式LU)和错误值多项式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控制器的最大可纠错符号数目,表示系统不能正确纠错,生成错误符号数目异常信号t00_many_eiT0r,状态机跳转到解码异常状态TME,本实施例中,系统最大可纠错符号数目为3,当错误符号个数大于3个时产生错误符号数目异常信号t00_many_enOr,状态机跳转到解码异常状态TME,并将解码异常状态写入状态寄存器304的解码异常标志位TME_FLAG,解码异常标志位TME_FLAG与解码异常中断使能位TMEIE经第一与门进行与运算产生通知CPU的中断信号。当状态机跳转到不同的状态时,都会触发状态寄存器304中相应的状态标志位,以供CPU查询并获知系统的工作状态。编码成功状态Ε0Κ、解码成功状态D0K、解码异常状态TME和系统异常状态ISS是四个结束状态,当CPU开始一个新的编码或解码过程时,状态机会从结束状态跳转到编码初始化状态START_EN或解码初始化状态START_DE,开始新的工作流程。上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容 并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。
权利要求
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 )内,同时完成不同状态之间的跳转; 一第一与门(307),用于将控制模块(203)的错误符号数目异常信号(too_many_error)与控制寄存器(303)内解码异常中断使能位(TMEIE)进行运算,产生通知CPU的中断信号,其输入端与控制寄存器(303)的解码异常中断使能位(TMEIE)、控制模块(203)连接,输出端通过总线与CPU连接; 一第二与门(308),用于将控制模块(203)监测CPU (104)非法操作而产生的非法编码信号(i I legal_en_acc )或非法解码信号(i I legal_de_acc )或非法模式切换信号(iIlegal_mode_change)与系统异常中断使能位进行运算,产生通知CPU的中断信号,其输入端与控制寄存器(303)的系统异常中断使能位(ISSIE)、控制模块(203)连接,输出端通过总线与CPU连接。
2.根据权利要求1所述的ECC控制器,其特征在于所述一组状态机包括 (I)编码初始化状态(START_EN),用于启动编码流程,对理德-所罗门码编/解码模块(202)在编码过程中使用到的相关变量进行初始化,当有数据写入编码寄存器时,使能所述编码电路(501),使得编码电路(501)处于编码工作状态, (2 )解码初始化状态(START_DE ),用于启动解码流程,对理德-所罗门码编/解码模块(202)在解码过程中使用到的相关变量进行初始化,当有数据写入解码寄存器时,使能所述编码电路(501),使得编码电路(501)处于解码工作状态, (3)编码成功状态(EOK),用于判断编码是否结束,并将此编码成功状态信息输入可供CPU (104)查询的状态寄存器(304)内, (4)解码成功状态(DOK),用于判断解码是否结束,并将此解码成功状态信息输入可供CPU (104)查询的状态寄存器(304)内, (5)译码状态(EUC),当编码电路(501)工作在解码状态时输出的解码伴随式S(X)不为‘0’时跳转到该译码状态(EUC),使能所述译码求解电路(502)产生错误位置多项式LU)和错误值多项式W(X), (6 )查错状态(FIND ),用于使能错误符号地址求解电路(504 )和纠错码求解电路(503 )查找错误符号的具体位置并计算纠错码。
3.根据权利要求2所述的ECC控制器,其特征在于所述控制模块(203)的状态机还包括 (1)系统异常状态(ISS),表示所述理德-所罗门码ECC控制器发生异常,并将该ECC控制器异常的状态信息输入可供CPU查询的状态寄存器(304)内; (2)解码异常状态(TME),表示解码数据的错误符号个数超过ECC控制器的纠错能力,并将此解码异常的状态信息输入可供CPU查询的状态寄存器(304)内。
4.根据权利要求1所述的ECC控制器,其特征在于还包括选通器(306),用于在编码和解码工作状态下复用所述数据分割逻辑(309),其第一输入端与所述编码寄存器(301)连接,第二输入端与所述解码寄存器(302)连接,输出端与数据分割逻辑(309)连接。
5.根据权利要求1所述的ECC控制器,其特征在于所述控制寄存器(303)的控制信息包含以下控制位 (1)解码异常中断使能位(TMEIE),用于使能解码异常而产生的中断, 解码异常中断使能位状态含义有效中断使能无效中断关闭 (2)系统异常中断使能位(ISSIE),用于使能由CPU(104)操作不当导致所述理德-所罗门码ECC控制器异常而产生的中断, 系统异常中断使能位状态含义有效中断使能无效中断关闭 (3)复用模式选择位(SHARE),用于选择所述ECC控制器是否工作在复用模式, 复用模式选择位状态含义 有效复用模式,编/解码寄存器复用相同的地址无效正常模式,编/解码寄存器有独立的地址 (4)复用地址工作模式选择位(SDIR),用于控制复用地址在复用模式(SHARE=I)时的工作模式选择, 复用地址工作模式选择位状态含义 有效复用地址作为解码寄存器的地址使用 无效复用地址作为编码寄存器的地址使用 以上为控制寄存器(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)的各个状态位的作用。
全文摘要
本发明涉及一种应用于理德-所罗门码的ECC控制器,设有编码寄存器、解码寄存器、控制寄存器、状态寄存器、纠错逻辑、数据分割逻辑,控制模块,CPU在向编码寄存器或解码寄存器输入数据的同时,数据分割逻辑将编/解码数据以符号的方式传输到理德-所罗门码编/解码模块内,进行编/解码处理,实现了单一数据流完成数据传输过程和相应ECC码或纠错码产生的过程,且实现了数据传输与ECC码或纠错码运算并行处理的ECC控制器。
文档编号H03M13/15GK103067026SQ20121040616
公开日2013年4月24日 申请日期2009年8月21日 优先权日2009年8月21日
发明者郑茳, 肖佐楠, 张艳丽, 于麦口 申请人:苏州国芯科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1