基于DSP的調(diào)頻調(diào)制器設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
軟件無(wú)線電的基本思想是以開放的、可擴(kuò)展的、結(jié)構(gòu)最簡(jiǎn)的硬件為通用平臺(tái),把盡可能多通信功能用可升級(jí)、可替換軟件來(lái)實(shí)現(xiàn)。其中心思想是:構(gòu)造一個(gè)具有標(biāo)準(zhǔn)化、模塊化的通用硬件平臺(tái),并通過(guò)軟件加載實(shí)現(xiàn)各種無(wú)線通信功能的一種開放式體系結(jié)構(gòu)。本文基于這一思想,首先構(gòu)造一個(gè)DSP與PC機(jī)接口的硬件平臺(tái),繼而在該平臺(tái)上實(shí)現(xiàn)較為簡(jiǎn)單的FM調(diào)制器。該系統(tǒng)的實(shí)現(xiàn)為以后研究基于軟件無(wú)線電其他制式的調(diào)制解調(diào)器提供了基本平臺(tái)。
1 系統(tǒng)原理
本系統(tǒng)以TMS320VC5402數(shù)字信號(hào)處理器(DSP)為核心搭建硬件平臺(tái),在DSP中編程實(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)過(guò)低通濾波器后,濾除高頻噪聲,然后經(jīng)過(guò)A/D轉(zhuǎn)換把模擬信號(hào)轉(zhuǎn)換成離散序列后進(jìn)入DSP進(jìn)行調(diào)頻處理。在硬件中通過(guò)HPI(主機(jī)接口)實(shí)現(xiàn)DSP與PC實(shí)時(shí)通信。在PC機(jī)中用軟件設(shè)計(jì)了控制顯示平臺(tái),實(shí)現(xiàn)對(duì)硬件處理的控制及顯示,用戶可以在軟件平臺(tái)前面板中輸入數(shù)據(jù)選擇調(diào)制參數(shù),并通過(guò)數(shù)據(jù)通信接口將數(shù)據(jù)讀人PC機(jī),在顯示平臺(tái)中以圖形方式實(shí)時(shí)顯示數(shù)據(jù)結(jié)果。
1.2主機(jī)通信接口設(shè)計(jì)
TI的C5000系列的DSP都有主機(jī)接口(Host PortInterface,HPI),用于DSP和主機(jī)之間的通信,組成主從結(jié)構(gòu)的系統(tǒng)。采用這種通信方式,完全沒有硬件和軟件開銷,而是由DSP自身的硬件來(lái)協(xié)調(diào)沖突,從而不會(huì)打斷DSP正常程序的運(yùn)行。在HPI通信方式下,DSP的片內(nèi)存儲(chǔ)器對(duì)外界完全透明,由主機(jī)通過(guò)訪問(wèn)HPI的地址和數(shù)據(jù)寄存器來(lái)完成對(duì)DSP片內(nèi)存儲(chǔ)器的讀寫。以PC機(jī)為主機(jī),通過(guò)HPI來(lái)監(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ì)于只能訪問(wèn)DSP中2 kB片上存儲(chǔ)空間的標(biāo)準(zhǔn)的HPI,增強(qiáng)型的HPI8能訪問(wèn)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之間的通信正是通過(guò)這4個(gè)寄存器的讀寫來(lái)完成的。
2軟件設(shè)計(jì)
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è)過(guò)程由PC來(lái)控制啟動(dòng)、處理、結(jié)束等,這樣軟件結(jié)構(gòu)中需要有控制顯示的可視化用戶界面,同時(shí)軟件要與具體硬件連接則需要通過(guò)軟件接口程序來(lái)調(diào)用并口硬件驅(qū)動(dòng)程序來(lái)完成。
2.2 DSP的調(diào)頻算法設(shè)計(jì)
系統(tǒng)要實(shí)現(xiàn)信號(hào)的調(diào)頻是通過(guò)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í)流水線指令處理和乘加并行指令來(lái)實(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í)在程序的編制過(guò)程中應(yīng)注意在定點(diǎn)DSP的乘法運(yùn)算會(huì)產(chǎn)生溢出,因此初值都應(yīng)乘以0.8的系數(shù)。
2.3軟件接口程序
軟件接口程序設(shè)計(jì)的目的是在接口板的支持下,在各種MS的操作系統(tǒng)中,通過(guò)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板通信的過(guò)程所涉及到一系列操作:即建立連接、復(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é) 語(yǔ)
本設(shè)計(jì)基于軟件無(wú)線電的軟件化思想實(shí)現(xiàn)了DSP調(diào)頻調(diào)制器,并且該系統(tǒng)帶有人機(jī)接口及控制顯示功能,將處理數(shù)據(jù)以圖形方式實(shí)時(shí)顯示出來(lái)便于觀察和分析。系統(tǒng)中各種人機(jī)接口及控制、存儲(chǔ)顯示功能由通用計(jì)算機(jī)來(lái)實(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)。