[发明专利]一种基于FPGA的并行字符串匹配算法有效
申请号: | 201810307836.4 | 申请日: | 2018-04-08 |
公开(公告)号: | CN108628953B | 公开(公告)日: | 2022-02-15 |
发明(设计)人: | 黄以华;殷海元 | 申请(专利权)人: | 中山大学 |
主分类号: | G06F16/9032 | 分类号: | G06F16/9032 |
代理公司: | 广州粤高专利商标代理有限公司 44102 | 代理人: | 林丽明 |
地址: | 510275 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 fpga 并行 字符串 匹配 算法 | ||
1.一种基于FPGA的并行字符串匹配算法,其特征在于:通过FPGA并行处理在一个时钟周期找到模式字符串前j个字符的子串,以及它的前缀和后缀的最大公共元素值,通过前缀和后缀的最大公共元素值可直接得到并输出NEXT数组,利用NEXT数组可实现多个模式的模式字符串并行匹配,根据实现的NEXT函数,每一个模式对应一个匹配引擎,同时对不同的NEXT函数值和模式字符串,实现的一对多同时比较,最后根据匹配的标志输出最终的匹配结果。
2.根据权利要求1所述的基于FPGA的并行字符串匹配算法,其特征在于:所述模式字符串前j个字符的子串,以及它的前缀和后缀的最大公共元素值的具体寻找过程如下:
步骤1:列出前j=2个字符的子串到除去模式字符串本身的最大的子串;
步骤2:分别比较步骤1中每一个子串的相同大小的前后缀,如果比较相等,输出用一位标志位s=1表示;
步骤3:每一个子串所有的比较的输出标志位s作为一个优先级编码器的输入,编码器输出即可得到所述模式字符串前j个字符所构成的字符串最大的前后缀的公共元素值;
步骤4:通过NEXT函数值与前j个字符的子串,它的前后缀的最大公共元素值的关系转而得到NEXT数组。
3.根据权利要求2所述的基于FPGA的并行字符串匹配算法,其特征在于:所述得到NEXT数组的具体过程如下:
根据NEXT函数值的定义知,NEXT[1]=0;如果最大公共元素值Max[1]=0,也就是说,j=2时,前2字符是不等的,可得NEXT[2]=1;即如果得到的Max值为零,那么就等于1;如果,最大公共元素值不为零,那么就满足NEXT[j]=Max[j-1];即可一一对应NEXT函数值。
4.根据权利要求2所述的基于FPGA的并行字符串匹配算法,其特征在于:在所述模式字符串前j个字符的子串,以及它的前缀和后缀的最大公共元素值的实现方式如下:
步骤1:在模式字符串存储中按地址为分别可得到前j个字符的子串,每一个子串由8bit的ASCII码表示,j的值等于字节的数目;
步骤2:根据步骤1中的得到的j字节的二进制数,通过相应位的比较器,比较器输出1bit,相等输出为1,否则为0;
步骤3:根据每一个前j个字符的子串,它每一个比较器输出由高位到低位作为编码器的输入,以最高位优先级编码,得到对应第j位的Max值。
5.根据权利要求3所述的基于FPGA的并行字符串匹配算法,其特征在于:实现NEXT函数值的方式如下:
步骤1:根据得到Max值,此处用到比较器,判断Max值是否为零,然后在不为零的情况用到加法器执行加1操作,否则不执行,直接对应为赋值为1;
步骤2:根据上面比较器和加法器共同作用的结果后,依次按地址存放得到NEXT函数值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中山大学,未经中山大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810307836.4/1.html,转载请声明来源钻瓜专利网。