双处理器复域浮点数字信号处理片上系统的制作方法

文档序号:6655877阅读:257来源:国知局
专利名称:双处理器复域浮点数字信号处理片上系统的制作方法
技术领域
本发明涉及多处理器系统,尤其涉及适用于具有复域浮点计算功能的数字信号处理片上系统。
背景技术
以数字处理系统解决控制和计算问题的应用正在迅速发展。片上系统(SoC)集成的进步使到有可能发展更多种新的工业和消费类产品和功能。最好的例子为一移动电话。这些设备一般都采用一数字信号处理器(DSP)将通过一模数转换器得到的语音数据编码成适于在一移动网路上传输的二进制数据流。数字信号处理器运算以定点表示法表示的数据。DSP可以是一分离的集成电路,也可以是一SoC中的一个元件,而另一个可能一般是一可为电话提供其它控制和功能的微处理器内核。
将微处理器和DSP单元以可变的数量组合在一起是可行的。例如,在ErnoSalminen等人所发表的题为“Interfacing Multiple Processors in a System-on-ChipVideo Encoder”的期刊出版物中,叙述了一种实现一与两个定点DSP内核连接的RISC处理器内核的SoC。
尽管组合一微处理器和一或多个定点DSP单元的SoC对于许多应用是十分有用的,但是它们也存在着一些局限。
首先,SoC DSP缺乏浮点功能,限制了这些系统的算法发展以及适用性。许多有用和著名的算法较为容易算法移植到使用一浮点数字表示法的DSP。其中一个例子为矩阵求逆,这是数值分析中的一个关键部分。如果数据采用浮点格式来表示,则这种算法以及许多其它算法就可以一更直接和更简单的方式移植。现有技术都未能意识到这种可能。例如,授予Gove等人的美国专利6,260,088在第16列第4-36行中揭示了一种组合一RISC处理器和一DSP的SoC可较佳地在RISC处理器上实现浮点运算,并限制DSP进行定点运算,在第13-14行中还阐述了“...低等级的处理器不需要浮点运算...”。
其次,尽管本领域业已知道有分离的浮点DSP,但其表示的数据的精度有限,一般为32位。业内的技术人员都会意识到分配给浮点数集的尾数和指数的位将限制可表示的数据的精度和动态范围。许多理想的应用要求的数据处理超出一典型32位浮点表示法的精度和动态范围,其中24位分配给尾数和8位分配给指数。这可能包括诸如一嵌入在96dB(16位)信号中的132dB(22位)瞬时脉冲的分析和复制。这类情况时常会在声音渐增之后的交响乐起奏中遇到,或者在电影中的枪炮声模拟、仿真模拟或视频游戏声道中遇到。来自噪声环境中的数据的诊断和分析也会出现这类情况。
第三,现有技术中所熟知的浮点DSP不能提供专用汇编指令以对复数作单周期计算。在频域算法、时域-频域分析以及频域-空间波数算法中都时常会遇到复域计算。众所周知的快速傅里叶变换(FFT)就是籍助于复代数来定义的,并且复域汇编指令的功能也使得DSP能够为FFT提供本质上的支持,从而极大地方便了音频、无线电或者超声波处理的应用。现有技术集中于将复数以整数表示的FFT算法。例如,在授予Lim等人的美国专利6,317,770的第12列的第50-55行中揭示了“...根据本发明的DSP...从而能够以高速进行定点和整数运算并且能够简化电路的结构”。业内的技术人员应该意识到,对于在编译器和硅层次上开发指令级的并行操作和对于DSP应用内核来说,浮点复数运算法则具有适当的粒度。
克服具有高处理速度的系统中的上述这些限制能够改善SoC信号处理的性能或者将SoC信号处理扩展到下列应用结合多个麦克风,回音消除以及音频波束成形的免提电话;具有更高诊断图像质量的超声波图像扫描仪;适用于家用、车用和影院的自适应声音均衡以产生特定环境的预均衡和预混响;以及,基于耳蜗的实时模拟来改善助听器和耳朵假体。
这就需要一种完备的结合浮点数据表示法、扩展精度和复域算法与自适应控制和系统连接功能的的信号处理平台。

发明内容
本发明已经实现了为上述特殊应用的优化提供信号处理功能,通过组合微处理器内核和超长指令字(VLIW)的数字信号处理器(DSP),使之具有复域扩展精度的浮点计算功能。一个实施例是由采用异构处理器内核的片上系统(SoC)所构成,在该系统中,两个处理器内核即可以作为主内核也可作为从内核,或者两个内核可以同时和独立地工作。DSP内核的1.6M位的程序和数据内核存储器都是映射成控制器的系统总线上的存储器。直接存储器存取(DMA)和SoC系统总线基于专用双端口缓存器与内核并行激励运行。
在一个实施例中,DSP内核基于128位指令字使用载入8K乘128位的单端口存储的压缩程序代码工作。DSP汇编器以2至3的平均倍数来自动压缩程序代码,从而在没有性能损失的条件下获得每个存储周期50位的平均有效指令密度。诸如快速傅里叶变换(FFT)和有限脉冲响应(FIR)的数值强度的运算可以在没有性能损失的条件下获得每个执行运算4位的代码密度。
典型DSP内核的元件包括17K乘40位的双端口数据存储器、256对40位的寄存器、以及具有4个乘法器、3个加法器和3个减法器的高度并行结构。在复数计算操作期间,一半操作单元可产生实部结果而另一半操作单元也可同时产生虚部结果。双4输入、4输出乘256位置寄存器列(file)用于分别存储40位实部和虚部数值,从而能够对扩展精度浮点数据进行单周期的复数计算。来自两列寄存器的数据可以同时输入运算模块的两边,可以作为在运算模块各边中的任何运算中间结果。在复数乘法期间,这一功能可以将寄存器列的读取和执行周期的数目减小两倍。2组3个2K乘40位页面(总计12KB)的内部双口存储器允许同时进行4次访问(2次读取和2次写入)。具有16位地址寄存器的多地址产生单元(MAGU)可支持基于线性、循环和位可逆寻址的可编程步长。40位的数据格式可以提供数据的扩展精度表示法,其中,32位用于尾数,8位分配给指数。从概念上来说,32位尾数是具有附加用于保留精度的8位自保护位的典型24位的表示方法。
典型的DSP具有能够同时产生实部和虚部算术结果的功能,从而允许FFT重叠计算、复域同时加法和减法、复数多累加(MULACC)、以及实数域双倍多累加(MACs)的单周期执行。当执行复域算术运算时,这可以使得各个周期的吞吐能力乘以2.5倍。
典型DSP的控制寄存器和存储器都可以直接映射到微处理器内核的存储器空间中,使得微处理器内核可以读写DSP本地数据存储器和配置寄存器。可以有两种工作模式,定期运行模式和系统模式。在系统模式中,DSP处理器暂停工作并且将DSP的内部资源映射到微处理器的存储器空间中。微处理器内核控制DSP的直接存储器访问(DMA)通道并且能够读写DSP的本地数据存储器和配置寄存器。微处理器内核可以通过由外部存储器来初始化DMA转移或通过在适当的程序存储器的位置上对4个连续地址直接写入4组32位字节来修改DSP程序存储器的内容。通过微处理器内核到DSP资源的这一完全可视性允许使用微处理器内核调试工具来调试两个处理器的代码。
在运行模式中,典型的微处理器内核只能访问DSP命令寄存器和1K40位双端口共享存储器。两个处理器可以它们各自的程序进行工作,并且两个处理器都可以作为主处理器来工作。DSP内核具有可用于选择性外部存储器访问的自有外部总线,从而使得两个处理器都能够完全独立地和同时地工作。1K扩展精度位置的双端口共享存储器可用于在微处理器和DSP内核之间的高带宽处理器间的通讯。从DSP内核到微处理器内核可以有9种中断,而从微处理器内核到DSP内核可以有3种中断。DSP内核可以驱动28个并行输入输出(PIO)线中的7个并且可以接收来自5个PIO线的中断。PIO线可以由两个处理器内核来共享并且可以由微处理器内核来完全软件配置。
DMA通道插入在外部存储器和程序存储器之间,而没有插入在外部存储器和数据存储器之间。对数据存储器的直接存储器存取包括内部数据缓存存储器和20KB双端口随即存取存储器(RAM),其一个端口连接着外部存储器而另一端口连接着DSP和寄存器列以及运算模块。数据DMA不会影响DSP的执行。程序执行会被外部存储器和程序存储器之间的DMA停止,因为DSP程序存储器是单端口RAM。
典型的DSP不提供中断服务机制。而是使用查询机制(采用指令WATCHINT)来适当地监视中断标志和子程序。中断的等待时间等于查询周期+3个时钟周期。WATCHINT指令的自动插入可以由编程工具来提供。
连接微处理器和DSP内核的典型方法可简化各种编程模式。SoC可以由微处理器编程接口来完全编程,从而可以使用来自DSP数据库中的调用来执行DSP功能。内核也可以分别编程。可以由分离的编程环境装置来提供适用于整个SoC编程和模拟的功能。
SoC的功能可以通过一些外围设备来增加,包括2个SPI串行接口、2个USART、定时器、看门狗、并行I/O端口(PIO)、外围数据控制器、8个ADC和8个DAC接口(ADDA)、时钟发生器,以及中断控制器。


图1显示了适用于本发明的、由处理器、存储器、外围模块以及数据总线结构所构成的典型的SoC。
图2是DSP内核结构的典型方框图。
图3是适用于浮点复数算法的处理单元的方框图。
图4图示说明了可以籍助于复域浮点算法进行互助处理的语音处理算法。
图5图示说明了适用于基于本发明的集成电路的版图布局图。
图6籍助于实例图示说明了适用于在单一开发环境中的数字信号处理和微处理器的图示软件开发。
图7参考有关矢量操作和操作数的实例显示了由适用于特殊数据类型和操作的C语言编译器所支持的图示软件开发。
具体实施例方式
现请参阅图1,片上系统(SoC)102典型结构的实施例包括浮点数字信号处理器(DSP)子系统104、微处理器内核106,以及外围电路110。在具体的实施例中,微处理器内核106是ARM7TDMITM,ARM简约型处理器内核,而浮点DSP子系统104还包括数字信号处理器(DSP)内核108,它可以是AtmelmAgic高性能超长指令字(VLIW)的DSP内核。外围电路110籍助于外围总线122与系统总线/外围总线桥路120通讯。系统总线/外围总线桥路120与系统总线124相耦合。系统总线124与外围总线接口126相耦合,并由外围总线接口126产生控制访问外部存储或外围设备的信号。微处理器存储器128与系统总线124相耦合。
典型实施例的片上系统102具有两种工作模式,定期运行模式和系统模式。在下文中将更加详细地讨论这些工作模式。根据工作模式可以运转不同的数据路径。当系统处于运行模式时可以使能运行模式的数据路径130A。当电路采用系统模式工作时可以使能系统模式的数据路径130B。在两种模式的工作期间可以使能处理器的专用数据路径130C。运行模式、系统模式和处理器专用的数据路径130A、130B和130C分别提供适用于在SoC 102中的各个元件之间的通讯和数据转移的数据路径部件,如图1所示。
浮点DSP子系统104包括DSP内核108、微处理器接口140、程序总线复用器/解复用器142、数据总线复用器/解复用器144、共享存储器144、程序存储器148、数据存储器150和数据缓冲器152。浮点DSP子系统与系统总线124相耦合,使微处理器内核106和DSP内核108之间形成双向通讯。数据/程序总线复用器154复用浮点DSP子系统104与外部存储器的数据访问和程序访问。数据缓冲器152是双端口双储存体,其中2个端口与DSP内核108相耦合,另2个端口与数据/程序总线复用器154相耦合。
在本发明的典型实施例中,程序存储器148是由8K字节乘128位所构成的单端口存储器,而数据存储器150是由3个存储器页面各自为2K字节乘40位用于左数据储存体和3个存储器页面各自为2K字节乘40位用于右数据储存体所构成,可为各个堆栈提供6K字节的存储且总计为12K字节的存储。在典型的实施例中,数据缓冲器152是由2K字节乘40位所构成,用于各自的左缓冲存储器和右缓冲存储器提供总计4K字节的存储。另外,在该典型实施例中的共享存储器146是由512字节乘40位所构成的双端口存储器,用于各自左共享储存体和右共享储存体,提供总计1K字节乘40位的存储。以下将进一步详细地讨论存储器单元的结构和工作。
在工作的典型模式中,微处理器内核106作为SoC 102的主控制器起作用。SoC 102的引导序列是从来自外部非易失性存储器的微处理器内核106的引导程序开始的。随后,微处理器内核106从非易失性存储器引导DSP内核108。在引导程序之后,SoC 102能够初始化它的正常工作。DSP内核108具有从设备的行为,允许根据工作模式来访问不同的系统资源。为了在运行时间使得在DSP内核108和微处理器内核106的工作之间密切耦合,DSP内核和微处理器内核可以基于中断来交换同步信号。
系统模式工作在系统模式中,DSP内核108暂停它的执行,而微处理器内核106继续它的控制。当DSP内核108处于系统模式时,微处理器内核106可以访问在DSP内核中的多个内部器件。微处理器内核106访问处于系统模式中的DSP内核108资源的能力可以用于初始化和诊断的目的。通过访问在数字信号处理器(DSP)内核108中的命令寄存器和微处理器接口140,微处理器内核106就可以在系统模式和运行模式之间改变DSP内核的工作状态,初始化DMA事务、强制单步或多步执行,或者读取DSP内核的工作状态。
运行模式工作在运行模式中,DSP内核108可以在其自有的VLIW程序的控制下工作并且微处理器内核106只能够访问共享存储器146和与数字信号处理器(DSP)内核108有关的命令寄存器以及微处理器接口140。
外围电路110可以包括多个构成执行现有技术中通常所熟知的常规数据和信号转移操作的电路模块。在典型的实施例中,外围电路110包括串行外围接口(SPI)111A和111B、通用同步/异步接收器/发送器(USART)112A和112B、定时计时器113、看门狗定时器114、并行I/O控制器(PIO)115、外围数据控制器(PDC)116、模拟到数字和数字到模拟接口(ADDA)117、时钟发生器118以及中断请求控制器119。
现请参阅图2,现在介绍浮点DSP子系统104的结构和工作的细节。在典型实施例中,浮点DSP子系统104是一个超长指令字(VLIW)的数值处理器,能够对IEEE 754 40位扩展精度浮点数据进行运算。浮点DSP子系统104也能够对32位整数数字格式的数据进行运算。DSP内核108包括运算器模块202、数据寄存器列204、多地址发生单元206、以及地址寄存器列208。运算器模块202包含执行算术运算的硬件。它能够基于整数或者浮点的数据进行运算。如图2所示,数据路径部件用于在浮点DSP子系统104中所有元件以及数据程序总线复用器154的操作互连。
程序存储器148存储浮点DSP子系统104所要执行的程序。程序存储器148与本地序列发生器210相耦合,该本地序列发生器210用于执行本地控制和指令编码的任务。序列发生器包括指令译码器212A、条件发生器212B、状态寄存器212C以及程序计数器212D。在典型实施例中,程序存储器148是由8K字节乘128位的单端口存储器所构成。需要数字信号处理的许多应用部分都可以只使用程序存储器来实现。典型实施例的程序存储器的尺寸是与代码压缩相配合,以便于提供大约24K指令的等效片上程序存储器尺寸。当系统处于系统模式工作时,微处理器内核106可以采用两种不同的方法来修改程序存储器148的内容。首先,微处理器内核106可以通过访问在微处理器内核106存储器映射图中分配给程序存储器148的存储器地址空间直接写入到程序存储器140中的位置。在该访问模式中,微处理器内核106可以正确的地址边界将4个32位字节写入到4个连续的地址中,以便于完成单个VLIW字节写入周期。微处理器内核106也可以通过初始化从外部DSP存储器到程序存储器148的DMA转移来修改程序存储器148的内容。在该访问模式中,可以每个周期64位的方式从外部存储器向程序存储器148来转移单个VLIW字节,即,每两个时钟周期一个完整的字节。由于使用了允许在两个和三个之间的平均程序压缩的程序压缩方案,所以系统从外部存储器读取的代码访问能力大于每个时钟周期的指令。当系统处于运行模式时,微处理器内核106就不能够访问程序存储器148。当以运行模式工作时,系统能够初始化从外部存储器到程序存储器148的DMA转移,以便于下载新的代码程序部分。数据存储器150是由左数据存储堆栈220L和右数据存储堆栈220R所组成。在典型实施例中,数据存储器150是以3个存储器页面所构成的,在各个存储器页面中,用于左数据存储堆栈220L的各页为2K字节乘40位,用于右数据存储堆栈220R的各页为2K字节乘40位,各自为左数据存储堆栈220L和右数据存储堆栈220R提供总计6K字节,两者总计提供12K的存储。各个数据储存体220L和220R都是双端口存储器,它允许4个同时的访问,在典型实施例中,这是两类读取和两类写入。DSP内核108可以矢量访问数据存储器150和将单个数据存储于数据存储器150。访问复数数据就等同于访问矢量数据。
在同时读取和写入存储器访问期间,多地址发生单元206产生两个共同对左和右数据储存体的独立读取和写入地址命令。在数据寄存器列204和数据存储器150之间总的有效带宽是每个时钟周期20位,从而允许数字集约计算(例如,复数FFT和FIR)的全速实现。数据缓冲器152包括左缓冲存储器230L和右缓冲存储器230R。在典型实施例中,数据缓冲器152是以2K字节乘40位构成,用于左缓冲存储器230L和右缓冲存储器230R。数据缓冲器152是以双端口存储器构成。数据缓冲器152的一个端口连接着DSP内核108。多地址发生单元206产生缓冲存储器地址,用于将数据转入和转出DSP内核。数据缓冲器152的第二个端口连接着数据/程序总线复用器154。在典型实施例中,在DSP内核108和数据缓冲器152之间的有效带宽等于在数据/程序总线复用器154和数据缓冲器152之间的有效带宽每个时钟周期10位。同样,在典型实施例中,系统的最大外部存储器的大小为左和右16M字节(等效于32M字节或者160M字节;24位地址总线)。
直接存储器地址(DMA)控制器250管理在外部存储器和数据缓冲器152之间的数据转移。DMA控制器250能够对外部存储器产生具有步长的地址。直接存储器地址转入和转出数据缓冲器152,它可以与零超长的全速内核指令执行相并行执行且没有DSP内核处理器108的干涉,除非程序处理初始化。在DSP内核108的地址空间中的最后存储器块分配给共享存储器146,并且可在DSP内核108和微处理器106之间共享。在典型实施例中,共享存储器146可由512字节乘40位的双端口存储器构成,用于左共享存储器模块240L和右共享存储器模块240R,提供总的1K字节乘40位的存储器。该存储器可以用于在两个处理器之间有效地转移数据。在典型实施例中,在DSP内核108和共享存储器146之间的有效带宽是每个时钟周期10位。微处理器内核106的有效带宽受到微处理器总线尺寸的限制。在典型实施例中,处理器总线是32位,可提供每个微处理器时钟周期4位的带宽。
现请参阅图3,为本发明实施例提出了运算模块202和数据寄存器列204的进一步细节。数据寄存器列204与运算模块202相耦合。数据寄存器列204由左数据寄存器边302L和右数据寄存器列边302R构成。数据寄存器列204由实部和虚部的256个输入的复数寄存器列构成。左数据寄存器边302L和右数据寄存器列边302R也都可以作为矢量运算所使用的双寄存器列。当执行单指令时,数据寄存器列204可以作为一般512个输入的寄存器列使用。左数据寄存器边302L和右数据寄存器列边302R都是8端口,对于运算模块202和数据存储器150、数据缓冲器152和共享存储器146的数据输入和输出来说,可提供总计16个有效I/O端口。在典型的实施例中,在数据寄存器列204和运算模块202之间的总的数据带宽是每个时钟周期70位,从而可以避免在数据流中的瓶颈阻塞。
现请进一步关注运算模块202的细节,在典型实施例中,它包括浮点/整数乘法器304A-D、卷积、除法、以及移位/逻辑单元306A和306B,浮点/整数加法/减法单元308A和308B、最小/最大运算单元310A和310B、浮点/整数减法单元312A和浮点/整数加法单元312B、寄存器314A-H、2-输入多路复用器316A-H、3-输入多路复用器318A和318B、以及4-输入多路复用器320A和320B。在卷积、除法、移位/逻辑单元306A和306B中的除法功能可以为高效除法和逆均方根计算产生根源。数据路径装置可根据图3所示的路径方式将运算模块202的元件都耦合在一起。运算模块202的元件结构使得运算模块可以很自然地以下列方式来支持复数算法,例如,单周期复数乘法或者单周期复数乘法和加法,在单周期重叠计算计算中的快速FFT计算、以及矢量计算。当DSP内核108开始每个时钟周期10次浮点运算时,就能够在单周期FFT重叠计算执行期间获得最高的性能。
在典型的实施例中,浮点DSP子系统104是VLIW引擎,但从用户角度来看,可以认为是类似于RISC机器来实现来自数据寄存器列204的数据的三阶、两阶或四阶计算操作以及在本地存储器和数据寄存器列204之间的数据传输操作。为了获得最大的性能,运算器都是流水线。流水线的深度取决于所采用的运算器。运算的目录和并行程度可以由汇编程序优化器在汇编时自动定义和管理,从而允许高效的代码执行。所显示的数据寄存器列204的结构可以为RISC类编程模式提供支持。
图4显示了适用于根据本发明实施例所构架和操作的语音增强方法的流程图。适用于执行与标号元件有关的操作的算法一般都是业内技术人员所熟知的。输入信号400以时间采样格式提供给线性预测编码(LPC)模块402,由它来计算LPC系数。简单地说,LPC试图基于原先采样的有效数值的线性组合来预测地输入信号的其它数值。LPC采样通过用于倒频谱系数计算的第一倒频谱模块404A输入到用于功率频谱计算的第一功率频谱模块406A和用于LPC噪声平均的噪声平均模块410。首先输入到第一倒频谱模块404A,利用LPC系数来计算一些倒频谱系数。倒频谱系数可以将信号的频谱成份表示为正交的矢量组。对于诸如回声检测和消除之类某些信号处理来说,实部倒频谱的表示方法是特别有用的。从LPC系数中引伸出倒频谱系数的方法可籍助于递归算法ci=ai+1iΣj=1i-1(j)ai-jcj,]]>i=1,...,n式中ci是倒频谱系数的数值,ai表示LPC系数。另一个使倒频谱系数概念化的方法是使用下列表示式来表示Cepstral coefficients=real(ifft(log(|fft(X)|)))式中X是输入数据帧。此等式的实例显示了倒频谱系数的计算需要FFT和逆FFT函数的计算,这两者都需要在复域中的数据处理。计算距离模块408计算在第一倒频谱模块404A的输出,即以上详细说明的倒频谱系数序列,和来自第二倒频谱模块404B输出的倒频谱系数序列之间的距离,用于评估在没有语音信号的时间间隔周期中的噪声信号的倒频谱结构。在第一倒频谱模块404A、第二倒频谱模块404B和计算模块408中的倒频谱表示方法的使用有利于将噪声的特殊结构与语音信号中的特殊结构相分离,以便于使用下文中将要讨论的Wiener(维纳)滤波器模块416的结构。在这部分内容中,倒频谱距离可以定义成在矢量坐标之间的差异平方之和的平方根因为平方根运算不会影响用于区分语音或非语音信号的量度,所以运算就不会明确地执行。所采用的术语是业内技术人员所熟知的。第二倒频谱模块404B也可计算倒频谱系数,在这种情况下,可以使用来自噪声平均模块410的数据。检测模块412可以采用业内技术人员所熟知的多种算法中的任一方法来实现语音激励检测器(VAD)。噪声平均模块410可基于来自LPC模块402和检测模块412所提供的输入信号计算平均数值。业内技术人员应该意识到,第一和第二倒频谱模块可以共享系统中的软件和硬件资源,或者可以表示完全不同的功能。也就是说,例如,如果由第一和第二倒频谱模块404A和404B所执行的数值运算可以暂时分离的话,则就有可能共享适用于这些计算的相同的数据存储器、寄存器、指令集以及其它资源。
第一功率谱模块406A和第二功率谱模块406B各自在表示功率谱评估的各自递归系数是采用各自递归系数的原先评估的时间平均(低通滤波器)的意义上来计算功率谱的平滑评估,并使用下列表示式ci=αce+(1+α)ci-1式中ce表示基于当前数据帧的各个递归系数的评估,ci-1表示原先平均的评估,以及ci表示当前平均的评估。
由第一和第二功率谱模块406A和406B所执行的运算可以共享软件和硬件资源或者可以表示完全不同的功能,其原因完全类似于结合第一和第二倒频谱模块404A和404B所讨论的内容。第一和第二功率谱模块406A和406B的输出可以提供给频谱/半波模块414,由它来执行在频谱和随后的半波整流之间的不同操作,其中任何所产生的负的频谱系数数值都设置等于零。频谱/半波模块414的输出和第二功率谱模块406B的输出都提供给滤波器模块416,由它对FFT变换的输入信号420进行操作,以便于对所变换的输入信号实现Weiner滤波器功能。Weiner滤波器功能是业内所已知的,作为最小均方评估器,它采用系统误差或噪声的模型来数值最小化在所需信号中由于噪声衰减所引起的平均误差。Wiener滤波器功能可以在频域中操作,因此可以FFT变换的输入信号420的形式应用于输入信号。Wiener滤波器的一个典型表示方法可由下列表示式所表示H(ω)=Rs(ω)Rs(ω)+Rn(ω)]]>式中H(ω)是滤波器函数,Rs(ω)是无噪声信号的功率谱密度,以及Rn(ω)是噪声的功率谱密度。滤波器模块416的输出提供给逆FFT模块418,由它采用业内所已知的多种方法中的任意方法来计算逆FFT。逆FFT的计算将来自频域的滤波信号转换成时域的信号。逆FFT模块418的输出是输入信号400噪声减小版本的输出信号422。
业内技术人员将会意识到,图4所具体表示的方法也有可能应用于图像改善、一般数据流中的信噪比提高以及一般采用数字信号处理的其它应用。还应该进一步意识到的是,该计算得益于对部分或全部的数值处理采用浮点复数数值表示法,并且该数值处理具有本发明所具体表示的功能。
现请参阅图5,显示了适用于本发明典型实施例的版图平面图。该版图说明了集成电路500,它可实现SoC 102的架构,包括ARM7TDMITMARM简约型处理器内核和AtmelmAgic高性能超长指令字(VLIW)DSP,并采用五层金属层的商用180nm CMOS硅工艺技术。
集成电路500包括SoC焊点环502和SoC内核电路504。SoC焊点环502包括外部存储器数据总线存取焊点506、外部存储器地址总线存取焊点508、通用同步/异步接收器/发送器(USART)存取焊点510、并行I/O(PIO)存取焊点512、ARM7数据总线焊点514、ARM7地址总线焊点516、PLL焊点518、模拟到数字与数字到模拟接口(ADDA)焊点520,以及串行外围接口(SPI)焊点522。SoC内核电路504包括mAgic内核524、mAgic寄存器列526、mAgic程序存储器528、mAgic程序寄存器和XM缓冲存储器530、ARM7TDMITM内核532、ARM7外围534、ARM程序存储器536,以及Arm mAgic共享的存储器缓冲器538。
参考图5,mAgic内核524是DSP内核108架构的物理实现和典型实施例,mAgic寄存器列526是数据寄存器列204的物理实现和典型实施例,mAgic程序存储器528是程序存储器148的物理实现和典型实施例,mAgic数据存呼气和XM缓冲存储器530是数据存储器150和数据缓冲器152的物理实现和典型实施例,ARM7TDMITM内核532是微处理器内核106的物理实现和典型实施例,ARM7外围534是外围电路110的物理实现和典型实施例,ARM程序存储器536是微处理器存储器128的物理实现和典型实施例,以及Arm mAgic共享的存储器缓冲器538是共享存储器146的物理实现和典型实施例。
除了键合焊点区域以外,用于集成电路500的大约芯片尺寸是45mm2。业内技术人员应该意识到,也有可能采用其它版图结构,并且也有可能采用其它工艺技术来制造本发明的各种实施例。
现请参阅图6,通过一个实例来图示说明用于描述适用于数字信号处理和微处理器操作在单一开发环境中的软件开发的显示。图形用户界面600提供用户与开发环境交互的方法,它包括仿真器器件树形窗口602、仿真控制窗口604、DSP内核开发界面606、微处理器内核开发界面608、DSP程序分解界面610、数据存储器界面612、寄存器列界面614、出错报告窗口616、文档参考窗口618、信息窗口620、文本工具栏622A,以及图形工具栏622B。
仿真器器件树形窗口602提供对数字信号处理器内核108和微处理器内核06两者的内部资源的探测和可视访问。DSP内核开发界面606提供用于输入来自数字信号处理器指令集的命令的部件以及用于编译成目标代码并且连接成可执行代码的部件,编译机制使得用户可以一系列的方式来输入命令,同时创建有利于数字信号处理器指令级并行、包括数据的依赖和反应时间等所预定的最佳代码。例如,一系列连续代码命令以及所产生的最佳预定代码如下所示连续代码预定代码A=B+C A=B+C;D=E*F;Q=Memory[I]D=E*F L=M+NG=A+D G=A+D;P=Q*RL=M+NQ=Memory[I]P=Q*R其中在相同行中所出现的预定代码指令意味着在DSP内核108中并行执行。
微处理器代码开发界面608提供了用于输入来自微处理器指令集命令的部件和用于编译成目标代码并且连接成可执行代码的部件。DSP程序分解界面610提供了用于询问在本地序列器210、数据寄存器列204、多地址发生单元206以及地址寄存器列208中所包含数值的部件。地址寄存器列208也可称之为SLAMP寄存器。SLAMP寄存器包括S11位起始寄存器,用于识别矢量绝对基地址或循环缓冲器起始地址;L11位长度的寄存器,用于指定矢量的长度;A11位地址寄存器,用于指定地址偏移或绝对基地址;M7位增量寄存器,用于给出地址增量;以及,P9位页面寄存器,用于提供内部存储器的页面地址。
在改变组合中使用SLAMP字段,以便于控制多地址发生单元206工作的不同模式。数据存储器界面612提供了用于监测在数据存储器150中所存储的数据数值的部件。寄存器列界面614提供了监测在数据寄存器列204中所存储的数据数值的部件。仿真控制窗口604提供了用于调用仿真使得用户能够选择周期精确仿真或指令精确仿真的部件。出错报告窗口616提供了用于向用户通报出错的部件。文档参考窗口618提供了用于参考正在修改的或者仿真环境正在使用的文档的部件。信息窗口620提供了用于向用户通报相关信息的部件。文字工具栏622A为软件开发环境的控制提供了基于文字的参考和访问。图形工具栏622B为软件开发环境所常用的控制提供了可视参考和访问。业内技术人员应该意识到,所提出的界面和控制也可以采用可提供其它信息或功能的其它窗口来扩大,并且窗口的具体形式和位置都可以改变,以便于在本发明的精神范围内来满足用户的使用偏好。
现请参阅图7,该图参考了与矢量运算和操作数有关的实例图示说明了用于指定数据类型和操作可由C语言编译器所支持的软件环境。业内的技术人员都应该意识到,以下所说明和讨论的内容可以同样有效地应用于多种编程语言的选择。源代码树702提供了对适用于C编程、C++编程的源代码模块以及微处理器内核106和DSP内核108所要执行的汇编语言程序的可视访问。扩展代码开发界面704提供了用于输入基于C编程、C++编程以及所要选择微处理器的汇编语言的命令的部件。扩展代码开发界面704还进一步提供了用于将所述汇编代码编译成目标代码并将目标代码连接成可执行代码的部件。业内的技术人员都应该意识到的,C编程语言是C++编程语言的一个子集。此外,还有一些适用于C编程语和C++编程语言的标准。在本说明书的内容中,应该理解的是,术语C编程语言、C++编程语言、C、C++都不是旨在限制而是为了本说明书的目的可以相互交换的。所述术语可以认为是在较宽可接受范围内的语言版本。具有这一解释的C++语言内容的特殊版本可由标准ISO/IEC148821998给出。源代码可以采用将被认作为符合标准化(ISO)C的这一标准格式内容来编写。
扩展代码开发界面704还提供了用于翻译和编译C++可呼叫数字信号处理函数的部件,以及用于对包括整数、浮点复数整数、复数浮点、矢量整数、矢量浮点、指针、阵列、结构和集合等一系列扩展数据类型的操作的部件。扩展代码开发界面还能够与美国国家标准研究院(American National Standards Institute-ANSI)C标准数学题库相交互,ANSI C标准是业内技术人员所熟知的,它可作为标准C函数库的ISO/IEC98991990标准的一个子集。扩展代码开发界面704还结合了编译器装置,其具有实现IF语句翻译与完整的条件表达示运算的语言扩充部件、实现WHERE语句翻译的语言扩充部件以及寄存器用法最佳化的部件。
在上述说明书中,已经参考其所附的特殊实施例讨论了本发明。然而,很显然,所作的各种改进和变化都不背离所附权利要求所阐述的本发明的宽泛精神和范围。因此,说明书以及附图都可以认为只是说明性而非限制性的。
权利要求
1.一种装置,它包括微处理器;以及,数字信号处理器,它与所述微处理器相耦合,所述数字信号处理器能够对复域中的浮点数据进行运算,所述微处理器和所述数字信号处理器都是单个集成电路中的一部分。
2.如权利要求1所述的装置,其特征在于,所述微处理器是精简指令集计算机处理器。
3.如权利要求1所述的装置,其特征在于,所述数字信号处理器采用超长指令字架构。
4.如权利要求1所述的装置,其特征在于,所述微处理器和所述数字信号处理器各自都能够作为主或者从处理器来使用。
5.如权利要求1所述的装置,其特征在于,所述集成电路还包括一组与总线相耦合的片上外围电路,所述总线与所述微处理器和所述数字信号处理器相耦合。
6.如权利要求5所述的装置,其特征在于,至少一个所述外围电路还包括模拟到数字/数字到模拟接口模块。
7.如权利要求6所述的装置,其特征在于,所述模拟到数字/数字到模拟接口模块配置成与至多8个模数转换器加上8个数模转换器连接。
8.如权利要求5所述的装置,其特征在于,至少一个所述外围电路是外围数据控制器。
9.如权利要求5所述的装置,其特征在于,至少一个所述外围电路是串行端口。
10.如权利要求5所述的装置,其特征在于,至少一个所述外围电路是通用同步/异步接收器/发送器。
11.一种集成电路,它包括数字信号处理器,它能够对复域中的浮点数据进行运算,所述浮点数据包括尾数部分和指数部分。
12.如权利要求11所述的集成电路,其特征在于,所述浮点数据以扩展精度格式来表示。
13.如权利要求11所述的集成电路,其特征在于,所述浮点数据以至少40位来表示。
14.如权利要求11所述的集成电路,其特征在于,所述浮点数据以小于32位的格式来表示。
15.一种信号处理系统,它包括微处理器部件,用于数据处理;数字信号处理部件,用于处理以数字格式所表示的信号;以及,传输部件,用于在所述微处理器部件和所述数字信号处理部件之间传递信号;所述微处理器部件、所述数字信号处理部件和所述传输部件都是单个集成电路中的一个部分;所述数字信号处理部件能够对复域中的浮点数据进行运算。
16.一种信号处理方法,它包括以下步骤向片上系统提供输入信号;以所述片上系统使用复域中的浮点表示法对所述输入信号进行运算并产生结果;以及,输出所述结果。
17.一种信号处理方法,该方法包括以下步骤提供时间采样格式的输入信号;自所述输入信号计算一组线性预测编码系数;自所述线性预测编码系数计算第一组倒频谱系数;自所述线性预测编码系数计算第一组平滑功率谱;自所述线性预测编码系数和语音激励检测器的输出计算平均数值组的系数;自所述平均数字组的系数计算第二组倒频谱系数;计算在所述第一组倒频谱系数和所述第二组倒频谱系数之间的向量距离;籍助于可实现所述语音激励检测器的多种语音检测算法中的一种算法对所述向量距离进行运算;自所述平均数值组的系数计算第二平滑功率谱;计算在所述第一平滑功率谱和所述第二平滑功率谱之间的差异,随后进行所述差异的半波整流;给维纳滤波器提供所述差异的半波整流作为第一维纳滤波器输入;提供所述第二平滑功率谱作为第二维纳滤波器输入;提供所述输入信号的快速傅里叶变换作为第三维纳滤波器输入;自所述第一维纳滤波器输入、第二维纳滤波器输入和第三维纳滤波器输入计算维纳滤波器输出;对所述维纳滤波器输出进行逆快速傅里叶变换;以及,输出所述逆快速傅里叶变换以提供输出信号,其中,所述信号处理方法是由包括微处理器和数字信号处理器的单个集成电路来执行的,所述数字信号处理器能够对复域中的浮点数据进行运算。
18.一种软件开发环境,它包括用于微处理器代码开发的部件;以及用于数字信号处理器代码开发的部件;所述用于数字信号处理器代码开发的部件能够对复域中的浮点数据进行运算。
19.如权利要求18所述的软件开发环境,其特征在于,所述用于数字信号处理器代码开发的部件结合流水线和并行管理。
20.如权利要求18所述的软件开发环境,其特征在于,所述用于数字信号处理器代码开发的部件结合代码压缩。
21.如权利要求18所述的软件开发环境,其特征在于结合周期精确仿真器。
22.如权利要求18所述的软件开发环境,其特征在于结合指令精确仿真器。
23.如权利要求18所述的软件开发环境,其特征在于结合用于C编程语言的编译器。
24.如权利要求18所述的软件开发环境,其特征在于结合图形用户界面。
25.如权利要求18所述的软件开发环境,其特征在于,所述微处理器是精简指令集计算机处理器。
26.如权利要求18所述的软件开发环境,其特征在于,所述数字信号处理器采用超长指令字架构。
27.一种适用于将包括多条指令的源编程语言翻译成目标程序的编译器,该编译器包括用于翻译以符合所述源编程语言的语法编写的指令的指令翻译部件;以及,用于翻译可呼叫数字信号处理函数库的函数库翻译部件,所述编译器能够对一系列扩充数据类型进行运算。
28.如权利要求27所述的编译器,其特征在于,所述源编程语言是采用符合国际标准化组织C语言的语法编写的C++源程序以及所述可呼叫数字信号处理函数库是C语言可呼叫数字信号处理函数库。
29.如权利要求27所述的编译器,其特征在于,所述扩展数据类型选自由整数、浮点、复数整数、复数浮点、矢量整数、矢量浮点、指针、阵列、结构和集合组成的组。
30.如权利要求27所述的编译器,其特征在于,还包括用于宣告存取至少一个或多个寄存器式存储器、内部数据存储器和外部数据存储器的变数的变数宣告部件。
31.如权利要求30所述的编译器,其特征在于,还包括寄存器用法的优化部件。
32.如权利要求28所述的编译器,其特征在于,还包括以C++操作数翻译内嵌的汇编语言指令的部件。
33.如权利要求28所述的编译器,其特征在于,还包括用于翻译美国国家标准研究院C语言标准数学题库函数的部件。
34.如权利要求28所述的编译器,其特征在于,还包括用于实现IF语句翻译与完整的条件表达示运算的语言扩充部件;以及用于实现WHERE语句翻译的语言扩充部件。
35.一种信号处理片上系统,它包括系统架构;采用集成电路方式的物理实现;以及,编程环境,所述架构、物理实现以及编程环境都能够对复域中的浮点数进行运算。
36.一种信号处理架构,它包括超长指令字数字信号处理器内核,所述数字信号处理器能够对复域中的浮点数据进行运算;精简指令集计算机微处理器;共享存储器,它与所述数字信号处理器内核和微处理器接口相耦合;系统总线,它与所述精简指令集计算机微处理器和所述微处理器内核相耦合;微处理器存储器,它与所述系统总线相耦合;外部总线接口,它与所述系统总线相耦合;系统总线/外围总线桥路,它与所述系统总线和外围总线相耦合;多个外围电路,它与所述外围总线相耦合;数据总线多路复用器/多路分解器,它与所述微处理器接口、所述数字信号处理器内核以及数据存储器相耦合,所述数据存储器也与所述数字信号处理器内核相耦合;数据缓冲器,它与所述数字信号处理器内核和所述数据存储器相耦合;以及,程序总线复用器/解复用器,它与所述微处理器接口、程序存储器、所述数字信号处理器内核和数据/程序总线复用器相耦合。
37.如权利要求36所述的架构,其特征在于,所述超长指令字数字信号处理器和所述精简指令集计算机微处理器各自都能够作为主或从处理器使用。
38.如权利要求37所述的架构,其特征在于,所述超长指令字数字信号处理器可以作为主处理器操作,而所述精简指令集计算机微处理器可以作为从处理器操作。
39.如权利要求37所述的架构,其特征在于,所述超长指令字数字信号处理器可以作为从处理器操作,而所述精简指令集计算机微处理器可以作为主处理器操作。
40.如权利要求37所述的架构,其特征在于,所述超长指令字数字信号处理器和所述精简指令集计算机(RISC)微处理器可以同时地和独立地操作。
41.一种能够对复域中的浮点数据进行运算的数字信号处理器架构,所述架构包括程序存储器,它与包含指令译码器、条件发生器、状态寄存器和程序计数器的本地序列器相耦合,所述程序存储器还与数据/程序总线复用器相耦合;超长指令字数字信号处理器内核与所述程序存储器和本地序列器相耦合,所述超长指令字数字信号处理器内核具有与地址寄存器列和数据寄存器列相耦合的多地址发生单元,所述数据寄存器列与所述多地址发生单元、所述地址寄存器列和运算模块相耦合,所述运算模块与所述地址寄存器列和所述多地址发生单元列相耦合,所述运算模块具有相互耦合的第一操作数模块部分和第二操作数模块部分,所述第一操作数模块部分和第二操作数模块部分各自包含第一和第二浮点/整数乘法器、浮点/整数复数加法器以及浮点/整数加法器,所述第一和第二浮点/整数乘法器与所述浮点/整数复数加法器相耦合,所述浮点/整数加法器与所述复数加法器和所述数据寄存器列相耦合,所述浮点/整数复数加法器包含第一加法器部分和第二加法器部分;直接存储器访问控制器与所述本地序列器和所述数据/程序总线复用器相耦合;微处理器接口与共享存储器相耦合,所述共享存储器还与数据存储器相耦合;以及,数据缓冲器与所述数据/程序总线复用器、所述数据存储器、所述超长指令字数字信号处理器内核以及所述共享存储器相耦合。
42.如权利要求41所述的架构,其特征在于,所述数据寄存器列包括第一数据寄存器部分和第二数据寄存器部分。
43.如权利要求42所述的架构,其特征在于,所述第一和第二寄存器部分包括实数数据部分和复数数据部分。
44.如权利要求41所述的架构,其特征在于,所述共享存储器包括第一共享储存体和第二共享储存体,所述第一和第二共享储存体各自构成为双端口存储器。
45.如权利要求41所述的架构,其特征在于,所述数据存储器包括第一数据储存体和第二数据储存体,所述第一和第二数据储存体各自构成为双端口存储器。
46.如权利要求41所述的架构,其特征在于,所述数据缓冲器包括第一数据缓冲器部分和第二数据缓冲器部分,所述第一和第二数据缓冲器部分各自构成为双端口存储器。
全文摘要
一种适用于数字信号处理系统,它由片上系统所构成并组合了微处理器内核(106)和具有复数数据处理能力的数字信号处理器(DSP)内核(108)。DSP内核(108)可以对复域中的浮点数据进行运算并且能够同时产生实数和虚数算术结果。这一功能允许诸如FFT重叠计算、复域同时加法和减法、复数多累加(MULACC)、以及实数域双倍多累加(MAC)的单周期执行。SoC(102)可以由微处理器编程接口(140)来进行全部编程,并使用DSP数据库中的调用来执行DSP功能。内核(106、108)也可以分开编程。对整个SoC(102)编程和仿真的能力可以单独的编程环境来提供。SoC(102)可以具有异构处理器内核,其中两个处理器内核都可以作为主或从处理器来使用,或者两个内核都可以同时和单独地操作。
文档编号G06F17/50GK101095103SQ200580016659
公开日2007年12月26日 申请日期2005年3月7日 优先权日2004年3月26日
发明者P·S·保卢西, B·阿尔铁里, F·阿列蒂, P·巴扎纳, A·塞罗托, M·科西米, A·米舍罗蒂, E·帕斯托雷蒂, A·里什阿蒂 申请人:爱特梅尔股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1