多功能运算装置及快速傅里叶变换运算装置的制作方法

文档序号:17151781发布日期:2019-03-19 23:30阅读:213来源:国知局
在下面,将说明的技术涉及多功能运算装置及ftt(快速傅里叶变换)运算装置。
背景技术
::mac(multiply-accumulate)电路具备连接于乘法器与乘法器输出的累积器。mac电路用于有限脉冲响应滤波器(firfilter),无线脉冲响应滤波器(iirfilter),快速傅里叶变换(fft)及反傅立叶变换(ifft)等各种用途。在初期,mac电路多被应用于数据信号处理器(digitalsignalprocessor),但是,现在,还频繁地被应用于通用处理器gpp(generalpurposeprocessor)。作为并列使用多个mac的多重mac的现有技术,有公开于韩国注册专利第10-0835173号(发明名称:用于乘法累积运算的数据信号处理装置及方法)的技术。根据现有技术,控制单元可从程序储存器呼叫指令程序将其传达至数据地址生成单元。这对控制部给予很多负荷,并降低整个系统效率。技术实现要素:技术课题因此,本发明为解决现有问题而提出,提供一种控制单元不用在每周期从程序储存器呼叫指令程序的多功能运算装置及ftt运算装置。此外,本发明可提供可同时使用多个mac电路,同时,提供可使所用的储存器容量最小化的多功能运算装置及ftt运算装置。解决手段一种多功能运算装置,可包括:乘积累加单元,具备多个乘积累加电路;地址生成单元,生成阅读地址组,并将所生成的所述阅读地址组传达至储存器,而所述阅读地址组具备多个阅读地址;及多个库,储存多个阅读数据库组,并且,在多个阅读数据库组中,将与所述阅读地址组对应的阅读数据组传达至与所述阅读地址组对应的所述乘积累加单元,而所述阅读数据组包括具备多个阅读数据的所述储存器。一种fft运算装置,可包括:乘法单元,具备多个乘法电路;地址生成单元,生成阅读地址组,将所生成的所述阅读地址组传达至储存器;及具备储存多个阅读数据组的多个库,并且,在所述多个阅读数据组中,将与所述阅读地址组对应的阅读数据传达至所述乘法单元,而所述阅读数据组包括具备多个阅读数据的所述储存器。技术效果根据本发明的多功能运算装置及fft运算装置具有以下好处:地址生成单元仅通过具备查询表(lookuptable)或者状态机(statemachine)生成地址可减少控制单元的负荷,其中,不需要用控制单元。此外,多功能运算装置及fft运算装置通过按预定顺序储存数据,具有可避免冲突的发生,可减少所需储存器容量的好处。附图说明图1是示出根据一个实施例的多功能运算装置的图。图2至图10是示出在图1所示的多功能运算装置具备8个mac,执行6-点fft(16-pointfastfouriertransform)运算时动作的示意图。图11至是图14是示出多功能运算装置具备8个mac电路,并执行fir运算时动作的示意图。图15是示出根据一个实施例的fft运算装置的图。图16至24是示出在图15中所示的fft运算装置具备8个乘法电路,并执行16-点fft(16-pointfastfouriertransform)运算时动作的图。具体实施方式以下,参照附图详细地说明实施例。以下说明的实施例可施加多种变更。以下实施例不限定实施形态,应该理解为,包括对这些的所有变更、均等物至代替物。第1或第2等,a,b等术语在说明多种构成要素时可被使用,但这些术语应该以区分一种构成要素与另一种要素为目的被揭示。比如,第1构成要件可被命名为第2构成要件,类似地,第2构成要件可被命名为第1构成要件。及/或指多个相关项目的组合或者与多个与记载的相关的项目中的一个项目。单数表达在语境上如没有明确的不同用处,还包含复数语义。在本说明中,“包含”,或“具有”等词语用于指明在记载于说明书上的特征﹑数字﹑步骤﹑动作﹑构成因素或其组合的概念,不应被理解为用于提前排除一个或一个以上的其他特征或数字﹑步骤﹑动作﹑构成因素或其组合的概念或附加可能性。图1是示出根据一个实施例的多功能运算装置的图。参照图1,多功能运算装置包括mac单元110、地址生成部120、储存器130、阅读映射器140、编写映射器150及控制部160。mac单元110包括多个mac电路111及运算单元116。多个mac电路111分别包括乘法器112及累积器115。累积器115累积乘法器112的输出,为此,累积器115包括加法器113及寄存器114。在mac电路111可省略累积器115或者寄存器114。严格地,在mac电路111中,省略寄存器114的电路相当于乘法-加法电路,但在本发明中,这种乘法-加法电路包括在mac电路111范畴内。此外,严格而言,在mac电路111中,省略累积器115的电路属于乘法电路,但在本发明中,这种乘法电路包括在mac电路111的范畴内。即,本发明中的mac电路111为除了原来的乘法-累加电路外,还包括乘法-加法电路及乘法电路的广义的mac电路。算术部116针对从多个mac电路111被输出的多个输出执行和、差、累积及移数中的至少一个运算。算数单元116输出由至少一个运算结果获得的一个以上的mac输出(mout1~moutc,其中,c为整数)。算术部116可进一步输出通知最终运算结果的标志(fl)。在算数单元116执行的运算可根据运算装置将要执行的运算(例如:fft,fir等)被变更。因此,算数部116可根据从控制单元160被传达的算术控制信号(acs)变更所执行的运算。地址生成部120通过生成阅读地址组(rag),将其传达至储存器(130)。阅读地址组(rag)具备多个阅读地址。地址生成部120通过生成编写地址组(wag),将其传达至储存器130。编写地址组(wag)具备多个编写地址。地址生成部通过生成阅读映射值(rmv)及编写映射值(wmv),将其分别传达至阅读映射器(140)及编写映射器(150)。比如,地址生成单元120具备计数器122及查询表124。计数器122根据时钟信号(ck)输出变化值。例如,计数器122可输出根据时钟信号(ck)增加的整数值。查询表124在多个阅读地址族中,根据在计数器122被输出的指,输出被选定的编写地址组(rag)。为此,多个查询表124看储存多个编写地址组。此外,查询表124从多个编写地址组中,根据从计数器122输出的值,可输出被选定的地址组(wag)。为此,查询表124可储存多个编写地址组。通过延迟阅读地址组(rag)可获取编写地址组(wag),从而,可取代从查询表124输出编写地址组(wag)。在多个阅读映射值中,查询表124可根据从计数器122输出的值输出所选定的阅读映射值(rmv)。为此,多个查询表124可储存多个阅读映射值。查询表124在多个编写映射值中,可根据从计数器122输出的值,输出所选定的映射值(wmv)。为此,查询表124可储存多个编写映射值。与图不同,地址生成单元120可包括状态机(未图示)。状态机可根据时钟信号,生成阅读地址组(rag),编写地址组(wag),阅读映射值(rmv)及编写映射值(wmv)。当地址生成单元120具备状态机时,可不具备查询表124或者计数器122。储存器130可具备多个库132。因此,储存器130可同时阅读或编写许多数据。例如,当储存器130具备四个库132时,储存器130可同时阅读或编写4个数据。当然,在此情况下,4个数据应位于不同的库132。例如,储存器130,可为双端口。在此情况下,储存器130可同时执行编写动作与阅读动作。例如,当储存器130具备4个库132时,储存器130可同时阅读4个数据并编写4个数据。当然,在此情况下,所阅读的四个数据位于相互不同的库112,并且,编写的4个数据应位于相互不同的库132中。多个库132储存多个阅读数据组。储存器130在多个阅读数据组中,将与阅读地址组(rag)对应的阅读数据组(rdg)传达至mac单元110。阅读数据组(rdg)包括多个阅读数据。多个阅读数据分别可为复数,实数或者整数。多个阅读数据从不同的库132被输出。当储存器130具备第一至第四库时,在多个阅读数据中,第一至第四阅读数据可从第一至第4库分别被输出。多个阅读数据可位于相同的行。例如,第一及第四阅读数据可分别为第一及第四库的第一个数据、多个阅读数据可位于不同的行。例如,第一及第三阅读数据分别为第1及第三库的第五个数据,第二及第四阅读数据可分别为第二及第四库的第六个数据。多个库132可储存一个以上的编写数据组。储存器130将编写数据组(wdg)储存于与编写地址组(wag)对应的位置。编写数据组(wdg)可具备一个以上的编写数据。一个以上的编写数据可分别为复数,实数或者整数。一个以上的编写数据可储存于相互不同的库132中。当储存器130具备第1至第四库时,在一个以上的编写数据中,第一至第四编写数据可分别储存于第一至第四库中。一个以上的编写数据可储存于相同的行。例如,第一至第四编写数据可分别储存于第一指第四库的第一个位置。多个编写数据可储存于相互不同的行。例如,第一及第三数据可分别储存于第一及第三库的第五个位置,第二及第四数据可分别储存与第二库及第四库的第六个位置。阅读映射器140根据阅读映射值(rmv)将多个阅读数据映射至多个mac输出(min1~minb,其中,b为整数)。编写映射器150根据编写映射值(wmv)将一个以上的mac(mout1~moutc)映射为一个以上的编写数据。控制部160,在储存器130储存初期阅读数据组,并且,在查询表124储存多个阅读地址组之后,可驱动地址生成单元120。即使多个mac电路111同时动作,控制单元160可将初期阅读数据储存于所属控制器,以使多个阅读数据从多个库132中,从相互不同的库被输出。此外,控制单元160可将对应于多功能运算装置将执行的运算的算术控制信号(acs)传达至算术单元116。同样,控制单元160主要干预多功能运算装置的动作初期,而多功能运算装置在执行运算(例如:fft,fir时)可完全不干涉,或者偶尔进行干涉。即,当执行运算时,主要由地址生成部120的动作可执行运算。因此,可减小控制部160的负担。例如,控制部160可为cpu。在图1中所示的多功能运算装置可执行fft运算。在图2至10是示出,在图1中所示的多功能运算装置具备8个mac,并执行16-点fft(16-pointfastfouriertransform)运算时的动作的示意图。图2是示出作为16-点fft的运算实施例的"radix2,decimationintime"运算的图。16-点fft运算具有4个(stage),并在各阶段执行8个蝴蝶云端。16-点fft具有16个输入(x(1)~x(16))及16个输出(y(1)~y(16))。图3是示出蝴蝶运算的示意图。在图3中,胡迪被输入第1及第2蝴蝶输入(x1,x2)及旋转因子(twiddlefactor,w),并输出第一及第二旋转输出(y1,y2)。图4是示出mac单元动作的示意图。参照图4,mac单元110包括第一蝴蝶电路410及第二蝴蝶电路470。第一蝴蝶电路410包括第一至第4mac单元420,430,440,450及第一算术部460。在第一至第四mac电路420,430,440,450中,各mac电路包括乘法器112及累积器。第1mac电路(420)输出使第一及第二mac输入(min1,min2)相乘的值。第2mac电路(430)输出使第三及第四mac输入(min1,min2)相乘的值。第3mac电路(430)输出使第五及第六mac输入(min1,min2)相乘的值。第4mac电路(430)输出使第七及第八mac输入(min1,min2)相乘的值。第一算术单元480输出第1至第四输出(mout1~mout4)。第一输出(mout1)属于在第九输入(min9)附加第一mac电路420的输出,并减去第2mac电路的输出的值。第二输出(mout2)属于在第九输入(min9)减去第一mac电路420的输出,并减去第2mac电路的输出的值。第三输出(mou31)属于在第10输入(min10)附加第三mac电路440的输出,并减去第4mac电路450的输出的值。第四输出(mout4)属于在第10输入(min10)减去第三mac电路440的输出,并减去第4mac电路450的输出的值。为执行这种运算,第一算术部460可包括第一至第6合算部461~466。第一合算单元461在第一mac电路420的输出减去第二mac电路430的输出。第二合算单元462在第三mac电路440的输出加上第四mac电路450的输出。第三合算单元463在第九mac电路的输入(min9)减去第一合算单元461的输出。第四合算单元464在第九mac输入(min9)减去第一核算单元461的输出。第五合算部465在第十mac输入(min10)加上第二合算单元462的输出。第六合算单元466在第十mac输入(min10)减去第二合算单元462的输出。第二蝴蝶电路470被输入第11至第20mac输入(min11~min20),并输出第五至第8mac输出(mout5~mout8)。因第二蝴蝶电路470的构成与第一蝴蝶电路420相同,省略进行对于此的详细说明。图4中的蝴蝶电路410为执行蝴蝶运算,将第一蝴蝶输入(x1)的实数(x1[r])及虚数(x1[i])分别输入于第九及第10mac输入(min9,min10)。将第二蝴蝶输入(x2)的实数(x2[r])分别输入于第一及第5mac输入(min1,min5)。将第二蝴蝶输入(x2)的虚数(x2[i])输入于第三及第七mac输入(min3,min7)。将旋转因子(w)的实数(w[r])输入于第二及第8mac输入(min2,min8)。将旋转因子(w)的虚数(w[i])输入于第4及第6mac输入(min2,min8)。以如上所述的方法输入,第1mac输出(mout1)属于第一蝴蝶输出(y1)的实数。第2mac输出(mout2)属于第二蝴蝶输出(y2)的实数。第3mac输出(mout3)属于第一蝴蝶输出(y1)的虚数。第4mac输出(mout4)属于第二蝴蝶输出(y2)的虚数。参照图5,储存器130包括第一至第6库510~560。例如,第一至第四库510~540作为双端口,可同时执行4个输出与四个输入。例如,第5及第6库550~560作为单端口,可同时执行两个输出。第1至第4库510~540输出与第1至第4蝴蝶输入地址(xa1~xa4)分别对应的第1至第4蝴蝶输入(x1~x4)。与第一至第四蝴蝶输出地址(ya1~ya4)分别对应的第一至第四蝴蝶输出(y1~y4)输入于第一至第四库510~540。第5及第6库550,560输出与第一及第二旋转因子地址wa1,wa2分别对应的第一及第二旋转因子(w1,w2)。第一至第四蝴蝶输入地址xa1~xa4及第1及第2旋转因子地址(wa1,wa2)对应于图1中的阅读地址组(rag)。即,阅读地址组(rag)作为多个阅读地址,包括第1至第4蝴蝶输入地址(xa1~xa4)及第1及第二旋转因子地址(wa1,wa2)。第1至第4蝴蝶输出地址(ya1~ya4)对应于图1的编写地址组(wag)。即,编写地址组(wag)作为多个编写地址,可包括第1至第4蝴蝶输出地址(ya1~ya4)。第1至第4蝴蝶输入(x1~x4)及第一及第二旋转因子(w1,w2)对应于图1中的阅读数据组(rdg)。即,阅读数据组(rdg)作为多个阅读数据,包括第1至4蝴蝶输出(x1~x4)及第1及第2旋转因子(w1,w2)。第1至第4蝴蝶输出(y1~y4)对应于图1中的编写数据组(wdg)。即,编写数据组(wdg)作为多个编写数据,包括第1至第4蝴蝶输出(y1~y4)。储存器130根据一定顺序储存初期阅读数据组(x(1)~x(16),w(1)~w(8)),以防止以免fft运算中的多个库510~560之间的冲突。初期阅读数据组(x(1)~x(16),w(1)~w(8))作为进行fft运算前储存于储存器130的值,可由控制单元160被储存。在图中,1/x(1)是指在1号储存x(1),5/w(1)是指在5号储存w(1)。通常,16点fft输入(x(1)~x(16))依序(x(1),x(2),x(3),x(4),x(5),x(6),x(7),x(8),x(9),x(10),x(11),x(12),x(13),x(14),x(15),x(16))被储存,但在本实施例中,可根据一定顺序(x(1),x(2),x(3),x(4),x(7),x(8),x(5),x(6),x(11),x(12),x(9),x(10),x(13),x(14),x(15),x(16))被储存。例如,即使一定的顺序是不依次的,但作为行单位,是依次的。即,x(1)至x(4)位于第一行,x(5)至x(8)位于第二行,x(9)至x(12)位于第三行,x(13)至x(16)位于第四行。一定顺序可通过预先模拟取得,以免发生fft运算中的库550~560之间发生冲突。其中,库510~540之间发生冲突是指第1至第4蝴蝶输入(x1~x4)中的两个以上的蝴蝶输入同时从一个库被获取。因为一个库只能同时输出一个蝴蝶输入,如果发生两个以上的蝴蝶输入需要从一个库被阅读的情况时,不可进行正常动作。模拟可执行于程序编译过程。例如,编译器通过核实各库之间的是否有发生冲突,如果发生了,可通过反复进行改变初期fft输入(x(1)~x(16))中的部分输入位置的过程,决定一定顺序。通常,八个旋转因子(w(1)~w(8))依序(w(1),w(2),w(3),w(4),w(5),w(6),w(7),w(8))被储存,但在本实施例中,可根据一定顺序(w(1),w(2),w(4),w(3),w(6),w(5),w(7),w(8))被储存。例如,即使一定顺序是不依次的,但以行单位是依次的。即,w(1)及w(2)位于第1行,w(3)及w(4)位于第2行,w(5)及w(6)位于第3行,w(7)及w(8)位于第4行。一定顺序可通过预先模拟取得,以免发生fft运算中的库550~560之间发生冲突。参照图6,地址生成器120的查询表124包括蝴蝶查询表610,旋转因素查询表620,阅读映射值查询表630,编写映射值查询表640及寄存器650。例如,控制单元160输入需填于蝴蝶查询表610,旋转因素查询表620,阅读映射值查询表630,编写映射值查询表640的值后,驱动计数器122。蝴蝶查询表610输出与计数器122的输出值对应的多个蝴蝶输入地址(xa1~xa4)。寄存器650可输出将多个蝴蝶输入地址(xa1~xa4)延迟到一个以上的时钟周期的多个蝴蝶输出地址(ya1~ya4)。由寄存器650的延迟,在与多个蝴蝶输入(x1~x4)从储存器130被输出后,作为多个蝴蝶输出(y1~y4),与到输入于储存器130所需要的延迟对应。即使在图1未明确地示出,多个蝴蝶输入(x1~x4)从储存器130被输出后,作为多个蝴蝶输出(y1~y4),直到被输入至储存器130,需要一个以上的时钟周期。作为多个蝴蝶输出地址(ya1~ya4),通过使用延迟多个蝴蝶地址(xa1~xa4)的延迟的值,多个蝴蝶输出(y1~y4)可分别储存在储存器130内的多个蝴蝶输入(x1~x4)所在的位置。旋转因子查询表620输出与计数器122的输出值对应的一个以上的旋转因子地址(wa1,wa2)。阅读射影值查询表630输出与计数器的输出值对应的阅读射影值(rmv)。编写射影值查寻表640输出与计数器的输出值对应的编写射影值(wmv)。图7是示出储存于查询表610的值的图。参照图7,在第一周,蝴蝶查询表610作为多个蝴蝶输入地址(xa1~xa4),可输出1,2,3,4。因此,储存器130可将位于1,2,3,4号的x(1),x(2),x(3),x(4)作为多个蝴蝶输出(x1~x4)进行输出。因为多个蝴蝶输入地址(xa1~xa4)还被使用为多个蝴蝶输出地址(ya1~ya4),多个蝴蝶输出(y1~y4)储存与储存器的相同位置,即1,2,3,4号。在第二周,蝴蝶查询表610作为多个蝴蝶输入地址(xa1~xa4)输出7,8,9,10。因此,储存器130将位于7,8,9,10号的x(7),x(8),x(5),x(6)作为多个蝴蝶输入(x1~x4)输出。因为多个蝴蝶输入地址(xa1~xa4)还使用为多个蝴蝶输出地址(ya1~ya4),多个蝴蝶输出(y1~y4)可储存于与储存器相同的位置即7,8,9,10号。以上述方式,在第三周,蝴蝶查询表610可输出13,14,15,16,并且,储存器130可输出x(11),x(12),x(9),x(10)。在第四周,蝴蝶查询表610输出19,20,21,22,储存器130输出x(13),x(14),x(15),x(16)。以后的动作,因与之前的方式相同,予以省略。图8是示出储存于旋转因子查询表620的值的图。参照图8,第一至第四周,旋转因子查询表620作为一个以上的蝴蝶输入地址(wa1,wa2),输出5,na。其中,na指无输出值。储存器130输出将位于5号的w(1)作为一个以上的旋转因子(w1)进行输出。在第五周,旋转因子查询表620可将5,18作为一个以上的蝴蝶输入地址(wa1,wa2)进行输出。图8是示出储存于旋转因子查询表620的值的图。参照图8,在第一至第四周期,旋转因子查询表620作为一个以上的蝴蝶输入地址wa1,wa2,可输出5,na。其中,na是指无输出值。储存器130将位于5号的w(1)作为一个以上的旋转因子(w1)进行输出。第五周期,旋转因子查询表620作为一个以上的蝴蝶输入地址(wa1,wa2),可输出5,18。因为以后的动作方式与其之前的方式相同,予以省略。图9是示出说明阅读射影器140的动作的图。参照图9,在第一周期,阅读映射器140可将第二蝴蝶输入(x2)的实数(x2[r])映射于第1mac输入(min1),将第1旋转因子(w1)的实数(w1[r])映射于第2mac输入(min2),将第二蝴蝶输入(x2)的虚数(x2[i])映射于第3mac输入(min3),将第1旋转因子(w1)的实数(w1[r])映射于第4mac输入(min4)。同样,可将x2[r],w1[i],x2[i],w1[r],x1[r],x1[i],x4[r],w1[r],x4[i],w1[i],x4[r],w1[i],x4[i],w1[r],x3[r],x3[i]分别映射于第5至第20mac输入(min5~min20)。在第二周期,阅读映射器140可将x4[r],w1[r],x4[i],w1[i],x4[r],w1[i],x4[i],w1[r],x3[r],x3[i],x2[r],w1[r],x2[i],w1[i],x2[r],w1[i],x2[i],w1[r],x1[r],x1[i]分别映射于第1至第20mac输入(min5~min20)。因为以后的动作方式与其之前的方式相同,予以省略。此外,在相同的行中,可变更数据之间的储存位置,并且,可通过使变更的行的变更规则变得有规律,可降低映射器的复杂度。此外,在映射信息中,针对相同行内的数据之间的位置变更的地址变更内容可合并于阅读或编写地址储存器(蝴蝶查询表610、旋转因子查询表620)。此过程的执行与内容可根据预先的模拟实验决定并获得。图10是示出编写映射器150的动作的示意图。参照图10,在第一周期,编写映射器150可将第一mac输出(mout1)映射于第一蝴蝶输出(y1)的实数值(y1[r]),且可将第二mac输出(mout1)映射于第一蝴蝶输出(y1)的实数值(y1[r]),将第三mac输出(mout3)映射于第一蝴蝶输出(y1)的虚数值(y1[r]),第四mac输出(mout4)映射于第二蝴蝶输出(y2)的虚数值(y2[i])。此外,将第五至8mac输出(mout5~mout8)分别映射于y3[r],y4[r],y3[i],y4[i]。在第二周期,可将第1至8mac输出(mout1~mout8)可分别映射于y3[r],y4[r],y3[i],y4[i],y1[r],y2[r],y1[i],y2[i]。因为以后的动作方式与其之前的方式相同,予以省略。在图1中所示的多功能运算装置可执行fir运算。在图11至图13中,多功能运算装置具备8个mac电路,并且,其为说明执行fir运算时的动作的图。参照图11,mac单元110包括8个mac电路111及算术部116。8个mac电路分别包括乘法器112及累积器115,并使两个mac输出相乘,并累积相乘的值。算术部116包括多个加算器,并且,可将所有的从8个mac电路111被输出的值和起来。假设奇数次mac输入(min1,min3,...min15)为fir过滤器的输入,偶数次mac输入(min2,min4,...min16)为fir过滤器的系数时,mac部110可同时处理8个输入。因此,当32阀门(tap)为fir过滤器时,如果mac部(110)动作4周期,可获得其结果。如上所述,算数部116可根据从控制部160传达的算术控制信号(acs),如图变更所执行的运算。算数部116的构成可根据算术控制信号(acs)变更为适合用于fft运算,或者,变更为适合用于fir运算,可通过组合加算器与开关可实现。对于对此的具体构成的说明,予以省略。参照图12,储存器130可包括第1至第16库。第1至第8库可储存fir输入(in(1)~in(32)),第9至第16库可储存fir系数(c(1)~c(8))。储存器130在第一周期可输出in(1)至in(8)与c(1)至c(8)。in(1)至in(8)可由阅读映射器140映射于min1,min3,...min15,c(1)至c(8)映射于min2,min4,...min16。在第二周期,储存器(130)可输出in(9)至in(16)与c(1)至c(8)。由阅读映射器140,in(9)至n(16)可由min1,min3,...min15被映射,c(1)至c(8)可由min2,min4,...min16被映射。因为以后的动作方式与其之前的方式相同,予以省略。因为系数(c(1)~c(8))连续被输出,可代替库,使用寄存器实现。在此情况下,可减少使用于储存器130的库的个数。图13是示出将地址生成部120实现为状态机的例子。因为阅读映射值(rmv)与传达至第9至第16库的地址属于常数,为了便利于说明,未表示在附图上。并且,在图中仅表示了从第一库传达至第8库的地址的生成。地址生成部120包括计数器1301、乘法器1302、第1至第8(1311,1312,...1318)。计数器1301输出从0开始的每增加1的整数。乘法器1302可在计数器的输出乘以16。加算器(1311~1318)可在乘法器1302的输出增加0至7。加算器(1311~1318)的输出可传达至第1库至第8库。图14是示出在图11中所表现的mac单元110的变形实施例的图。参照图14,mac单元110包括八个mac电路111及算术单元116。与图11不同,各个8个mac电路111仅包括乘法器112。此外,算术部116除了多个加法器113以外,还包括累积器115。累积器115具备加法器113与寄存器114。同样,当将位于mac电路的累积器115移动至算数部116时,累积器115的个数可减少。如上所示,本发明虽然已参照有限的实施例和附图进行了说明,但是本发明并不局限于所述实施例,在本发明所属领域中具备通常知识的人均可以从此记载中进行各种修改和变形。例如,在本实施例中,即使例示性地示出了利用8mac的fft运算,从业者可将8mac充分利用于16mac或者6mac以上的mac。图15是示出根据一个实施例的fft运算装置的图。参照图15,fft运算装置具备乘法单元,地址生成单元120,储存器130,阅读映射器140,编写映射器150及控制部160。乘法单元110包括多个乘法电路111及算术单元116。算术单元116针对多个乘法电路111输出的多个输出,执行和及差中的至少一个运算。算术部116输出由至少一个运算结果获得的多个乘法单元输出(mout1~moutc,其中,c为整数)。地址生成单元120通过生成阅读地址组(rag),将其传达至储存器130。阅读地址组(rag)包括多个阅读地址。地址生成不120通过生成编写地址组(wag),将其传达至储存器130。编写地址组(wag)包括多个编写地址。地址生成单元通过生成阅读映射值(rmv)及编写映射值(wmv),将其分别传达至阅读映射器140及编写映射器150。例如,地址生成部120具备计数器122及查询表124。计数器122可输出根据时钟信号(ck)变更的值。例如,计数器122可输出根据时钟信号(ck)增加的整数值。查询表124在多个阅读地址组中,可根据从计数器122输出的值输出所选定的阅读地址组(rag),为此,查询表124可储存多个阅读地址组。此外,查询表124可根据在多个编写地址组中从计数器122被输出的值,输出所选定的编写地址组(wag)。为此,查询表124可储存多个编写地址组。编写地址组(wag)除了从查询表124输出外,可通过延迟阅读地址组(rag)取得编写地址组(wag)。查询表(124)根据在多个阅读映射值中,从计数器122被输出的值,输出所选定的映射值(rmv)。为此,查询表124可储存多个阅读映射值。查询表124在多个编写映射值中,根据从计数器122被输出的值,可输出所选定的映射值(wmv)。为此,查询表124可储存多个编写映射值。与图不同,地址生成部120可包括状态机(未图示)。状态机可根据时钟信号生成阅读地址组(rag)、编写地址组(wag)、阅读映射值(rmv)及编写映射值(wmv)。当地址生成部120具备状态机时,可省略查询表124或者计数器122。储存器130可具备多个库132。因此,储存器130可同时读或写多个数据。比如,当储存器130具备4个库132时,储存器可同时阅读或编写4个数据。当然,在此情况下,4个数据应位于相互不同的库132中。比如,储存器130可为双端口储存器。在此情况下,储存器130可同时执行编写动作与阅读动作。例如,当储存器130具备4个库132时,储存器130可同时阅读四个数据,并编写4个数据。当然,在此情况下,阅读的四个数据位于相不同的库112中,并且,编写的四个数据也应位于相互不同的库132中。多个库132储存多个阅读数据组。储存器130,在多个阅读数据组中,将与阅读地址组对应的阅读数据组(rdg)传达至乘法部110。阅读数据组(rdg)具备多个阅读数据。多个阅读数据分别可为复述、实数或者整数。多个阅读数据可从相互不同的库132被输出。当储存器130具备第一至第四库时,在多个阅读数据中,第一至第四阅读数据可从第一至第四库分别被输出。比如,第一至第四阅读数据可分别为第一至第四库的第一数据。多个阅读数据可位于相互不同的行中。比如,第一及第三阅读数据分别为第一及第三库的第五数据,第二及第四阅读数据分别可为第二及第四库的第六数据。多个库132储存多个编写数据组。储存器130将编写数据组储存于与编写地址组对应的位置。编写数据组包括多个编写数据。多个编写数据可分别为复数、实数或者整数。多个编写数据被储存于不同的库132中。当储存器130具备第一至第四库时,多个编写数据中,第一至第四编写数据可分别储存于第一至第四库中。多个编写数据可被储存于相同的行中。例如,第一至第四编写数据可分别储存于第一至第四库的第一个位置。多个编写数据可储存于相互不同的行中。例如,第一及第三编写数据可分别储存于第一及第三库的第五个位置,第二及第四数据可分别储存于第二及第四库的第六个位置。阅读映射器140可根据阅读映射值(rmv)将多个阅读数据映射于多个乘法单元输入(min1~minb,其中,b为整数)。编写映射器150可根据编写映射值(wmv)将多个乘法单元输出(mout1~moutc)映射为多个编写数据。控制部160在储存器130储存初期阅读数据组,并在查询表124储存多个阅读地址组之后,驱动地址生成部120。即使多个乘法电路111同时动作,控制部160将初期阅读数据组储存于所述储存器,使多个阅读数据在多个库132中,从不同的库被输出。如上所述,控制部160主要干预fft运算装置的进行动作的初期,而fft运算装置在执行运算时可完全不干涉,或者偶尔进行干涉。即,当执行运算时,主要由地址生成部120的动作可执行运算。因此,可减小控制部160的负担。例如,控制部160可为cpu。图16至24是示出在图15中所示的fft运算装置具备8个乘法电路,并执行16-点fft(16-pointfastfouriertransform)运算,例如,执行"radix2,decimationintime"运算时的动作的示意图。16-点fft运算具备4个阶段(stage),并且,在各阶段执行8个蝴蝶运算。16-点fft具备16个输入(x(1)~x(16))及16个输出(y(1)~y(16))。图17是示出蝴蝶运算的示意图。图17中的蝴蝶可被输入第1及第2蝴蝶输入(x1,x2)及旋转因子(twiddlefactor,w),并输出第1及第2蝴蝶输出(y1,y2)。图18是示出乘法部动作的示意图。参照图18,乘法部110可包括第一蝴蝶电路410及第二蝴蝶电路470。第一蝴蝶电路410可具备第1至第4乘法电路(420,430,440,450)及第1算数部460。并且,第一乘法电路420可输出使第1及第2乘法部输入(min1,min2)相乘的值。第二乘法电路430可输出使第5及第6乘法部输入(min5,min6)相乘的值。第4乘法电路450可输出使第7及第8乘法部输入(min7,min8)相乘的值。第1算术部460可输出第一至第四乘法部输出(mout1~mout4)。在第一乘法部输出(mout1)在第九乘法部输出(min9)加上第一乘法电路420的输出,并减去第二乘法电路430的输出的值。第二乘法部输出(mout2)属于在第九乘法部输入(min9)减去第一乘法电路420的输出,并加上第2乘法电路430的输出的值。第三乘法部输出(mout3)属于在第十乘法部输入(min10)加上第三乘法电路440的输出,并加上第4乘法电路450的输出的值。第四乘法部输出(mout4)属于在第十乘法部输入(min10)减去第三乘法电路440的输出,并减去第4乘法电路450的输出的值。为执行这种运算,第一算术部460可包括第一至第6合算部461~466。第1合算部(461)在第1乘法电路420的输出前去第二乘法电路430的输出。第2合算部(462)在第3乘法电路440的输出加上第四乘法电路450的输出。第3合算部(463)从第9乘法部输入(min9)减去第一合算部461的输出。第五合算部465可在第10乘法部的输入(min10)加上第二合算部462的输出。第六合算部466可在第10乘法部的输入(min10)减去第二合算部462的输出。第二蝴蝶电路470被输入第11至第20乘法部输入(min11~min20),并输出第5至第8乘法部输出(mout5~mout8)。因为第二蝴蝶电路470的构成与第一蝴蝶电路420相同,省略进行对于此的详细说明。为执行蝴蝶运算,图18中的蝴蝶电路410可将第一蝴蝶输入(x1)的实数(x1[r])及虚数(x1[i])分别输入于第九至第十乘法部的输入(min9,min10)。以如上所述的方法输入,第一蝴蝶输入(x2)的实数(x2[r]),可输入于第一及第五乘法部输入min3,min7。并且,旋转因子(w)的实数(w[r])可输入于第二及第八乘法部输入(min2,min8)。旋转因子(w)虚数(w[i])可输入于第四及第六乘法部输入(min2,min8)。以如上所述的方法输入,第一乘法部输出(mout1)属于第一蝴蝶输出(y1)的实数。第二乘法单元输出(mout2)属于第二蝴蝶输出(y2)的实数。第三乘法单元输出(mout3)属于第一蝴蝶输出(y1)的虚数。第四乘法单元输出(mout4)属于第二蝴蝶输出y2的虚数。参照图19,储存器130,包括第1至第6库510~560。例如,第1至第4库510~540作为双端口储存器,可同时进行4个输出与4个输入。例如,第5及第6库550~560作为单端口,可同时进行2个输出。第一至第四库510~540可输出分别与第一至第四蝴蝶输入地址(xa1~xa4)对应的第一至第四蝴蝶输入(x1~x4)。第一至第四库510~540可被输入与第一至第四蝴蝶输出地址(ya1~ya4)对应的第一至第四蝴蝶输出(y1~y4)。第五及第六库(550,560)可输出与第一及第二旋转因此地址(wa1,wa2)分别对应的第一及第二旋转因子(w1,w2)。第1至第4蝴蝶输入地址(xa1~xa4)及第1及第2旋转因子地址(wa1,wa2)与图15中的阅读地址组(rag)对应。即,阅读地址组(rag)作为多个阅读地址,包括第1至第4蝴蝶输入地址(xa1~xa4)及第1及第2旋转因子地址(wa1,wa2)。第1至第4蝴蝶输出地址(ya1~ya4)与图15中的编写地址组(wag)对应。即,编写数据组(wag)作为多个编写地址,包括第1至第4蝴蝶输出地址(ya1~ya4)。第1至第4蝴蝶输入(x1~x4)及第1及第2旋转因子(w1,w2)与图15中的阅读数据组(rdg)对应。即,阅读数据组(rdg)作为多个阅读数据,可包括第1至第4蝴蝶输入(x1~x4)及第1及第2旋转因子(w1,w2)。第1至第4蝴蝶输出(y1~y4)与图15中的编写数据组(wdg)对应。即,编写数据组(wdg)作为多个编写数据,包括第1至第4蝴蝶输出(y1~y4)。储存器130根据一定顺序,储存初期阅读数据组(x(1)~x(16),w(1)~w(8)),以防止以免fft运算中的多个库510~560之间的冲突。初期阅读数据组(x(1)~x(16),w(1)~w(8))为fft运算前储存于储存器(130)的值,例如,可由控制部160储存。在附图中,1/x(1)指在1号x(1)可被储存,5/w(1)表示在5号w(1)被储存。通常,16点fft(x(1)~x(16))依序(x(1),x(2),x(3),x(4),x(5),x(6),x(7),x(8),x(9),x(10),x(11),x(12),x(13),x(14),x(15),x(16))被储存,但在本实施例中,可根据一定顺序(x(1),x(2),x(3),x(4),x(7),x(8),x(5),x(6),x(11),x(12),x(9),x(10),x(13),x(14),x(15),x(16))被储存。例如,即使一定顺序是不依次的,但以行单位是依次的。即,w(1)及w(4)位于第1行,w(5)及w(8)位于第2行,w(9)及w(12)位于第3行,w(13)及w(16)位于第4行。一定顺序可通过预先模拟取得,以免发生fft运算中的库510~540之间发生冲突。其中,库510~540之间发生冲突指在第1至第4蝴蝶输入(x1~x4)中,两个以上的蝴蝶输入同时在一个库被阅读。因为一个库仅可同时输出1个蝴蝶输入,当发生两个以上的蝴蝶输入需要在一个库被阅读的情况时,不能进行正常的动作。模拟程序可用于程序编译过程。例如,编译器通过核实各库之间的是否有发生冲突,如果发生冲突了,可通过反复进行改变初期fft输入(x(1)~x(16))中的部分输入位置的过程,决定一定顺序。通常,八个旋转因子(w(1)~w(8))依序(w(1),w(2),w(3),w(4),w(5),w(6),w(7),w(8))被储存,但在本实施例中,可根据一定顺序(w(1),w(2),w(4),w(3),w(6),w(5),w(7),w(8))被储存。例如,即使一定顺序是不依次的,但以行单位是依次的。即,w(1)及w(2)位于第1行,w(3)及w(4)位于第2行,w(5)及w(6)位于第3行,w(7)及w(8)位于第4行。一定顺序可通过预先模拟取得,以免发生fft运算中的库550~560之间发生冲突。参照图20,地址生成器120的查询表124包括蝴蝶查询表610、旋转因子查询表620、阅读映射值查询表630,编写映射值查询表640及寄存器650。例如,控制单元160输入需填于蝴蝶查询表610,旋转因素查询表620,阅读映射值查询表630,编写映射值查询表640的值后,驱动计数器122。蝴蝶查询表610可输出对应于计数器122输出值的多个蝴蝶输入地址(xa1~xa4)。寄存器650将多个蝴蝶输入地址xa1~xa4输出为延迟至一个以上的时钟周期的多个蝴蝶输出地址(ya1~ya4)。由于寄存器650的延迟,多个蝴蝶输入(x1~x4)从储存器130被输出后,作为多个蝴蝶输出(y1~y4),到输入至储存器130所需要的时间对应。即使在图15中未明确地示出,多个蝴蝶输入(x1~x4)从储存器130被输出后,作为多个蝴蝶输出(y1~y4),直到被输入于多个储存器(130)需要一个以上的时钟周期。多个蝴蝶输出地址(ya1~ya4)通过只用延迟多个蝴蝶输入地址(xa1~xa4)的值,多个蝴蝶输出(y1~y4)储存在储存器130内的多个蝴蝶输入x1~x4所在的位置。旋转因子查询表620可输出与计数器122的输出值对应的一个以上的旋转因子地址(wa1,wa2)。阅读映射值查询表630可输出与计数器的输出值对应的阅读映射值(rmv)。编写映射值查询表640可输出与计数器的输出值对应的编写映射值(wmv)。图21是示出储存于蝴蝶查询表610的值的图。参照图21,在第一周期,蝴蝶查询表610作为多个蝴蝶输入地址(xa1~xa4)可输出1,2,3,4。因此,储存器130可将位于1,2,3,4号的x(1),x(2),x(3),x(4)作为多个蝴蝶输入(x1~x4)进行输出。因为多个蝴蝶输入地址(xa1~xa4)还使用为多个蝴蝶输出地址(ya1~ya4),多个蝴蝶输出(y1~y4)可储存于储存器的相同位置,即1,2,3,4号。在第二周期,蝴蝶查询表610作为多个蝴蝶输入地址(xa1~xa4)可输出7,8,9,10。因此,储存器130可将位于7,8,9,10号的x(7),x(8),x(5),x(6)作为蝴蝶输出(x1~x4)进行输出。因为多个蝴蝶输入地址(xa1~xa4)还使用为多个蝴蝶输出地址(ya1~ya4),多个蝴蝶输出(y1~y4)储存于储存器的相同位置,即7,8,9,10号。以如上所述的方式,在第三周期,蝴蝶查询表610可输出13,14,15,16,储存器130输出x(11),x(12),x(9),x(10)。在第四周期,蝴蝶查询表610可输出19,20,21,22,储存器130可输出x(13),x(14),x(15),x(16)。因为以后的动作方式与其之前的方式相同,予以省略。图22是指储存于旋转因子查询表620的值的图。参照图22,在第1至第四周期,旋转因子查询表620作为一个以上的蝴蝶输入地址(wa1,wa2),可输出5,na。其中,na表示没有输出值。储存器130将位于五号的w(1)作为一个以上的旋转因子(w1)进行输出,在第五周期,旋转因子查询表620作为一个以上的蝴蝶输入地址wa1,wa2,输出5,18。储存器130将位于五号,18号的w(1),w(5)作为一个以上的旋转因子(w1,w2)进行输出。其之后的动作,由于与之前的方式相同,为便于说明,进行省略。图23是示出阅读映射器140的动作的示意图。参照图23,在第1周期,阅读映射器140可将第二蝴蝶输入(x2)的实数(x2[r])映射于第一乘法部输入(min1),将第1旋转因子(w1)的实数(w1[r])映射于第二乘法部输入(min2),将第2旋转因子(x2)的虚数(x2[i])映射于第三乘法部输入(min3),将第1旋转因子(x2)的虚数(w2[i])映射于第4乘法部输入(min4)。以上述方式,可将x2[r],w1[i],x2[i],w1[r],x1[r],x1[i],x4[r],w1[r],x4[i],w1[i],x4[r],w1[i],x4[i],w1[r],x3[r],x3[i]分别映射于第五至第20乘法部输入(min5~min20)。在第二周期,阅读映射器140可将x4[r],w1[r],x4[i],w1[i],x4[r],w1[i],x4[i],w1[r],x3[r],x3[i],x2[r],w1[r],x2[i],w1[i],x2[r],w1[i],x2[i],w1[r],x1[r],x1[i]分别映射于第一至第20乘法部输入(min1~min20)。因为以后的动作方式与其之前的方式相同,予以省略。此外,在相同的行中,可变更数据之间的储存位置,并且,可通过使变更的行的变更规则变得有规律,可降低映射器的复杂度。此外,在映射信息中,针对相同行内的数据之间的位置变更的地址变更内容可合并于旋转因子查询表620。此过程的执行与内容可根据预先的模拟实验决定并获得。图24是示出映射器150的动作的示意图。参照图24,在第1周期,映射器150将第1乘法部输出(mout1)映射于第1蝴蝶输出(y1)的实数值(y1[r]),并且,可将第二乘法部输出(mout2)映射于第1蝴蝶输出(y2)的实数值(y2[r]),将第三乘法部输出(mout3)映射于第1蝴蝶输出(y1)的虚数值(y1[i]),将第四乘法部输出(mout4)映射于第2蝴蝶输出(y2)的虚数值(y2[i])。此外,可将第5至第8乘法部输出(mout5~mout8)分别映射于y3[r],y4[r],y3[i],y4[i]。在第2周期,可将第1至第8乘法部输出(mout1~mout8)映射于y3[r],y4[r],y3[i],y4[i],y1[r],y2[r],y1[i],y2[i]。下面的动作,因与之前方式相同,予以省略。如上所示,本发明虽然已参照有限的实施例和附图进行了说明,但是本发明并不局限于所述实施例,在本发明所属领域中具备通常知识的人均可以从此记载中进行各种修改和变形。例如,在本实施例中,即使通过例子示例性地表达了利用9乘法电路的fft运算,但从业者可将适用于16乘法电路或者16乘法以上的乘法电路。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1