可重构数字信号处理器的制作方法

文档序号:6559029阅读:154来源:国知局
专利名称:可重构数字信号处理器的制作方法
技术领域
本发明公开了一种用于快速傅立叶变换(FFT)、快速傅立叶逆变换(IFFT)、FIR脉组处理、相关处理等数字信号实时处理的可重构数字信号处理器(DSP)。
背景技术
20世纪60年代以来,随着计算技术和信息技术的迅速发展,数字信号处理作为一个独立学科迅速发展并在诸多领域得到广泛应用。随着大规模集成电路技术和半导体技术的快速发展以及各种实时处理需求的不断提高,数字信号处理能力也以指数级的速度飞速提升,并在科研、军事以及民用等领域发挥着越来越重要的作用,数字信号处理器件已成为支撑这些领域高速发展的重要条件。在数字信号实时处理中,快速傅立叶变换(FFT)、快速傅立叶逆变换(IFFT)、FIR脉组处理、相关处理等滤波运算的应用最为广泛。硬件的实现方式目前主要有基于通用数字信号处理器、基于现场可编程门阵列(FPGA)/大规模可编程逻辑器件(CPLD)和基于专用集成电路(ASIC)三种。一方面,三种器件各有局限,通用数字信号处理器的优势在于编程的灵活性和普适性,但其运算能力有限。大容量的FPGA/CPLD内部硬件资源较多,但需要针对具体应用单独开发固件逻辑,人力成本高,且大容量FPGA/CPLD价格昂贵。传统的专用集成电路架构与硬线连接固定,功能较单一,其应用范围大受局限。另一方面,数字信号处理的技术要求却在不断提高,随着宽带运用场合不断扩大、阵列处理的数目不断增大、合作及非合作数目目标处理涉及的运算量不断加大,对信号处理的速度在不断加码。如复数1024点FFT运算速度要求在100MHz以上,有些场合需要为500MHz以上。上述三种器件在功能、价格、适应性、易用性上越来越难满足数字信号实时处理的要求。

发明内容
本发明所要解决的技术问题是提供一种应用于数字信号实时处理的可重构数字信号处理器,它具有专用大规模集成电路的运算能力,而且能适应快速傅立叶变换(FFT)、快速傅立叶逆变换(IFFT)、FIR脉组处理、相关处理等不同的数字信号实时处理场合,同时使用简单,价格低廉。
本发明所采取的技术方案是可重构数字信号处理器内部的硬件架构和硬件连线可通过配置控制字进行结构重组,从而实现快速傅立叶变换(FFT)/快速傅立叶逆变换(IFFT)、FIR脉组及相关处理等多种形式的滤波运算。
主体架构包括输入单元、输出单元、数据交换单元和4个基本单元,其基本单元中包含160个实数浮点乘法累加器,而且它们平均分布于4个基本单元中。
硬件的组织形式可以通过配置控制字重组通过控制字和控制信号的配置,可以改变所述160个实数浮点乘法累加器以及数据交换单元的组织形式,使之选择不同的工作模式,以适应三种不同的运算任务FFT/IFFT、FIR脉组处理、相关运算。
硬件调度方案采取集中式与分布式相结合的两级调度方法即控制字先由全局模块进行一级译码,再由各基本单元进行二级译码。
总体架构采用两级控制架构,全局控制模块用于协调4个基本单元,每个基本单元内部有其自身的本地控制逻辑。介于4个基本单元之间的数据交换单元负责把每个基本单元中的数据按照不同的控制要求送入其他3个基本单元。
输入单元接收控制字、对控制字进行一级译码、分配控制字到各单元。控制字与系数入口1复用同一个端口,控制字接收模块接收控制字,然后送入一级译码模块译码,一方面产生全局控制信号用于产生片内时序、为系数和数据提供同步,另一方面通过控制字分配模块分别向片内其他单元发射。系数同步模块对系数入口1与系数入口2进行同步。数据同步模块对数据入口1和数据入口2进行同步。
数据交换单元是一组多输入、多输出的开关组合,在4个基本单元之间交换数据。
输出单元对各个基本单元的运算结果进行排序,并且按照不同的格式输出。基本单元输出结果排序模块在FFT/IFFT和FIR脉组处理时将基本单元的输出按照频道顺序排列;当工作于相关处理运算模式时将来自各个基本单元的、按帧输出的数据调整为与输入数据率相同的连续数据流。求模模块完成实部/虚部的输出格式到模值/相角的输出格式的转换。取对数模块将输入的模值转换为对数表示。浮点/定点转换模块可以将实部/虚部模块的或者求模模块的输出由浮点格式转换为定点格式。指数归一化模块通过对尾数作相应移位将浮点格式的运算结果的指数统一为固定值。上述4种格式转换模块分别有两套,每个输出端口对应一套,保证两个输出端口可以独立地以任意一种格式输出。
基本单元中,数据存储器包括8个512×40的双端口RAM,用于运算数据的输入缓存、运算中间结果暂存和运算结果输出缓存。数据缓存可以同时把数据加到每个复数乘法累加器和复数乘法累加器子阵。系数存储器包括10个256×32的双端口RAM,用于存储相关处理和FIR滤波器系数以及FFT运算时的加权系数。FFT迭代运算的系数是一个固定的、以专用逻辑实现的一个表。每个复数乘法累加器对应4个实数浮点乘法累加器,每个复数乘法累加器子阵包括16个实数浮点乘法累加器,相当于4个复数乘法累加器。两个复数乘法累加器子阵和复数乘法累加器按照不同的方式搭配组合,用于完成不同的运算。实数浮点乘法累加器的结构分为5个部分定点乘法部分、截位部分、指数调整部分、定点加法部分、指数判断部分。
在三种滤波运算时采取相应的组织形式为做FFT/IFFT运算时,复数乘法累加子阵A和复数乘法累加子阵B分别作为基8算法的一个迭代运算的节点,子阵中的4个复数乘法累加器用于完成一级基8迭代运算。子阵前面的那个复数乘法累加器A及复数乘法累加器B作为加窗运算器,对数据进行加窗处理。加窗之后的数据进入复数乘法累加子阵进行一级基8迭代运算。每一级迭代运算的输出首先导入数据缓存,然后再通过数据交换单元送到相应的另外一个复数乘法累加子阵,以进行下一级迭代运算。
在做FIR脉组处理时,基本单元内部的2个复数乘法累加器模块和2个复数乘法累加器子阵模块中的乘法累加器并联使用,每个复数乘法累加器对应FIR脉组的一个频道。共轭运算时对应2个频道。
做相关运算时,复数乘法累加器和复数乘法累加器子阵串联使用,相当于串联10个复数乘法累加器,此时基本单元内部的乘法累加器被构造成级联的形式。
所采用的硬件调度方案是通过控制字和控制信号对硬件资源的调度采用全局控制和基本单元内本地控制相结合的两级调度模式,控制字与控制信号首先进入全局控制模块进行一级译码与控制字分配。在这个模块内,首先接收控制字,然后根据控制字产生一些全局控制信号。这些全局控制包括协调4个基本单元的动作,决定运算结果的输出格式,对片内主时钟的设置。全局控制模块的第二个作用,是向各基本单元的本地控制模块发射控制信息。这些被发射的信息包括工作模式、工作模式的子类型、运算点数、频道数目、处理通道的数目。
各基本单元内的本地控制模块在收到全局控制模块发射的信息之后,对这些信息进行二级译码,将其转换为硬件调度控制信号的细节。
本发明具有显著的技术进步和积极效果本发明兼具了传统专用集成电路与通用数字信号处理器的优点。
高速处理能力本发明采用可重构专用数字信号处理器方案,片内含有大量硬件资源,浮点乘法累加器多达160个,在处理能力上与传统专用集成电路相比犹有过之。由于器件内部算法全部用硬件实现,因而具有通用数字信号处理器芯片所无法比拟的高速运算性能。器件内部运算格式为浮点,单片完成快速傅立叶变换(FFT)运算的最大点数为4096点,完成4096点FFT运算时间为25.6us,完成同点数FFT+IFFT时间为51.2us;FIR脉组处理最大频道数为128,80个频道以下最大滤波长度为256,80个频道以上最大滤波长度为128;相关处理运算单片单通道最大运算长度为4000,最多可并行处理16个通道,各通道数据与各组系数之间的对应关系非常灵活。
功能可重构有别于传统意义上的专用集成电路芯片的是,器件内部的资源根据不同的应用需求可以进行结构重组,从而能够实现FFT、IFFT、FIR脉组及相关处理等多种形式的滤波运算。增强了器件使用灵活性,拓展了器件的应用范围。
便捷的使用方式本发明在一定程度上结合了通用数字信号处理器的灵活性,采用了独有的64bit功能控制字对器件进行配置,以满足不同的应用需求。使用非常简便,没有繁琐的编程和调试,也不需要象FPGA那样需要进行逻辑设计和时序分析,只需送出64位控制字,运算数据按照标准时序输入即可。只要改变控制字,器件内部的资源结构就进行了重组,器件也就按照另外一种模式工作。


图1 硬件架构框图一图2 基本单元结构框3 实数乘法累加器结构框4 FFT运算的基本单元配置结构框5 FIR脉组运算的基本单元配置结构框6 相关运算的基本单元配置结构框7 硬件资源两级调度框架图8 硬件架构框图二图9 输入单元实现框10 输出单元实现框11 32位控制字输入实序12 16位控制字输入实序图具体实施方式
下面结合附图对本发明作进一步说明。
本发明的主体为160个乘法累加器,平均分布于4个基本单元(basic unit)中。通过控制字和控制信号的配置,可以让这160个乘法累加器以及存储器、数据交换单元等硬件资源工作于不同的组织形式,这些组织形式就决定了器件的不同工作模式类型。另外,本发明对硬件资源的调度采用两级调度方法,在控制上采用集中式控制与分布式控制相结合的办法。
本发明的具体实施方式
分为3个层次,第一层是器件硬件架构;第二层是硬件组织方式;第三层是对硬件资源调度方法。下面对这三个层次分别加以说明。
一、硬件的主体架构本发明的硬件架构如图1和图8所示。
本发明采用全同步设计,即整个芯片只有一个时钟域。从功能划分、逻辑字资源的均衡等角度考虑,整个器件的顶层设计为7个部分,即以4个基本单元为主体,外加输入单元、输出单元、数据交换3个部分。
器件采用两级控制架构,全局控制模块用于协调4个基本单元,每个基本单元内部有其自身的本地控制逻辑。这4个基本单元为器件的主体,完成数据缓存、运算、地址产生等主要功能。介于4个基本单元之间的数据交换单元负责把每个基本单元中的数据按照不同的控制要求送入其他3个基本单元。为满足不同应用,器件内部集成了若干专用功能模块,包括求模电路、取对数电路、指数归一化电路、浮点-定点转换电路等。这些专用的功能模块可以将基本单元的运算结果以不同方式输出,而且两个输出端口完全独立,互不影响。另外,器件内部还集成了一个用于倍频的锁相环,这样使得内部运算时钟既可以直接从外部输入,也可以先由外部输入一个低速时钟,再由内部锁相环倍频之后作为运算时钟。
输入单元的具体实现如图9所示。除用于可测性设计的测试输入管脚之外,所有功能性的输入管脚首先进入输入单元。输入单元担负如下任务接收控制字、对控制字进行一级译码、分配控制字到各单元、对输入系数进行同步、对输入数据进行同步、产生片内所需的全局时序信号等。下面就对输入单元中的各个模块一一简要说明。控制字与系数入口1复用同一个端口(coeff_in[31:0]),因此必须将输入的控制字首先接收下来,这是控制字接收模块的任务。控制字接收模块内部主要是一组寄存器,根据片外输入的使能信号将64位控制字分2次或4次打入这组寄存器中。在接收到控制字之后,一级译码模块将部分控制字译码为全局控制信号,这些全局控制信号用于产生片内时序、为系数和数据提供同步等。控制字分配模块的任务是,将64位控制字译码后分别向片内其他单元发射。因为系数入口1同时担负输入控制字的任务,而系数入口2不担负此任务,因此系数入口1与系数入口2延时不同,故必须用一个同步模块对系数入口1与系数入口2进行同步。类似地,数据入口1和数据入口2在功能上不尽相同,故这两个数据入口的数据必须按照工作模式和数据类型同步。
输出单元的具体实现如图10所示。本单元的主要作用是对各个基本单元的运算结果进行排序,并且按照不同的格式输出。滤波运算是在基本单元中完成的,且4个基本单元各自输出其结果,因此必须将4个基本单元的输出结果进行排序,以保证最终输出结果有序输出。“基本单元输出结果排序”模块的作用为当器件工作于FFT/IFFT和FIR脉组处理时,此模块将基本单元的输出按照频道顺序排列;当工作于相关处理运算模式时,基本单元按照每10点为一帧的格式输出,两个数据帧之间存在间隔,此时此模块将基本单元的输出数据格式进行调整,将来自各个基本单元的、按帧输出的数据,调整为与输入数据率相同的连续数据流。求模模块主要完成实部/虚部的输出格式到模值/相角的输出格式的转换。取对数模块可以将输入的模值转换为对数表示。浮点/定点转换模块可以将实部/虚部模块的或者求模模块的输出由浮点格式转换为定点格式。指数归一化模块的作用类似于浮点/定点转换模块,它通过对尾数作相应移位,从而将浮点格式的运算结果的指数统一为某个固定值。上述的4种格式转换模块分别有两套,芯片的每个输出端口对应一套,这样保证了两个输出端口可以独立地以任意一种格式输出。
数据交换单元实际上是一组多输入、多输出的开关组合。它接收来自4个基本单元的8组输入,然后通过选择开关将任意一组输入切换到任意一组输出。这样,数据可以在4个基本单元之间自由传输,在实现特定算法时,为4个基本单元之间的配合提供了数据路径的保障。
4个基本单元是本发明的主体部分,完成数据缓存、运算、地址产生等大部分的功能。其结构如图2所示。4个基本单元具有统一的架构。“数据存储器”包括了8个512×40的双端口RAM,用于运算模式的数据输入缓存、FFT运算中间结果暂存和FFT运算结果输出缓存。由图可见,“数据缓存”可以同时把数据加到每个“复数乘法累加器”和“复数乘法累加器子阵”。“系数存储器”包括了10个256×32的双端口RAM,用于存储相关处理运算、FIR滤波运算的滤波器系数和FFT运算的加权系数。“FFT迭代运算系数”用一个固定的、以专用逻辑实现的表,用于提供FFT/IFFT运算的迭代运算系数。图中每个“复数乘法累加器”对应4个实数的浮点乘法累加器,而每个“复数乘法累加器子阵”则包括16个实数的浮点乘法累加器,相当于4个“复数乘法累加器”。两个“复数乘法累加器子阵”和“复数乘法累加器”按照不同的方式搭配组合,即可完成不同的运算。
在做FFT/IFFT运算时,“复数乘法累加器”作为加权乘法器,对需要多级运算的输入数据进行加权,然后送入“复数乘法累加子阵”进行基8迭代运算。也就是说,在做FFT/IFFT运算时,基本单元中的“复数乘法累加器A”和“复数乘法累加器子阵A”组成一个基8运算核,“复数乘法累加器B”和“复数乘法累加器子阵B”组成另一个基8运算核,这样整个芯片就有8个这样的运算核,在运算时将FFT/IFFT的运算分解到这8个运算核并行处理。
在做FIR脉组处理时,基本单元内部的2个“复数乘法累加器”模块和2个“复数乘法累加器子阵”模块中的乘法累加器并联使用,每个复数乘法累加器对应FIR脉组的一个频道。如果采用共轭运算,则每个复数乘法累加器对应2个频道,如果再复用一次,可以对应更多频道的运算。
做相关运算时,“复数乘法累加器”和“复数乘法累加器子阵”串联使用,相当于串联了10个复数乘法累加器;做FIR滤波运算时,“复数乘法累加器”和“复数乘法累加器子阵”并联使用,对应着滤波运算的10个频道;做FFT运算时,“复数乘法累加器”作为加权乘法器,对数据进行加权后再送给“复数乘法累加器子阵”做迭代运算。
本发明采用浮点数据格式进行复数运算,而复数运算是由4个实数运算所组成,因此实数浮点乘法累加器是器件的核心运算部件。实数浮点乘法累加器的结构框图如图3所示,分为5个部分定点乘法部分、截位部分、指数调整部分、定点加法部分、指数判断部分。
器件的待运算数据共20位,格式为4位无符号指数+16位有符号尾数,所能表示的动态范围是-215×215~215×215-1。系数为16位有符号定点数,所能表示的动态范围是-215~215-1。对于运算的中间数据,折衷考虑运算的精度因素和硬件实现的面积、速度因素,采用24位浮点数据格式,即4位无符号指数+20位有符号尾数。乘法累加器的运算过程有如下5个步骤。
①、定点乘法部分,用于数据的16位有符号尾数与16位有符号的系数进行定点相乘。
②、截位部分,用于最大限度地保留定点乘法结果的精度。根据定点乘法之后的32位乘法结果的冗余符号位的位数,来确定所要保留的24位中间运算数据的20位尾数和这个尾数所对应的4位指数。如果32位的定点乘法结果带有k个冗余符号位,而又只能保留20位,那么显然,为了获得最大精度,最好是截掉这k位的冗余符号(左移k位)并同时在指数上减k。这样尾数变成了一位符号位和其后的19位数据位的形式。这就相当于对一个32位定点乘法结果a31a30a29……a2a1a0×2e同时进行如下操作去冗余符号位并截位 指数在原来基础上减k 对于e>k>12的情况,即左移超过12位之后,应该在低位补0。同时应该注意到,不能使减了k以后的指数小于0。这样,在截位的时候就要综合考虑冗余符号位的位数和指数的大小,假如原指数小于冗余符号位的位数,即e<k,那么就只能截掉e位的冗余符号位,同时把指数减为0去冗余符号位并截位 指数在原来基础上减k ③、对于浮点数的加法,须加数和被加数的指数相同二者的尾数才能相加。指数调整部分正是起调整加数或被加数的指数以使二者相等的作用。假定A1=a1×2e1、A2=a2×2e2两数相加,且e1<e2,那么就要把A1的指数e1调整到与e2相同的数值,同时把A1的尾数作e2-e1位符号位扩展并右移e2-e1位。
④、经过指数调整之后,加数和被加数指数已经统一,就可以将二者的经调整之后的尾数在符号位扩展之后定点相加,得到21位的定点加法结果。
⑤、因为在③指数调整过程中总是将较小的指数调整为较大的指数,故在定点相加之后要对21位的定点和去除冗余符号位,同时判断相加之后的指数的值,这就是指数判断的作用。
二、硬件资源的组织方式本发明是一款可重构专用数字信号处理器,所谓“可重构”,即可以通过配置不同的控制字来组织硬件资源,使硬件资源工作在不同的模式之下。本发明可以配置为三类工作模式FFT/IFFT、FIR脉组处理、相关处理运算。这三类工作模式的每一类又可通过控制字调节其关键参数,来满足不同的处理需求。下面结合附图分别说明这三类工作模式下硬件资源的组织方式。
1、FFT/IFFT
离散傅里叶变换(DFT)的基本公式为 其中w(i)为DFT加权因子,x(i)为输入数据, 为旋转因子。N为DFT运算的点数。如果N是一个复合数,则一个长点数的DFT运算可以被转化为两个短点数(N1、N2)的DFT运算。若N1、N2能够继续分解,则这种分解可以一直进行下去,运算量会进一步下降。
按照不同的分解方法,FFT有基2、基4、基8、混合基等等算法。本发明的FFT/IFFT采用基8运算,这种工作模式可以细分为FFT、IFFT、FFT+IFFT三种类型,而其处理点数可以是256点、512点、1024点、2048点、4096点等,而且在点数小于等于2048时,还可以同时对两路数据进行FFT或IFFT处理。不管FFT/IFFT的处理点数是多少,在此类工作模式下,器件的4个基本单元(basic_unit)都将被配置成如图4所示的方式。此时图2所示的“复数乘法累加子阵A”和“复数乘法累加子阵B”分别作为基8算法的一个迭代运算的节点,子阵中的4个复数乘法累加器用于完成一级基8迭代运算。子阵前面的那个“复数乘法累加器A”及“复数乘法累加器B”作为加窗运算器,对数据进行加窗处理。加窗之后的数据进入“复数乘法累加子阵”进行一级基8迭代运算。每一级迭代运算的输出首先导入数据缓存,然后再通过图1中的数据交换单元送到相应的另外一个“复数乘法累加子阵”,以进行下一级迭代运算。下面针对单个基本单元来描述FFT/IFFT模式下的硬件组织方式。
GA3816器件进行FFT变换时,如果运算点数大于256,器件内部以分时复用方式工作,处理点数越大,复用次数越多。数据存储器配置成乒乓结构的数据缓存,器件内总的数据存储容量为32×256×40bits,分配到每个基本单元内的数据缓存为2×4×256×40bits。每个基本单元数据缓存划出一半的地址空间,即4×256×40bits,作为数据输入缓存。这样,单个器件4个基本单元可完成最大4096点FFT运算。
在进行FFT运算时,为了抑制副瓣,需要对输入数据进行加窗处理。在GA3816器件内部有40×256×32bit的双口RAM作为系数存储器,分配到每个基本单元有10×256×32bits。在每一个基本单元中,取8×256×32bits用作窗函数缓存,并且此缓存还被分成两组,每一组寻址深度为1024,分别向每一个“复数乘法累加器子阵”之前的加窗运算器提供窗函数。
因为FFT/IFFT运算的旋转因子具有规律性,因此本发明将基8FFT运算的旋转因子存储于一个固定的表中。本发明单片可完成的最大FFT/IFFT点数为4096,芯片内部共有8个512×32bit的这个旋转因子系数表,并被平均分配在四个基本单元(basic_unit)中。如果运算点数小于4096,则旋转因子就从这个表中抽取。另外我们还设计了4×8×32bits的系数表,用于存储基8运算时的系数。
当FFT点数小于等于2048时,本发明针对FFT/IFFT设计了第二种硬件资源组织方式双路同时进行FFT运算。双路进数据模式中,basic_uint0、basic_unit2两个基本单元为一组,用于完成第一路运算;basic_uint1、basic_unit3两个基本单元为另一组,用于完成另外一路运算。虽然硬件资源分为两组,但是两组硬件基8运算的原理不变。两路数据同时从数据输入1、数据输入2端口输入,运算所得两组结果同时从输出端口1、输出端口2并行输出。此模式可用于两组独立的数据同时做FFT/IFFT或一组数据做二维FFT/IFFT。
2、FIR脉组处理FIR脉组处理完成的基本功能为一个矩阵运算,其基本公式为Y=H*X其中 上式的矩阵运算在实现上可看作乘法累加运算。如果单独观察H矩阵(以下也称为“系数矩阵”)的一行和X矩阵(以下也称为“数据”)一列的运算且运算数据为复数时,其基本运算形式就是乘法累加,表达式为 可见,FIR脉组处理事实上共有i组乘累加运算,每组包括j次相乘和j-1次累加。
除了FIR脉组处理的基本形式之外,本发明提出了FIR脉组处理几种扩展形式滑动FIR脉组处理、两组数据并行的FIR脉组处理、FIR脉组处理的两频道相加形式等。不管基本形式还是扩展形式,在FIR脉组处理这类工作模式下,4个基本单元(basic_unit)内的硬件资源都将被配置成图5所示的组织形式。
图5所示的组织形式中,“复数乘法累加子阵A”中4个复数乘法累加器连同“复数乘法累加器A”一起组成“并联乘法累加阵列1”;“复数乘法累加子阵B”中4个复数乘法累加器连同“复数乘法累加器B”一起组成“并联乘法累加阵列2”。在“并联乘法累加阵列”中,1个复数乘法累加器用于FIR脉组处理1个频道(共轭情况2个频道)运算,这样一个“并联乘法累加阵列”可以并行处理5个频道(共轭情况下处理10个频道),所以1个基本单元能够并行处理10个频道(共轭情况下处理20个频道)。因此,当输入数据率等于芯片运算时钟时,4个基本单元最多可以并行完成80个频道FIR脉组处理。如果“并联乘法累加阵列”复用,则最多可以完成128个频道FIR脉组处理。
FIR脉组处理的系数存储于图2所示的系数存储器中。每个基本单元有10个256×32bits的双口RAM存储系数,每个乘法单元配备一个双口RAM,固定地向“并联乘法累加阵列”中的某一个复数乘法累加器提供系数,这样一个乘法累加器连同那个向它提供系数的双口RAM构成FIR脉组处理的一个频道。
每个基本单元(basic_unit)中有8个512×40bits的双口RAM用作数据存储器。FIR脉组处理时,此8个双口RAM全部用于数据缓存。在每个基本单元中,数据缓存从数据输入口接收相同的数据。并加到各个乘法累加器数据输入端与不同频道的系数进行乘法累加运算。
FIR脉组处理的第二种硬件资源组织形式为两组并行数据的FIR脉组处理。在这种组织形式下,第一个基本单元(basic_uint0)和第三个基本单元(basic_uint2)划分为一组,第二个基本单元(basic_uint1)和第四个基本单元(basic_uint3)划分为另一组。第一组基本单元中的“并联乘法累加阵列”用于对“数据输入1”端口输入的数据进行处理,第二组的“并联乘法累加阵列”则用于对“数据输入2”端口进入的数据处理。第一组基本单元中的数据存储器和系数存储器用于存储第一组数据和系数;第二组基本单元中的数据存储器和系数存储器则用于存储第二组数据和系数。这样一来,单片器件就可以并行地对两组不同数据进行FIR脉组处理。
上面介绍了两组数据并行运算的模式,在那种模式下,把整个芯片的硬件资源分为两组,每一组单独处理一组数据。类似地,当频道数小于等于40而滤波长度大于等于80时,为了提高运算速度,可以将待处理数据按照滤波长度的1/2平均分为两段,前一段从数据输入端口1进入,后一段从数据输入端口2进入,然后利用片内的两组硬件资源同时与各自的系数相乘、累加,然后再将各自乘累加的结果相加,得到完整的处理结果。这就是FIR脉组处理工作模式下的第三种硬件资源组织方式。
3、相关处理运算相关处理运算指从一个连续采样的数据序列中以滑动方式从中连续截取N个数据进行滤波运算。它的运算特点是相邻两组滤波运算中有N-1个数据相同。其数学表达式为 其中N为滤波器运算长度。xi为输入信号,hi为滤波器对应的系数。
相关处理运算工作模式时基本单元内的硬件资源配置见图6所示。此时基本单元内部的乘法累加器被构造成级联的形式。每个基本单元包含10个浮点复数乘累器。第一个复数乘法累加器的输出作为第二个复数乘法累加器输入,同第二个乘法累加结果进行相加运算,相加结果作为第二个复数乘法累加器的输出,输入到第三个复数乘法累加器中,作为第三个加法运算的一个加数……以此类推,10个复数乘法累加器级联使用。这样,每个基本单元(basic_unit)能够组织成10个复数乘累器级联的运算结构,通过对这个“级连乘法累加阵列”不同次数的复用,可以完成10*N点(N=1、2、3…100)滤波长度的相关运算。同理,4个基本单元之间也采用级连方式,前一个基本单元得到相关运算的部分乘法累加和,送到下一个基本单元,作为下一个基本单元“级连乘法累加阵列”中第一个复数乘法累加器的加数。这样4个基本单元依次级连累加,最终的相关运算结果在第四个基本单元(basic_unit3)中产生。
器件的每个基本单元内有相同容量的数据存储器8个512×40bits的双口RAM。在相关运算模式下,每个基本单元内的数据存储器被统一编址,作为数据缓存。在数据输入时,每个基本单元的数据缓存存储相同的数据。运算时,同一时个钟节拍,由数据缓存向同一基本单元内的10个级连复数乘法累加器提供相同的数据。
相关运算的系数暂存于每个基本单元内的10个256×32bits的双口RAM中。在基本单元内,每个32bit的双口RAM对应着级连乘法累加阵列中的一个复数乘法累器,固定地向那个复数乘法累加器提供系数。系数序列在这10个双口RAM中的存储特点是,系数按照hn,hn+1…hn+9的顺序依次存储于第1到第10个双口RAM中。也就是说,对于同一个双口RAM,其地址n和地址n+1位置所存储的系数的序号相差10。这是为了配合级连乘法累加阵列中的10个复数乘法累加器。因为在级连乘法累加阵列的流水线上,同一个时钟周期需要进行10次乘累加运算,这就要求系数缓存在同一个时钟周期提供10个连续的系数,所以系数以这种特点存储。
三、硬件资源的调度方法本发明对硬件资源的调度采用两级调度框架,在控制方法上采用集中控制与分布控制相结合。图7为器件两级调度框架图。控制字与控制信号首先进入“全局控制”模块进行一级译码与控制字分配。在这个模块内,首先接收控制字,然后根据控制字产生一些全局控制信号。这些全局控制包括协调4个基本单元的动作,决定运算结果的输出格式,对片内主时钟的设置等。“全局控制”模块的第二个作用,是向各基本单元的“本地控制”模块发射控制信息。控制信号和控制字首先进入“全局控制”模块,在此模块内,与运算控制的各种参数有关的控制字被译码,并向各基本单元发射。这些被发射的信息包括工作模式、工作模式的子类型、运算点数、频道数目、处理通道的数目等等。
各基本单元(basic_unit)内的本地控制模块在收到全局控制模块发射的信息之后,会对这些信息进行二级译码,将其转换为硬件调度控制信号的细节。例如,根据工作模式及其类型决定一些选择开关的开合;根据处理通道的数目来决定系数如何存储,系数存储器地址如何产生;根据运算点数决定乘法累加阵列的复用次数,进而确定某个寄存器是否更新以及更新时间等等。将硬件资源的调度分为两级,主要是为了控制上的条理性和简约性。从实现的角度看,更加清晰和明了。
在基本单元内部,采用算术运算的方法来对关键参数进行译码。无论FFT/IFFT、FIR脉组还是相关处理运算,其数据和系数的存/取地址、乘法累加阵列的复用次数等都是具有规律性的,可以在这些规律的基础上,利用算术运算对控制字进行解码,得到所有的控制信息和时序信号。例如,在FIR脉组运算中,滤波阶数为40,点数也为40,则专用解码乘法器会计算出总共需要40×40=1600点的系数。那么在产生系数写地址时,会依次产生0~1599的写地址,将系数写入对应的缓存。采用算术运算解码方式的另一个原因,是出于调度的复杂程度和使用资源之间的折衷首先,8×8的定点乘法器并不会占用太多资源;其次,如果将处理器所有工作状态列举出来,用查表方式实现解码的话,不但有繁琐而巨大的工作量,其存储单元和查找逻辑占用的资源也是很可观的。
本发明对硬件资源调度所采用的控制字共有64位,在FFT/IFFT、FIR脉组、相关运算的工作模式下,控制字的说明分别如表1、表2、表3


表1


表2


表364位控制字通过系数输入端口coeff_in输入,输入方式分为32位输入和16位输入两种,由管脚control_en1、control_en2作为使能,在control_en1、control_en2各自为低时分别送入。32位输入时,功能控制字分两组,占用coeff_in(31:0)的全部32位,control_en1、control_en2的低电平分别持续1个coeff_en周期,在control_en1为低的coeff_en周期内送功能控制字的前32位,在control_en2为低的coeff_en周期内送控制字的后32位。16位输入时,功能控制字占用coeff_in(31:0)的高16位,control_en1、control_en2的低电平持续2个coeff_en周期,在control_en1为低的2个coeff_en周期内送功能控制字前32位,在control_en2为低的2个coeff_en周期内送功能控制字的后32位。32位控制字输入时序和16位控制字输入的时序图11、图12所示。
在以本发明为主处理器的通用信号处理板上,分别进行1024点FFT运算、10阶FIR脉组处理、360点线性调频信号的相关运算,其控制字设置分别如表4、表5、表6所示。

表4

表5

权利要求
1.可重构数字信号处理器,其特征在于器件内部的硬件架构和硬件连线可通过配置控制字进行结构重组,从而实现快速傅立叶变换/快速傅立叶逆变换、FIR脉组及相关处理等多种形式的滤波运算。
2.如权利要求1所述的可重构数字信号处理器,其特征在于主体架构包括输入单元、输出单元、数据交换单元和4个基本单元,其基本单元中包含160个实数浮点乘法累加器,而且它们平均分布于4个基本单元中;硬件的组织形式可以通过配置控制字重组通过控制字和控制信号的配置,可以改变所述160个实数浮点乘法累加器以及数据交换单元的组织形式,使之选择不同的工作模式,以适应三种不同的运算任务FFT/IFFT、FIR脉组处理、相关运算;硬件调度方案采取集中式与分布式相结合的两级调度方法即控制字先由全局模块进行一级译码,再由各基本单元进行二级译码。
3.如权利要求1或2所述的可重构数字信号处理器,其特征在于总体架构采用两级控制架构,全局控制模块用于协调4个基本单元,每个基本单元内部有其自身的本地控制逻辑。介于4个基本单元之间的数据交换单元负责把每个基本单元中的数据按照不同的控制要求送入其他3个基本单元;输入单元接收控制字、对控制字进行一级译码、分配控制字到各单元控制字与系数入口1复用同一个端口,控制字接收模块接收控制字,然后送入一级译码模块译码,一方面产生全局控制信号用于产生片内时序、为系数和数据提供同步,另一方面通过控制字分配模块分别向片内其他单元发射,系数同步模块对系数入口1与系数入口2进行同步,数据同步模块对数据入口1和数据入口2进行同步;数据交换单元是一组多输入、多输出的开关组合,在4个基本单元之间交换数据;输出单元对各个基本单元的运算结果进行排序,并且按照不同的格式输出基本单元输出结果排序模块在工作于FFT/IFFT和FIR脉组处理模式时将基本单元的输出按照频道顺序排列,当工作于相关处理模式时将来自各个基本单元的、按帧输出的数据调整为与输入数据率相同的连续数据流,求模模块完成实部/虚部的输出格式到模值/相角的输出格式的转换,取对数模块将输入的模值转换为对数表示,浮点/定点转换模块可以将实部/虚部模块的或者求模模块的输出由浮点格式转换为定点格式,指数归一化模块通过对尾数作相应移位将浮点格式的运算结果的指数统一为固定值,上述4种格式转换模块分别有两套,每个输出端口对应一套,保证两个输出端口可以独立地以任意一种格式输出;基本单元中,数据存储器包括8个512×40的双端口RAM,用于运算数据的输入缓存、运算中间结果暂存和运算结果输出缓存,数据缓存可以同时把数据加到每个复数乘法累加器和复数乘法累加器子阵,系数存储器包括10个256×32的双端口RAM,用于存储相关处理和FIR滤波器系数以及FFT运算时的加权系数,FFT迭代运算的系数是一个固定的、以专用逻辑实现的表,每个复数乘法累加器对应4个实数浮点乘法累加器,每个复数乘法累加器子阵包括16个实数浮点乘法累加器,相当于4个复数乘法累加器,两个复数乘法累加器子阵和复数乘法累加器按照不同的方式搭配组合,用于完成不同的运算,实数浮点乘法累加器的结构分为5个部分定点乘法部分、截位部分、指数调整部分、定点加法部分、指数判断部分。
4.如权利要求1或2所述的可重构数字信号处理器,其特征在于做三种滤波运算时采取相应的组织形式,分别为做FFT/IFFT运算时,复数乘法累加子阵A和复数乘法累加子阵B分别作为基8算法的一个迭代运算的节点,子阵中的4个复数乘法累加器用于完成一级基8迭代运算子阵前面的那个复数乘法累加器A及复数乘法累加器B作为加窗运算器,对数据进行加窗处理,加窗之后的数据进入复数乘法累加子阵进行一级基8迭代运算,每一级迭代运算的输出首先导入数据缓存,然后再通过数据交换单元送到相应的另外一个复数乘法累加子阵,以进行下一级迭代运算;做FIR脉组处理时,基本单元内部的2个复数乘法累加器模块和2个复数乘法累加器子阵模块中的乘法累加器并联使用,每个复数乘法累加器对应FIR脉组的一个频道,共轭运算时对应2个频道;做相关运算时,复数乘法累加器和复数乘法累加器子阵串联使用,相当于串联10个复数乘法累加器。
5.如权利要求1或2所述的可重构数字信号处理器,其特征在于所采用的硬件调度方案,分别是对硬件资源的调度采用全局控制和基本单元内本地控制相结合的两级调度模式控制字与控制信号首先进入全局控制模块进行一级译码与控制字分配,在这个模块内,首先接收控制字,然后根据控制字产生全局控制信号,包括协调4个基本单元的动作,决定运算结果的输出格式,对片内主时钟的设置,全局控制模块的第二个作用是向各基本单元的本地控制模块发射控制信息,包括工作模式、工作模式的子类型、运算点数、频道数目、处理通道的数目;各基本单元内的本地控制模块在收到全局控制模块发射的信息之后,对这些信息进行二级译码,将其转换为硬件调度控制信号的细节。
全文摘要
本发明公开了一种可重构数字信号处理器(DSP),器件内部的硬件资源可根据不同的应用需求进行结构重组,从而能够实现多种形式的滤波运算。本发明兼具了传统专用集成电路(ASIC)与通用数字信号处理器的优点。它具有超大规模专用器件的运算能力,而且能适应快速傅立叶变换(FFT)、快速傅立叶逆变换(IFFT)、FIR脉组处理、相关处理等不同的数字信号实时处理场合,同时使用简单,价格低廉。
文档编号G06F17/14GK1900927SQ200610086398
公开日2007年1月24日 申请日期2006年7月14日 优先权日2006年7月14日
发明者洪一, 郭二辉, 赵斌, 洪灏, 彭勇俊, 陈风波 申请人:中国电子科技集团公司第三十八研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1