帶你領(lǐng)略芯片設(shè)計,語音芯片設(shè)計介紹
芯片設(shè)計的理論知識,在往期芯片設(shè)計相關(guān)文章中已有所涉及。對芯片設(shè)計了解不多的朋友,可以參閱哦。本文中,將介紹基于FPGA的ISD語音芯片設(shè)計。希望大家在這篇芯片設(shè)計文章中,可以有所收獲。
1 引 言
FPGA(現(xiàn)場可編程門陣列)的出現(xiàn),改變了數(shù)字系統(tǒng)設(shè)計方法、增強了設(shè)計的靈活性,同時,在基于芯片的設(shè)計中可以減少芯片數(shù)量,縮小系統(tǒng)體積,降低能源消耗,提高系統(tǒng)的性能指標(biāo)和可靠性,在實時監(jiān)控方面有廣泛的應(yīng)用。
ISD語音芯片采用DAST(直接模擬存儲技術(shù)),直接存儲模擬信號,因而減少了失真,提高了錄、放音質(zhì)量,本文所用的ISD2560系列具有抗斷電、音質(zhì)好、使用方便、錄放時間長等優(yōu)點。然而,在產(chǎn)品應(yīng)用中,大多數(shù)系統(tǒng)只利用了ISD芯片提供的無需地址的工作模式(共有6種),這些操作模式實時性差、地址控制精度不高、操作不靈活。本文從另一個角度論述了基于FPGA的ISD語音芯片的設(shè)計開發(fā)。
2 ISD語音芯片
ISD語音芯片目前有ISD1000、ISD1100、ISD1200/1400、ISD2500、ISD3340和ISD4000系列,本設(shè)計采用的是2500系列中的ISD2560芯片。ISD2560具有10個地址輸入端,尋址能力可達1024位,前600個地址用于直接存取語音,地址600~767未使用,地址768~1024為工作模式選擇用,因此最多能分600段;設(shè)有OVF(溢出)端,便于多個器件級聯(lián);單片存儲時間為60秒,直接存儲模擬語音信號。
ISD芯片的地址以信息段為基本組成單元,只要在分段錄、放音操作前(不少于300ns),給地址A0~A9賦值,錄音及放音功能均會從設(shè)定的起始地址開始,錄音結(jié)束由停止鍵操作決定,芯片內(nèi)部自動在該段的結(jié)束位置插入結(jié)束標(biāo)志(EOM);而放音時芯片遇到EOM標(biāo)志即自動停止放音。
3 硬件構(gòu)成及實現(xiàn)方案
利用FPGA的可編程特性實現(xiàn)對ISD2560芯片的直接地址操作,從而實現(xiàn)按地址位錄音、放音的功能,提高芯片存儲空間的利用率,并能自由選擇存儲地址;本文選擇XILINX(全球最大的可編程器件供應(yīng)商)的Spartan XL系列芯片,利用VerilogHDL語言編程設(shè)計,采用層次設(shè)計方法實現(xiàn)。
Verilog HDL是一種硬件描述語言,用于從算法級、門級到開關(guān)級的多種抽象設(shè)計層次的數(shù)字系統(tǒng)建模。數(shù)字系統(tǒng)能夠按層次描述,并可在相同描述中顯式地進行時序建模。
3.1 設(shè)計思路
ISD2560芯片存儲時間是60秒,內(nèi)部有480K字節(jié)的EPROM存儲單元,劃分為600個地址單元,可以算出對于每一個地址單元的存儲空間是480K÷600=800字節(jié),對應(yīng)的錄放時間是100ms;同時,ISD2560內(nèi)部的地址位從0~599對應(yīng)這600個地址單元,其它地址位則在操作模式或按鍵模式中使用??梢?,芯片內(nèi)部上下段之間在存儲空間上不 連續(xù),但在地址上具有連續(xù)性。所以,ISD芯片內(nèi)部的地址可采用定時計數(shù)器的方法獲得,并可采用直接地址法提取此地址段,實現(xiàn)實時控制、自由存儲。3.2 系統(tǒng)總體結(jié)構(gòu)設(shè)計(頂層設(shè)計)
基于FPGA的ISD2560語音芯片的設(shè)計開發(fā)主要完成兩個功能:(1)觸發(fā)或停止FPGA內(nèi)部定時計數(shù)器計數(shù),并將計數(shù)結(jié)果存入FPGA的內(nèi)部存儲器中;(2)利用直接地址法,提取用于ISD芯片錄、放音所需地址。
本系統(tǒng)是基于XILINX FOUNDATION 3.0平臺開發(fā)的,其中:
RECORD模塊用于處理錄音和停止錄音的操作,產(chǎn)生觸發(fā)或停止定時計數(shù)器的信號以及錄音時片選信號;
TIME模塊利用FPGA的內(nèi)部時鐘模塊最高頻率產(chǎn)生頻率為10Hz的信號作為計數(shù)器的時鐘;為了提高系統(tǒng)的精確性,也可以通過外加時鐘的辦法實現(xiàn)。
COUNTER模塊為定時計數(shù)器,它利用周期為100ms的時鐘脈沖,根據(jù)錄音長短算出ISD芯片地址位,并發(fā)送到存儲器,其Verilog HDL語言編程實現(xiàn)如下:
P/R模塊產(chǎn)生整個電路錄、放音的選擇信號;PLAYADDR模塊完成放音地址的產(chǎn)生;
PLAY模塊將在放音時產(chǎn)生一個由高到低的脈沖作為片選信號;
ROM10模塊完成了存儲器的功能,存儲10位ISD芯片地址,并按照PLAYADDR產(chǎn)生的地址直接提取ISD芯片地址,其Verilog HDL語言編程實現(xiàn)如下:
module roml (addr,play,addrl,result,dataout,
U7模塊由P/R模塊的輸出信號來選擇輸出。
3.3 系統(tǒng)實現(xiàn)
工作時序如下:
錄音:PD低電平,P/R低電平,CE低電平,開始錄音,CE變高電平,錄音停止。放音:PD低電平,P/R變高電平,給CE一個由高到低的脈沖,開始放音,到第一個EOM處放音停止。放音時,若給CE低電平,則芯片持續(xù)放音,直到芯片存儲空間末尾。如圖2所示(圖2為經(jīng)綜合后的時序仿真結(jié)果)。
3.4 FPGA的實現(xiàn)
本設(shè)計選用XILINX公司FPGA產(chǎn)品S05XLPG84。整個設(shè)計采用Verilog HDL語言描述,在XILINXFOUNDATION 3.0平臺上完成了系統(tǒng)的仿真、綜合、映射、布局。在后仿真結(jié)果正確后,通過器件編程(即通過編程電纜將設(shè)計下載到實際芯片中)進行系統(tǒng)調(diào)試,直至最后實現(xiàn)。
在實踐過程中,我們還設(shè)計了譯碼器,將地址碼譯成LED碼,從而通過三個LED顯示地址位。可見,實際應(yīng)用中還可以根據(jù)實際需要做進一步的設(shè)計開發(fā),滿足復(fù)雜操作或?qū)崟r系統(tǒng)應(yīng)用的要求。
4 結(jié)束語
以上便是此次小編帶來的“芯片設(shè)計”相關(guān)內(nèi)容,通過本文,希望大家對語音芯片設(shè)計具備一定的認(rèn)知。如果你喜歡本文,不妨持續(xù)關(guān)注我們網(wǎng)站哦,小編將于后期帶來更多精彩內(nèi)容。最后,十分感謝大家的閱讀,have a nice day!