CN106406811B - 一种基于fpga的数据流除法运行装置及方法 - Google Patents

一种基于fpga的数据流除法运行装置及方法 Download PDF

Info

Publication number
CN106406811B
CN106406811B CN201610768508.5A CN201610768508A CN106406811B CN 106406811 B CN106406811 B CN 106406811B CN 201610768508 A CN201610768508 A CN 201610768508A CN 106406811 B CN106406811 B CN 106406811B
Authority
CN
China
Prior art keywords
data
data flow
bit
value
current
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
CN201610768508.5A
Other languages
English (en)
Other versions
CN106406811A (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.)
CICT Mobile Communication Technology Co Ltd
Original Assignee
Wuhan Hongxin Telecommunication Technologies 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 Wuhan Hongxin Telecommunication Technologies Co Ltd filed Critical Wuhan Hongxin Telecommunication Technologies Co Ltd
Priority to CN201610768508.5A priority Critical patent/CN106406811B/zh
Publication of CN106406811A publication Critical patent/CN106406811A/zh
Application granted granted Critical
Publication of CN106406811B publication Critical patent/CN106406811B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/535Dividing only

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提出了一种基于FPGA的数据流除法运行装置及方法,输入为i个位宽长度为A的数据流a0,a1,…,ai‑1,i个位宽长度为B的数据流b0,b1,…,bi‑1,输出为i个位宽长度为C的数据流c0,c1,…,ci‑1,实现包括取绝对值、扩展位宽、比特位分组、比特位判断、有效输出。其中,取绝对值是求取数据流b0,b1,…,bi‑1的绝对值,然后扩展数据流的当前数据位宽;将扩展位宽后的数据流当前数据按照比特位分组;判断分组后的比特位对应值是否是有效值;从分好的组里面选择有效的数据输出。本发明设计简单,不仅实现时间短,占用资源少,具有很强的通用性。

Description

一种基于FPGA的数据流除法运行装置及方法
技术领域
本发明涉及数据流的不间断处理,更具体的是一种数据流除法的FPGA实现装置。
背景技术
由于目前现场可编程阵列(FPGA)具有工艺成熟、实现简单、性价比高等优点,所以在很多产品设计中被用于实现算法处理。
数据流的处理一般难点在于数据在源源不断的流入,不管是用于加减乘除,都对建立保持时间有较高的要求,其中用于除法计算时,对时间更是有严格要求,因为使用除法器计算过程耗时太长,而且会占用过多资源。流水线太长会导致版本编译时间过长,性能不会达到最优。
图1表示的是现有技术中数据流的算法处理流程,包括取绝对值、扩展位宽、统计第一个数值1之前数值0的个数、统计的个数进行减法运算、减法运算后的值进行2的幂次方乘法、幂次方乘法的结果作为除数进行除法运算。其中统计数据流的每一个数据第一个数值1之前数值0的个数,在硬件语言中,传统做法一般是用for语句实现。硬件语言中的for循环和C语言中的for循环不一样,它表示的是硬件行为,循环几次就是将相同的电路复制几次。因此,循环次数越多,占用面积越大,编译时间就会越长。所以,在数据位宽较大的情况下,基于FPGA实现时,使用for语句统计每个数据数值1之前数值0的个数并没有优势。
基于for语句实现,得到数值0的个数之后进行减法运算,并且减法运算之后的结果再进行2的幂次方运算。2的幂次方运算基于FPGA实现,即是对数据进行移位,但需要根据减法运算后的结果进行移位。减法运算后的结果有正有负,移位时,一般做法是利用case语句实现。case语句是一种多分支选择语句,但是如果分支过长,时钟较快的情况下,会导致时序不满足。所以减法运算后的结果取值范围较广时,此种实现方案不能体现优势。
发明内容
本发明提出了一种数据流除法的FPGA实现装置,可以降低硬件资源消耗、缩短版本编译时间,提高性能。
本发明技术方案提供一种基于FPGA的数据流除法运行装置,数据流a0,a1,…,ai-1作为输入,其长度为i,每个数据对应的位宽长度是A;数据流b0,b1,…,bi-1作为输入,其长度为i,每个数据对应的位宽长度是B;数据流c0,c1,…,ci-1作为输出,其长度为i,每个数据对应的位宽长度是C,其特征在于:包括以下模块,
取绝对值模块,用于求取数据流b0,b1,…,bi-1的每个数据的绝对值,得到新的数据流,即为|b0|,|b1|,…,|bi-1|;
扩展位宽模块,用于扩展数据流|b0|,|b1|,…,|bi-1|的位宽,得到新的数据流b′0,b′1,…,b′i-1,使数据流b′0,b′1,…,b′i-1的当前数据b′k的位宽长度与数据流a0,a1,…,ai-1的当前数据ak的位宽长度相等;
比特位分组模块,用于根据数据流a0,a1,…,ai-1当前数据ak的位宽长度A和预设的分组值s,将数据流b′0,b′1,…,b′i-1当前数据b′k按照比特位分组,以s个比特位为一组,分成A/s组;
比特位判断模块,用于从每组的高位开始,判断数据流b′0,b′1,…,b′i-1的当前数据b′k对应的比特位的值是否为1,
如果对应值为1,则结合此比特位的位置信息对数据流a0,a1,…,ai-1的当前数据ak进行截位和拼接处理,并将此组对应的标识设置为有效,同时输出此组此比特位对应的移位索引号;
如果对应值为0,则跳转到此组的下一比特位进行判断,直到此组的最后一个比特位判断完毕;如果此组所有比特位对应值都为0,则此组对应的有效标识设置为无效,并且此组输出的数据为0,此组比特位对应的移位索引号也为0;
有效输出模块,用于按照先后顺序,从第一组开始,根据每组对应的有效标志是否有效,得到数据流c0,c1,…,ci-1的当前数据ck;根据数据流a0,a1,…,ai-1和数据流b0,b1,…,bi-1的完整输入,得到最终的数据流c0,c1,…,ci-1
而且,比特位判断模块中,判断当前数据b′k对应的比特位的值是否为1,如果对应值为1,则结合比特位的位置信息对数据流a0,a1,…,ai-1的当前数据ak进行截位和拼接处理,实现如下,
设数据流b′0,b′1,…,b′i-1的每个数据位宽长度是A,当前数据b′k统计的第一个非0值之前数值0的个数为y,数据流b′0,b′1,…,b′i-1的每个数据对应的数值0的个数y取值范围是y大于等于0小于等于A-1,再经过减法运算,得到y的取值范围是大于等于x-A+1小于等于x,其中x是被减数,x-A+1的值是负数;
假设数据流b′0,b′1,…,b′i-1的当前第k个数据的当前第t个比特位b′k[t的值为1,并且其属于分组中的第j组,
如果t的值等于A-x-2,则输出的第j组的数据为截取数据流a0,a1,…,ai-1的当前第k个数据ak的第A-x-1位到第0位;
如果t的值大于A-x-2,t等于A-x+m,则输出的第j组的数据为截取数据流a0,a1,…,ai-1的当前第k个数据ak的第A-x+m+1到第m+2位,其中m为小于等于x-2的任意正数;
如果t的值小于A-x-2,比如t的值等于A-x-n,则输出的第j组数据为截取数据流a0,a1,…,ai-1的当前第k个数据ak的第A-x-n+1位到第0位,并在右侧拼接n-2个数值0。
而且,数据流a0,a1,…,ai-1的每个数据为正或负或0;数据流b0,b1,…,bi-1的每个数据为正或负或0;数据流c0,c1,…,ci-1的每个数据为正或负或0;
若输入的数据流a0,a1,…,ai-1的当前数据为0,则输出的数据流c0,c1,…,ci-1的当前数据也为0;若输入的数据流b0,b1,…,bi-1的当前数据为0,则输出的数据流c0,c1,…,ci-1的当前数据的值等于输入的数据流a0,a1,…,ai-1的当前数据的值。
而且,数据流b0,b1,…,bi-1的每个数据位宽长度B小于或等于数据流a0,a1,…,ai-1的每个数据位宽长度A。
本发明相应提供一种基于FPGA的数据流除法运行方法,数据流a0,a1,…,ai-1作为输入,其长度为i,每个数据对应的位宽长度是A;数据流b0,b1,…,bi-1作为输入,其长度为i,每个数据对应的位宽长度是B;数据流c0,c1,…,ci-1作为输出,其长度为i,每个数据对应的位宽长度是C,包括以下步骤,
取绝对值步骤,用于求取数据流b0,b1,…,bi-1的每个数据的绝对值,得到新的数据流,即为|b0|,|b1|,…,|bi-1|;
扩展位宽步骤,用于扩展数据流|b0|,|b1|,…,|bi-1|的位宽,得到新的数据流b′0,b′1,…,bi-1,使数据流b′0,b′1,…,b′i-1的当前数据b′k的位宽长度与数据流a0,a1,…,ai-1的当前数据ak的位宽长度相等;
比特位分组步骤,用于根据数据流a0,a1,…,ai-1当前数据ak的位宽长度A和预设的分组值s,将数据流b′0,b′1,…,b′i-1当前数据b′k按照比特位分组,以s个比特位为一组,分成A/s组;
比特位判断步骤,用于从每组的高位开始,判断数据流b′0,b′1,…,b′i-1的当前数据b′k对应的比特位的值是否为1,
如果对应值为1,则结合此比特位的位置信息对数据流a0,a1,…,ai-1的当前数据ak进行截位和拼接处理,并将此组对应的标识设置为有效,同时输出此组此比特位对应的移位索引号;
如果对应值为0,则跳转到此组的下一比特位进行判断,直到此组的最后一个比特位判断完毕;如果此组所有比特位对应值都为0,则此组对应的有效标识设置为无效,并且此组输出的数据为0,此组比特位对应的移位索引号也为0;
有效输出步骤,用于按照先后顺序,从第一组开始,根据每组对应的有效标志是否有效,得到数据流c0,c1,…,ci-1的当前数据ck;根据数据流a0,a1,…,ai-1和数据流b0,b1,…,bi-1的完整输入,得到最终的数据流c0,c1,…,ci-1
而且,比特位判断模块中,判断当前数据b′k对应的比特位的值是否为1,如果对应值为1,则结合比特位的位置信息对数据流a0,a1,…,ai-1的当前数据ak进行截位和拼接处理,实现如下,
设数据流b′0,b′1,…,b′i-1的每个数据位宽长度是A,当前数据b′k统计的第一个非0值之前数值0的个数为y,数据流b′0,b′1,…,b′i-1的每个数据对应的数值0的个数y取值范围是y大于等于0小于等于A-1,再经过减法运算,得到y的取值范围是大于等于x-A+1小于等于x,其中x是被减数,x-A+1的值是负数;
假设数据流b′0,b′1,…,b′i-1的当前第k个数据的当前第t个比特位b′k[t的值为1,并且其属于分组中的第j组,
如果t的值等于A-x-2,则输出的第j组的数据为截取数据流a0,a1,…,ai-1的当前第k个数据ak的第A-x-1位到第0位;
如果t的值大于A-x-2,t等于A-x+m,则输出的第j组的数据为截取数据流a0,a1,…,ai-1的当前第k个数据ak的第A-x+m+1到第m+2位,其中m为小于等于x-2的任意正数;
如果t的值小于A-x-2,比如t的值等于A-x-n,则输出的第j组数据为截取数据流a0,a1,…,ai-1的当前第k个数据ak的第A-x-n+1位到第0位,并在右侧拼接n-2个数值0。
而且,数据流a0,a1,…,ai-1的每个数据为正或负或0;数据流b0,b1,…,bi-1的每个数据为正或负或0;数据流c0,c1,…,ci-1的每个数据为正或负或0;
若输入的数据流a0,a1,…,ai-1的当前数据为0,则输出的数据流c0,c1,…,ci-1的当前数据也为0;若输入的数据流b0,b1,…,bi-1的当前数据为0,则输出的数据流c0,c1,…,ci-1的当前数据的值等于输入的数据流a0,a1,…,ai-1的当前数据的值。
而且,数据流b0,b1,…,bi-1的每个数据位宽长度B小于或等于数据流a0,a1,…,ai-1的每个数据位宽长度A。
本发明提出的一种数据流除法的FPGA实现技术方案,没有采用传统算法的for语句和case语句实现,而是采用简单步骤实现相同的功能。两者相比,本发明实现简单,耗时短,占用硬件资源少,通用性强,具有重要的市场价值。
附图说明
图1为现有技术中数据流的算法原理图;
图2为本发明实施例中FPGA实现过程框图;
图3为本发明中数据流b′0,b′1,…,b′i-1当前数据b′k比特位分组示意图;
图4为本发明中第t组数据的FPGA实现流程图。其中t是数据分组中的第t组。
具体实施方式
下面结合附图及实施例对本发明做进一步的详细说明。
本发明的实施例,提出一种数据流除法的FPGA实现装置。本发明跳出传统for语句和case语句的实现方式,采用分组检测比特位的方法,保证整个处理流程占用时间短、硬件资源少,性能达到最优。
图2为本发明实施例中FPGA实现的框图,具体的流程说明如下:
输入数据流a0,a1,…,ai-1,其长度为i,每个数据的位宽长度为A,对应的值可正可负可为0。
输入数据流b0,b1,…,bi-1,其长度为i,每个数据的位宽长度为B,对应的值可正可负可为0。
输出数据流c0,c1,…,ci-1,其长度为i,每个数据的位宽长度为C,对应的值可正可负可为0。
并且,若输入的数据流a0,a1,…,ai-1的当前数据ak的值为0,则输出的数据流c0,c1,…,ci-1的当前数据ck的值也为0;若输入的数据流b0,b1,…,bi-1的当前数据bk的值为0,则输出的数据流c0,c1,…,ci-1的当前数据ck的值等于输入的数据流a0,a1,…,ai-1的当前数据ak的值。其中,k的取值为0,1,…i-1。
数据流b0,b1,…,bi-1的当前数据bk的值可以等于数据流a0,a1,…,ai-1的当前数据ak的值,也可以为其他值。
数据流b0,b1,…,bi-1的每个数据位宽长度B要小于等于数据流a0,a1,…,ai-1的每个数据位宽长度A。
数据流c0,c1,…,ci-1的每个数据位宽长度C的值等于A减去x。其中,x是一个小于A的任意正数。
具体实施步骤如下:
步骤(1)取绝对值:求取数据流b0,b1,…,bi-1的每个数据的绝对值,得到新的数据流,即为|b0|,|b1|,…,|bi-1|。
步骤(2)扩展位宽:扩展数据流|b0|,|b1|,…,|bi-1|的位宽,得到新的数据流,即为b′0,b′1,…,b′i-1,使数据流b′0,b′1,…,b′i-1的当前数据b′k的位宽长度与数据流a0,a1,…,ai-1的当前数据ak的位宽长度相等。
步骤(3)比特位分组:根据数据流a0,a1,…,ai-1当前数据ak的位宽长度A和预设的分组值s,将数据流b′0,b′1,…,b′i-1当前数据b′k按照比特位分组,实施例中s=6,以预定数值6个比特位为一组,分成A/6组。所以,若A是6的整数倍,则最后一组有6个比特位;否则,最后一组少于6个比特位。
步骤(4)比特位判断:从每组的高位开始,判断数据流b′0,b′1,…,b′i-1的当前数据b′k对应的比特位的值是否为1。
如果对应值为1,则结合此比特位的位置信息对数据流a0,a1,…,ai-1的当前数据ak进行截位和拼接处理,并将此组对应的标识设置为有效,同时输出此组此比特位对应的移位索引号,也就是数据流b′0,b′1,…,b′i-1当前数据b′k的第一个非0值之前数值0的个数进行减法运算后的结果,并结束判断;
如果对应值为0,则跳转到此组的下一比特位进行判断,直到此组的最后一个比特位判断完毕;如果此组所有比特位对应值都为0,则此组对应的有效标识设置为无效,并且此组输出的数据为0,此组比特位对应的移位索引号也为0;
针对上述数据流a0,a1,…,ai-1的当前数据ak进行截位和拼接处理的具体实现方式,举例说明:假设数据流b′0,b′1,…,b′i-1的每个数据位宽长度是A,当前数据b′k统计的第一个非0值之前数值0的个数为y,从整个数据流的方向考虑,根据算法原理,数据流b′0,b′1,…,b′i-1的每个数据对应的数值0的个数y取值范围是y大于等于0小于等于A-1,再经过减法运算,得到y的取值范围是大于等于x-A+1小于等于x,其中x是被减数,x-A+1的值是负数。假设数据流b′0,b′1,…,b′i-1的当前第k个数据的当前第t个比特位b′k[t的值为1,并且其属于分组中的第j组,以数值A-x-2为分界线,如果t的值等于A-x-2,则输出的第j组的数据为截取数据流a0,a1,…,ai-1的当前第k个数据ak的第A-x-1位到第0位;如果t的值大于A-x-2,比如t的值等于A-x+m,则输出的第j组的数据为截取数据流a0,a1,…,ai-1的当前第k个数据ak的第A-x+m+1到第m+2位,其中m为小于等于x-2的任意正数;如果t的值小于A-x-2,比如t的值等于A-x-n,则输出的第j组数据为截取数据流a0,a1,…,ai-1的当前第k个数据ak的第A-x-n+1位到第0位,并在右侧拼接n-2个数值0,其中第A-x-n+1位到第0位作为输出数据的高位,右侧拼接的n-2个数值0作为输出数据的低位,n为大于等于A-x的任意正数。
针对上述数据流a0,a1,…,ai-1的当前数据ak进行截位和拼接处理的举例说明,当t的值等于A-x-2时,此组此比特位对应的索引号为0;当t的值大于A-x-2,比如t的值等于A-x+m时,此组此比特位对应的索引号为m+2,此值为正数;当t的值小于A-x-2,比如t的值等于A-x-n时,此组此比特位对应的索引号为2-n,此值为负数。具体实施时,上述的t、A、x、m、n的值均为已知固定值,所以此组输出的有效数据以及此组此比特位对应的索引号也均为固定值。
步骤(5)有效输出:每组完成判断时间相同。判断完成后,按照先后顺序,从第一组开始,根据每组对应的有效标志是否有效,得到数据流c0,c1,…,ci-1的当前数据ck。根据数据流a0,a1,…,ai-1和数据流b0,b1,…,bi-1的完整输入,得到最终的数据流c0,c1,…,ci-1
上述步骤(3)中描述的是按照6个比特位分为一组,可以是5个比特位、也可以是7个、8个比特位、甚至是其他值。具体实施时,主要是在满足时序设计的前提下,根据数据的位宽长度制定分组值。
图3为本发明中数据流b′0,b′1,…,b′i-1的当前数据b′k比特位分组示意图。数据流b′0,b′1,…,b′i-1的当前数据b′k,其位宽长度是A,按6个比特位分为一组,可以分成A/6组,分别为b′k[A-2],…,b′k[A-6]…..b′k[t],…,b′k[t-5]………b′k[1],b′k[0],b′k[A-1]无需处理。举例说明:
假设A的值为40,按照6个比特为一组,则可以分成7组,并且第7组只有4个比特位。即b′k[38]、b′k[37]、b′k[36]、b′k[35]、b′k[34]5个比特位作为第一组,因为最高位无需判断;b′k[33]、b′k[32]、b′k[31]、b′k[30]、b′k[29]、b′k[28]6个比特位作为第二组;以此类推,b′k[3]、b′k[2]、b′k[1]、b′k[0]4个比特位作为第七组。
图3以及举例说明都是按照6个比特位作为一组分配,实施时也可以按照5个、7个、8个比特位作为一组分配,具体可以视情况而定。比如上面的举例说明中,数据位宽长度是40,在满足时序要求的情况下,可以按照8个比特位作为一组,分成5组。
图4为本发明中第t组数据的FPGA实现流程图。其中t是数据分组中的第t组。判断流程如下:
(1)判断b′k[t是否为1,若为1,则输出参数t_valid_flag、t_shift_index、t_shift_data的有效值,否则跳转到步骤(2);
(2)判断b′k[t-1]是否为1,若为1,则输出参数t_valid_flag、t_shift_index、t_shift_data的有效值,否则跳转到步骤(3);
(3)判断b′k[t-2]是否为1,若为1,则输出参数t_valid_flag、t_shift_index、t_shift_data的有效值,否则跳转到步骤(4);
(4)判断b′k[t-3]是否为1,若为1,则输出参数t_valid_flag、t_shift_index、t_shift_data的有效值,否则跳转到步骤(5);
(5)判断b′k[t-4]是否为1,若为1,则输出参数t_valid_flag、t_shift_index、t_shift_data的有效值,否则跳转到步骤(6);
(6)判断b′k[t-5]是否为1,若为1,则输出参数t_valid_flag、t_shift_index、t_shift_data的有效值,结束判断;否则输出参数t_valid_flag、t_shift_index、t_shift_data的无效值,结束判断。
其中,t_valid_flag、t_shift_index、t_shift_data三个参数的第一个字母t代表对应的组号,比如第一组是first_valid_flag、第二组是second_valid_flag。t_valid_flag指的是第t组数据输出是否有效,如果值为1,则表示有效;反之,则表示无效。t_shift_index指的是第t组某个比特位对应的移位索引号,即当前数据的第一个非0值之前数值0的个数。t_shift_data指的是第t组某个比特位对应的经过截位和拼接处理后的输出数据。
每组完成判断时间相同。判断完成后,按照先后顺序,从第一组开始,根据每组对应的参数t_valid_flag是否有效,决定最终输出的有效数据以及移位索引号。整个功能FPGA实现只需2个时钟周期即可完成。
本发明的实施例,提出一种数据流除法的FPGA实现装置。在数据流b0,b1,…,bi-1的位宽小于等于数据流a0,a1,…,ai-1的位宽的前提下,数据位宽可以任意配置,并且数据流b0,b1,…,bi-1的内容可以为一固定值,也可以等于数据流a0,a1,…,ai-1的值,具有可配性。此发明输入数据灵活,整个功能实现过程只占用2个时钟周期,大大减少了寄存器、存储器等存储资源,提高了数据处理速率。
本发明中所描述的具体实施例仅仅是对本发明进行举例说明。任何熟悉该技术的技术人员在本发明做揭露的技术范围内,都可轻易得到其变化或替换,因此本发明保护范围都应涵盖在由权利要求书所限定的保护范围之内。

Claims (10)

1.一种基于FPGA的数据流除法运行装置,数据流a0,a1,…,ai-1作为输入,其长度为i,每个数据对应的位宽长度是A;数据流b0,b1,…,bi-1作为输入,其长度为i,每个数据对应的位宽长度是B;数据流c0,c1,…,ci-1作为输出,其长度为i,每个数据对应的位宽长度是C,其特征在于:包括以下模块,
取绝对值模块,用于求取数据流b0,b1,…,bi-1的每个数据的绝对值,得到新的数据流,即为|b0|,|b1|,…,|bi-1|;
扩展位宽模块,用于扩展数据流|b0|,|b1|,…,|bi-1|的位宽,得到新的数据流b′0,b′1,…,b'i-1,使数据流b′0,b′1,…,b'i-1的当前数据b′k的位宽长度与数据流a0,a1,…,ai-1的当前数据ak的位宽长度相等;
比特位分组模块,用于根据数据流a0,a1,…,ai-1当前数据ak的位宽长度A和预设的分组值s,将数据流b′0,b′1,…,b'i-1当前数据b′k按照比特位分组,以s个比特位为一组,分成A/s组;
比特位判断模块,用于从每组的高位开始,判断数据流b′0,b′1,…,b′i-1的当前数据b′k对应的比特位的值是否为1,
如果对应值为1,则结合此比特位的位置信息对数据流a0,a1,…,ai-1的当前数据ak进行截位和拼接处理,并将此组对应的标识设置为有效,同时输出此组此比特位对应的移位索引号;
如果对应值为0,则跳转到此组的下一比特位进行判断,直到此组的最后一个比特位判断完毕;如果此组所有比特位对应值都为0,则此组对应的有效标识设置为无效,并且此组输出的数据为0,此组比特位对应的移位索引号也为0;
有效输出模块,用于按照先后顺序,从第一组开始,根据每组对应的有效标志是否有效,得到数据流c0,c1,…,ci-1的当前数据ck;根据数据流a0,a1,…,ai-1和数据流b0,b1,…,bi-1的完整输入,得到最终的数据流c0,c1,…,ci-1
2.根据权利要求1所述基于FPGA的数据流除法运行装置,其特征在于:比特位判断模块中,判断当前数据b′k对应的比特位的值是否为1,如果对应值为1,则结合比特位的位置信息对数据流a0,a1,…,ai-1的当前数据ak进行截位和拼接处理,实现如下,
设数据流b′0,b′1,…,b'i-1的每个数据位宽长度是A,当前数据b′k统计的第一个非0值之前数值0的个数为y,数据流b′0,b′1,…,b′i-1的每个数据对应的数值0的个数y取值范围是y大于等于0小于等于A-1,再经过减法运算,得到y的取值范围是大于等于x-A+1小于等于x,其中x是被减数,x-A+1的值是负数;
假设数据流b′0,b′1,…,b′i-1的当前第k个数据的当前第t个比特位b′k[t]的值为1,并且其属于分组中的第j组,
如果t的值等于A-x-2,则输出的第j组的数据为截取数据流a0,a1,…,ai-1的当前第k个数据ak的第A-x-1位到第0位;
如果t的值大于A-x-2,t等于A-x+m,则输出的第j组的数据为截取数据流a0,a1,…,ai-1的当前第k个数据ak的第A-x+m+1到第m+2位,其中m为小于等于x-2的任意正数;
如果t的值小于A-x-2,t的值等于A-x-n,则输出的第j组数据为截取数据流a0,a1,…,ai-1的当前第k个数据ak的第A-x-n+1位到第0位,并在右侧拼接n-2个数值0。
3.根据权利要求1或2所述基于FPGA的数据流除法运行装置,其特征在于:数据流a0,a1,…,ai-1的每个数据为正或负或0;数据流b0,b1,…,bi-1的每个数据为正或负或0;数据流c0,c1,…,ci-1的每个数据为正或负或0;
若输入的数据流a0,a1,…,ai-1的当前数据为0,则输出的数据流c0,c1,…,ci-1的当前数据也为0;若输入的数据流b0,b1,…,bi-1的当前数据为0,则输出的数据流c0,c1,…,ci-1的当前数据的值等于输入的数据流a0,a1,…,ai-1的当前数据的值。
4.根据权利要求1或2所述基于FPGA的数据流除法运行装置,其特征在于:数据流b0,b1,…,bi-1的每个数据位宽长度B小于或等于数据流a0,a1,…,ai-1的每个数据位宽长度A。
5.根据权利要求3所述基于FPGA的数据流除法运行装置,其特征在于:数据流b0,b1,…,bi-1的每个数据位宽长度B小于或等于数据流a0,a1,…,ai-1的每个数据位宽长度A。
6.一种基于FPGA的数据流除法运行方法,数据流a0,a1,…,ai-1作为输入,其长度为i,每个数据对应的位宽长度是A;数据流b0,b1,…,bi-1作为输入,其长度为i,每个数据对应的位宽长度是B;数据流c0,c1,…,ci-1作为输出,其长度为i,每个数据对应的位宽长度是C,其特征在于:包括以下步骤,
取绝对值步骤,用于求取数据流b0,b1,…,bi-1的每个数据的绝对值,得到新的数据流,即为|b0|,|b1|,…,|bi-1|;
扩展位宽步骤,用于扩展数据流|b0|,|b1|,…,|bi-1|的位宽,得到新的数据流b′0,b′1,…,b′i-1,使数据流b′0,b′1,…,b′i-1的当前数据b′k的位宽长度与数据流a0,a1,…,ai-1的当前数据ak的位宽长度相等;
比特位分组步骤,用于根据数据流a0,a1,…,ai-1当前数据ak的位宽长度A和预设的分组值s,将数据流b′0,b′1,…,b′i-1当前数据b′k按照比特位分组,以s个比特位为一组,分成A/s组;
比特位判断步骤,用于从每组的高位开始,判断数据流b′0,b′1,…,b′i-1的当前数据b′k对应的比特位的值是否为1,
如果对应值为1,则结合此比特位的位置信息对数据流a0,a1,…,ai-1的当前数据ak进行截位和拼接处理,并将此组对应的标识设置为有效,同时输出此组此比特位对应的移位索引号;
如果对应值为0,则跳转到此组的下一比特位进行判断,直到此组的最后一个比特位判断完毕;如果此组所有比特位对应值都为0,则此组对应的有效标识设置为无效,并且此组输出的数据为0,此组比特位对应的移位索引号也为0;
有效输出步骤,用于按照先后顺序,从第一组开始,根据每组对应的有效标志是否有效,得到数据流c0,c1,…,ci-1的当前数据ck;根据数据流a0,a1,…,ai-1和数据流b0,b1,…,bi-1的完整输入,得到最终的数据流c0,c1,…,ci-1
7.根据权利要求6所述基于FPGA的数据流除法运行方法,其特征在于:比特位判断模块中,判断当前数据b′k对应的比特位的值是否为1,如果对应值为1,则结合比特位的位置信息对数据流a0,a1,…,ai-1的当前数据ak进行截位和拼接处理,实现如下,
设数据流b′0,b′1,…,b′i-1的每个数据位宽长度是A,当前数据b′k统计的第一个非0值之前数值0的个数为y,数据流b′0,b′1,…,b′i-1的每个数据对应的数值0的个数y取值范围是y大于等于0小于等于A-1,再经过减法运算,得到y的取值范围是大于等于x-A+1小于等于x,其中x是被减数,x-A+1的值是负数;
假设数据流b′0,b′1,…,b′i-1的当前第k个数据的当前第t个比特位b′k[t]的值为1,并且其属于分组中的第j组,
如果t的值等于A-x-2,则输出的第j组的数据为截取数据流a0,a1,…,ai-1的当前第k个数据ak的第A-x-1位到第0位;
如果t的值大于A-x-2,t等于A-x+m,则输出的第j组的数据为截取数据流a0,a1,…,ai-1的当前第k个数据ak的第A-x+m+1到第m+2位,其中m为小于等于x-2的任意正数;
如果t的值小于A-x-2,t的值等于A-x-n,则输出的第j组数据为截取数据流a0,a1,…,ai-1的当前第k个数据ak的第A-x-n+1位到第0位,并在右侧拼接n-2个数值0。
8.根据权利要求6或7所述基于FPGA的数据流除法运行方法,其特征在于:数据流a0,a1,…,ai-1的每个数据为正或负或0;数据流b0,b1,…,bi-1的每个数据为正或负或0;数据流c0,c1,…,ci-1的每个数据为正或负或0;
若输入的数据流a0,a1,…,ai-1的当前数据为0,则输出的数据流c0,c1,…,ci-1的当前数据也为0;若输入的数据流b0,b1,…,bi-1的当前数据为0,则输出的数据流c0,c1,…,ci-1的当前数据的值等于输入的数据流a0,a1,…,ai-1的当前数据的值。
9.根据权利要求6或7所述基于FPGA的数据流除法运行方法,其特征在于:数据流b0,b1,…,bi-1的每个数据位宽长度B小于或等于数据流a0,a1,…,ai-1的每个数据位宽长度A。
10.根据权利要求8所述基于FPGA的数据流除法运行方法,其特征在于:数据流b0,b1,…,bi-1的每个数据位宽长度B小于或等于数据流a0,a1,…,ai-1的每个数据位宽长度A。
CN201610768508.5A 2016-08-30 2016-08-30 一种基于fpga的数据流除法运行装置及方法 Active CN106406811B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610768508.5A CN106406811B (zh) 2016-08-30 2016-08-30 一种基于fpga的数据流除法运行装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610768508.5A CN106406811B (zh) 2016-08-30 2016-08-30 一种基于fpga的数据流除法运行装置及方法

Publications (2)

Publication Number Publication Date
CN106406811A CN106406811A (zh) 2017-02-15
CN106406811B true CN106406811B (zh) 2019-01-04

Family

ID=58002912

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610768508.5A Active CN106406811B (zh) 2016-08-30 2016-08-30 一种基于fpga的数据流除法运行装置及方法

Country Status (1)

Country Link
CN (1) CN106406811B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101276268A (zh) * 2008-05-23 2008-10-01 武汉飞思科技有限公司 一种计算整数的模数除法的余数的方法
CN201359721Y (zh) * 2008-12-24 2009-12-09 京信通信系统(中国)有限公司 一种高速除法器
US20120215939A1 (en) * 2011-02-22 2012-08-23 Lsi Corporation Binary-shift operations such as for header compression in packet-based communications
CN103399725A (zh) * 2013-08-08 2013-11-20 中国科学院自动化研究所 一种不恢复余数的除法器
CN104375802A (zh) * 2014-09-23 2015-02-25 上海晟矽微电子股份有限公司 一种乘除法器及运算方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101276268A (zh) * 2008-05-23 2008-10-01 武汉飞思科技有限公司 一种计算整数的模数除法的余数的方法
CN201359721Y (zh) * 2008-12-24 2009-12-09 京信通信系统(中国)有限公司 一种高速除法器
US20120215939A1 (en) * 2011-02-22 2012-08-23 Lsi Corporation Binary-shift operations such as for header compression in packet-based communications
CN103399725A (zh) * 2013-08-08 2013-11-20 中国科学院自动化研究所 一种不恢复余数的除法器
CN104375802A (zh) * 2014-09-23 2015-02-25 上海晟矽微电子股份有限公司 一种乘除法器及运算方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"基于FPGA的32位循环型除法器设计";李文彬 等;《物联网技术》;20141115(第11期);第62-63页
"基于FPGA的32位除法器设计";周殿凤 等;《信息化研究》;20100320;第36卷(第3期);第26-28页

Also Published As

Publication number Publication date
CN106406811A (zh) 2017-02-15

Similar Documents

Publication Publication Date Title
US11235774B2 (en) Road condition predicting method and apparatus, computer device and readable medium
CN105528191B (zh) 数据累加装置、方法及数字信号处理装置
CN106168797B (zh) 一种模块化获取核电站故障树顶事项失效概率的方法
CN103116493B (zh) 一种应用于粗粒度可重构阵列的自动映射方法
CN104133766B (zh) 基于多目标社团发现的软件系统可维护性评估与提升方法
CN108153853A (zh) 基于Wikipedia链接结构的中文概念向量生成方法和装置
CN109426484A (zh) 一种数据排序装置、方法及芯片
US20190220778A1 (en) Information processing apparatus, information processing method, and computer readable medium
CN110516817A (zh) 一种模型训练数据加载方法及装置
CN105913118A (zh) 一种基于概率计算的人工神经网络硬件实现装置
CN106873959A (zh) 一种软件界面配色方法及装置
CN112257844A (zh) 一种基于混合精度配置的卷积神经网络加速器及其实现方法
CN109992785A (zh) 基于机器学习的内容计算方法、装置及设备
CN104461548B (zh) 代码片段的添加方法和装置
CN104360906B (zh) 一种基于差分约束系统与迭代模的高层次综合调度方法
CN109002885A (zh) 一种卷积神经网络池化单元及池化计算方法
CN105719261A (zh) 点云数据合并系统及方法
CN106406811B (zh) 一种基于fpga的数据流除法运行装置及方法
Di Battista et al. Spirality of orthogonal representations and optimal drawings of series-parallel graphs and 3-planar graphs
CN110222815A (zh) 适用于深度学习硬件加速器的可配置激活函数装置及方法
CN105958850A (zh) 基于优化归并排序的模块化多电平换流器电容均压方法
CN106776275B (zh) 一种基于分组复用的测试流程自动生成方法
CN105005638A (zh) 一种基于线性延时模型的高层次综合调度方法
CN105574269A (zh) 一种专用指令处理器的设计验证方法
CN107590074A (zh) 一种测试用例的生成方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address

Address after: 430205 Hubei city of Wuhan province Jiangxia Hidden Dragon Island Tan lake two Road No. 1

Patentee after: CITIC Mobile Communication Technology Co., Ltd

Address before: 430073 Hubei city of Wuhan province Jiangxia Hidden Dragon Island Tan lake two Road No. 1

Patentee before: Wuhan Hongxin Telecommunication Technologies Co.,Ltd.

CP03 Change of name, title or address
CP01 Change in the name or title of a patent holder

Address after: 430205 No.1 tanhu 2nd Road, Canglong Island, Jiangxia District, Wuhan City, Hubei Province

Patentee after: CITIC Mobile Communication Technology Co.,Ltd.

Address before: 430205 No.1 tanhu 2nd Road, Canglong Island, Jiangxia District, Wuhan City, Hubei Province

Patentee before: CITIC Mobile Communication Technology Co., Ltd

CP01 Change in the name or title of a patent holder