楊翠軍, 錢 敏, 朱 靜
(蘇州大學(xué) 微電子系,江蘇 蘇州 215021)
數(shù)字音頻技術(shù)日益被關(guān)注和研究,諸如語音加密[1]、語音識別[2]、數(shù)字音效處理等在生產(chǎn)生活中有著廣闊的應(yīng)用前景。隨著人們對語音質(zhì)量的要求越來越高,對語音芯片和相關(guān)處理器也提出了更高的性能要求[3]。項目采用 SOPC技術(shù)設(shè)計了一種嵌入式數(shù)字音頻處理系統(tǒng)。可編程片上系統(tǒng),是 Altera公司提出來的一種靈活、高效的片上系統(tǒng)(SOC)解決方案,是一種新的軟硬件協(xié)同設(shè)計的系統(tǒng)設(shè)計技術(shù)。它將處理器、存儲器、I/O口、低電壓差分信號接口(LVDS)、時鐘與數(shù)據(jù)恢復(fù)(CDR)等功能模塊集成到一個可編程器件上,構(gòu)成一個可編程的片上系統(tǒng)[4]。項目中利用該技術(shù)在 FPGA芯片上配置 Nios Ⅱ軟核處理器并配合語音芯片TLV320AIC23來搭建硬件平臺,并利用軟件集成開發(fā)環(huán)境Nios Ⅱ IDE進行軟件設(shè)計來控制整個系統(tǒng)工作,實現(xiàn)了數(shù)字音頻的高速實時采集與回放功能。
系統(tǒng)結(jié)構(gòu)中主要有模擬音頻輸入源數(shù)字通用光盤播放器(DVD),Altera公司 Cyclone Ⅱ系列的EP2C35芯片,語音芯片TLV320AIC23及耳機組成,整個系統(tǒng)的結(jié)構(gòu)框如圖1所示。系統(tǒng)的工作原理為:從 DVD混合 2聲道輸出模擬音頻,經(jīng)過TLV320AIC23內(nèi)部的A/D轉(zhuǎn)換器轉(zhuǎn)換為串行音頻數(shù)字流,進入已配置有Nios Ⅱ CPU和其他相關(guān)接口模塊的 FPGA,由其對該數(shù)字音頻進行接收、并利用SDRAM來協(xié)助CPU對數(shù)據(jù)進行存取,最后發(fā)送至TLV320AIC23內(nèi)部的D/A轉(zhuǎn)換器,轉(zhuǎn)換為模擬音頻提供給耳機回放。
圖1 系統(tǒng)硬件結(jié)構(gòu)
Avalon總線是Altera公司開發(fā)的一種專用的內(nèi)部總線技術(shù),主要用于片內(nèi)處理器與外設(shè)之間的通信。
Avalon總線是由SOPC Builder自動生成的,系統(tǒng)用戶不需要關(guān)心總線與外設(shè)的具體連接。Avalon總線系統(tǒng)一般由Avalon交換結(jié)構(gòu)和Avalon外設(shè)組成。Avalon交換結(jié)構(gòu)是系統(tǒng)模塊的主干,由各種控制、數(shù)據(jù)和地址信號以及仲裁邏輯組成,將系統(tǒng)模塊的各外設(shè)連接起來。Avalon外設(shè)分為主外設(shè)和從外設(shè)兩類。能夠在Avalon總線上發(fā)起總線傳輸?shù)耐庠O(shè)是主外設(shè),而從外設(shè)只能響應(yīng)Avalon總線傳輸。Avalon接口規(guī)范定義了Avalon交換結(jié)構(gòu)和Avalon外設(shè)連接端口之間的信號和時序。
系統(tǒng)的硬件平臺主要由配置有Nios Ⅱ CPU和相關(guān)接口模塊的 FPGA 芯片、語音芯片TLV320AIC23以及存儲器等部分構(gòu)成。設(shè)計中選用了Altera Cyclone Ⅱ系列EP2C35型號的FPGA芯片。該芯片具有33216個邏輯單元、475個用戶自定義I/O接口、35個嵌入式乘法器和4個鎖相環(huán)。在FPGA內(nèi)部配置了以下模塊:PLL、Nios Ⅱ嵌入式軟核處理器、掛接在 Avalon總線上的 JTAG UART、System ID、SDRAM Controller、FLASH(CFI)Controller、DMA Controller等IP核以及用戶定制邏輯外設(shè)模塊i2c、aic23。存儲器用于對數(shù)字音頻數(shù)據(jù)進行緩存。下面主要對Nios Ⅱ嵌入式軟核處理器、語音芯片TLV320AIC23及其配置、自定制邏輯外設(shè)控制模塊aic23等幾個關(guān)鍵模塊的設(shè)計進行介紹。
Nios II處理器是Altera公司推出的第二代用于可編程邏輯器件的可配置的軟核處理器。由于處理器是軟核形式,可以在多種系統(tǒng)設(shè)置組合中進行選擇,達到性能和成本的要求。Nios Ⅱ處理器包括3種類型內(nèi)核:高速內(nèi)核(Nios II/f)、經(jīng)濟內(nèi)核(Nios II/e)和標準內(nèi)核(Nios II/s)[5]。因為設(shè)計時采用的Cyclone Ⅱ系列EP2C35芯片邏輯資源豐富以及音頻采集的高速性實時性要求,所以選用了高性能的Nios Ⅱ軟核作為系統(tǒng)的CPU。使用Altera的Quartus Ⅱ軟件自帶的SOPC Builder工具在Avalon總線上掛接需要的IP內(nèi)核及自定制的邏輯外設(shè)模塊來完成整個嵌入式系統(tǒng)的開發(fā)。表1為SOPC Builder中添加的所有IP。
表1 SOPC Builder中添加的IP
TLV320AIC23是 TI推出的一款高性能的立體聲音頻Codec芯片,支持MIC和LINE IN兩種輸入方式[6]。芯片的模數(shù)轉(zhuǎn)換(ADC)和數(shù)模轉(zhuǎn)換(DAC)部件高度集成在芯片內(nèi)部,支持8~96 kHz采樣頻率,數(shù)據(jù)傳輸字長為 16 bit、20 bit、24 bit和 32 bit可選。
TLV320AIC23提供兩種控制接口用于對其內(nèi)部的寄存器進行編程,一種為三線制接口(SPI),一種為兩線制接口(I2C)。當(dāng)引腳MODE為低電平時,選擇I2C接口,而為高電平時,選擇SPI接口。此次設(shè)計時選擇I2C總線接口。引腳SDIN和 SCLK分別用于傳輸串行數(shù)據(jù)和串行時鐘。設(shè)計中TLV320AIC23是作為一個只寫的從設(shè)備,由I2C總線控制器作為主設(shè)備來對其進行讀寫訪問。芯片CS引腳接數(shù)字地決定了其設(shè)備地址為7’b0011010。I2C總線傳輸時序如圖2所示,在發(fā)送完7 bit設(shè)備地址及讀/寫位后,接著傳輸?shù)?6 bit按兩次傳輸,第一次傳輸?shù)氖? bit目的寄存器地址加1 bit數(shù)據(jù),第二次傳輸?shù)氖鞘O碌? bit數(shù)據(jù)。由于SOPC Builder沒有提供 I2C外設(shè)內(nèi)核,設(shè)計中需要自定制符合Avalon接口規(guī)范的I2C IP,并將其集成到系統(tǒng)中去。
圖2 I2C總線傳輸時序
此次設(shè)計中模塊aic23是一個基于Avalon總線的用戶自定制邏輯從設(shè)備外設(shè),并通過Avalon交換結(jié)構(gòu)和處理器進行通信。該模塊中主要包括外設(shè)的Avalon Slave端口定義、數(shù)字音頻接收、數(shù)字音頻發(fā)送這3個部分。aic23模塊結(jié)構(gòu)圖如圖3所示。
外設(shè)的從端口定義了一組符合Avalon接口規(guī)范的信號類型(如片選、讀使能、寫使能、地址、數(shù)據(jù)等)用于描述從外設(shè)上基于地址的讀/寫接口,且一般與Avalon總線時鐘信號同步。在完成模塊的硬件描述語言 Verilog HDL設(shè)計及其驗證后,利用SOPC Builder中Creat New Component將其封裝為SOPC Builder元件,最后集成到系統(tǒng)中去。
圖3 aic23模塊結(jié)構(gòu)
語音芯片TLV320AIC23支持4種數(shù)字音頻接口模式:右對齊模式、左對齊模式、I2S模式及DSP模式。此次設(shè)計中采用 DSP模式,其中LRCIN/LRCOUT分別為輸入輸出左右聲道控制信號,BCLK為時鐘信號,DIN/DOUT分別為輸入輸出串行數(shù)據(jù)信號。DSP模式傳輸時序如圖4所示[7]。在音頻采集時,DVD輸出的模擬音頻信號經(jīng)過TLV320AIC23內(nèi)部的A/D轉(zhuǎn)換器轉(zhuǎn)換為數(shù)字音頻信號送給音頻接收部分,音頻接收部分按照DSP模式的時序來接收并傳輸給輸入先進先出數(shù)據(jù)緩存器(FIFO)進行緩存。當(dāng)輸入FIFO中的數(shù)據(jù)量達到預(yù)設(shè)值時,啟動DMA傳輸將緩存區(qū)的數(shù)據(jù)傳送至 SDRAM 中。在音頻回放時將 SDRAM中的音頻數(shù)據(jù)通過輸出FIFO送至音頻接收部分,按照DSP模式的時序來發(fā)送至TLV320AIC23內(nèi)部的D/A轉(zhuǎn)換器轉(zhuǎn)換為模擬音頻信號,最后通過耳機播放。
圖4 DSP模式傳輸時序
項目的軟件設(shè)計工作主要在 Nios Ⅱ集成環(huán)境下完成,Nios Ⅱ集成開發(fā)環(huán)境(IDE)是Nios Ⅱ系列嵌入式處理器的基本開發(fā)工具。用戶可以直接使用C/C++語言以及IDE集成環(huán)境提供的硬件抽象層(HAL)函數(shù)來完成軟件程序的編寫[8]。設(shè)計中主要完成SOPC中兩個自定制模塊i2c、aic23寄存器頭文件、驅(qū)動程序及頂層應(yīng)用程序的編寫。以下按照系統(tǒng)工作流程的順序列出程序的主要部分:
1)對I2C、DMA模塊初始化,注冊音頻中斷處理函數(shù)。
2)在IDE控制臺選擇進入音頻測試系統(tǒng),首先測試TLV320AIC23的模擬旁路功能。
3)測試系統(tǒng)的中斷模式實時采集與回放功能。
4)測試系統(tǒng)的錄音與回放功能。
在實驗室條件下對系統(tǒng)進行測試,并最終成功利用耳機對音頻進行了回放。在采集過程中使用Altera SignalTap Ⅱ嵌入式邏輯分析儀對FPGA信號及狀態(tài)進行捕獲檢測,圖5為SignalTap Ⅱ檢測波形。
圖5 SignalTap Ⅱ檢測波形
此次設(shè)計采用SOPC技術(shù),通過在Altera公司的Cyclone Ⅱ FPGA 上配置Nios Ⅱ軟核處理器及相關(guān)自定制邏輯外設(shè)模塊來搭建硬件平臺,并利用軟件集成開發(fā)環(huán)境Nios Ⅱ IDE進行軟件設(shè)計來控制音頻采集與回放的流程,實現(xiàn)了數(shù)字音頻的高速采集、存儲及回放等功能。由于采用SOPC技術(shù),該系統(tǒng)具有設(shè)計靈活、采集速度快和擴展升級性好等優(yōu)點。
[1]劉帥,王以剛.VoIP的語音動態(tài)加密方法研究[J].信息安全與通信保密,2009(02):80-81.
[2]龐雄昌,王喆.基于GDTW + SVM的語音識別[J].信息安全與通信保密,2007(06):90-92.
[3]袁曄,韓立金,景曉軍.基于音頻編解碼器TLV320AIC23與 FPGA/CPLD的數(shù)字化語音處理系統(tǒng)[J].電子技術(shù)應(yīng)用,2007(10):37-40.
[4]周立功.SOPC嵌入式系統(tǒng)基礎(chǔ)教程[M].北京:北京航空航天大學(xué)出版社,2006.
[5]王曉迪,張景秀.SOPC系統(tǒng)設(shè)計與實踐[M].北京:北京航空航天大學(xué)出版社,2008.
[6]崔麗珍,馬勇,王慧琴.基于DM 642語音處理系統(tǒng)研究與實現(xiàn)[J].通信技術(shù),2010,43(11):67-68.
[7]李杰,陳希明,程強,等.基于SOPC的數(shù)字音頻系統(tǒng)設(shè)計[J].天津理工大學(xué)學(xué)報,2009,25(04):63-66.
[8]林青松,李立凱,楊寧.基于Nios Ⅱ的紅外圖像預(yù)處理系統(tǒng)[J].通信技術(shù),2009,42(09):171-173.