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