<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于DSP的OQPSK調(diào)制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

          基于DSP的OQPSK調(diào)制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

          作者: 時(shí)間:2012-04-09 來源:網(wǎng)絡(luò) 收藏


          O 引言

          本文引用地址:http://www.ex-cimer.com/article/257589.htm

          調(diào)制技術(shù)是繼OPSK之后發(fā)展起來的一種恒包絡(luò)數(shù)字調(diào)制技術(shù),由于具有較高的頻帶利用率和在頻帶受限的系統(tǒng)中抗干擾性能強(qiáng),被廣泛地應(yīng)用于移動(dòng)通信和衛(wèi)星通信領(lǐng)域。傳統(tǒng)的調(diào)制器都是由硬件電路來完成,存在電路復(fù)雜、體積大和功耗高等缺點(diǎn)。隨著高速處理器的應(yīng)用,本文提出了一種基于處理器的數(shù)字調(diào)制器實(shí)現(xiàn)方案,讓OQPSK調(diào)制器的大部分功能由處理器執(zhí)行相應(yīng)的算法實(shí)現(xiàn),此方案省去了大量的硬件電路,具有體積小、功耗低、穩(wěn)定可靠等優(yōu)點(diǎn)。

          1 OQPSK調(diào)制原理簡介

          QPSK調(diào)制由于同相支路I和正交支路Q的兩個(gè)比特ab可能同時(shí)發(fā)生變化,因而存在180°的相位突變,這在頻帶受限的系統(tǒng)中會(huì)引起信號包絡(luò)的很大起伏,造成鄰道干擾。OQPSK調(diào)制對此作了改進(jìn),它將Q支路的符號在時(shí)間上錯(cuò)開Tb,這樣上下兩個(gè)支路的相鄰碼元不可能同時(shí)變化,使得相鄰碼元相位差最大縮小至90°,從而減小了信號包絡(luò)的起伏。OQPSK調(diào)制的原理如圖1所示。

          設(shè)輸入的數(shù)據(jù)為{Uk},則OQPSK已調(diào)波可以表示成:

          式中g(shù)(t)為基帶脈沖波形,為消除碼間串?dāng)_且誤碼率最小,g(t)的波形應(yīng)要求是平方根升余弦函數(shù)。為了簡單起見,本文中設(shè)g(t)為矩形脈沖波形。

          2 OQPSK調(diào)制器的硬件選擇

          OQPSK調(diào)制器的硬件開發(fā)平臺(tái)采用的是合眾達(dá)的SEED-DEC5416嵌入式DSP開發(fā)板,其系統(tǒng)結(jié)構(gòu)原理如圖2所示。處理器是16bit定點(diǎn)DSP芯片TMS320VC5416,OQPSK信號的16位各樣點(diǎn)數(shù)據(jù)送往轉(zhuǎn)換精度只有14位的D/A轉(zhuǎn)換控制器TLC32044,該控制器只對16位中的高14位數(shù)據(jù)進(jìn)行D/A轉(zhuǎn)換,轉(zhuǎn)換后的波形送示波器顯示。

          3 OQPSK調(diào)制的軟件設(shè)計(jì)

          主程序中首先對TLC32044芯片初始化(過程請查閱相應(yīng)的PDF資料),然后調(diào)用執(zhí)行OQPSK調(diào)制子程序。下面介紹本文設(shè)計(jì)的在DSP處理器上實(shí)現(xiàn)OQPSK調(diào)制的方法。

          3.1 基于DSP的OQPSK調(diào)制算法

          設(shè)信息流為…bkakbk-1ak-1,并假定已經(jīng)保存在DSP的數(shù)據(jù)存儲(chǔ)空間中(實(shí)際應(yīng)用中可以使用單片機(jī)通過HPI接口向DSP寫入要發(fā)送的信息流),其中bkakbk-1ak-1可以看成是一個(gè)字(16位)的最低4位。將輸入的信息流串并轉(zhuǎn)換成雙比特碼元,可以對信息碼字每次右移動(dòng)2位實(shí)現(xiàn)。Q支路延遲和I支路的對應(yīng)關(guān)系可以采用測試ak、bk-1和bk這三位碼元來完成,若測試位為O,則對正弦或余弦值取負(fù)以完成單/雙極性變換的功能。因此,可以畫出基于DSP的OQPSK調(diào)制算法流程,如圖3所示。圖3中已經(jīng)假設(shè)I支路一個(gè)碼元包含2個(gè)周期的余弦波,一個(gè)周期的余弦波采樣32個(gè)點(diǎn),變量Count用于控制信息流的長度,OQPSK_Buf緩沖區(qū)用于保存調(diào)制完成的采樣點(diǎn)數(shù)據(jù)。

          3.2 正弦和余弦數(shù)據(jù)的獲取

          上述算法中需要正弦或余弦各點(diǎn)的采樣值,幅度為1的正弦各點(diǎn)采樣值大多都是小數(shù),而16位定點(diǎn)DSP芯片的操作數(shù)是整數(shù),為此要設(shè)定小數(shù)點(diǎn)在16位二進(jìn)制數(shù)中的位置,考慮到調(diào)制后波形的最大值是,因此對正弦或余弦的數(shù)值采用Q14表示法才能滿足調(diào)制后數(shù)據(jù)的范圍。顯然,在匯編程序中按“.word x”形式直接輸入正弦和余弦的各點(diǎn)采樣值(Q14)比較繁瑣,可以用下面的一段C語言程序生成正弦采樣點(diǎn)數(shù)據(jù)文件(程序中已將正弦載波的頻率歸一化),然后在TC2.0軟件的當(dāng)前路徑下將生成的包含文件sindata.inc移動(dòng)到由軟件cos2.O建立的工程文件夾內(nèi),用匯編偽指令.include將該文件包含進(jìn)來即可省去繁瑣的數(shù)據(jù)輸入。用類似的程序也可生成需要的余弦數(shù)據(jù)文件。

          4 實(shí)驗(yàn)結(jié)果

          首先,在軟件開發(fā)環(huán)境ccs2.0(c5000)下進(jìn)行OQPSK調(diào)制波形的仿真驗(yàn)證。將匯編語言源程序和命令連接文件一起編譯、鏈接并裝載運(yùn)行,接著執(zhí)行菜單命令View|Graph|Time Frenquency,打開Graph Property Dialog對話框,在該對話框中輸入標(biāo)題名“OQPSK調(diào)制信號波形”、變量0QPSK_Buf的起始地址0x0124(命令連接文件中將.bss段定位到DARAM的org=0060h上),并選擇數(shù)據(jù)的長度為512、數(shù)據(jù)類型為16-bit signed integer及Qvalue的值為14,然后點(diǎn)擊該ok按鈕即可將OQPSK_Buf緩沖區(qū)的已調(diào)信號的采樣值生成已調(diào)信號波形,如圖4所示。為了驗(yàn)證OQPSK調(diào)制算法及產(chǎn)生的波形的正確性,圖5又給出了相同的16位的數(shù)據(jù)流,在matlab環(huán)境下仿真出的OQPSK已調(diào)信號波形。兩圖的波形完全一致,且波形的最大幅度都為。

          其次,在SEED-DEC5416硬件平臺(tái)上對輸出的調(diào)制波形進(jìn)行驗(yàn)證。在附錄中源程序的開始部分增加對TLC32044芯片初始化代碼,然后再改用一個(gè)死循環(huán)重復(fù)將OQPSK_Buf緩沖區(qū)保存的已調(diào)信號數(shù)值依次送往該芯片,在示波器上就可觀察到與圖4近似完全相同的調(diào)制波形。另外,調(diào)制速率的大小可以通過從OQPSK_Buf緩沖區(qū)取數(shù)送D/A轉(zhuǎn)換器后執(zhí)行一段延時(shí)程序來控制。

          5 結(jié)束語

          本文在DSP處理器上設(shè)計(jì)實(shí)現(xiàn)的數(shù)字OQPSK調(diào)制器,省去了傳統(tǒng)調(diào)制器的大量的硬件電路,具有功耗低、抗干擾能力強(qiáng)和軟件可升級等優(yōu)點(diǎn)。



          關(guān)鍵詞: DSP OQPSK 調(diào)制系統(tǒng)

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();