久久99热66热这里只有精品,特黄特色的大片在线观看,亚洲日本三级在线观看,国产三级农村妇女在线,亚洲av毛片免费在线观看,哺乳叫自慰在线看,天天干美女av网

DOS下DSP播音的編程

時(shí)間:2023-05-01 08:05:42 計(jì)算機(jī)論文 我要投稿
  • 相關(guān)推薦

DOS下DSP播音的編程

摘要 該文介紹了DSP編程的基本原則和方法,并給出程序?qū)嵗龓椭斫?讀者可以此為基礎(chǔ)來(lái)拓展、生成自己的實(shí)用程序。

在DOS下編程,將聲音轉(zhuǎn)化為數(shù)據(jù)記錄下來(lái),或?qū)?shù)據(jù)轉(zhuǎn)化為聲音,通過(guò)聲卡上配置的喇叭回放出來(lái),是一項(xiàng)很有實(shí)用價(jià)值和開(kāi)發(fā)魅力的技術(shù)。時(shí)下流行的聲卡,如Sound Blaster Pro及其兼容卡,都配有數(shù)字聲音處理器DSP芯片(Digital Sound Processor),專(zhuān)門(mén)用于對(duì)聲音進(jìn)行數(shù)字記錄及回放,是聲音數(shù)字處理的基礎(chǔ)硬件。而WAV文件、VOC文件等,則都是這些數(shù)據(jù)記載的具體形式。Creative公司為了方便用戶,提供了一組CT-Voice驅(qū)動(dòng)程序,專(zhuān)門(mén)針對(duì)VOC文件,作為開(kāi)發(fā)利用DSP功能的軟接口,使用比較方便。但是,也造成了某些限制。對(duì)于開(kāi)發(fā)者而言,直接對(duì)DSP硬件編程,實(shí)現(xiàn)其功能,也許是更有吸引力的。

聲音,無(wú)論是從揚(yáng)聲器輸出的,還是從話筒輸入的,都是模擬量。

而數(shù)據(jù),無(wú)論是內(nèi)存里操作的,還是磁盤(pán)上存儲(chǔ)的都是數(shù)字量。因此,微機(jī)處理聲音,大多離不開(kāi)ADC與DAC兩種轉(zhuǎn)換。由于聲音數(shù)據(jù)的數(shù)據(jù)量比較大,在聲音的數(shù)字處理中,除直接由CPU進(jìn)行傳輸外,批量數(shù)據(jù)常采用DMA方式傳輸,以節(jié)省較多的CPU時(shí)間。

總括起來(lái),ADC與DAC兩種轉(zhuǎn)換方式,直接傳輸和DMA傳輸這兩種傳輸方式,再加上不同的壓縮方式,如喇叭控制、靜寂等等,所有這些的不同組合,就構(gòu)成了DSP的各種功能。根據(jù)DSP的硬件原理,其各種功能都規(guī)定了一定的操作步驟。

一、DSP編程要點(diǎn)

在DSP編程中,主要注意命令與端口兩個(gè)層次的操作。

1.DSP命令。DSP的功能一般以一個(gè)操作碼(稱作命令號(hào))的寫(xiě)操作為中心,按規(guī)定的步驟,配合若干必要的輔助操作,構(gòu)成一串操作的組合,稱為DSP命令。如8位直接播放功能命令號(hào)為10h,8位直接錄音功能命令號(hào)為20h,喇叭的通斷功能命令號(hào)分別為d1h與d3h等等。

2.端口操作。DSP命令主要靠端口操作來(lái)實(shí)現(xiàn)。端口操作包括DSP初始化、寫(xiě)DSP命令(即發(fā)DSP命令)、讀DSP狀態(tài)參數(shù)、DSP中斷等。所涉及的端口地址及相應(yīng)的用途如表1。

表1 DSP端口及用途

端口地址由基址2x0h加6、0ah、0ch、0eh等形成,其中,x可取值1、2、3、4、5、6等,具體情況隨硬件設(shè)置而定,多數(shù)卡在出廠被默認(rèn)設(shè)置為2,即基址為220h。通過(guò)跳線,可改變此值,避免與其它設(shè)備口地址沖突。

二、編程實(shí)例

DSP的功能是比較豐富的,限于篇幅,本文只簡(jiǎn)要介紹其中的8位直接播放功能,由此舉一反三,其它功能的用法不難得知。各功能的規(guī)定操作可參考文獻(xiàn)1和2。

1.命令操作步驟。8位直接播放功能的操作步驟如下:

·寫(xiě)命令號(hào)10h;

·寫(xiě)數(shù)據(jù)字節(jié)(即播放聲音的8位數(shù)據(jù));

·按采樣率所需時(shí)間周期延時(shí)。

以此三步操作為循環(huán)體,進(jìn)行n次循環(huán),即完成播放。其中,n為聲音數(shù)據(jù)字節(jié)數(shù)。

2.2xch端口寫(xiě)操作。在DSP編程中,無(wú)論是發(fā)送命令,還是發(fā)送數(shù)據(jù),都是通過(guò)寫(xiě)端口2xch來(lái)完成的。在寫(xiě)端口2xch之前,應(yīng)先讀此端口,直到所得值的bit7為0,這才表明此端口處于可寫(xiě)狀態(tài),才能進(jìn)行寫(xiě)操作。此過(guò)程的c語(yǔ)言形式如下:

while (inportb(0x22c)&0x80);

outportb(0x22c,byte);

這里假定端口基址為220h。句中byte可以是命令號(hào),也可以是數(shù)據(jù)。

3.定時(shí)器。為使播放按一定的采樣率進(jìn)行,需對(duì)數(shù)據(jù)發(fā)送進(jìn)行定時(shí)控制。這一般是借用主機(jī)定時(shí)中斷int8,將其調(diào)用頻率提高到與采樣率相當(dāng)?shù)某潭?利用其監(jiān)視、控制數(shù)據(jù)發(fā)送的時(shí)間,來(lái)滿足播音頻率的要求。關(guān)于定時(shí)中斷的編程技術(shù)已有過(guò)許多介紹,限于篇幅,不再贅述,讀讀文后的程序清單,即一目了然。應(yīng)該說(shuō)明的是,對(duì)于CPU較慢的機(jī)型如386,由于計(jì)時(shí)代碼本身的執(zhí)行時(shí)間可能已經(jīng)超過(guò)采樣率對(duì)應(yīng)的時(shí)間周期,定時(shí)控制就達(dá)不到預(yù)期的效果。這種情況下,用一個(gè)空循環(huán)來(lái)定時(shí),調(diào)整循環(huán)次數(shù),即可滿足頻率要求。此法的缺點(diǎn)是定時(shí)精度差,參數(shù)因CPU速度而異。所幸的是,目前多數(shù)配置多媒體的PC機(jī),其CPU都在486以上。

4.內(nèi)存利用。人耳可辨聲音的最高頻率可達(dá)20kHz以上,因此DSP的采樣率至少也要達(dá)到與此相當(dāng)?shù)乃?而為了容納立體聲雙聲道信息,采樣率還要再翻一倍。常見(jiàn)的WAV聲音的采樣率有44100、22050、11025等。在這么高的采樣率下,聲音的數(shù)據(jù)量自然很大,如44k采樣率下,20秒的錄音數(shù)據(jù)長(zhǎng)達(dá)800多k。為在DOS常規(guī)內(nèi)存內(nèi)處理這種規(guī)模的數(shù)據(jù),實(shí)例程序采取了分塊處理的方式

[1] [2] [3] [4] 

【DOS下DSP播音的編程】相關(guān)文章:

DOS命令04-29

DOS的特點(diǎn)電腦資料11-01

DSP放異彩04-28

防火墻·什么是DoS04-26

編程的心得03-14

給機(jī)器編程04-28

數(shù)控編程心得05-07

編程語(yǔ)言排名04-29

求職信與履歷表的DOS & DONTS04-26

有趣的編程課作文04-20