大片视频免费观看视频_欧美激情猛片xxxⅹ大3之樱桃_性饥渴艳妇性色生活片在线播放_啦啦啦www视频在线观看_宝贝~你里面好紧我好爽视频_国产国产人免费人成免费视频_来自GeoGebra 的交互式_欧美又色又爽又黄的A片18禁_色欲aⅴ亚洲情无码AV

tms320c6000系列dsp編程工具與指南 淺談dsp編程

share

  本文主要是關(guān)于tms320c6000的相關(guān)介紹,并著重對(duì)tms320c6000系列dsp編程工具與指南進(jìn)行了詳盡的闡述。

  dsp

  DSP(digital singnal processor)是一種獨(dú)特的微處理器,是以數(shù)字信號(hào)來(lái)處理大量信息的器件。其工作原理是接收模擬信號(hào),轉(zhuǎn)換為0或1的數(shù)字信號(hào),再對(duì)數(shù)字信號(hào)進(jìn)行修改、刪除、強(qiáng)化,并在其他系統(tǒng)芯片中把數(shù)字?jǐn)?shù)據(jù)解譯回模擬數(shù)據(jù)或?qū)嶋H環(huán)境格式。它不僅具有可編程性,而且其實(shí)時(shí)運(yùn)行速度可達(dá)每秒數(shù)以千萬(wàn)條復(fù)雜指令程序,源源超過(guò)通用微處理器,是數(shù)字化電子世界中日益重要的電腦芯片。

  它的強(qiáng)大數(shù)據(jù)處理能力和高運(yùn)行速度,是最值得稱(chēng)道的兩大特色 DSP既是Digital Signal Processing的縮寫(xiě)(數(shù)字信號(hào)處理的理論和方法)或者是Digital Signal Processor(用于數(shù)字信號(hào)處理的可編程微處理器)的縮寫(xiě)。我們所說(shuō)的DSP技術(shù),則一般指將通用的或?qū)S玫腄SP處理器用于完成數(shù)字信號(hào)處理的方法和技術(shù)。 DSP的有以下特點(diǎn): DSP處理器采用哈佛結(jié)構(gòu)和改進(jìn)的哈佛結(jié)構(gòu)。 哈佛結(jié)構(gòu)就是將程序代碼和數(shù)據(jù)的存儲(chǔ)空間分開(kāi),各有自己的地址和數(shù)據(jù)總線。之所以采用哈佛結(jié)構(gòu),是為了并行進(jìn)行指令和數(shù)據(jù)處理,從而可以大大地提高運(yùn)算的速度。為了進(jìn)一步提高信號(hào)處理的效率,在哈佛結(jié)構(gòu)的基礎(chǔ)上,又加以改善。使得程序代碼和數(shù)據(jù)存儲(chǔ)空間之間可以進(jìn)行數(shù)據(jù)的傳輸,稱(chēng)為改善的哈佛結(jié)構(gòu)。 采用流水技術(shù)。 流水技術(shù)是將各指令的各個(gè)步驟重疊起來(lái)執(zhí)行。

  DSP處理器所采用的將程序存儲(chǔ)空和數(shù)據(jù)存儲(chǔ)空間的地址與數(shù)據(jù)總線分開(kāi)的哈佛結(jié)構(gòu),為采用流水技術(shù)提供了很大的方便。 為了提高DSP處理器的運(yùn)算速度,它們無(wú)例外地設(shè)置了硬件乘法器,以及MAC(乘并且累加)一類(lèi)的指令。 DSP處理器都為DMA單獨(dú)設(shè)置了完全獨(dú)立的總線和控制器,這是和通用的CPU很不相同,其目的是在進(jìn)行數(shù)據(jù)傳輸是完全不影響CPU及其相關(guān)總線的工作。 在DSP處理器中,設(shè)置了專(zhuān)門(mén)的數(shù)據(jù)地址發(fā)生器來(lái)產(chǎn)生所需的數(shù)據(jù)地址。數(shù)據(jù)地址的產(chǎn)生與CPU的工作是并行的,從而節(jié)省CPU的時(shí)間,提高信號(hào)的處理速度。 DSP處理器為了自身工作的需要和外部環(huán)境的協(xié)調(diào)工作。往往都設(shè)置了豐富的外設(shè)。如時(shí)鐘發(fā)生器。定時(shí)器等。

  定點(diǎn)DSP處理器和浮點(diǎn)DSP處理器。定點(diǎn)DSP中經(jīng)常要考慮溢出問(wèn)題,在浮點(diǎn)DSP基本上可以不考慮。與定點(diǎn)DSP處理器相比,浮點(diǎn)DSP處理器的速度更快,尤其是作浮點(diǎn)運(yùn)算。在實(shí)時(shí)性要求很到的場(chǎng)合。往往考慮浮點(diǎn)DSP處理器。而浮點(diǎn)DSP處理器的價(jià)格比較高,開(kāi)發(fā)難度更大。 DSP的用途 2000主要用于控制:供電,光網(wǎng)絡(luò)等。5000則是通訊和靜態(tài)圖像處理:視頻產(chǎn)品,數(shù)字無(wú)線電等。而6000是數(shù)字通信和圖像處理:移動(dòng)通信,打印機(jī),數(shù)字掃描儀等。

  dsp編程

  1、DSP編程

  對(duì)OSS驅(qū)動(dòng)聲卡的編程使用Linux文件接口函數(shù),如圖17.5,DSP接口的操作一般包括如下幾個(gè)步驟:

 ?、?打開(kāi)設(shè)備文件/dev/dsp。

  采用何種模式對(duì)聲卡進(jìn)行操作也必須在打開(kāi)設(shè)備時(shí)指定,對(duì)于不支持全雙工的聲卡來(lái)說(shuō),應(yīng)該使用只讀或者只寫(xiě)的方式打開(kāi),只有那些支持全雙工的聲卡,才能以讀 寫(xiě)的方式打開(kāi),這還依賴(lài)于驅(qū)動(dòng)程序的具體實(shí)現(xiàn)。Linux允許應(yīng)用程序多次打開(kāi)或者關(guān)閉與聲卡對(duì)應(yīng)的設(shè)備文件,從而能夠很方便地在放音狀態(tài)和錄音狀態(tài)之間 進(jìn)行切換。

  ② 如果有需要,設(shè)置緩沖區(qū)大小。

  運(yùn)行在Linux內(nèi)核中的聲卡驅(qū)動(dòng)程序?qū)iT(mén)維護(hù)了一個(gè)緩沖區(qū),其大小會(huì)影響到放音和錄音時(shí)的效果,使用ioctl()系統(tǒng)調(diào)用可以對(duì)它的尺寸進(jìn)行恰當(dāng)?shù)脑O(shè) 置。調(diào)節(jié)驅(qū)動(dòng)程序中緩沖區(qū)大小的操作不是必須的,如果沒(méi)有特殊的要求,一般采用默認(rèn)的緩沖區(qū)大小也就可以了。如果想設(shè)置緩沖區(qū)的大小,則通常應(yīng)緊跟在設(shè)備 文件打開(kāi)之后,這是因?yàn)閷?duì)聲卡的其它操作有可能會(huì)導(dǎo)致驅(qū)動(dòng)程序無(wú)法再修改其緩沖區(qū)的大小。

 ?、?設(shè)置聲道(channel)數(shù)量。

  根據(jù)硬件設(shè)備和驅(qū)動(dòng)程序的具體情況,可以設(shè)置為單聲道或者立體聲。

  ④ 設(shè)置采樣格式和采樣頻率

  采樣格式包括AFMT_U8(無(wú)符號(hào)8位)、AFMT_S8(有符號(hào)8位)、AFMT_U16_LE(小端模式,無(wú)符號(hào)16位)、 AFMT_U16_BE(大端模式,無(wú)符號(hào)16位)、AFMT_MPEG、AFMT_AC3等。使用SNDCTL_DSP_SETFMT IO控制命令可以設(shè)置采樣格式。

  對(duì)于大多數(shù)聲卡來(lái)說(shuō),其支持的采樣頻率范圍一般為5kHz到44.1kHz或者48kHz,但并不意味著該范圍內(nèi)的所有連續(xù)頻率都會(huì)被硬件支持,在 Linux下進(jìn)行音頻編程時(shí)最常用到的幾種采樣頻率是11025Hz、16000Hz、22050Hz、32000Hz 和44100Hz。使用SNDCTL_DSP_SPEED IO控制命令可以設(shè)置采樣頻率。

 ?、?讀寫(xiě)/dev/dsp實(shí)現(xiàn)播放或錄音。

  圖17.5 OSS dsp接口用戶(hù)空間操作流程

  代碼清單17.3的程序?qū)崿F(xiàn)了利用/dev/dsp接口進(jìn)行聲音錄制和播放的過(guò)程,它的功能是先錄制幾秒鐘音頻數(shù)據(jù),將其存放在內(nèi)存緩沖區(qū)中,然后再進(jìn)行放音。

  代碼清單17.3 OSS DSP接口應(yīng)用編程范例

  1 #include

  2 #include

  3 #include

  4 #include

  5 #include

  6 #include

  7 #include

  8 #define LENGTH 3 /* 存儲(chǔ)秒數(shù) */

  9 #define RATE 8000 /* 采樣頻率 */

  10 #define SIZE 8 /* 量化位數(shù) */

  11 #define CHANNELS 1 /* 聲道數(shù)目 */

  12 /* 用于保存數(shù)字音頻數(shù)據(jù)的內(nèi)存緩沖區(qū) */

  13 unsigned char buf[LENGTH *RATE * SIZE * CHANNELS / 8];

  14 int main()

  15 {

  16 int fd; /* 聲音設(shè)備的文件描述符 */

  17 int arg; /* 用于ioctl調(diào)用的參數(shù) */

  18 int status; /* 系統(tǒng)調(diào)用的返回值 */

  19 /* 打開(kāi)聲音設(shè)備 */

  20 fd = open(“/dev/dsp”, O_RDWR);

  21 if (fd 《 0)

  22 {

  23 perror(“open of /dev/dsp failed”);

  24 exit(1);

  25 }

  26 /* 設(shè)置采樣時(shí)的量化位數(shù) */

  27 arg = SIZE;

  28 status = ioctl(fd, SOUND_PCM_WRITE_BITS, &arg);

  29 if (status == - 1)

  30 perror(“SOUND_PCM_WRITE_BITS ioctl failed”);

  31 if (arg != SIZE)

  32 perror(“unable to set sample size”);

  33 /* 設(shè)置采樣時(shí)的通道數(shù)目 */

  34 arg = CHANNELS;

  35 status = ioctl(fd, SOUND_PCM_WRITE_CHANNELS, &arg);

  36 if (status == - 1)

  37 perror(“SOUND_PCM_WRITE_CHANNELS ioctl failed”);

  38 if (arg != CHANNELS)

  39 perror(“unable to set number of channels”);

  40 /* 設(shè)置采樣率 */

  41 arg = RATE;

  42 status = ioctl(fd, SOUND_PCM_WRITE_RATE, &arg);

  43 if (status == - 1)

  44 perror(“SOUND_PCM_WRITE_WRITE ioctl failed”);

  45 /* 循環(huán),直到按下Control-C */

  46 while (1)

  47 {

  48 printf(“Say something:\n”);

  49 status = read(fd, buf, sizeof(buf)); /* 錄音 */

  50 if (status != sizeof(buf))

  51 perror(“read wrong number of bytes”);

  52 printf(“You said:\n”);

  53 status = write(fd, buf, sizeof(buf)); /* 放音 */

  54 if (status != sizeof(buf))

  55 perror(“wrote wrong number of bytes”);

  56 /* 在繼續(xù)錄音前等待放音結(jié)束 */

  57 status = ioctl(fd, SOUND_PCM_SYNC, 0);

  58 if (status == - 1)

  59 perror(“SOUND_PCM_SYNC ioctl failed”);

  60 }

  61 }

  tms320c6000系列dsp編程工具與指南

  1. Why process signals digitally?

 ?。?)模擬電路由模擬組件構(gòu)成:電阻、電容及電感等,這些組件隨著電壓、溫度或機(jī)械結(jié)構(gòu)的改變會(huì)動(dòng)態(tài)影響到模擬電路的效果;

 ?。?)數(shù)字電路具有好的噪聲抑制能力,少的開(kāi)發(fā)時(shí)間和功耗

  雖然數(shù)字電路有那么多優(yōu)點(diǎn),在有些情況下還必須使用模擬電路:非常高頻的信號(hào)(》100MHz)。原因有2點(diǎn):(1)ADC轉(zhuǎn)換的限制;(2)使用數(shù)字電路很難實(shí)時(shí)處理非常高頻的信號(hào)。

  2. Why use DSP?

  DSP是Digital Siginal Processor的簡(jiǎn)稱(chēng)。

 ?。?)相對(duì)于PC等上的高端處理器,具有更低的功耗

 ?。?)相對(duì)于PC等上的高端處理器,具有更低的價(jià)格

  因此,在考慮價(jià)格、機(jī)械尺寸、低功耗以及“高頻”處理時(shí)使用DSP是較好的選擇。

  相對(duì)于嵌入式ARM而言,DSP在信號(hào)處理上具有更大的優(yōu)勢(shì),ARM偏向于控制。

  3. Tipically DSP Algorithms?

  在大部分的DSP算法中,乘積和(sum of product, SOP)是最基本的單元。

  

  DSP對(duì)乘法和加法做了優(yōu)化,乘法與加法在DSP上一般在一個(gè)指令周期內(nèi)完成,這也是為什么DSP適用于做信號(hào)處理的原因。

  4. Choose a DSP

  通過(guò)數(shù)據(jù)手冊(cè),列表比較兩者參數(shù),比如

  

  

  浮點(diǎn)DSP與定點(diǎn)DSP的使用場(chǎng)合對(duì)比:

  浮點(diǎn)DSP一般用于高精度、寬的動(dòng)態(tài)范圍、高信噪比,一般比較容易使用。定點(diǎn)DSP具有更低的功耗,更便宜,相對(duì)尺寸更小。

  5. DSP 與 ASIC(專(zhuān)用集成電路)

  ASIC聽(tīng)起來(lái)更高端,但使用場(chǎng)合較少,主要因?yàn)锳SIC開(kāi)發(fā)周期長(zhǎng)(至少1年左右),靈活性差(一旦生成流片則不可更改),耗資大。除非自己經(jīng)常使用的模塊做成流片重用,在產(chǎn)品開(kāi)發(fā)中一般不使用ASIC。

  6. TMS320系列DSP

  

  

  TI C6000系列主要分為C64x,C62x,C67x三個(gè)子系列,C62x與C64x都是定點(diǎn)DSP,C67系列為浮點(diǎn)DSP。

  結(jié)語(yǔ)

  關(guān)于tms320c6000的相關(guān)介紹就到這了,如有不足之處歡迎指正。

相關(guān)閱讀推薦:編寫(xiě)一個(gè)以匯編(ASM)語(yǔ)言為基礎(chǔ)的DSP程序

相關(guān)閱讀推薦:dsp28335如何入門(mén):程序設(shè)計(jì)步驟

share