一种采用dma控制器进行字符串处理的方法及装置制造方法

文档序号:6637001阅读:441来源:国知局
一种采用dma控制器进行字符串处理的方法及装置制造方法
【专利摘要】本发明提供一种采用DMA控制器进行字符串处理的方法及装置,所述方法包括如下步骤:预先设置好DMA控制寄存器模块,DMA控制模块根据控制寄存器模块的不同控制信息进行数据操作,并将最终结果传输到总线上,完成对字符串的操作。本发明的采用DMA控制器进行字符串处理的方法能够完成一般DMA数据传输功能的同时可以完成字符串处理的功能,进一步减轻CPU负担,从而提高系统整体性能。
【专利说明】一种采用0獄控制器进行字符串处理的方法及装置

【技术领域】
[0001]本发明涉及通信【技术领域】,尤其涉及一种采用0嫩控制器进行字符串处理的方法及装置。

【背景技术】
[0002]随着片上系统(300的发展,1011101-7八⑶688,直接存储器存取)技术已经广泛应用于30(:芯片。
[0003]字符串或存储器的操作广泛存在于目前的应用之中,典型应用就是语言中1116111861:,腕呢砂,8七17,8七1~。卹,8七1~1611等函数。字符串的处理能力和存储器操作是衡量处理器甚至是一个系统效率的主要标准,例如中就有专门测试字符串处理的程序。一般地,字符串处理和存储器操作是由处理器完成,而处理器对这种数据重复性处理的效率没有0嫩效率高。
[0004]加入0嫩对字符串的处理和存储器操作一方面提高了系统字符串处理和存储器操作的效率;另一方面,解放了处理器,使得0嫩在进行字符串的处理和存储器操作的同时,处理器可以进行其它工作,从而进一步提高系统的性能。


【发明内容】

[0005]鉴于此,本发明提出一种采用0嫩控制器进行字符串处理的方法及装置,旨在进一步提尚系统性能。
[0006]为了实现上述目的,本发明采用的技术方案为:一种采用0嫩控制器进行字符串处理的方法,包括如下步骤:
[0007]0嫩控制模块产生中断,获取总线控制权;
[0008]设置控制寄存器参数;
[0009]0嫩控制模块读取控制寄存器操作模式,进行数据操作;
[0010]结果返回到总线。
[0011]进一步的,所述控制寄存器参数包括:源地址、目的地址、传输状态寄存器、传输控制寄存器、操作数据/结果寄存器。
[0012]进一步的,所述控制寄存器操作模式包括:搬移、设置、比较、查找、计数、转换。
[0013]进一步的,所述总线协议是八!18或八!18」1七6。
[0014]一种采用0嫩控制器进行字符串处理的装置,包括:
[0015]源数据路径模块、目的数据路径模块,用于控制总线数据读写;
[0016]数据缓冲模块,用于缓存从源/目的数据通路读写的数据;
[0017]0嫩控制模块,用于控制源/目的数据通路,控制数据缓冲模块,控制字符串处理,产生中断、异常中断;
[0018]控制寄存器模块,用于配置0嫩操作模式。
[0019]进一步的,所述源/目的数据路径模块包括:
[0020]控制输出传输种类,传输方向(读或写),是否为突发操作读,传输地址,数据宽度,写数据;
[0021]控制接受来自总线的数据,传输完成信号,传输错误信号。将传输总线完成信号和总线错误信号作进一步处理并告知0嫩控制模块;
[0022]在0嫩控制模块控制下,源丨目的数据路径模块将从总线读入的数据写到数据缓冲模块,或将数据缓冲模块中的数据写到源/目的数据路径模块,最终写到总线上。
[0023]进一步的,所述数据缓冲模块包括:
[0024]接受来自源/目的数据路径模块的数据或输出数据到源/目的数据路径模块。对于双字符操作,数据缓冲模块则化分为源数据缓冲区和目的数据缓冲区,接受来自源和目的数据路径模块的数据,并为0嫩控制模块进行数据操作提供数据。
[0025]进一步的,所述0嫩控制模块包括:
[0026]根据控制寄存器模块的配置,判断操作模式;
[0027]控制源/目的数据路径模块传输方向(从0嫩读或写),传输地址,传输数据字节数,传输开始请求;
[0028]控制数据缓冲模块从源/目的数据路径读/写数据,是否清空数据缓冲模块;
[0029]根据控制寄存器模块的配置,从源和目的分别读入数据到0嫩控制模块,进行处理(搬移、设置、比较、查找、计数、转换),将操作后的数据写到目的数据总线或将结果写到控制寄存器模块中的操作数据/结果寄存器中去,并最终写到总线上。
[0030]设置控制寄存器模块中传输状态寄存器相应位,根据控制寄存器模块内完成中断使能,异常中断使能,产生完成中断,异常中断。
[0031]进一步的,所述控制寄存器申旲块包括:
[0032]控制寄存器,用于控制0嫩操作开始,完成中断使能,异常中断使能,源地址传输位宽,目的地址传输位宽,源地址递减或递增,目的地址递减或递增,传输字节数;
[0033]源地址寄存器,用于控制0嫩操作源地址;
[0034]目的地址寄存器,用于控制0嫩操作目的地址;
[0035]传输状态寄存器,标志传输完成状态、异常状态。
[0036]传输控制寄存器,用于控制是否为搬移、设置、比较、查找、计数、转换操作,控制搬移同时字符转化(大写字符转为小写字符,小写字符转为大写字符),控制比较是否忽略大小写,控制搬移前插入字符或搬移后插入字符,控制搬移、比较、查找操作是否判断字符串结束标志(同时忽略传输字节数)。
[0037]操作数据/结果寄存器,保存需要在一块存储区域重复设定的数据,或在字符串搬移过程中在字符串前或字符串后需要插入的字符。如果是查找或计数操作,操作结束后将查找的结果(地址)或计数的结果(个数),保存到此寄存器中。

【专利附图】

【附图说明】
[0038]图1是本发明的采用0嫩控制器进行字符串处理的装置的结构示意图;
[0039]图2是数据缓存模块与其他模块主要接口信号示意图;
[0040]图3是0嫩控制寄存器比特定义示意图;
[0041]图4是0嫩状态寄存器比特定乂不意图;
[0042]图5是0嫩传输控制寄存器比特定义示意图;
[0043]图6是一般0嫩搬移传输的数据流示意图;
[0044]图7是设置操作0嫩数据流示意图;
[0045]图8是比较操作0嫩数据流示意图;
[0046]图9是查找操作0嫩数据流示意图;
[0047]图10是计数操作0嫩数据流示意图;
[0048]图11是转换操作0嫩数据流示意图。

【具体实施方式】
[0049]下面结合附图对本发明的具体实施例做详细说明。
[0050]图1是本发明的采用0嫩控制器进行字符串处理的装置,如图1所示,包括源数据路径模块、目的数据路径模块、数据缓冲模块、0嫩控制模块和控制寄存器模块。
[0051]源/目的数据路径模块在控制模块的“开始传输(8仏!'传输地址 ”,“传输字节数”,“传输方向(读或写)”信号的控制下输出传输种类,传输方向(读或写),是否为突发操作,传输地址,数据宽度,写数据信号到总线上。当8仏!'1过61'有效时,如果传输字节数大于数据总线宽度,则会产生突发操作,否则为非突发操作。
[0052]源/目的数据路径模块同时接受来自总线的数据,传输完成信号,总线错误信号,将传输完成信号和传输错误信号作进一步处理并告知控制模块,将读入的数据写到数据缓冲模块,将数据缓冲模块中的数据写到源/目的数据路径模块。
[0053]数据缓冲主要用于缓存接受来自源/目的数据路径模块的数据或输出到源/目的数据路径模块的数据,以实现对源/目的数据路径的突发操作。如图2所示,在控制模块的控制下,数据可以从源/目的数据通路模块读到数据缓冲模块中,也可以从数据缓冲模块写到源/目的数据通路。在搬移操作(搬移同时转换大小写),比较操作,查找操作模式下,数据缓冲区域的数据会进入控制模块进行进一步操作。数据缓冲模块的大小决定于突发操作最大突发拍数,和数据总线宽度。
[0054]控制寄存器模块包括如下寄存器:
[0055]控制寄存器,包括如下字段:0嫩操作开始,完成中断使能,异常中断使能,源数据传输位宽,目的数据传输位宽(这里传输位宽不能大于数据总线宽度),源地址递减或递增,目的地址递减或递增,传输字节数。控制寄存器各比特定义如图3所示,使能12比特代表0嫩传输开始,0嫩一旦开始传输只有发生以下两种情况才会停止:
[0056]1、0嫩传输完成,同时会将传输状态寄存器中£01比特置位;
[0057]2、0嫩传输发生错误,根据传输错误的具体类型,会将传输状态寄存器中的相应比特置位。
[0058]同时,如果传输控制寄存器中比特使能,则会产生0嫩传输完成中断,如果传输控制寄存器中£12比特使能,则会产生异常中断。
[0059]源地址寄存器,0嫩操作源地址。
[0060]目的地址寄存器,0嫩操作目的地址。
[0061]传输状态寄存器,包括如下字段:传输完成状态,异常状态。异常状态分为:源地址位宽与源地址不对齐,目的地址位宽与目的地址不对齐,源数据位宽与传输字节数不对齐,目的数据位宽与传输字节数不对齐,源数据总线错误,目的数据总线错误,0嫩操作错误(包括查找操作,没有找到相应字符或字符串等),传输状态寄存器各比特定义如图4所示。
[0062]传输控制寄存器,控制是否为搬移操作、设置操作、比较操作、查找操作、计数操作、转换操作。当软件配置腿比特为1,则为搬移操作,当腿比特为0,则不是搬移操作;同样地,32、0X2分别对应设置操作、字符串比较操作、字符比较操作、查找操作、计数操作。这里如果软件设置任意两种操作同时使能,当0嫩控制寄存器中12比特使能时,0嫩会发生错误停止操作,同时0嫩状态寄存器中02比特会置位。
[0063]同时传输控制寄存器也会控制搬移同时字符转换(大写字符转为小写字符,小写字符转为大写字符),控制比较是否忽略大小写,控制搬移前插入字符或搬移后插入字符,控制搬移操作,比较操作,查找操作是否判断字符串结束标志(忽略传输字节数当软件配置传输控制寄存器中祖^比特为1,同时设置腿比特等于1,当0嫩控制寄存器12比特置位时,搬移同时字符小写转大写操作开始;当12比特置位时,祖^比特置位而腿比特不置位则会产生0嫩传输错误,同时将0嫩传输状态寄存器中02比特置位;同样地,腿比特和肌共同控制搬移字符大写转小写操作,和⑶共同控制大小写敏感的比较,腿和八?3共同控制搬移前插入特定字符,腿和823共同控制搬移后插入特定字符,8X2和腿共同控制搬移操作是否判断字符串结束标志,312和⑶“⑶幻共同控制比较操作是否判断字符串结束标志,312和共同控制查找操作是否判断字符串结束标志。传输控制寄存器各比特定义如图5所示。
[0064]操作数据/结果寄存器,保存需要在一块存储区域重复设定的数据,或在字符串搬移过程中在字符串前或字符串后需要插入的字符。如果是查找或计数操作,将查找的结果(地址)或计数的结果(个数),保存到此寄存器中。
[0065]对于每次0嫩操作,以上寄存器需要预先设置好,然后使能控制寄存器中呢比特,0嫩控制模块根据这些控制信息对源/目的数据路径模块,数据缓冲模块进行控制,从总线上将数据读数据经过源丨目的数据路径模块待缓冲模块,0嫩操作过程中一旦发生异常,传输状态寄存器中相应的异常状态位会置位,同时控制模块会清空数据缓存模块中缓存的数据,如果无任何异常,传输继续执行。
[0066]控制模块需要根据寄存器控制模块中的不同控制信息,控制源/目的数据路径模块,控制数据缓冲模块,对数据进行操作。当12比特置位,控制模块会从传输控制寄存器读取操作模式(搬移、设置、比较、查找、计数、转换,传输控制寄存器中相应比特置1代表使能相应操作),进行操作:
[0067]如果是一般的0嫩搬移操作,则根据源地址,源数据传输位宽,将数据通过源数据路径模块读到数据缓冲模块中,再根据目的地址,目的传输位宽,将数据从数据缓冲模块中通过目的数据路径模块写到总线上,根据传输控制寄存器中的823比特和他3比特的值来决定是否在搬移前或编译后插入特定字符,8X2比特的值决定是否忽略传输字节数,数据流如图6所示。
[0068]如果为置位操作,则根据操作数据/结果寄存器以得到源数据,根据源数据传输位宽,将数据读到数据缓冲模块中,再根据目的地址,目的数据传输位宽,将数据从数据缓冲模块中通过目的数据路径模块写到总线上,数据流如图7所示。
[0069]如果为比较操作,则根据源地址,源数据传输位宽,将源数据读到数据缓冲模块中源区域,根据目的地址,目的传输位宽,将目的数据读到数据缓冲模块中目的区域,控制模块对数据进行比较,根据控制寄存器中⑶比特的值决定是否在比较中忽略大小写,8X2比特的值决定是否忽略传输字节数,最后将比较结果写到操作数据/结果寄存器,数据流如图8所示。
[0070]如果为查找操作,如果是字符串的查找,类似于比较操作;如果是字符的查找,根据操作数据丨结果寄存器以得到查找的字符,根据目的地址,目的传输位宽,将目的数据读到数据缓冲模块中,控制模块根据控制寄存器中⑶比特的值决定是否在查找中忽略大小写,3呢比特的值决定是否忽略传输字节数,最后将查找结果(地址)写到操作数据/结果寄存器,数据路径如图9所示。
[0071]如果为计数操作,根据目的地址,目的传输位宽,将目的数据读到数据缓冲模块中,控制模块根据控制寄存器中的⑶比特的值决定是否在查找中忽略大小写,8X2比特的值决定是否忽略传输字节数,最后将计数结果(地址)写到操作数据/结果寄存器,数据路径如图10所示。
[0072]如果为转换操作,根据源地址,源传输宽度,将源数据读到数据缓冲模块中,控制模块将数据进行转换(大小写转换为加减操作),再写到数据缓冲模块中,再根据目的地址,目的传输位宽,将数据从数据缓冲模块中通过目的数据路径模块写到总线上。控制模块根据控制寄存器中312比特的值来决定是否忽略传输字节数,数据路径如图11所示。
[0073]以上操作如果忽略传输字节数,则传输过程中如果遇到字符串结束符时,传输自动结束;如果考虑传输字节数,当传输字节数满足配置时,传输结束。如果为地址递减模式,控制模块控制源/目的数据路径模块无法进行突发操作。
[0074]以上对本发明创造的实施例进行了详细说明,但所述内容仅为本发明创造的较佳实施例,不能被认为用于限定本发明的实施范围。凡依本发明创造范围所作的均等变化与改进等,均应仍归属于本专利涵盖范围之内。
【权利要求】
1.一种采用DMA控制器进行字符串处理的方法,其特征在于,包括如下步骤: DMA控制模块产生中断,获取总线控制权; 设置控制寄存器参数; DMA控制模块读取控制寄存器操作模式,进行数据操作; 结果返回到总线。
2.如权利要求1所述的一种采用DMA控制器进行字符串处理的方法,其特征在于,所述控制寄存器参数包括:源地址、目的地址、传输状态寄存器、传输控制寄存器、操作数据/结果寄存器。
3.如权利要求1所述的一种采用DMA控制器进行字符串处理的方法,其特征在于,所述控制寄存器操作模式包括:搬移、设置、比较、查找、计数、转换。
4.如权利要求1所述的一种采用DMA控制器进行字符串处理的方法,其特征在于,所述总线协议是AHB或AHB_lite。
5.一种采用DMA控制器进行字符串处理的装置,其特征在于,包括: 源数据路径模块、目的数据路径模块,用于控制总线数据读写; 数据缓冲模块,用于缓存从源/目的数据通路读写的数据; DMA控制模块,用于控制源/目的数据通路,控制数据缓冲模块,控制字符串处理,产生中断、异常中断; 控制寄存器模块,用于配置DMA操作模式。
6.如权利要求5所述的一种采用DMA控制器进行字符串处理的装置,其特征在于,所述源/目的数据路径模块包括: 控制输出传输种类,传输方向(读或写),是否为突发操作读,传输地址,数据宽度,写数据; 控制接受来自总线的数据,传输完成信号,传输错误信号。将传输总线完成信号和总线错误信号作进一步处理并告知DMA控制模块; 在DMA控制模块控制下,源/目的数据路径模块将从总线读入的数据写到数据缓冲模块,或将数据缓冲模块中的数据写到源/目的数据路径模块,最终写到总线上。
7.如权利要求5所述的一种采用DMA控制器进行字符串处理的装置,其特征在于,所述数据缓冲模块包括: 接受来自源/目的数据路径模块的数据或输出数据到源/目的数据路径模块。对于双字符操作,数据缓冲模块则化分为源数据缓冲区和目的数据缓冲区,接受来自源和目的数据路径模块的数据,并为DMA控制模块进行数据操作提供数据。
8.如权利要求5所述的一种采用DMA控制器进行字符串处理的装置,其特征在于,所述DMA控制模块包括: 根据控制寄存器模块的配置,判断操作模式; 控制源/目的数据路径模块传输方向(从DMA读或写),传输地址,传输数据字节数,传输开始请求; 控制数据缓冲模块从源/目的数据路径读/写数据,是否清空数据缓冲模块; 根据控制寄存器模块的配置,从源和目的分别读入数据到DMA控制模块,进行处理(搬移、设置、比较、查找、计数、转换),将操作后的数据写到目的数据总线或将结果写到控制寄存器模块中的操作数据/结果寄存器中去,并最终写到总线上。 设置控制寄存器模块中传输状态寄存器相应位,根据控制寄存器模块内完成中断使能,异常中断使能,产生完成中断,异常中断。
9.如权利要求5所述的一种采用DMA控制器进行字符串处理的装置,其特征在于,所述控制寄存器模块包括: 控制寄存器,用于控制DMA操作开始,完成中断使能,异常中断使能,源地址传输位宽,目的地址传输位宽,源地址递减或递增,目的地址递减或递增,传输字节数; 源地址寄存器,用于控制DMA操作源地址; 目的地址寄存器,用于控制DMA操作目的地址; 传输状态寄存器,标志传输完成状态、异常状态。 传输控制寄存器,用于控制是否为搬移、设置、比较、查找、计数、转换操作,控制搬移同时字符转化(大写字符转为小写字符,小写字符转为大写字符),控制比较是否忽略大小写,控制搬移前插入字符或搬移后插入字符,控制搬移、比较、查找操作是否判断字符串结束标志(同时忽略传输字节数)。 操作数据/结果寄存器,保存需要在一块存储区域重复设定的数据,或在字符串搬移过程中在字符串前或字符串后需要插入的字符。如果是查找或计数操作,操作结束后将查找的结果(地址)或计数的结果(个数),保存到此寄存器中。
【文档编号】G06F13/24GK104503929SQ201410722861
【公开日】2015年4月8日 申请日期:2014年12月2日 优先权日:2014年12月2日
【发明者】王勇, 王忠海, 肖佐楠, 郑茳 申请人:天津国芯科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1