专利名称::用于数模转换的方法和装置的制作方法
技术领域:
:本发明涉及计算系统。具体来说,本发明涉及合并了同时执行复杂运算的不同操作的精简指令集计算机(RSIC)的算术逻辑单元。更具体地说,本发明涉及用于在RSIC计算机中将数字数据转换成模拟数据的方法和装置。
背景技术:
:在很多情况下都期望将二进制数据转换成模拟信号。一种常见的应用是诸如MP3、MP4、AAC和OGG之类的计算机音频格式都以数字形式存储在诸如光盘(CD)、数字视频盘(DVD)之类的音频设备现代源材料中,并读出音频/视频(AV)信息。另外,数字信号处理和大多数数字权利管理编码器处理数字信号。诸如扬声器、耳机之类的重放装置和很多视频显示器需要模拟输入。另外,数字信号包含高频谐波,因此当数字信号被直接输入模拟部件时,会产生失真,并损坏部件。这使得对廉价有效的数模转换器(DAC)的需求增长。数模转换器(DAC)的操作是将定点二进制值转换成诸如电压或电流之类的物理量。在理想情况下,来自DAC的电压或电流由输入二进制值的线性函数特征化。假定从某一六位DAC中可产生最大电压Vmax和最小电压Vmin。定标六位DAC的Vmax与Vmin之间的电压的一种方法是将Vmin用作基本电压,并对该电压施加由(Vmax-Vmin)/26定义的增量AV(又称为电压间的增量)。针对该示例的电压值的可用范围包括Vmin,Nmin+AV,Vmin+2AV,Vmin+3AV,,Vmin+(26_1)AV。这种电压定标方法不产生精确的最大电压,但是若DAC的位宽足够大,则该范围内的最末离散电压与Vmax可能几乎相同。不考虑DAC的位宽,如同任何离散范围的情况那样,所产生的电压中总是有间隙。在实践中,硬件DAC是固定长度的,并且只可能根据DAC的位宽制定电压的标度。利用一种能够得到比硬件DAC可提供的分辨率高的分辨率的用于数模转换的方法,是有利的。
发明内容本发明提供一种将二进制数据快速且线性地转换成模拟信息的装置。优选地,该装置利用通过单点总线彼此相连的计算机阵列。使用这种装置将使数字信号开始甚至用于最简单的客户应用。该方法使用很好地运用速度和精度都优于现有方法的分散式计算装置的计算程序。本发明将传入的数字流信息的每个字都划分成最高有效部分和最低有效部分。最高有效部分和最低有效部分控制电荷的产生,这些电荷加到一起以产生与数字流中的字的值成比例的模拟电信号。图1是本发明的装置的框图。4图2是图1中的处理器之一的框图。图3是本发明的方法的简化流程图。图4是本发明的图1实施例的完整框图。图5是本发明的方法的图3实施例的流程图。图6是按照本发明的以声音的生成开始且以声音的传输结束的单个13位值的处理的电流(I)与时间(t)的关系的图。具体实施例方式图1是本发明的装置的框图。该装置包括具有多个计算机510的计算机阵列505,在这里有24个计算机510。当该阵列在单个模块中或在单个半导体裸片515上实现时,计算机510有时又被称为"核"或"节点"。计算机510在这里被统称为c18计算机510,被分别称为各个指派为00-23的数值的c18计算机。例如,位于裸片515的左上方的c18计算机被称为节点18。计算机510中的每一个计算机通常是独立运行的数字处理器,并通过多条互连总线520与其它计算机互连。具体地,这里的阵列505可以是加利福尼亚州库珀蒂诺市的11^11&58乂5@公司(即TPL集团公司的一个成员)生产的SEAfortl^-24a设备。总线520是SEAfort1^-24中的单点总线。图2是图2中的计算机510之一的主要内部特征的框图。每个计算机510通常都是独立运行的数字处理器,包括64字大小的随机存取存储器(RAM1005)、64字大小的只读存储器(ROM1010)、18位可变"A"寄存器(A-寄存器1015)、9位可变"B"寄存器(B-寄存器1020)以及9位可变"P"寄存器(P-寄存器1025)。还包括返回堆栈1030(该返回堆栈的顶部元素被标记为R)、算术和逻辑单元(ALU1035)以及数据堆栈1040(该数据堆栈的顶部元素被标记为T,该数据堆栈的第二元素被标记为S)。返回堆栈1030和数据堆栈1040的每个元素部分都是18位寄存器。还包括指令解码逻辑1045、指令字寄存器1050、四个通信端口(被统称为端口1055,被分别称为上端口1055a、下端口1055b、左端口1055c和右端口1055d)以及18位输入/输出控制和状态寄存器(IOCS-寄存器1060)。图1的计算机阵列505,更具体地被称为S24设备,包含24个基于双堆栈的微处理器核,这些微处理器核通过执行作为VentureForth⑧编程语言的一部分的指令而被控制。表l<table>tableseeoriginaldocumentpage6</column></row><table>表l是该语言的三十二个操作码(有时被称为op码)的表,连同十六进制、记忆码和二进制表示。这些操作码被划分成两个主要的类别,存储指令和算术逻辑单元(ALU)指令,每个分组中具有十六个操作码。存储指令在表1的左半部分示出,ALU指令在表1的右半部分示出。能够理解,操作码的划分之间的一个明显区别在于存储指令在最左位中包含O,而ALU指令在最左位中包含1。此外,这是不考虑操作码是以它们的十六进制表示还是以它们的二进制表示被查看的情况。图3是本发明的方法的简化流程图。图3包括三个步骤,表示从源1505开始,通过使用混合数模转换方法的源到目的地的数据处理。源1505供应构造混合数模转换方法的混合数模转换器1510。最后,混合数模转换器1510供应目的地1515。图4示出类似于图1的处理器阵列,用于针对声音的生成和传输的特定示例执行与图3中的流程图相关联的块。由总附图标记2005指代的计算机区域表示执行声音的生成或等同地执行图3的块1505中的源的计算机组。区域2005中的声音生成产生从计算机16传递到计算机17的不定的13位值流。可替代地,该区域可被产生13位值的任何数字媒体源替换。单个计算机23(又由总附图标记2010指代)负责执行图3中的块1510中的混合数模转换方法。节点17(又由总附图标记2015指代)将源生成区域2005与施行数模转换方法2010的计算机连接起来,其仅仅是两个处理之间的桥接器。由总附图标记2020指代的六位硬件数模转换器(DAC)被示出为与计算机23相邻,而实际上是计算机23的内部结构的一部分。DAC需要六位二进制值作为输入,并将该输入转换成电流I,电流I被定标在供给构成DAC的晶体管的6位所指示的1^和1_之间。而后,来自DAC的电流将为示出为与扬声器2030并联的电容器2025充电。接收由从DAC产生的电流得到的电压输入的扬声器和电容器2025将产生声音,或等同地,完成图3的块1515中的目的地处理。图5是示出以从图4的节点17提取13位值的块2505开始,在图4的节点23中施行混合数模转换方法的过程的框图。接下来,13位值用作在图4的电容器2025上生成第一电荷的输入,以及分别在图5的块2510和2515中的电容器2025上生成第二电荷的输入。在电容器2025上生成第一电荷被视为电流固定而时间可变的充电过程,而在该电容器该过程针对从图4的节点17提取的每个新的13位值而重复进行。图6是以声音的生成开始且以声音的传输结束对单个13位值进行处理的电流(1)与时间a)的关系的图。图6中的图示出来自图4的6位DAC2020的电流,用于以图4的节点23中所包含的混合数模转换方法处理单个13位值。横轴以时间为单位测量,纵轴以电流I为单位测量。在时间轴上,、表示执行指令的时间量,这些指令不是实际产生对图4的电容器2025的第一充电和第二充电的一部分,但是仍然是建立这两个任务所必需的。标记^与t2之间的时间表示根据从图4的节点17提取的13位值确定的延迟。标记t2与t3之间的时间表示从图4的DAC2020产生的作为输入$00100的函数的电流I被保持的时间量。该区域又被称为并且是针对在图5的步骤2510中每次对13位值的处理,在可变时间内以固定电流对图4的电容器2025充电的过程。图6中的标记t3与t4之间的时间表示针对Q2过程的恒定时间量。该时间间隔与在c18计算机上执行单个操作码的时间间隔等同。在该时间间隔期间,从图4的DAC2020产生的电流I是输入u'的函数。该区域又称为Q2,并且是针对在图5的步骤2515中每次对13位值的处理,在固定时间内以可变电流对图4的电容器2025的音调细调充电。这两个充电区域Qi和Q2为图4的扬声器2030产生的电压等于Qi和Q2之和除以图4的电容器2025的电容所得的商。下列描述是用于在图4的节点23中实施混合数模转换方法的Forth实施例,具体地说,覆盖了从图4的节点17提取13位值以及在图5中的框图的步骤2505、2510和2515中确定对图4的电容器2025的第一充电和第二充电的过程。Forth程序是自底向上编写而成的,这意味着它们从底部被读取,并且编译的完成无需前向引用。然而,以下混合数模转换方法的Forth实施例按执行顺序显示,而不一定按代码将出现在文本文件中的顺序显示。对Forth字的标签的选择以仔细反映它们的功能为目的被选择。例如,Forth字calcderivative将确定函数的派生,正如该Forth字所隐含的意思一样。堆栈注释也显示在紧邻Forth字的括号中,并且给出在执行Forth字之前和之后图2的数据堆栈1040和图2的返回堆栈1030的状态。:dac(0-0)beginpr印—regspr印—stkscalc—holdlcalc_delaycalc_amp2use_hardwa:re_dacagain;混合数模转换方法包含在冒号定义^£中。在该冒号定义右侧示出的以左括弧开始并以右括弧结束的是一条注释。该括号内是图2的在执行冒号定义之前数据堆栈1040的内容和在执行冒号定义之后该数据堆栈的内容。在为Forth字dac的情况下,未对堆栈作用进行设置,在执行Forth字之前和之后,堆栈上的数值都为Q。作为每个冒号定义的一部分,分号提供冒号定义被调用的位置的返回。作为冒号定义A的一部分的Forth字begin和again创建了一个循环,该循环内的Forth字被一直执行,直到在达到停止条件为止。macroout—port(-n)'iocs#macroin一port(_n)'-d—#macroprep—regs(0_0)in—porta!out—portb!Forth字oreoregs被示出为被括号中的堆栈作用注释跟随的宏。就像Forth字所暗示的那样,则Dregs的任务是初始化(准备)图2的A-寄存器1015和B_寄存器1020。A-寄存器将包含下端口的地址,而B-寄存器将包含图2的IOCS-寄存器1060的地址。macroprep—stks(0-00nnR:-O)dupd叩push@adupForth字nrm^lM被示出为被括号中的堆栈作用注释跟随的宏,其中堆栈作用除了包括数据堆栈作用之外,还包括返回堆栈作用。Forth字nx^l^用于准备数据堆栈和返回堆栈,以供即将到来的Forth字使用。在执行该宏时,初始在数据堆栈上的值Q被复制并传递到返回堆栈,而从下端口提取的单个值被复制并留在数据堆栈上。macro17bitmask(_n)$lffff#macrocalc—holdl(O0nn-00nulR:0-ul0)val—1.+2/17bitmaskand2/2/2/2/duppushForth字calcholdl被示出为被堆栈作用注释跟随的宏,并且负责确定图6的图中t2与t3之间的时间长度,其为在图5的步骤2510中对图4的电容器2025的第一充电的时间长度。对电容器的初始充电的时间长度为从节点17提取的13位值的八个最高有效位计算出的值ul。macroval—2(-n)$02000#macrocalc_delay(00nul_0OnR:ul0_u0ul0)val_2not.+notpush在执行宏calcholdl之后留在数据堆栈上的值需要用于计算、与t2之间的时间间隔,该时间间隔是对图4的电容器2025进行第一充电之前的延迟。Forth字calcdelay被示出为在括号中示出的数据堆栈和返回堆栈作用之前的宏。被称为u0的延迟值是和ul的非,val2的非也示出为一个宏。由val2表示的数倌$02000被选中以具体地与从节点17提取的任意13位值一起工作,以创建对图4的电容器2025进行的组合双重充电之间的适当总延迟(调用存在由执行与充电不相关联的Forth代码导致的固有延迟)。macro8bitmask(_n)$000ff#macroval_l(_n)$20000#macrocalc_amp2(00n_00u'R:uOul0_u0ul0)val_l.+2*2*2*8bitmaskandForth字^l^n^被示出为被堆栈作用注释跟随的宏,并且负责确定将传递到图4的6位硬件DAC2020的值。计算出的被传递到图20的DAC2020的值被称为u',并且是根据从图4的节点17提取的13位值的副本计算出的。该计算包括操纵13位数移位以适应图4的6位硬件DAC2020,使得仅5个最低有效位被发送到图4的DAC2020。macroampl(_n)$00100#macrouse_hardwa:re_dac(00u'_0R:u0ul0_)amplbegin皿ext!bbegin皿ext!bbegin皿ext!bForth字usehardwaredac被示出为被堆栈作用注释跟随的宏,并且负责将正确的数值发送到图4的6位硬件DAC2020,以及每个数值从DAC产生电流I的时间长度。在执行宏usehardwaredac之前图2的数据堆栈1040包含QQ!^,而图2的返回堆栈1030包含爐&Q。作为宏的Foth字uni将增加值$00100放在数据堆栈的顶部。宏imni是到图20的DAC2020的恒定估值输入,该DAC2020在图6的图中的横轴上的时刻t2产生作为$00100的函数的电流I。调用这是图6的图中在可变长度时间内具有恒定(固定)电流I的区域。跟随Forth字之后的Forth字begin和u證t执行空循环,其中Forth字MMl被执行了返回堆栈顶部的值uO加1次。因此,如先前已提到的,值uO是对图4的电容器2020进行第一充电之前的延迟,并且是图6的^与t2之间的时间间隔。Forth字!b消耗数据堆栈的顶部项$00100,将该值传递到图2的B-寄存器1020指向的位置,在这种情况下,该位置是图2的IOCS-寄存器1060。将该值存储在IOCS-寄存器启用使用被发送给IOCS-寄存器的值的以从最低有效位数第三位开始的6位的DAC。被启用的DAC将产生作为输入$00100的函数的电流I,直到一新值被发送到该6位DAC为止。产生作为输入$00100的函数的电流I的时间量基于执行第二对Forth字l^Kill和MMi所需的时间量。这两个Forth字消耗返回堆栈的顶部项ul,并且值ul是产生作为到DAC的输入$00100的函数的电流I的时间量加1。第二Forth字丄丄将发送到B-寄存器指向的位置,再一次地,该位置是IC0S-寄存器,数据堆栈u'的顶部项。将该值存储在IOCS-寄存器将再次启用DAC,但是到一个与先前不同且更小的值。在横轴上的位置t3处,作为到DAC的输入值u'的函数的来自DAC的电流I保持一先前称为单位的时间量。该单位时间是执行第三对Forth字begin和MMi所必需的时间量的基准。再一次地,执行空循环的时间量是返回堆栈的值O加1。因此,图6中的图中被标记为对电容器第二充电的区域具有固定时间和基于从图4的计算机17提取的13位值的可变电流。最后,第三Forth字丄丄将数据堆栈的顶部项Q发送到IOCS-寄存器,并启用DAC以不输出电流I。尽管上面已描述了多个实施例,但是应当理解,这些实施例仅作为示例给出,本发明的广度和范围不应当受到任何上述示例性实施例的限制,而是相反地,应当仅根据以下权利要求及其等同物来限定。工业实用性图4所示的装置特别好地适于要求大处理能力和低功耗的嵌入式消费应用。图5所示的发明方法意在广泛地用在各种各样的消费电子应用中。预期它将在A/V数据用于在数字音频信号处理中的模拟设备上以及各种电子装置上显示的应用中特别有用,不过功耗和发热是重要的考虑因素。由于本发明的方法可容易地产生并与现有任务、输入/输出设备等集成,并且由于提供了这里描述的优点,预期它们将很容易在工业中被接受。出于这些及其它原因,预期本发明的用途和工业实用性将具有巨大的范围和长久的持续时间。10权利要求一种用于将数字数据流转换成模拟数据流的装置,包括具有多个处理核的多核处理器,每个处理核具有至少两个端口,用于接收输入并产生专用RAM和ROM的输出,且通过单点总线连接到用于处理数据的相邻处理器核;所述处理器核中的至少一个处理器核用于从另一处理器接收数据信息,并将该数字信息转换成模拟信息,并通过另一端口输出该模拟信息;以及输出端,连接到所述一个处理器核,用于向负载传送该模拟信息。2.如权利要求1所述的用于将数字数据流转换成模拟数据流的装置,进一步包括连接到所述输出端的电容器。3.如权利要求1所述的用于将数字数据流转换成模拟数据流的装置,其中所述一个处理器核位于所述多核处理器的外边界处。4.如权利要求3所述的用于将数字数据流转换成模拟数据流的装置,进一步包括第二处理器核,该第二处理器核用于从第三处理器核接收数字信息,并将该数字信息传输到所述第一处理器核。5.如权利要求4所述的用于将数字数据流转换成模拟数据流的装置,其中所述第三处理器核位于所述多核处理器的中心部分。6.如权利要求5所述的用于将数字数据流转换成模拟数据流的装置,其中所述第三处理器是用于生成声音的处理器组的成员。7.—种利用多核处理器将数字信息转换成模拟信息的方法,包括以下步骤从所述多核处理器中的至少一个核提供数字信息;以及将所述数字信息传输到所述多核处理器中的第二核;以及在所述第二核中将所述数字信息转换成模拟信息;以及将所述模拟信息从所述第二核输出到负载。8.如权利要求7所述的将数字信息转换成模拟信息的方法,其中所述传输步骤由第三核施行。9.如权利要求7所述的将数字信息转换成模拟信息的方法,进一步包括利用用于进一步处理的所述一个核生成数字信息的步骤。10.如权利要求7所述的将数字信息转换成模拟信息的方法,进一步包括以下步骤用于产生与所述数字值成比例的电荷的第一充电步骤;以及用于产生与所述数字信息的数字值成比例的电荷的第二充电步骤。11.如权利要求io所述的将数字信息转换成模拟信息的方法,进一步包括将所接收的数字信息划分成最高有效部分和最低有效部分的步骤。12.如权利要求11所述的将数字信息转换成模拟信息的方法,其中所述最高有效部分为所述第一充电步骤提供输入,并且所述最低有效部分为所述第二充电步骤提供输入。13.如权利要求12所述的将数字信息转换成模拟信息的方法,其中所述第一充电步骤的输出是在与所述数字输入的最高有效部分的值成比例的时间间隔内的恒定的电流;并且所述第二充电步骤的输出是在恒定时间间隔内与所述数字输入的最低有效部分的值成比例的电流。14.一种将数字值流转换成与该数字信号成比例的模拟信号的方法,包括以下步骤从该流提取第一数字值;以及将该第一数字值划分成最高有效部分和最低有效部分;以及产生与该最高有效部分成比例的电荷到输出;以及将该电荷和与该最低有效部分成比例的电荷相加;以及提取所述数字处理的第二数字值,并继续直到该数字流停止为止。15.如权利要求14所述的将数字值流转换成与该数字信号成比例的模拟信号的方法,其中所述产生步骤的输出是在与该数字输入的最高有效部分的值成比例的时间间隔内的恒定电流;并且所述相加步骤的输出是在恒定时间间隔内的与该数字输入的最低有效部分的值成比例的电流。16.如权利要求15所述的将数字值流转换成与该数字信号成比例的模拟信号的方法,其中所述产生步骤和所述相加步骤的输出被存储在电容器上,并被输送到负载。17.如权利要求13所述的将数字值流转换成与该数字信号成比例的模拟信号的方法,其中所述数字流是声音信号。18.如权利要求17所述的将数字值流转换成与该数字信号成比例的模拟信号的方法,其中所述数字声音信号是13位数字流。19.如权利要求18所述的将数字值流转换成与该数字信号成比例的模拟信号的方法,其中所述最高有效部分是该13位流的前8位,并且所述最低有效部分是该13位流的后5位。20.如权利要求15所述的将数字值流转换成与该数字信号成比例的模拟信号的方法,其中所述电荷产生由多核处理器中的一个核中存储的指令确定。21.如权利要求20所述的将数字值流转换成与该数字信号成比例的模拟信号的方法,其中所述指令是forth字。全文摘要所描述的装置是一种用于提供数模转换的多核处理器505。核510中的至少一个核2010用于进行转换,另一组核2005可提供诸如音频可视信号之类的数字流信息的源。该流可选地通过传输处理器2015被传送到处理器2010。本发明的方法将传入的数据流信息中的每个字划分成最高有效部分和最低有效部分。最高有效部分和最低有效部分控制电荷的产生,这些电荷加在一起以产生与数字流中的字的值成比例的模拟电信号。文档编号H03M1/66GK101772891SQ200880101491公开日2010年7月7日申请日期2008年7月25日优先权日2007年7月30日发明者迈克尔·B·蒙特维利什斯凯申请人:Vns组合有限责任公司