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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于DSP的調(diào)頻調(diào)制器設(shè)計(jì)

          基于DSP的調(diào)頻調(diào)制器設(shè)計(jì)

          作者: 時(shí)間:2008-06-20 來源:網(wǎng)絡(luò) 收藏

          軟件無線電的基本思想是以開放的、可擴(kuò)展的、結(jié)構(gòu)最簡(jiǎn)的硬件為通用平臺(tái),把盡可能多通信功能用可升級(jí)、可替換軟件來實(shí)現(xiàn)。其中心思想是:構(gòu)造一個(gè)具有標(biāo)準(zhǔn)化、模塊化的通用硬件平臺(tái),并通過軟件加載實(shí)現(xiàn)各種無線通信功能的一種開放式體系結(jié)構(gòu)。本文這一思想,首先構(gòu)造一個(gè)與PC機(jī)接口的硬件平臺(tái),繼而在該平臺(tái)上實(shí)現(xiàn)較為簡(jiǎn)單的FM。該系統(tǒng)的實(shí)現(xiàn)為以后研究軟件無線電其他制式的調(diào)制解調(diào)器提供了基本平臺(tái)。

          1 系統(tǒng)原理

          本系統(tǒng)以TMS320VC5402數(shù)字信號(hào)處理器()為核心搭建硬件平臺(tái),在中編程實(shí)現(xiàn)FM調(diào)制。系統(tǒng)最大的特點(diǎn)是采用通用計(jì)算機(jī)與DSP處理單元相結(jié)合的方案,系統(tǒng)中各種人機(jī)接口及控制功能、存儲(chǔ)顯示功能由PC機(jī)完成,而各種實(shí)時(shí)任務(wù)交給DSP完成,充分發(fā)揮DSP的高速處理能力及PC機(jī)的靈活性。

          1.1 系統(tǒng)結(jié)構(gòu)

          該系統(tǒng)結(jié)構(gòu)如圖1所示。他是由DSP實(shí)驗(yàn)箱及PC人機(jī)接口控制前臺(tái)組成。其中實(shí)驗(yàn)箱的DSP微處理器芯片為核心,外接射頻發(fā)射模塊及DSP外圍硬件設(shè)備,外部調(diào)制信號(hào)經(jīng)過低通濾波器后,濾除高頻噪聲,然后經(jīng)過A/D轉(zhuǎn)換把模擬信號(hào)轉(zhuǎn)換成離散序列后進(jìn)入DSP進(jìn)行處理。在硬件中通過HPI(主機(jī)接口)實(shí)現(xiàn)DSP與PC實(shí)時(shí)通信。在PC機(jī)中用軟件了控制顯示平臺(tái),實(shí)現(xiàn)對(duì)硬件處理的控制及顯示,用戶可以在軟件平臺(tái)前面板中輸入數(shù)據(jù)選擇調(diào)制參數(shù),并通過數(shù)據(jù)通信接口將數(shù)據(jù)讀人PC機(jī),在顯示平臺(tái)中以圖形方式實(shí)時(shí)顯示數(shù)據(jù)結(jié)果。

          1.2主機(jī)通信接口

          TI的C5000系列的DSP都有主機(jī)接口(Host PortInterface,HPI),用于DSP和主機(jī)之間的通信,組成主從結(jié)構(gòu)的系統(tǒng)。采用這種通信方式,完全沒有硬件和軟件開銷,而是由DSP自身的硬件來協(xié)調(diào)沖突,從而不會(huì)打斷DSP正常程序的運(yùn)行。在HPI通信方式下,DSP的片內(nèi)存儲(chǔ)器對(duì)外界完全透明,由主機(jī)通過訪問HPI的地址和數(shù)據(jù)寄存器來完成對(duì)DSP片內(nèi)存儲(chǔ)器的讀寫。以PC機(jī)為主機(jī),通過HPI來監(jiān)控DSP的運(yùn)行可以充分利用PC機(jī)上豐富的資源,組成完整的主從結(jié)構(gòu)的系統(tǒng)。

          C5000系列DSP的主機(jī)接口(HPI)主要有三種:標(biāo)準(zhǔn)的8位HPI、增強(qiáng)型的8位的HPI8和16位的HPI16。HPI接口提供了DSP加載自啟動(dòng)的一種方式和主機(jī)的實(shí)時(shí)控制DSP的途徑。TMS320VC5402的主機(jī)接口是增強(qiáng)型的8位HPID。相對(duì)于只能訪問DSP中2 kB片上存儲(chǔ)空間的標(biāo)準(zhǔn)的HPI,增強(qiáng)型的HPI8能訪問DSP的所有的片上存儲(chǔ)器。

          PC機(jī)使用并口和DSP的HPI相連,如圖2所示,HPI8的信號(hào)線分為3組:8位的數(shù)據(jù)信號(hào),4個(gè)控制信號(hào)和2個(gè)狀態(tài)信號(hào)。控制信號(hào)中,HDS1,HDS2和HCS是片選信號(hào),負(fù)責(zé)鎖存HBIL,HCNTL0,HCNTL1,HR/W狀態(tài)。HCNTL0和HCNTL1控制信號(hào)用于選擇HPI的寄存器,主機(jī)和DSP之間的通信正是通過這4個(gè)寄存器的讀寫來完成的。

          2軟件

          2.1 軟件結(jié)構(gòu)

          軟件結(jié)構(gòu)如圖3所示。建立PC機(jī)軟件控制顯示平臺(tái)的目的就是要實(shí)現(xiàn)前臺(tái)軟件與底層硬件連接。系統(tǒng)運(yùn)行后PC機(jī)執(zhí)行應(yīng)用程序,加載算法到DSP端,并將需要處理的數(shù)據(jù)傳送到DSP,計(jì)算完成后將數(shù)據(jù)傳回PC,整個(gè)過程由PC來控制啟動(dòng)、處理、結(jié)束等,這樣軟件結(jié)構(gòu)中需要有控制顯示的可視化用戶界面,同時(shí)軟件要與具體硬件連接則需要通過軟件接口程序來調(diào)用并口硬件驅(qū)動(dòng)程序來完成。

          2.2 DSP的算法設(shè)計(jì)

          系統(tǒng)要實(shí)現(xiàn)信號(hào)的是通過DSP運(yùn)算完成的,因此算法設(shè)計(jì)得是否合理將會(huì)影響到運(yùn)算的效率。具體算法的設(shè)計(jì)思路如下:

          (1)由模擬信號(hào)的調(diào)頻原理離散化后得到離散的數(shù)字信號(hào)表達(dá)式。

          (2)將離散的數(shù)字信號(hào)表達(dá)式用泰勒級(jí)數(shù)展開,并依據(jù)DSP的運(yùn)算精度確定展開的項(xiàng)數(shù)。

          (3)分析展開式,將其整理成乘加迭代的形式。因?yàn)镈SP的運(yùn)算速度的優(yōu)勢(shì)是靠其多級(jí)流水線指令處理和乘加并行指令來實(shí)現(xiàn)的,如果算法中用到乘加并行的乘加指令的迭代運(yùn)算,則效率將會(huì)得到很大提高。在本算法的迭代運(yùn)算中使用MPYS指令,MPYS是乘減并行指令,即(ACC)-(PREG)=>(ACC)與(TREG)(data_memo-ry)=>(PREG)運(yùn)算在一個(gè)指令周期內(nèi)同時(shí)執(zhí)行。

          (4)由于TMS320VC5402是16位的定點(diǎn)DSP,為了運(yùn)算的方便,把數(shù)值的范圍限制在(-1,1)之間,因此為了確保小數(shù)運(yùn)算的正確,必須把乘積移位寄存器設(shè)為SPM=1,當(dāng)執(zhí)行了任何的乘法指令后,結(jié)果將裝入PREG中,當(dāng)數(shù)據(jù)再移出時(shí),他會(huì)被左移一位以消除多余的小數(shù)位。同時(shí)在程序的編制過程中應(yīng)注意在定點(diǎn)DSP的乘法運(yùn)算會(huì)產(chǎn)生溢出,因此初值都應(yīng)乘以0.8的系數(shù)。

          2.3軟件接口程序

          軟件接口程序設(shè)計(jì)的目的是在接口板的支持下,在各種MS的操作系統(tǒng)中,通過PC的并口(ECP模式PS/2子模式)操作DSP的HPI口,實(shí)現(xiàn)對(duì)HPI相關(guān)寄存器的讀寫,以及DSP芯片的復(fù)位。由于Win2000和WinXP不支持DOS的實(shí)模式,不能直接操作計(jì)算機(jī)端口,所以我們采用SST(Scientific Software Tools)的免費(fèi)軟件DriverLINX實(shí)現(xiàn)。DriverLINX是SST開發(fā)的支持在各種Windows平臺(tái)下對(duì)硬件端口進(jìn)行操作的免費(fèi)軟件。軟件以動(dòng)態(tài)鏈接庫(kù)(.dll)的形式提供,并提供方便函數(shù)接口。軟件接口程序應(yīng)該能提供完善的接口供上層軟件調(diào)用。我們?cè)O(shè)計(jì)接口函數(shù)的描述如下:

          (1)并口的初始化
          VOID InitPP(VOID);
          (2)主機(jī)讀HPI口
          BYTE HostRead(UINI、DeviceIndex,UINT Source-Reg,UINT ByteSequence);
          (3)主機(jī)寫HPI口
          VOID HostWrite(BYTE Data,UINT DeviceIndex,UDINT DestinationReg,UINT ByteSequence);
          (4)主機(jī)置DSP復(fù)位信號(hào)為0,RESET=0,
          BOOL ResetAssert();
          (5)主機(jī)置DSP復(fù)位信號(hào)為1,RESET=1
          BOOL ResetRelease();

          2.4 可視化用戶程序

          可視化用戶程序處于整個(gè)系統(tǒng)的最高層,他不僅負(fù)責(zé)用戶的交互界面,同時(shí)實(shí)現(xiàn)主機(jī)與DSP板通信的過程所涉及到一系列操作:即建立連接、復(fù)位實(shí)驗(yàn)箱、復(fù)位DSP、打開HPI端口、加載程序、執(zhí)行讀寫操作、關(guān)閉HPI、最后關(guān)閉連接,這些操作依次執(zhí)行,所以在軟件設(shè)計(jì)時(shí)對(duì)程序采用順序結(jié)構(gòu)。

          可視化用戶程序使用VC++6.0開發(fā),主要?jiǎng)澐殖汕芭_(tái)和后臺(tái)兩大模塊。前臺(tái)模塊用于用戶交互,如調(diào)頻的調(diào)制系數(shù)、中心頻率的參數(shù)的設(shè)置以及運(yùn)算結(jié)果的采樣顯示。前臺(tái)使用較為簡(jiǎn)潔的對(duì)話框類編寫交互界面,輔以文本框、下拉選框和按扭控件實(shí)現(xiàn)。后臺(tái)模塊負(fù)責(zé)對(duì)DSP的控制和通信,同時(shí)把收到的數(shù)據(jù)處理成曲線圖形供前臺(tái)顯示。為了前臺(tái)的響應(yīng)更加流暢,本設(shè)計(jì)使用了多線程技術(shù),即前臺(tái)由主線程負(fù)責(zé),而后臺(tái)模塊由另外的一個(gè)工作線程負(fù)責(zé)。

          3 結(jié) 語

          本設(shè)計(jì)軟件無線電的軟件化思想實(shí)現(xiàn)了DSP調(diào)頻,并且該系統(tǒng)帶有人機(jī)接口及控制顯示功能,將處理數(shù)據(jù)以圖形方式實(shí)時(shí)顯示出來便于觀察和分析。系統(tǒng)中各種人機(jī)接口及控制、存儲(chǔ)顯示功能由通用計(jì)算機(jī)來實(shí)現(xiàn),而數(shù)據(jù)采集及調(diào)制解調(diào)等實(shí)時(shí)處理任務(wù)交由DSP完成,充分發(fā)揮了通用計(jì)算機(jī)的靈活性和DSP的高速實(shí)時(shí)處理能力。如果在本系統(tǒng)的基礎(chǔ)上再編寫其他制式的DSP調(diào)制算法,即可實(shí)現(xiàn)多制式的發(fā)射臺(tái)。



          評(pí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); })();