国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      數(shù)字信號處理器的制作方法

      文檔序號:6754144閱讀:362來源:國知局
      專利名稱:數(shù)字信號處理器的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及一種用于數(shù)字濾波器等中的數(shù)字信號處理器,其中必須對工作隨機(jī)存取存儲器(即,工作RAM或縮寫為WorkRAM)進(jìn)行初始化。
      本申請要求日本專利申請No.2003-385234、2004-240705、2004-297983和2004-323735的優(yōu)先權(quán),其內(nèi)容在此一并參考。
      背景技術(shù)
      在傳統(tǒng)上,已開發(fā)了數(shù)字信號處理器,以根據(jù)以下規(guī)定的方法進(jìn)行由于多處理的工作RAM的初始化(a)共同地對工作RAM的所有區(qū)域進(jìn)行初始化。
      (b)只對用于在將來存儲數(shù)據(jù)以便進(jìn)行尚未執(zhí)行的處理的工作RAM的選定區(qū)域進(jìn)行初始化。
      (c)針對能夠同時被初始化并由此被分組的每一組數(shù)據(jù)來設(shè)置工作RAM,因此在工作RAM的每一個單元中進(jìn)行初始化。
      圖7示出了作為數(shù)字信號處理器的應(yīng)用示例的三階有限沖擊響應(yīng)(FIR)濾波器,即,通過數(shù)字濾波器Rg11、Rg12和Rg13順序地發(fā)送輸入數(shù)據(jù)Din的數(shù)字濾波器3。這里,通過在規(guī)定時間周期內(nèi)將輸入數(shù)據(jù)Din保持為“0”來進(jìn)行濾波計算,其中對于到數(shù)字濾波器3的輸入信號,所述規(guī)定時間周期比采樣周期T長三倍,從而對數(shù)字濾波器3的輸出信號進(jìn)行初始化。假設(shè)將用于將輸入數(shù)據(jù)Din發(fā)送到輸入寄存器Rg11的第一時間、將數(shù)據(jù)從輸入寄存器Rg11發(fā)送到第一延遲寄存器Rg12的第二時間和將數(shù)據(jù)從第一延遲寄存器Rg12發(fā)送到第二延遲寄存器Rg13的第三時間均設(shè)為1ms(毫秒),其中可以在3ms內(nèi)分別初始化存儲在輸入寄存器Rg11、第一延遲寄存器Rg12和第二延遲寄存器Rg13中的數(shù)據(jù)以及數(shù)字濾波器3的輸出信號。
      然而,對于工作RAM的所有區(qū)域上的復(fù)雜初始化,存在的問題在于會出乎意料地初始化不應(yīng)當(dāng)初始化的規(guī)定數(shù)據(jù),并且會毫無必要地在工作RAM的初始化的一定時間周期內(nèi),停止進(jìn)程中必須運(yùn)行的處理。
      對于工作RAM的未使用區(qū)域上的選擇性初始化,響應(yīng)由數(shù)字信號處理器所執(zhí)行的程序的內(nèi)容和由數(shù)字信號處理器執(zhí)行的程序的數(shù)目,改變了進(jìn)行初始化的區(qū)域的數(shù)目。因此,工程師很難直接確定在數(shù)字信號處理器中指定進(jìn)行初始化的全部區(qū)域的寄存器的數(shù)目。此外,這增大了執(zhí)行指定進(jìn)行初始化的區(qū)域數(shù)目的處理的CPU的負(fù)擔(dān)。
      對于圖7所示的FIR數(shù)字濾波器的初始化,需要相當(dāng)長的時間來完成初始化,特別是在高階濾波器的情況下和FIR數(shù)字濾波器的數(shù)據(jù)更新頻率較低的情況下。對于IIR(無限沖擊響應(yīng))數(shù)字濾波器的初始化,由于其中存在反饋回路,即使當(dāng)將“0”持續(xù)地施加到其上時,也不能對其輸出數(shù)據(jù)進(jìn)行初始化。
      對于傳統(tǒng)上公知的存儲器的高速初始化,日本專利申請No.昭58-34490公開了將用于清除特定區(qū)域中存儲器內(nèi)容的規(guī)定命令(有關(guān)部分清除)用于顯示內(nèi)容更新(或顯示刷新)中的顯示存儲器的初始化,其中對于其顯示內(nèi)容改變的特定區(qū)域選擇性地進(jìn)行初始化,從而在操作期間只在特定區(qū)域進(jìn)行必要的初始化。
      例如日本專利申請No.平07-312081、平03-105640和平04-64155的其它文獻(xiàn)公開了存儲器的高速初始化,其中為了在設(shè)備的啟動模式中提高存儲器的初始化速度,對地址進(jìn)行屏蔽,以便提取進(jìn)行初始化的地址組,并且減小了RAM的外圍電路的尺寸,由此減小了初始化所需的時間。

      發(fā)明內(nèi)容
      本發(fā)明的目的是提供一種數(shù)字信號處理器,能夠?qū)ぷ鱎AM的特定區(qū)域選擇性地進(jìn)行初始化,而無需增大外圍電路的整個規(guī)模,無需進(jìn)行復(fù)雜的控制,也無需增大用于初始化的處理時間。
      在本發(fā)明的第一方面中,數(shù)字信號處理器包括數(shù)據(jù)存儲器,能夠以可重寫的方式存儲多個數(shù)據(jù);運(yùn)算電路,用于對從數(shù)據(jù)存儲器順序讀取的數(shù)據(jù)進(jìn)行計算;寫電路,用于強(qiáng)制將“0”寫入到數(shù)據(jù)存儲器的規(guī)定地址中;以及邏輯電路,用于與施加到數(shù)據(jù)存儲器的地址信號同步地驅(qū)動寫電路。
      在本發(fā)明的第二方面,數(shù)字信號處理器包括程序存儲器,用于存儲程序;運(yùn)算裝置,用于根據(jù)程序進(jìn)行計算;以及數(shù)據(jù)存儲器,用于臨時存儲計算中使用的數(shù)據(jù),由程序?qū)⑺鰯?shù)據(jù)存儲器分為由讀/寫地址指定的多個子區(qū)域。數(shù)字信號處理器還包括寄存器,用于存儲指定進(jìn)行初始化的子區(qū)域的數(shù)據(jù);地址數(shù)據(jù)產(chǎn)生器,用于根據(jù)寄存器的數(shù)據(jù),產(chǎn)生指定進(jìn)行初始化的數(shù)據(jù)存儲器的地址的地址數(shù)據(jù);非存取(non-access)檢測器,用于檢測其中程序不需要存取數(shù)據(jù)存儲器的非存取事件;以及寫電路,用于當(dāng)檢測到非存取事件時,將地址數(shù)據(jù)提供給數(shù)據(jù)存儲器,并且用于將“0”寫入到數(shù)據(jù)存儲器的指定地址。這里,根據(jù)基于寄存器的數(shù)據(jù)確定的規(guī)定子區(qū)域的頂端地址來建立地址數(shù)據(jù),并且當(dāng)檢測到非存取事件時,增加計數(shù)值。
      在本發(fā)明的第三方面,數(shù)字信號處理器包括程序存儲器,用于存儲程序;運(yùn)算裝置,用于根據(jù)程序進(jìn)行計算;數(shù)據(jù)存儲器,用于臨時存儲計算中使用的數(shù)據(jù),由程序?qū)⑺鰯?shù)據(jù)存儲器分為多個子區(qū)域,由讀/寫操作中程序中包括的相對地址來指定所述多個子區(qū)域;地址計數(shù)器;以及絕對地址產(chǎn)生裝置,用于根據(jù)相對地址和地址計數(shù)器的輸出來產(chǎn)生用于數(shù)據(jù)存儲器的絕對地址。數(shù)字信號處理器還包括寄存器,用于存儲指定進(jìn)行初始化的子區(qū)域的數(shù)據(jù);地址數(shù)據(jù)產(chǎn)生器,用于根據(jù)寄存器的數(shù)據(jù),產(chǎn)生指定進(jìn)行初始化的數(shù)據(jù)存儲器的地址的地址數(shù)據(jù);非存取檢測器,用于檢測其中程序不需要存取數(shù)據(jù)存儲器的非存取事件;以及寫電路,用于當(dāng)檢測到非存取事件時,將絕對地址提供給數(shù)據(jù)存儲器,并且用于將“0”寫入到數(shù)據(jù)存儲器的指定地址,其中響應(yīng)地址計數(shù)器的輸出的改變,強(qiáng)制用“0”取代地址數(shù)據(jù)。
      在上述中,可以使用第一和第二寄存器,其中每一個均存儲指定要進(jìn)行初始化的規(guī)定子區(qū)域的相同數(shù)據(jù)。這里,根據(jù)第一寄存器的數(shù)據(jù)來產(chǎn)生指定進(jìn)行初始化的數(shù)據(jù)存儲器的相對地址。在子區(qū)域的初始化完成時,清除第一寄存器的對應(yīng)數(shù)據(jù)。響應(yīng)地址計數(shù)器的輸出的變化,對由第二寄存器的數(shù)據(jù)指定的相對地址“0”進(jìn)行初始化。
      結(jié)果,數(shù)字信號處理器能夠通過簡單的電路配置來初始化數(shù)據(jù)存儲器(例如,工作RAM)的特定地址,而無需外部CPU的干預(yù)。


      參考以下的附圖,將更詳細(xì)地描述本發(fā)明的這些及其它目的、方案和實(shí)施例,其中圖1是示出了根據(jù)本發(fā)明第一實(shí)施例的數(shù)字信號處理器的整體結(jié)構(gòu)的方框圖;圖2是示出了由圖1中的數(shù)字信號處理器實(shí)現(xiàn)的信號處理系統(tǒng)的簡化方框圖;圖3A示出了結(jié)合步驟“0”到“15”存儲的指令的列表;圖3B示出了處于存儲器初始化模式的、圖1所示的工作RAM的操作狀態(tài);圖4A示出了工作RAM的存儲器映射;圖4B示出了圖1所示的系數(shù)存儲器的存儲器映射;圖5示出了有關(guān)工作RAM中的數(shù)字濾波器的區(qū)域的存儲器初始化的開啟/關(guān)閉狀態(tài);圖6是關(guān)于由圖1所示邏輯電路實(shí)現(xiàn)的初始化控制的真值表;圖7是示出了三階FIR數(shù)字濾波器的示例的電路圖;圖8是示出了包括根據(jù)本發(fā)明第二實(shí)施例的數(shù)字信號處理器的樂聲信號產(chǎn)生電路的結(jié)構(gòu)的方框圖;圖9是示出了采用了圖8所示的樂聲信號產(chǎn)生電路的便攜式電話的結(jié)構(gòu)的方框圖;圖10圖解地示出了關(guān)于圖8所示的工作RAM的子區(qū)域的結(jié)構(gòu);圖11圖解地示出了與工作RAM的絕對地址相關(guān)的相對地址關(guān)于時間的變化,以便解釋由圖8所示的數(shù)字信號處理器中采用的初始化電路進(jìn)行的初始化處理;
      圖12是示出了初始化處理的細(xì)節(jié)的流程圖;圖13是示出了包括根據(jù)本發(fā)明第三實(shí)施例的數(shù)字信號處理器的樂聲信號產(chǎn)生電路的結(jié)構(gòu)的方框圖;圖14是示出了由圖13所示的初始化電路進(jìn)行的初始化處理的流程圖;以及圖15圖解地示出了與工作RAM的絕對地址相關(guān)的相對地址關(guān)于時間的變化,以便解釋初始化處理。
      具體實(shí)施例方式
      利用參考附圖的示例,將更詳細(xì)地描述本發(fā)明。
      1.第一實(shí)施例圖1是示出了根據(jù)本發(fā)明第一實(shí)施例的數(shù)字信號處理器5的整體結(jié)構(gòu)的方框圖;以及圖2是示出了由數(shù)字信號處理器5實(shí)現(xiàn)的信號處理系統(tǒng)2的簡化方框圖。信號處理系統(tǒng)2包括數(shù)字濾波器3a、3b和3c,每一個均具有不同的特性;以及混合器(或加法器)4。進(jìn)行兩個系列的進(jìn)程,即,響應(yīng)輸入數(shù)據(jù)Pin 1來產(chǎn)生輸出數(shù)據(jù)Pout的進(jìn)程A和響應(yīng)輸入數(shù)據(jù)Pin 2來產(chǎn)生輸出數(shù)據(jù)Pout的進(jìn)程B。
      接下來,將描述信號處理系統(tǒng)2的處理的細(xì)節(jié)。在進(jìn)程A中,數(shù)字濾波器3c在數(shù)字濾波器3a的操作之后進(jìn)行操作。在進(jìn)程B中,數(shù)字濾波器3c在數(shù)字濾波器3b的操作之后進(jìn)行操作。為了同時進(jìn)行進(jìn)程A和進(jìn)程B,將數(shù)字濾波器3a的操作結(jié)果和數(shù)字濾波器3b的操作結(jié)果都提供到混合器5,其中將這二者混合并進(jìn)行濾波器3c的操作。
      每一個數(shù)字濾波器3a、3b和3c實(shí)質(zhì)上具有圖7所示的三階FIR數(shù)字濾波器3的相同結(jié)構(gòu)。由圖1所示的數(shù)字信號處理器5來實(shí)現(xiàn)數(shù)字濾波器3a、3b和3c的功能。即,數(shù)字信號處理器5對于以時分方式進(jìn)行的進(jìn)程,利用系數(shù)和輸入到其中的數(shù)據(jù)來進(jìn)行多次(multipletimes)計算。
      在圖1中,數(shù)字信號處理器5包括信號處理塊6,其包括乘法器11、加法器12、系數(shù)存儲器13、地址計數(shù)器14、指令存儲器15、工作RAM(即,WorkRAM)16、門電路17a、17b和17c,以及邏輯電路18。將工作RAM的字長度設(shè)為九個字。
      地址計數(shù)器14遞增用于指令存儲器15的地址值,其中可以在“0”到“15”的范圍內(nèi)逐一地順序增大地址值。指令存儲器15將指定被存取區(qū)域的地址輸出到工作RAM 16的輸入端子A。為了將數(shù)據(jù)寫入到工作RAM 16,通過或門17b將WorkRAM寫指令輸出到工作RAM 16的輸入端子WE(即,寫使能端子)。這里,將被寫入到工作RAM 16的數(shù)據(jù)Din經(jīng)過與門17a寫入到工作RAM 16的輸入端子Im。為了從工作RAM 16讀取數(shù)據(jù)并將其提供到乘法器11,指令存儲器15將WorkRAM讀指令輸出到工作RAM 16的輸入端子(即,寫使能端子)RE(未示出)。將從工作RAM 16的輸出端子Om輸出的數(shù)據(jù)提供到乘法器11的輸入端子Xin。
      邏輯電路18根據(jù)其進(jìn)行的邏輯操作,接收來自指令存儲器15的濾波器選擇信號和來自外部CPU(未示出)的存儲器初始化使能信號。為了強(qiáng)制初始化工作RAM 16的特定區(qū)域,邏輯電路18將存儲器初始化信號FCin輸出到公共相連的門電路17a、17b和17c的輸入端子。
      系數(shù)存儲器13根據(jù)從指令存儲器15輸出并提供給系數(shù)存儲器13的系數(shù)存儲器地址,將用于處理的系統(tǒng)輸出到乘法器11的輸入端子Yin。乘法器11將從工作RAM 16輸出并輸入到乘法器11的輸入端子Xin的數(shù)據(jù)與從系數(shù)存儲器13讀取并提供到其輸入端子Yin的系數(shù)相乘。然后,從乘法器11的輸出端子MUout輸出由乘法器11產(chǎn)生的乘法結(jié)果,并將其提供到加法器12的輸入端子Ain。加法器12對其輸入端子Ain的“當(dāng)前”輸入數(shù)據(jù)和在當(dāng)前時刻的一個時鐘周期之前產(chǎn)生的相加結(jié)果求和,由此產(chǎn)生了輸出信號Dout。
      接下來,將描述信號處理系統(tǒng)2的處理細(xì)節(jié)。如圖2所示,信號處理系統(tǒng)2包括數(shù)字濾波器3a、3b和3c,由進(jìn)行多次計算的數(shù)字信號處理器5來實(shí)現(xiàn)其功能。之后,將詳細(xì)描述實(shí)現(xiàn)了信號處理系統(tǒng)2的功能的數(shù)字信號處理器5的全部操作。
      首先,將對數(shù)字信號處理器5加電以便完全初始化工作RAM 16的區(qū)域時,邏輯電路18將被設(shè)為“0”的存儲器初始化信號FCin提供給門電路17a、17b和17c的“公共”輸入端子,由此,打開了所有的門電路17a、17b和17c。因此,通過門電路17a,在工作RAM 16的輸入端子Im處,直接將輸入數(shù)據(jù)Din提供給工作RAM 16,并且通過門電路17b,將WorkRAM寫指令提供在寫使能端子WE處;還直接從其輸出端子Om輸出數(shù)據(jù)。
      圖3A示出了結(jié)合步驟“0”到“15”,在指令存儲器15中描述的指令的列表,其中符號“NOP”表示“無操作”。圖3B示出了隨后將要描述的處于存儲器初始化模式的工作RAM 16的操作狀態(tài)。
      圖4A示出了工作RAM 16的存儲器映射,圖4B示出了系數(shù)存儲器13的存儲器映射。這里,在圖4A所示的工作RAM 16的九個地址中的每一個處(范圍從“0”到“8”)寫入并讀取數(shù)據(jù)Dwx(其中w=1,2,3;且x=1,2,3)。具體地,圖7所示的數(shù)字濾波器3的前述寄存器Rg11到Rg13分別與工作RAM 16的地址相連,其中輸入寄存器Rg11對應(yīng)于地址“3(w-1)”(其中w=1,2,3);第一延遲寄存器Rg12對應(yīng)于地址“3(w-1)+1”;以及第二延遲寄存器Rg13對應(yīng)于地址“3(w-1)+2”。數(shù)據(jù)Cwx(其中w=1,2,3;且x=1,2,3)分別指定了數(shù)字濾波器3a、3b和3c的系數(shù)。
      利用下標(biāo)“w”,如下定義前述數(shù)據(jù)和系數(shù)數(shù)據(jù)D1x(其中x=1,2,3)用于數(shù)字濾波器3a;數(shù)據(jù)D2x用于數(shù)字濾波器3b;以及數(shù)據(jù)D3x用于數(shù)字濾波器3c。類似地,系數(shù)C1x(其中x=1,2,3)用于數(shù)字濾波器3a;系數(shù)C2x用于數(shù)字濾波器3b;以及系數(shù)C3x用于數(shù)字濾波器3c。
      此外,利用下標(biāo)“x”定義圖4所示的工作RAM 16的地址,并將其分類為分別用于數(shù)字濾波器3a、3b和3c的數(shù)據(jù)寄存器。
      接下來,將描述數(shù)字濾波器3a的所有操作。
      數(shù)字信號濾波器5根據(jù)存儲在指令存儲器15并根據(jù)從地址計數(shù)器14的地址輸出從指令存儲器15讀取的指令進(jìn)行處理。這里,利用前述數(shù)據(jù)和系數(shù)能夠充分地進(jìn)行處理,響應(yīng)由讀指令定義的地址,分別從關(guān)于工作RAM 16的存儲器映射(見圖4A)和系數(shù)存儲器13(見圖4B)讀取并向其寫入所述數(shù)據(jù)和系數(shù)。例如,圖3A和3B中的步驟1描述了進(jìn)程“D11輸入”,其中將輸入數(shù)據(jù)作為“D11”寫入到工作RAM 16。在該進(jìn)程中,在由指令存儲器15存取的工作RAM 16中,指定與D11相對應(yīng)的特定地址。將與D11相對應(yīng)的指定地址從關(guān)于工作RAM16的存儲器映射提供到工作RAM 16的地址端子A,從而指定圖4A所示的地址0。同時,指令存儲器15發(fā)布WorkRAM寫指令,將其提供到工作RAM 16的寫使能端子WE,由此將輸入數(shù)據(jù)Din寫入到工作RAM 16的地址0的區(qū)域,因此將其存儲為數(shù)據(jù)D11。
      圖3A和3B所示的步驟3描述了進(jìn)程“濾波器3a計算(D11×C11)”,其中指定數(shù)字濾波器3a進(jìn)行D11×C11的計算。在該進(jìn)程中,指令存儲器15輸出選擇數(shù)字濾波器3a的濾波器選擇信號。
      另外,指令存儲器15指定了與D11相對應(yīng)的規(guī)定地址,作為工作RAM 16的“已存取”地址,因此將已指定的地址施加到工作RAM 16的地址端子A,以指定地址0。同時,指令存儲器15發(fā)布WorkRAM讀指令,將其提供到工作RAM 16的讀使能端子RE(未示出),從而從工作RAM 16的地址0的區(qū)域讀取數(shù)據(jù)D11。此外,將與C11相對應(yīng)的其它地址指定為由指令存儲器15進(jìn)行存取的“存儲器系數(shù)地址”。將存儲器系數(shù)地址提供到系數(shù)存儲器13,作為從圖4B所示的系數(shù)存儲器映射讀取的地址0,以便從系數(shù)存儲器13的地址0讀取系數(shù)C11。將數(shù)據(jù)D11和系數(shù)C11提供到乘法器11,因此實(shí)現(xiàn)了數(shù)字濾波器3a的計算,即,D11×C11的乘法。
      對于從地址計數(shù)器14輸出的地址(0,1,2,3,...,14和15)進(jìn)行類似的計算,其中在每一個步驟中遞增地址,然后恢復(fù)到“0”,從而重復(fù)上述指令。這里,與數(shù)字信號處理器5的輸入信號的采樣周期同步地進(jìn)行其中地址從“0”順序地變?yōu)椤?5”的一個周期計算。
      為了產(chǎn)生圖7所示的三階FIR數(shù)字濾波器的輸出信號Dout,必須根據(jù)以下操作,利用D1x和C1x(其中x=1,2,3)來進(jìn)行計算Dout=D11×C11+D12×C12+D13×C13因此,外部CPU(未示出)必須具有控制數(shù)字信號處理器5的能力,從而當(dāng)建立數(shù)據(jù)D1x(其中x=1,2,3)之間的關(guān)系時,能夠在三個周期內(nèi)進(jìn)行前述計算。
      即,在計算的第二周期中,將初始存儲在地址1的數(shù)據(jù)傳送到地址2;將初始存儲在地址0的數(shù)據(jù)傳送到地址1;以及在地址0寫入數(shù)字濾波器3a的輸入數(shù)據(jù)Din。在計算的第三周期中,將在計算的第二周期中存儲在地址1的數(shù)據(jù)傳送到地址1;將在計算的第二周期中存儲在地址0的數(shù)據(jù)傳送到地址0;以及在地址0寫入當(dāng)前輸入到數(shù)字濾波器3a的輸入數(shù)據(jù)Din。
      如上所述,在計算的第三周期,將當(dāng)前輸入到數(shù)字濾波器3a的輸入數(shù)據(jù)Din寫入到地址0;將在當(dāng)前時刻的一個采樣周期T之前預(yù)先存儲在地址0的數(shù)據(jù)寫入到地址1;以及將在當(dāng)前時刻的兩個采樣周期“2T”之前預(yù)先存儲在地址0的數(shù)據(jù)寫入到地址2。因此,對于分別存儲在地址0、地址1和地址2的數(shù)據(jù)D1x(其中x=1,2,3),外部CPU在工作RAM 16中能夠?qū)崿F(xiàn)移位寄存器功能。
      在三個周期的計算完成之后,可靠地將必要數(shù)據(jù)寫入到初始存儲不確定數(shù)據(jù)或之前數(shù)據(jù)的地址1和地址2。然后,進(jìn)行前述等式的計算,以產(chǎn)生輸出數(shù)據(jù)Dout。即,外部CPU通過進(jìn)行三個周期的計算,對于數(shù)據(jù)D1x(其中x=1,2,3),在工作RAM 16中實(shí)現(xiàn)了移位寄存器功能,因此可靠地實(shí)現(xiàn)了數(shù)字濾波器3a的功能。
      如上所述,設(shè)計數(shù)字濾波器5,以進(jìn)行多處理,這可能導(dǎo)致當(dāng)首先開始處理或當(dāng)通過改變數(shù)據(jù)來重新開始處理時,在工作RAM 16中仍然剩余了不確定數(shù)據(jù)或之前的數(shù)據(jù)。因此,有必要對數(shù)字信號處理器5進(jìn)行初始化。
      假設(shè)進(jìn)程A和進(jìn)程B彼此獨(dú)立進(jìn)行。在這種情況下,可以假定下列情況。
      (i)進(jìn)程A處于運(yùn)行中而進(jìn)程B停止的第一情況。
      (ii)進(jìn)程B處于運(yùn)行中而進(jìn)程A停止的第二情況。
      (iii)進(jìn)程A和進(jìn)程B都處于操作中的第三情況。
      (iv)進(jìn)程A和進(jìn)程B都停止的第四情況。
      按照本實(shí)施例,即使當(dāng)數(shù)字信號處理器5運(yùn)行到其中進(jìn)程B停止的第二情況中的第一個計算循環(huán)時,其也處理關(guān)于數(shù)字濾波器3b的指令(見圖3A和3B的步驟2,步驟6-8),而不是跳過。即,與其中規(guī)定的進(jìn)程處于運(yùn)行中還是停止的事件無關(guān),地址計數(shù)器14在每個步驟增加地址(地址從0-15順序變化),以便重復(fù)其中的指令。
      具體地,數(shù)字信號處理器5設(shè)置電路(圖1中未明確示出),該電路強(qiáng)制將乘法器11的輸入置為零,其中關(guān)于數(shù)據(jù)濾波器3b的計算不影響數(shù)字信號處理器5的操作結(jié)果,因此,數(shù)字信號處理器5進(jìn)行操作以顯然跳過數(shù)字濾波器3b的處理,因而可以顯然實(shí)現(xiàn)其中關(guān)于數(shù)字濾波器3b的進(jìn)程B停止的第二情況,所以,數(shù)字信號處理器5花費(fèi)了正常的處理時間,即使顯然停止了進(jìn)程B。
      圖5示出了在相對于工作RAM16中實(shí)現(xiàn)的數(shù)字濾波器3a,3b和3c區(qū)域的不同運(yùn)行條件下,存儲器初始化的開啟/關(guān)閉狀態(tài),其中表達(dá)式“停止→運(yùn)行”指示進(jìn)程從停止?fàn)顟B(tài)變?yōu)檫\(yùn)行狀態(tài),而表達(dá)式“運(yùn)行→停止”指示進(jìn)程從操作狀態(tài)變?yōu)橥V範(fàn)顟B(tài)。當(dāng)圖5中的“存儲器初始化”為“開”時,指令存儲器15向邏輯電路18提供設(shè)置為“1”存儲器初始化使能信號,以使存儲器初始化生效。
      例如,當(dāng)在進(jìn)程A運(yùn)行的處理中啟動進(jìn)程B時,有必要在工作RAM16中關(guān)于進(jìn)程B的區(qū)域中執(zhí)行初始化而不影響進(jìn)程A。具體地,圖5的列No.10指示了可以對數(shù)字濾波器3b的區(qū)域進(jìn)行初始化,而禁止對數(shù)字濾波器3a和3c進(jìn)行初始化。因此,對于數(shù)字信號處理器5,有必要僅對工作RAM16中的數(shù)字濾波器3b的區(qū)域進(jìn)行初始化。此外,當(dāng)進(jìn)程A或進(jìn)程B正在運(yùn)行時,不必對工作RAM16中的數(shù)字濾波器3c的區(qū)域進(jìn)行初始化。
      接下來,將給出關(guān)于操作的描述,其中邏輯電路18向門電路17a、17b,和17c輸出存儲器初始化信號FCin以便初始化工作RAM16的特定區(qū)域。
      圖6示出了用于邏輯電路18在初始化控制方面的真值表,其中符號“*”指定設(shè)置到每個列的任意值。為了在進(jìn)程A的進(jìn)度期間啟動進(jìn)程B,有必要在啟動進(jìn)程B之前初始化工作RAM16中的數(shù)字濾波器3b的區(qū)域。優(yōu)選地,將數(shù)字濾波器3b的初始化的定時設(shè)置在與進(jìn)程A無關(guān)的處理的時間周期內(nèi)。即,邏輯電路18輸出存儲器初始化信號FCin,以便在其中數(shù)字濾波器3b的處理開始處于停止而現(xiàn)在處于運(yùn)行中的時間周期內(nèi)(即步驟6-8,見圖3A和3B),初始化數(shù)字濾波器3b的區(qū)域。
      換句話說,如圖6所示,在與步驟6-8相關(guān)的時間周期內(nèi),其中指令存儲器15向邏輯電路18提供聲明數(shù)字濾波器3的處理現(xiàn)在處于運(yùn)行中的濾波器選擇信號“3b”,外部CPU向邏輯電路18輸出設(shè)置為“1”的存儲器初始化使能信號,由此邏輯電路18針對濾波器選擇信號和存儲器初始化使能信號執(zhí)行邏輯運(yùn)算。結(jié)果,邏輯電路18發(fā)送設(shè)置為“1”的關(guān)于數(shù)字濾波器3b的區(qū)域的存儲器初始化使能信號。此時,為了實(shí)現(xiàn)D2x×C2x(x=1,2,3)的計算,指令存儲器15輸出聲明數(shù)字濾波器3b的處理現(xiàn)在處于進(jìn)行中的濾波器選擇信號“3b”以及分別用于從工作RAM16的地址3、地址4和地址5中讀取數(shù)據(jù)D21、D22和D23的讀取指令。
      當(dāng)從邏輯電路18收到設(shè)置為“1”的存儲器初始化信號FCin時,門電路17a向工作RAM16的輸入端子輸出“0”;門電路17b向?qū)懯鼓芏俗覹E輸出“1”以便使工作RAM16上的寫操作生效;以及門電路17c向乘法器11的輸入端子Xin輸出“0”。附帶地,數(shù)字信號處理器5中不必包含門電路17c,而最好是當(dāng)工作RAM16被設(shè)計為不在寫模式下產(chǎn)生輸出數(shù)據(jù)“0”時,采用門電路17c。
      如圖5中No.10列所示,在前述的步驟6-8中(見圖3A和3B),門電路17a和17b進(jìn)行初始化,其中響應(yīng)從邏輯電路18輸出的存儲器初始化信號FCin,工作RAM16的地址3、地址4和地址5分別被強(qiáng)制寫入“0”。然后,數(shù)字信號處理器5從工作RAM16的地址3、地址4和地址5讀取數(shù)據(jù)D21、D22和D23(都指示“0”),以便將讀出的數(shù)據(jù)通過門電路17c提供給乘法器11的輸入端子Xin。因此,可以完全初始化與工作RAM16中的進(jìn)程B相關(guān)的規(guī)定區(qū)域,而不會影響進(jìn)程A。
      根據(jù)上述的本實(shí)施例,數(shù)字信號處理器5可以在應(yīng)當(dāng)進(jìn)行初始化的工作RAM16的選定區(qū)域上進(jìn)行初始化,而不會影響當(dāng)前正在其中進(jìn)行的全部處理并且不會增加其整個處理時間。
      設(shè)計本實(shí)施例的數(shù)字信號處理器5,以實(shí)現(xiàn)三階FIR數(shù)字濾波器的功能。當(dāng)然,本發(fā)明可適用于任何類型的數(shù)字濾波器,而與其階數(shù)無關(guān)。
      設(shè)計本實(shí)施例,以使在重新啟動初始停止的規(guī)定進(jìn)程之前,初始化工作RAM16的相應(yīng)區(qū)域。當(dāng)然,可以按照以下方式修改本實(shí)施例在規(guī)定進(jìn)程剛剛停止后,便進(jìn)行初始化以便準(zhǔn)備進(jìn)程的重啟。在這種情況下,數(shù)字信號處理器5可以跳過與指定的數(shù)字濾波器相關(guān)的規(guī)定步驟,顯然,在處理中停止該數(shù)字濾波器,直到工作RAM16的相應(yīng)區(qū)域被進(jìn)行初始化之后重啟了該進(jìn)程,因而可以減少總的處理時間。
      還可以按照以下方式來修改本實(shí)施例為了防止將不必要的數(shù)據(jù)作為每個處于停止?fàn)顟B(tài)的數(shù)字濾波器的濾波器處理的操作結(jié)果來輸出,自動地初始化工作RAM 16的相應(yīng)區(qū)域。
      2.第二實(shí)施例圖8是示出了樂聲信號產(chǎn)生電路(或樂聲產(chǎn)生器)G的結(jié)構(gòu)方框圖,該電路采用了依照本發(fā)明第二實(shí)施例的數(shù)字信號處理器100。圖9是示出了使用樂聲信號產(chǎn)生電路G的便攜式電話(例如,移動電話或蜂窩電話)的結(jié)構(gòu)的方框圖。
      在圖9中,參考號101表示在便攜電話中控制電路和設(shè)備的中央處理單元(即CPU),其中CPU 101進(jìn)行正常的通信和會話處理以及與游戲程序和類似程序相關(guān)的其它處理。參考號102表示存儲通信/會話處理程序、游戲程序、音樂再現(xiàn)處理程序等的只讀存儲器(即ROM)。參考號103表示非易失性隨機(jī)存取存儲器(即RAM),該存儲器臨時存儲在處理的執(zhí)行期間產(chǎn)生的各種數(shù)據(jù)。
      參考號104表示例如用于輸入電話號碼的10鍵單元和各種功能鍵。參考號105表示例如液晶顯示器的顯示設(shè)備。參考號106表示具有天線107的通信單元,該單元由傳輸數(shù)據(jù)來調(diào)制載波以便通過天線107將其發(fā)送出去。另外,通信單元106解調(diào)通過天線107接收的輸入信號,以便將解調(diào)的輸入信號輸出到CPU 101和/或聲音處理單元108。聲音處理單元將與麥克風(fēng)109拾取的聲音相對應(yīng)的音頻信號轉(zhuǎn)換為數(shù)字信號,其中聲音處理單元壓縮數(shù)字?jǐn)?shù)據(jù)以產(chǎn)生傳送數(shù)據(jù),然后,將這些數(shù)據(jù)提供給通信單元106。另外,聲音處理單元108解壓來自通信單元106的“已壓縮”音頻數(shù)據(jù),并將其轉(zhuǎn)換成模擬音頻信號,然后,將這些信號提供給揚(yáng)聲器110。樂聲信號產(chǎn)生電路G產(chǎn)生關(guān)于游戲音效音樂、聽眾欣賞的音樂篇章等各種類型的樂聲信號。將樂聲信號提供給揚(yáng)聲器116。
      接下來,將參考圖8來描述樂聲信號產(chǎn)生電路G的細(xì)節(jié)。
      在圖8中,參考號112表示臨時存儲各種數(shù)據(jù)和控制指令的緩沖寄存器,通過總線B將這些數(shù)據(jù)和指令從CPU 101提供到緩沖寄存器,然后將其提供到聲源電路113和數(shù)字信號處理器的內(nèi)部電路。當(dāng)通過緩沖寄存器112從CPU 101收到來電旋律產(chǎn)生指令時,所述聲源電路113產(chǎn)生表示來電旋律的數(shù)字樂聲信號(即PCM數(shù)據(jù))。當(dāng)接收到游戲音效音樂產(chǎn)生指令時,聲源電路113產(chǎn)生關(guān)于游戲音效音樂的PCM數(shù)據(jù)。數(shù)字信號處理器100能夠?qū)⒁?guī)定音效、三維(3D)音效、寬立體聲音效等融入到數(shù)字樂聲信號中,以便將這些融入音效的音樂樂聲信號提供給數(shù)字模擬轉(zhuǎn)換器(DAC)115。DAC 115將數(shù)字樂聲信號轉(zhuǎn)換為模擬樂聲信號,然后,提供給揚(yáng)聲器116。
      在數(shù)字信號處理器100中,參考號121表示數(shù)據(jù)RAM,該RAM臨時存儲從聲源電路113輸出的脈沖編碼的調(diào)制數(shù)據(jù)(或PCM數(shù)據(jù)),以便根據(jù)從程序RAM 122輸出的程序向運(yùn)算電路123提供所存儲的數(shù)據(jù)。運(yùn)算電路123根據(jù)從程序RAM 122輸出的程序,對從數(shù)據(jù)RAM121輸出的PCM數(shù)據(jù)進(jìn)行計算(如,代數(shù)運(yùn)算和/或邏輯運(yùn)算)。這里,利用從系數(shù)RAM 125輸出的系數(shù)來執(zhí)行計算。運(yùn)算電路123通過選擇器127向工作RAM 126輸出運(yùn)算進(jìn)行中間的數(shù)據(jù)(或計算中斷數(shù)據(jù)),其中將計算中斷數(shù)據(jù)寫入工作RAM 126中由前述程序指定的地址處。另外,運(yùn)算電路123利用從工作RAM 126中由該程序指定的地址處讀取的數(shù)據(jù)來進(jìn)行計算。
      參考號124表示緩沖存儲器,臨時存儲來自運(yùn)算電路123的PCM數(shù)據(jù)并在時鐘脈沖信號CLK1限定的時間將其輸出到DAC 15。時鐘脈沖信號CLK1包括其頻率與PCM數(shù)據(jù)的采樣頻率(例如48kHz)相匹配的脈沖。
      程序RAM 122存儲諸如音效程序、三維音效程序、寬立體聲音效程序的程序,可以根據(jù)從CPU 101輸出的規(guī)定程序來重寫每一個程序。每個程序含有多個步驟,每一步驟進(jìn)一步包含針對數(shù)據(jù)RAM 121的讀/寫地址、針對運(yùn)算電路123的運(yùn)算指令和針對工作RAM 126的讀/寫地址。
      程序RAM 122能夠最多存儲768個程序步驟,其中根據(jù)從程序計數(shù)器128輸出的地址,順序地讀出程序步驟。假設(shè)將音效程序存儲在地址0到地址150之間限定的區(qū)域,而將三維音效程序存儲在地址151到地址767之間限定的區(qū)域,其中程序計數(shù)器128順序地增加其計數(shù)值并將計數(shù)輸出到程序RAM 122的地址端子。根據(jù)程序計數(shù)器128的計數(shù)值,首先讀取音效程序,以便將規(guī)定的音效融入到從數(shù)據(jù)RAM 121輸出的PCM數(shù)據(jù)。然后,讀取三維音效程序,以便將三維音效融入到音效融入的PCM數(shù)據(jù)上。
      系數(shù)RAM 125預(yù)先存儲用于在運(yùn)算電路123內(nèi)執(zhí)行的計算的系數(shù)。具體地,其存儲與存儲在程序RAM 122中的程序的768個步驟相對應(yīng)的總共768個系數(shù)。即,程序計數(shù)器128重復(fù)地從0到767計數(shù),以響應(yīng)其頻率如下計算的時鐘脈沖信號CLK248kHz×768=36.864MHz接下來,將給出關(guān)于工作RAM 126及其尋址電路的描述。
      將工作RAM126配置為能夠存儲8千個字的8k字RAM,如圖10所示,將其整個區(qū)域分為“連續(xù)的”32個子區(qū)域(每個存儲256個字)#0到#31。單個程序占用以子區(qū)域?yàn)閱挝坏墓ぷ鱎AM 126的一部分。假設(shè)音效程序占用四個子區(qū)域,三維音效程序占用三個子區(qū)域,其中通常將這些程序分配給連續(xù)的子區(qū)域。例如,將音效程序分配到子區(qū)域#0、#1、#2和#3,而將三維音效程序分配到子區(qū)域#4、#5和#6。然而,由于處理的需要(或由于程序的改變),不可能始終將每個程序分配到連續(xù)的子區(qū)域。例如,將音效程序分配到子區(qū)域#0、#1、#10和#20,而將三維音效程序分配到子區(qū)域#2、#5和#28。即,不必將每個程序分配到連續(xù)的子區(qū)域。
      程序RAM 122指定了用于工作RAM 126的讀/寫地址,其中其輸出相對地址“SA”,在加法器131內(nèi)將“SA”與地址計數(shù)器(AC)132的輸出(即,絕對地址)相加并且轉(zhuǎn)換為絕對地址(或物理地址)。通過選擇器133將絕對地址作為讀/寫地址提供到工作RAM 126的地址端子。
      本實(shí)施例使用相對地址的原因如下運(yùn)算電路123進(jìn)行有關(guān)濾波器的計算,例如,有關(guān)如圖7所示的FIR濾波器的計算。這里,有必要根據(jù)由時鐘脈沖信號CLK1所限定的定時,將寄存器Rg11的數(shù)據(jù)傳送到寄存器Rg12,并且將寄存器Rg12的數(shù)據(jù)傳送到寄存器Rg13。然而,當(dāng)根據(jù)軟件程序執(zhí)行這種數(shù)據(jù)轉(zhuǎn)移操作時,必須在程序中提供大量步驟,這最終會增加處理時間。因此,設(shè)計本實(shí)施例,以使實(shí)際上不對數(shù)據(jù)進(jìn)行單地址轉(zhuǎn)移,而是以反向?qū)ο鄬Φ刂愤M(jìn)行單地址轉(zhuǎn)移,由此實(shí)現(xiàn)了與數(shù)據(jù)轉(zhuǎn)移的相同效果。圖11示出了這種情況,其中當(dāng)每一次時鐘脈沖信號CLK1的一個周期(指“1fs”)過去時,將在特定fs定時處初始指定了工作RAM 126的絕對地址的地址計數(shù)器(AC)132的輸出自動地移到作為當(dāng)前地址之前的一個絕對地址(或一個物理地址)的在先地址中。假設(shè)地址計數(shù)器132當(dāng)前指定了絕對地址#1003;然后,在當(dāng)前定時的1fs之后的1fs后定時處,地址計數(shù)器132指定了絕對地址#1002;之后,在當(dāng)前定時的2fs之后的2fs后定時處,地址計數(shù)器132指定了絕對地址#1001。附帶地,將地址計數(shù)器132指定的當(dāng)前地址稱為相對地址0。
      接下來,將給出有關(guān)初始化電路140的描述,初始化電路140對由CPU 101指定的工作RAM 126的子區(qū)域進(jìn)行初始化。
      初始化電路140包括寄存器141、已初始化子區(qū)域確定電路142、地址轉(zhuǎn)換電路143、加法器144、計數(shù)器(CNT)145、地址計數(shù)器(AC)更新檢測電路146、與門單元147和存取決定電路148。
      寄存器141是32位寄存器,CPU 101向其中寫入指定了要初始化子區(qū)域的數(shù)據(jù)。例如,當(dāng)CPU 101指定了要初始化的子區(qū)域#0、#1、#10和#20時,將以下32位數(shù)據(jù)寫入到寄存器141中。
      “11000000001000000000100000000000”在上述數(shù)據(jù)中,每一位對應(yīng)于每一個子區(qū)域,其中按照順序#0,#1,#2,...,和#31,分別將從最高有效位(MSB)到最低有效位(LSB)計數(shù)的32位分配給不同的子區(qū)域。這里,將表示應(yīng)當(dāng)進(jìn)行初始化的子區(qū)域的每一個規(guī)定位設(shè)置為“1”。
      如上所述,每一個子區(qū)域的絕對地址根據(jù)地址計數(shù)器132的輸出(即,絕對地址)順序地進(jìn)行改變。例如,設(shè)置于子區(qū)域#0的相對地址通常范圍是“0”到“255”,如圖11所示,在當(dāng)前定時處,對應(yīng)的絕對地址范圍從#1003到#1258;在1fs后定時處,其范圍從#1002到#1257;以及在2fs后定時處,其范圍從#1001到#1256。
      已初始化子區(qū)域確定電路142順序地從其最左端位置輸入存儲在寄存器141的數(shù)據(jù)位,以便確定應(yīng)當(dāng)已經(jīng)初始化的已初始化子區(qū)域,從而將在其中確定的已初始化子區(qū)域的編號輸出到地址轉(zhuǎn)換電路143。例如,已初始化子區(qū)域確定電路142將表示子區(qū)域#0的編號的“0”輸出到地址轉(zhuǎn)換電路143。當(dāng)計數(shù)器145的計數(shù)值到達(dá)“256”時,已初始化子區(qū)域確定電路142檢測到規(guī)定子區(qū)域的初始化完成,由此將設(shè)置給寄存器145的對應(yīng)位位置的數(shù)值從“1”返回到“0”。然后,已初始化子區(qū)域確定電路142根據(jù)存儲在寄存器141中的數(shù)據(jù),進(jìn)行應(yīng)當(dāng)進(jìn)行初始化的下一個子區(qū)域,以便將表示下一個已初始化子區(qū)域的編號輸出到地址轉(zhuǎn)化電路143。在這種情況下,其將表示子區(qū)域#1的編號的“1”輸出到地址轉(zhuǎn)換電路143。
      由于每個子區(qū)域包括256個字并且連續(xù)地劃分所有子區(qū)域,地址轉(zhuǎn)換電路143將從已初始化子區(qū)域確定電路142輸出的子區(qū)域編號轉(zhuǎn)換為指定子區(qū)域的頂端地址(即,相對地址)EA,然后將其提供到加法器144。例如,當(dāng)已初始化子區(qū)域確定電路142輸出“0”時,將頂端地址EA設(shè)為相對于子區(qū)域#0的“0”;當(dāng)其輸出“1”時,將頂端地址EA設(shè)為相對于子區(qū)域#1的“256”;以及當(dāng)其輸出“10”時,將頂端地址EA設(shè)為相對于子區(qū)域#10的“2560”。
      計數(shù)器145能夠在計數(shù)中進(jìn)行256次增加并且在初始化啟始定時處清除計數(shù)。然后,當(dāng)每一次存取決定電路148產(chǎn)生表示非存取的非存取信號AN時,計數(shù)器145重復(fù)進(jìn)行增計數(shù)。當(dāng)計數(shù)值到達(dá)“256”時,清除計數(shù)器145,以使計數(shù)值自動地返回“0”。
      AC更新檢測電路146檢測其中更新地址計數(shù)器132的事件,由此輸出“1”。與門單元147包括與計數(shù)器145的輸出數(shù)據(jù)的位的數(shù)目相對應(yīng)的多個門,其中每一個門接收計數(shù)器145的輸出數(shù)據(jù)的每一位。通常響應(yīng)從AC更新檢測電路146輸出的“0”,關(guān)閉所有的與門147,從而直接將計數(shù)器145的輸出傳送到加法器144。在計數(shù)中更新地址計數(shù)器132的情況下,AC更新檢測電路146的輸出變?yōu)椤?”,與門單元147輸出“0”。
      加法器144將地址計數(shù)器132的計數(shù)值、關(guān)于進(jìn)行了初始化的子區(qū)域的頂端地址EA和與門147單元的輸出(通常于計數(shù)器145的輸出相對應(yīng))相加到一起,由此產(chǎn)生指定了要進(jìn)行初始化地址的地址數(shù)據(jù)AD。將地址數(shù)據(jù)AD通過選擇器133提供給工作RAM的地址端子。存取決定電路148通常在由時鐘脈沖信號CLK2限定的定時處,檢查從相對于工作RAM 126的程序RAM 122輸出的相關(guān)地址SA。當(dāng)程序RAM 122沒有輸出相對地址SA時,換句話說,當(dāng)程序RAM 122的程序不需要存取工作RAM 126時,存取決定電路148輸出非存取信號AN。
      接下來,將詳細(xì)描述具有圖8所示的上述結(jié)構(gòu)的樂聲信號產(chǎn)生電路G的全部操作。
      假設(shè)在初始狀態(tài),程序RAM 122在范圍從地址0到地址150的區(qū)域中存儲效果程序,還在范圍從地址151到地址767的區(qū)域中存儲三維音效程序。另外,系數(shù)RAM 125在范圍從地址0到地址150的區(qū)域中存儲用于效果程序的系數(shù),還在范圍從地址151到地址767的區(qū)域中存儲用于三維音效程序的系數(shù)。
      當(dāng)CPU 101將來電旋律產(chǎn)生指令輸出到聲源電路113時,聲源電路113產(chǎn)生關(guān)于來電旋律的數(shù)字樂聲信號(即,PCM數(shù)據(jù)),并將其提供到數(shù)字信號處理器100。將PCM數(shù)據(jù)臨時地存儲在數(shù)據(jù)RAM 121中,而同時,程序計數(shù)器128響應(yīng)時鐘脈沖信號CLK2開始增計數(shù)。當(dāng)程序計數(shù)器128根據(jù)時鐘脈沖CLK2開始增計數(shù)時,從程序RAM122讀取規(guī)定的程序,以便將對應(yīng)步驟順序地傳送到數(shù)據(jù)RAM 121和運(yùn)算電路123,同時在加法器將包括在程序步驟中的用于存取工作RAM 126的相對地址SA與地址計數(shù)器132的輸出(即,絕對地址)相加,以便將相加結(jié)果提供到工作RAM 126的地址端子,從而指定“已存取的”絕對地址。同時,響應(yīng)程序計數(shù)器128的計數(shù)值,從系數(shù)RAM 125中對應(yīng)地讀取系數(shù),以便將其提供到運(yùn)算電路123。
      運(yùn)算電路123利用系數(shù),根據(jù)程序,對從數(shù)據(jù)RAM 121輸出的數(shù)據(jù)進(jìn)行計算。此時,運(yùn)算電路123臨時將其輸出數(shù)據(jù)(或其計算中斷數(shù)據(jù))寫到工作RAM 126中;然后,其利用臨時存儲的數(shù)據(jù)再次進(jìn)行計算。一次性地將運(yùn)算電路123的運(yùn)算結(jié)果寫入到緩沖存儲器124中,然后,在由時鐘脈沖信號CLK1限定的定時處,將其通過緩沖存儲器124提供到DAC 115。DAC 115將數(shù)據(jù)轉(zhuǎn)換為模擬信號,然后將其提供給揚(yáng)聲器116。
      接下來,將參考圖11和圖12,對工作RAM 126的子區(qū)域的初始化操作進(jìn)行描述。
      首先,CPU 101將表示對子區(qū)域進(jìn)行初始化的數(shù)據(jù)寫入到寄存器141中,然后,清除計數(shù)器145。一旦清除了計數(shù)器145,在程序不需要存取工作RAM 126的定時,對子區(qū)域進(jìn)行初始化。
      假設(shè)CPU 101將數(shù)據(jù)寫入到寄存器141,從而命令對子區(qū)域#0、子區(qū)域#1、子區(qū)域#20和子區(qū)域#30進(jìn)行初始化。在這種情況下,已初始化子區(qū)域確定電路142將表示子區(qū)域#0的“0”輸出到地址轉(zhuǎn)換電路143,以使地址轉(zhuǎn)換電路143產(chǎn)生被置為“0”的頂端地址EA(即,相對地址),將其提供帶加法器144。此外,計數(shù)器145輸出“0”,將其通過與門單元147發(fā)送到加法器144。結(jié)果,加法器144進(jìn)行如下的加法AD=AC+0+0(其中“AC”表示地址計數(shù)器132的輸出)因此,加法器144產(chǎn)生被提供到選擇器133的地址數(shù)據(jù)AD。在這種情況下,地址計數(shù)器132當(dāng)前在工作RAM126中指定絕對地址#1003。
      當(dāng)存取決定電路148在程序RAM 122不輸出相對地址SA的定時處輸出非存取信號AN時,切換選擇器133,以便將地址數(shù)據(jù)AD提供到工作RAM 126的地址端子。同時,切換選擇器127,以便將“0”(用于初始化)提供到工作RAM 126的數(shù)據(jù)輸入端子,并將其寫入到子區(qū)域#0的相對地址0,由此對相對地址0進(jìn)行初始化,以便對工作RAM126的絕對地址#1003進(jìn)行初始化。附帶地,將從地址0到地址255進(jìn)行計數(shù)的256個地址分配給每一個子區(qū)域,作為有關(guān)每個子區(qū)域的相對地址。當(dāng)存取決定電路148輸出非存取信號AN時,計數(shù)器145進(jìn)行增計數(shù),以便輸出“1”,通過與門單元147將其輸出到加法器144。
      接下來,當(dāng)遞增程序計數(shù)器128以便從程序RAM 122中讀取程序的下一個步驟時,存取決定電路148再次輸出非存取信號AN,從而利用選擇器133將下一個地址數(shù)據(jù)AD(其中AD=AC+0+1)提供給工作RAM 126的地址端子,同時利用選擇器127將“0”(用于初始化)提供到工作RAM 126的數(shù)據(jù)輸入端子;因此,初始化了子區(qū)域#0的相對地址1,以使工作RAM 126的絕對地址#1004進(jìn)行了初始化。
      類似地,對子區(qū)域#0的相對地址2進(jìn)行初始化,因此對工作RAM126的絕對地址#1005進(jìn)行初始化。在圖11中,當(dāng)前定時示出了在子區(qū)域#0的地址0、地址1和地址2上完成了初始化的情況,其中黑園標(biāo)記表示初始化完成的地址。在此定時處,更新地址計數(shù)器132,以便由一次尋址(即,從絕對地址#1003返回到絕對地址#1002的尋址)來更新絕對地址(AC),從而轉(zhuǎn)移進(jìn)行了初始化的下一個絕對地址并由一次尋址進(jìn)行更新,這由圖11中的“1fs后定時”表示。此時,計數(shù)器輸出“3”,同時地址計數(shù)器更新檢測電路146輸出“1”,以使與門單元147的輸出變?yōu)椤?”,將其提供到加法器144。因此,加法器144如下產(chǎn)生地址數(shù)據(jù)ADAD=AC+0+0當(dāng)存取決定電路148再次輸出非存取信號AN時,再次初始化工作RAM 126的子區(qū)域#0的地址0。圖11明顯地示出了相對地址0針對工作RAM 126的絕對地址#1002,其不同于絕對地址#1003(在更新地址計數(shù)器132之前由相對地址0指定),因此其是非初始化地址。當(dāng)進(jìn)行初始化時,計數(shù)器145輸出“4”,且AC更新檢測電路146的輸出返回到“0”。結(jié)果,與門單元147將“4”輸出到加法器144,加法器144依次如下產(chǎn)生地址數(shù)據(jù)ADAD=AC+0+4當(dāng)存取決定電路148再次輸出非存取信號AN時,初始化工作RAM 126的子區(qū)域#0的地址4,從而對工作RAM 126的絕對地址#1006進(jìn)行了初始化。然后,重復(fù)相同的處理。當(dāng)在其中已初始化子區(qū)域#0的相對地址253的定時來再次更新地址計數(shù)器132時,AC更新檢測電路146輸出表示地址計數(shù)器132的更新的“1”,因此與門單元147輸出“0”。因此,再次已初始化子區(qū)域#0的相對地址0,從而對工作RAM 126的絕對地址#1001進(jìn)行了初始化。圖11中的“2fs后定時”示出了這種情況。之后,已初始化子區(qū)域#0的相對地址255,從而對工作RAM 126的絕對地址#1255進(jìn)行了初始化,因此,子區(qū)域#0的初始化完成。
      當(dāng)計數(shù)器145的計數(shù)值到達(dá)“256”(指示完成了子區(qū)域#0的初始化)時,已初始化子區(qū)域檢測電路142檢測到該事件,從而清除寄存器141中表示子區(qū)域#0的位;然后,已初始化子區(qū)域檢測電路142進(jìn)行已進(jìn)行初始化的下一個子區(qū)域的確定。在這種情況下,當(dāng)其確定子區(qū)域#1是下一個已初始化子區(qū)域時,將表示子區(qū)域#1的“1”輸出到地址轉(zhuǎn)換電路143。當(dāng)接收到“1”時,地址轉(zhuǎn)換電路143將子區(qū)域#1的頂端地址EA“256”(相對地址)輸出到加法器144。當(dāng)計數(shù)“256”之后,清除計數(shù)器145。之后,與子區(qū)域#0相似,逐一順序地初始化子區(qū)域#1的相對地址,從而徹底地初始化了子區(qū)域#1的全部區(qū)域。
      如上所述,當(dāng)更新地址計數(shù)器132時,首先初始化“已更新”子區(qū)域的相對地址0;然后,根據(jù)計數(shù)器145的計數(shù)值來進(jìn)行初始化。這是因?yàn)楫?dāng)直接根據(jù)已更新的計數(shù)器145的輸出進(jìn)行初始化時,必須保持相對地址0的不初始化。
      圖12是示出了初始化處理的流程圖,其內(nèi)容在上文進(jìn)行了描述。
      在步驟S1,初始化電路140指定了進(jìn)行初始化的子區(qū)域,并清除寄存器141。然后,流程經(jīng)過步驟S2、S3和S6進(jìn)行到步驟S7,其中初始化了用于指定子區(qū)域的絕對地址(AC+EA+CNT)。這里,“CNT”表示計數(shù)器145的計數(shù)值。然后,流程進(jìn)行到其中計數(shù)器145遞增的步驟S9。在完成了步驟S9之后,流程再次經(jīng)過步驟S3和S6返回到步驟S7,其中對子區(qū)域進(jìn)行初始化。
      重復(fù)進(jìn)行上述步驟S3、S6、S7和S9。當(dāng)更新地址計數(shù)器132時,步驟S6的決定結(jié)果變?yōu)椤笆恰?,以使流程進(jìn)行到對子區(qū)域進(jìn)行初始化的步驟S8。之后,重復(fù)進(jìn)行步驟序列S9、S3、S6和S7。當(dāng)計數(shù)器145的計數(shù)值到達(dá)“256”時,步驟S3的決定結(jié)果變?yōu)椤笆恰?,以使流程進(jìn)行到其中清除計數(shù)器145的步驟S4。然后,在步驟S5,將數(shù)據(jù)的規(guī)定位存儲在寄存器141中,以指明清除了上述子區(qū)域。之后,流程進(jìn)行到步驟S2,確定是否完全地初始化了由寄存器141的數(shù)據(jù)指定并且應(yīng)當(dāng)進(jìn)行初始化的所有子區(qū)域。當(dāng)確定結(jié)果是“否”時,重復(fù)進(jìn)行從步驟S3開始的步驟序列。當(dāng)步驟S2的確定結(jié)果變?yōu)椤笆恰睍r,初始化電路140結(jié)束其初始化處理。
      3.第三實(shí)施例接下來,將詳細(xì)描述本發(fā)明的第三實(shí)施例。
      第二實(shí)施例可能會存在較小的技術(shù)問題,在子區(qū)域#0的初始化完成之后,當(dāng)?shù)刂酚嫈?shù)器132的輸出在子區(qū)域#1的初始化過程中間出現(xiàn)變化時,初始化子區(qū)域#1的相對地址0,而使子區(qū)域#0的相對地址0保持未初始化。設(shè)計第三實(shí)施例,以解決第二實(shí)施例的上述問題。
      圖13是示出了包括根據(jù)本發(fā)明第三實(shí)施例的數(shù)字信號處理器200的樂聲信號產(chǎn)生電路G1的結(jié)構(gòu)的方框圖,其中相同參考號指明了與圖8所示的相同部分;因此,省略其描述。圖13的樂聲信號產(chǎn)生電路G1與圖8的樂聲信號產(chǎn)生電路G的不同之處在于初始化電路240的結(jié)構(gòu)。與圖8所示的初始化電路140相比,圖13所示的初始化電路240附加地采用了其結(jié)構(gòu)與寄存器141相同的寄存器201和用于選擇性地將寄存器141的輸出或寄存器201的輸出輸出到已初始化子區(qū)域確定電路142的選擇器203。
      接下來,參考圖14,對第三實(shí)施例中的工作RAM 126的初始化處理進(jìn)行描述。
      圖14是示出了由初始化電路240對工作RAM126進(jìn)行的初始化處理的流程圖。在步驟Sa1,CPU 101將指定了要進(jìn)行初始化的子區(qū)域的數(shù)據(jù)寫入到寄存器141和寄存器201中。在步驟Sa2,初始化電路240相對于每一個地址,對所指定的子區(qū)域順序地進(jìn)行初始化。當(dāng)完成了一個子區(qū)域的初始化時,清除寄存器141的數(shù)據(jù)中指定了已初始化子區(qū)域的規(guī)定位(初始設(shè)為“1”),而不清除寄存器201的數(shù)據(jù)的對應(yīng)位(設(shè)為“1”)。當(dāng)更新地址計數(shù)器132時,初始化電路240根據(jù)寄存器201的數(shù)據(jù)檢測當(dāng)前正在進(jìn)行初始化的子區(qū)域,以便在步驟SA3初始化每個子區(qū)域的相對地址0。
      參考圖15,詳細(xì)描述上述初始化處理。
      為了初始化子區(qū)域#0和#1,例如,CPU 101將命令對子區(qū)域#0和#1進(jìn)行初始化的32位數(shù)據(jù)分別寫入到寄存器141和201中;然后,清除計數(shù)器145。此時,AC更新檢測電路146將“0”輸出到選擇器203,選擇器203依次選擇性地將寄存器141的數(shù)據(jù)輸出到已初始化子區(qū)域確定電路142。
      與第二實(shí)施例相同,第三實(shí)施例對子區(qū)域#0進(jìn)行初始化,其中順序地對位進(jìn)行初始化。當(dāng)子區(qū)域#0的初始化完成之后,清除寄存器141的數(shù)據(jù)中指定了子區(qū)域#0的規(guī)定位,而不清除寄存器201的數(shù)據(jù)的對應(yīng)位(初始設(shè)為指定了子區(qū)域#0的“1”)。然后,初始化進(jìn)行到子區(qū)域#1的相對地址2(見圖15中關(guān)于當(dāng)前定時的黑圓)。此時,更新地址計數(shù)器,以使AC更新檢測電路146輸出“1”,由此與門單元147將“0”輸出到加法器144。此外,選擇性地將寄存器201的數(shù)據(jù)經(jīng)過選擇器203提供到已初始化子區(qū)域確定電路142,選擇器203響應(yīng)從AC更新檢測電路146輸出的“1”進(jìn)行切換。
      已初始化子區(qū)域確定電路142根據(jù)寄存器201的數(shù)據(jù),檢測進(jìn)行了初始化的子區(qū)域,由此輸出表示“已初始化”子區(qū)域#0和#1的“0”和“1”。當(dāng)已初始化子區(qū)域確定電路142輸出“0”時,地址轉(zhuǎn)換電路143對應(yīng)地輸出“0”作為表示子區(qū)域#0的頂端地址的頂端地址EA,由此加法器144進(jìn)行“AC+0+0”的計算,以產(chǎn)生地址數(shù)據(jù)AD。在存起決定電路148再次輸出非存取信號AN的下一個定時處,初始化工作RAM 126的子區(qū)域#0的相對地址0。之后,當(dāng)已初始化子區(qū)域確定電路142輸出“1”時,地址轉(zhuǎn)換電路143對應(yīng)地輸出“256”作為表示子區(qū)域#1的頂端地址的頂端地址EA。因此,加法器144進(jìn)行“AC+256+0”的計算,以產(chǎn)生地址數(shù)據(jù)AD。在存取決定電路148再次輸出非存取信號AN的下一個定時處,初始化工作RAM 126的子區(qū)域#1的相對地址0。圖15中的“1fs后定時”示出了這種情況。
      當(dāng)在初始化進(jìn)行到子區(qū)域#1的相對地址2的定時處更新地址計數(shù)器132時,初始化沒有進(jìn)行到下一個地址3,而是順序地對子區(qū)域#0的相對地址0和子區(qū)域#1的相對地址0進(jìn)行初始化。在該初始化期間,門電路(未示出)使計數(shù)器145停止相對于非存取信號AN進(jìn)行增計數(shù)。當(dāng)初始化完成時,再次遞增計數(shù)器145,AC更新檢測電路146的輸出返回“0”。之后,對子區(qū)域#1的后續(xù)地址(從相對地址4開始)順序地進(jìn)行初始化。附帶地,子區(qū)域#1的上述地址3對應(yīng)于圖15中1fs后定時處的絕對地址#1261,其中已經(jīng)在更新地址計數(shù)器132之后立即對其進(jìn)行了更新。
      當(dāng)在子區(qū)域#1的相對地址253的初始化完成之后更新地址計數(shù)器132時,在對子區(qū)域#1的相對地址254進(jìn)行初始化的定時處,對子區(qū)域#0的相對地址0和子區(qū)域#1的相對地址0順序地進(jìn)行初始化;然后,對子區(qū)域#1的后續(xù)地址(從相對地址255開始)進(jìn)行初始化。
      最后,可以將本發(fā)明的數(shù)字信號處理器用于例如蜂窩電話的便攜式終端設(shè)備中采用的任意類型的樂聲信號產(chǎn)生電路。
      由于在不脫離其精神或本質(zhì)特征的前提下,可以按照多種形式來體現(xiàn)本發(fā)明,因此,本實(shí)施例是演示性而非限制性的,由于由所附權(quán)利要求而不是上述描述來限定本發(fā)明的范圍,因此,權(quán)利要求包含了在權(quán)利要求范圍的邊界之內(nèi)的所有變化或這種邊界的等同物。
      權(quán)利要求
      1.一種數(shù)字信號處理器,包括數(shù)據(jù)存儲器,能夠以可重寫的方式存儲多個數(shù)據(jù);運(yùn)算電路,用于根據(jù)從數(shù)據(jù)存儲器讀取的數(shù)據(jù)來進(jìn)行計算;寫電路,用于強(qiáng)制將“0”寫入到數(shù)據(jù)存儲器的指定地址中;以及邏輯電路,用于當(dāng)對與數(shù)據(jù)存儲器的特定地址相對應(yīng)的存儲區(qū)域進(jìn)行寫操作時,驅(qū)動所述寫電路。
      2.根據(jù)權(quán)利要求1所述的數(shù)字信號處理器,其特征在于所述數(shù)據(jù)存儲器是具有輸入端子、地址端子、寫使能端子和輸出端子的工作隨機(jī)存取存儲器。
      3.根據(jù)權(quán)利要求2所述的數(shù)字信號處理器,其特征在于寫電路包括用于將“0”輸入到輸入端子的第一電路和用于將寫使能信號輸入到寫使能端子的第二電路。
      4.一種數(shù)字信號處理器,包括程序存儲器,用于存儲程序;運(yùn)算電路,用于根據(jù)程序進(jìn)行計算;以及數(shù)據(jù)存儲器,用于臨時存儲用于計算的數(shù)據(jù),其中,根據(jù)程序?qū)⑺鰯?shù)據(jù)存儲器分為分別由讀/寫操作中的地址所指定的多個子區(qū)域;寄存器,用于存儲指定在數(shù)據(jù)存儲器的子區(qū)域中進(jìn)行初始化的規(guī)定子區(qū)域的數(shù)據(jù);地址產(chǎn)生器,用于產(chǎn)生指定在數(shù)據(jù)存儲器中進(jìn)行初始化的規(guī)定子區(qū)域的地址的地址數(shù)據(jù);非存取檢測器,用于檢測其中程序不需要存取數(shù)據(jù)存儲器的非存取事件;以及寫電路,用于當(dāng)檢測到非存取事件時,根據(jù)地址數(shù)據(jù),強(qiáng)制將“0”寫入到數(shù)據(jù)存儲器。
      5.根據(jù)權(quán)利要求4所述數(shù)字信號處理器,其特征在于所述數(shù)據(jù)存儲器是具有輸入端子、地址端子、寫使能端子和輸出端子的工作隨機(jī)存取存儲器,以及,當(dāng)檢測到非存取事件時,將指定規(guī)定地址的地址數(shù)據(jù)提供到地址端子,并寫電路針對規(guī)定的地址將“0”寫入到輸入端子。
      6.根據(jù)權(quán)利要求4所述的數(shù)字信號處理器,其特征在于地址數(shù)據(jù)產(chǎn)生器包括頂端地址產(chǎn)生器,用于根據(jù)寄存器的數(shù)據(jù)產(chǎn)生用于規(guī)定子區(qū)域的頂端地址;以及計數(shù)器,用于當(dāng)每一次非存取檢測器檢測到非存取事件時,增加其計數(shù)值,由此根據(jù)頂端地址和計數(shù)值來產(chǎn)生地址數(shù)據(jù)。
      7.一種數(shù)字信號處理器,包括程序存儲器,用于存儲程序;運(yùn)算電路,用于根據(jù)程序進(jìn)行計算;數(shù)據(jù)存儲器,用于臨時存儲計算中使用的數(shù)據(jù),其中,根據(jù)程序?qū)⑺鰯?shù)據(jù)存儲器分為分別由讀/寫操作中的相對地址所指定的多個子區(qū)域;地址計數(shù)器;絕對地址產(chǎn)生器,用于根據(jù)相對地址和地址計數(shù)器的計數(shù)值來產(chǎn)生絕對地址;寄存器,用于存儲指定在數(shù)據(jù)存儲器中進(jìn)行初始化的規(guī)定子區(qū)域的數(shù)據(jù);地址數(shù)據(jù)產(chǎn)生器,用于根據(jù)寄存器的數(shù)據(jù),產(chǎn)生指定進(jìn)行初始化的規(guī)定子區(qū)域的相對地址的地址數(shù)據(jù);非存取檢測器,用于檢測其中程序不需要存取數(shù)據(jù)存儲器的非存取事件;寫電路,用于當(dāng)檢測到非存取事件時,根據(jù)地址數(shù)據(jù),強(qiáng)制將“0”寫入到數(shù)據(jù)存儲器中;以及“0”提供器,用于響應(yīng)地址計數(shù)器的計數(shù)值的改變,將“0”提供給寫電路。
      8.根據(jù)權(quán)利要求7所述的數(shù)字信號處理器,其特征在于所述數(shù)據(jù)存儲器是具有輸入端子、地址端子和輸出端子的工作隨機(jī)存取存儲器,以及,當(dāng)檢測到非存取事件時,將地址數(shù)據(jù)提供到地址端子,寫電路將“0”輸入到輸入端子。
      9.一種數(shù)字信號處理器,包括程序存儲器,用于存儲程序;運(yùn)算電路,用于根據(jù)程序進(jìn)行計算;數(shù)據(jù)存儲器,用于臨時存儲計算中使用的數(shù)據(jù),其中,根據(jù)程序?qū)⑺鰯?shù)據(jù)存儲器分為分別由讀/寫操作中的相對地址所指定的多個子區(qū)域;地址計數(shù)器;絕對地址產(chǎn)生器,用于根據(jù)相對地址和地址計數(shù)器的計數(shù)值來產(chǎn)生絕對地址;第一寄存器,用于存儲指定進(jìn)行初始化的規(guī)定子區(qū)域的數(shù)據(jù);第二寄存器,用于存儲與第一寄存器相同的數(shù)據(jù);地址數(shù)據(jù)產(chǎn)生器,用于根據(jù)第一寄存器的數(shù)據(jù),產(chǎn)生與指定進(jìn)行初始化的規(guī)定子區(qū)域的相對地址相對應(yīng)的地址數(shù)據(jù),其中當(dāng)完成了規(guī)定子區(qū)域的初始化時,清除第一寄存器的數(shù)據(jù);非存取檢測器,用于檢測其中程序不需要存取數(shù)據(jù)存儲器的非存取事件;寫電路,用于當(dāng)檢測到非存取事件時,根據(jù)地址數(shù)據(jù),強(qiáng)制將“0”寫入到數(shù)據(jù)存儲器中;以及初始化電路,用于響應(yīng)地址計數(shù)器的計數(shù)值的變化,對于由第二寄存器的數(shù)據(jù)指定的每一個子區(qū)域,初始化相對地址0。
      10.根據(jù)權(quán)利要求9所述的數(shù)字信號處理器,其特征在于所述數(shù)據(jù)存儲器是具有輸入端子、地址端子和輸出端子的工作隨機(jī)存取存儲器,并且當(dāng)檢測到非存取事件時,將地址數(shù)據(jù)提供到地址端子,寫電路將“0”輸入到輸入端子。
      11.根據(jù)權(quán)利要求1、4、7和9之一所述的數(shù)字信號處理器,其特征在于還包括指令存儲器,用于存儲包括關(guān)于讀操作的步驟和在數(shù)據(jù)存儲器上進(jìn)行的寫操作的步驟的列表,其中由列表中包括的預(yù)定步驟來定義在進(jìn)行初始化的數(shù)據(jù)存儲器的特定區(qū)域上進(jìn)行的寫操作。
      全文摘要
      一種數(shù)字信號處理器,用于工作RAM,所述工作RAM能夠以可重寫的方式來存儲多個數(shù)據(jù),并且將其存儲區(qū)域分為分別由讀/寫操作中的地址指定的多個子區(qū)域,其中運(yùn)算電路根據(jù)程序,對工作RAM中的數(shù)據(jù)進(jìn)行計算,當(dāng)檢測到其中程序不需要存取數(shù)據(jù)存儲器的非存取事件時,寫電路對于由地址數(shù)據(jù)指定的進(jìn)行初始化的規(guī)定子區(qū)域的每一個規(guī)定地址,強(qiáng)制將“0”寫入到工作RAM中。因此,能夠?qū)崿F(xiàn)對工作RAM中的特定區(qū)域選擇性地進(jìn)行初始化,而無需增大外圍電路的整個尺寸,無需進(jìn)行復(fù)雜的控制,也無需增大用于初始化的處理時間。
      文檔編號G11C11/4072GK1617259SQ20041009573
      公開日2005年5月18日 申請日期2004年11月12日 優(yōu)先權(quán)日2003年11月14日
      發(fā)明者村木保之 申請人:雅馬哈株式會社
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1