基于SYSTEMVIEW的直序擴頻通信系統(tǒng)仿真_第1頁
基于SYSTEMVIEW的直序擴頻通信系統(tǒng)仿真_第2頁
基于SYSTEMVIEW的直序擴頻通信系統(tǒng)仿真_第3頁
基于SYSTEMVIEW的直序擴頻通信系統(tǒng)仿真_第4頁
基于SYSTEMVIEW的直序擴頻通信系統(tǒng)仿真_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

IV

題目基于SystemView的直序擴頻通信系統(tǒng)仿真

摘要

擴頻通信系統(tǒng)與常規(guī)的通信系統(tǒng)相比,具有很強的抗干擾能力,如抗人為干擾、抗窄帶干擾、抗多徑干擾等,并具有信息隱蔽、多址保密通信等特點,已從軍事應用向民用通信應用迅速發(fā)展。

利用SystemView軟件作為平臺,對擴頻通信中最典型的擴頻工作方式———直接序列擴頻系統(tǒng)(DSSS)進行了仿真分析;通過時域波形對比發(fā)送端和接收終端兩個波形圖,可明顯觀察到,解擴后的信號與輸入的原始信號波形基本一致,并注意到接收端有一些毛刺,這是由于時間脈沖信號的脈寬有誤差而造成的。通過對頻譜波形的分析可知,擴頻系統(tǒng)抗噪聲能力很強,當不斷加大噪聲的幅度,達到系統(tǒng)的干擾門限時,則不能準確地恢復原始信息。結(jié)果證明隨著擴頻增益的增大,系統(tǒng)的誤碼率越小,同時擴頻系統(tǒng)性能的好壞很大程度上還取決于擴頻碼的特性。

關(guān)鍵詞擴頻通信仿真SystemView

TitleBasedonTheSystemViewDirectSequenceSpread

SpectrumCommunicationSystemSimulation

Abstrac

Thespreadspectrumcommunicationsystemandtheconventionalcommunicationsystem,haveverystrongcomparedtheanti-interferenceability,suchasHIVhumaninterference,fightnarrowbandinterference,fightmultipathinterference,etc,andhastheinformationhiding,multipleaddresssecretcommunicationandothercharacteristics,alreadyfrommilitaryapplicationtocivilcommunicationapplicationdevelopingrapidly.

UseSystemViewsoftwareplatformtospreadspectrumcommunication,asthemosttypicalspreadspectrumwork--waydirectsequencespreadspectrumsystem(DSSS)areanalyzed;Throughthetimedomainwaveformcontrastthesendingendandreceivingterminaltwowaveformfigure,canobviouslyobservedaftertheexpansion,solutionandtheinputsignaloftheoriginalsignalwaveform,andpayattentiontothesameatthereceivingendhassomeburr,thisisduetothetimepulsesignalpulsewidthiscausedbytheerror.Throughtheanalysisofthewaveformoffrequencyspectrum,itisknownthatspreadspectrumsystemanti-noiseabilityisverystrong,whenrisingoftheamplitude,achievesystemnoiseinterferencethreshold,itcan'taccuratelyrestoredtheoriginalmessage.Resultsshowthatwiththeincreaseofspreadspectrumgain,thesystemberissmaller,andspreadspectrumsystemtheperformancetoalargeextentdependsonthecharacteristicsofthecodeisspreadspectrum.

KeywordspreadspectrumcommunicationsimulationSystemView

目錄

20784

1.前言

1.前言

1.1選題背景、意義

擴頻通信(spreadspectrumcommunication)是近幾年內(nèi)迅速發(fā)展起來的一種通信技術(shù)。在早期研究這種技術(shù)的主要目的是為提高軍事通信的保密和抗干擾的性能,因此這種技術(shù)的開發(fā)和應用一直是處于保密狀態(tài)。美國在20世紀50年代中期,就開始了對擴頻通信的研究,當時主要側(cè)重在空間探測、衛(wèi)星偵察和軍用通信等方面。以后,隨著民用通信的頻帶擁擠日益嚴重,又由于近代微電子技術(shù)、信號處理技術(shù)、大規(guī)模集成電路和計算機技術(shù)的快速發(fā)展,與擴頻通信有關(guān)的器件的成本大大地降低,從而進一步推動了擴頻通信在民用領域的發(fā)展金額應用,而且也使擴頻通信的理論和技術(shù)也得到了進一步的發(fā)展。1990年1月,國際無線電咨詢委員會(CCIR,現(xiàn)為ITUR)在研究未來民用陸地移動通信系統(tǒng)的計劃報告中已明確地建議采用擴頻通信技術(shù)。

從擴頻技術(shù)的歷史可以看出,每一次技術(shù)上的大發(fā)展都是由巨大的需求驅(qū)動的。軍事通信抗干擾的驅(qū)動以及個人通信業(yè)務的驅(qū)動使得擴頻技術(shù)的抗干擾性能和碼分多址能力得到最大限度的挖掘。展望未來,第四代移動通信系統(tǒng)(4G)的驅(qū)動無疑會使擴頻技術(shù)傳輸高速數(shù)據(jù)的能力得到更大的拓展。

擴頻通信,即擴展頻譜通信(SpreadSpectrumCommunication),它與光纖通信、衛(wèi)星通信,一同被譽為進入信息時代的三大高技術(shù)通信傳輸方式。擴頻通信是將待傳送的信息數(shù)據(jù)被偽隨機編碼(擴頻序列:SpreadSequence)調(diào)制,實現(xiàn)頻譜擴展后再傳輸;接收端則采用相同的編碼進行解調(diào)及相關(guān)處理,恢復原始信息數(shù)據(jù)。這種通信方式與常規(guī)的窄道通信方式是有區(qū)別的:一是信息的頻譜擴展后形成寬帶傳輸;二是相關(guān)處理后恢復成窄帶信息數(shù)據(jù)。

1.2國內(nèi)外現(xiàn)狀

擴頻通信技術(shù)誕生得較早,從20世紀40年代起,人們就開始了對擴頻技術(shù)的研究,其抗干擾性、抗竊聽、自50年代中期美國軍方開始研究,擴頻通信技術(shù)一直為軍事通信所獨占,廣泛應用于軍事通信、電子對抗以及導航、測量等各個領域。進入20世紀60年代后,隨著科學技術(shù)的迅猛發(fā)展,許多新型器件的出現(xiàn),特別是大規(guī)模、超大規(guī)模集成電路、微處理器、數(shù)字信號處理(DSP)器件、擴頻專用集成電路(ASIC)以及FPGA等這樣的新型器件的問世,使擴頻通信技術(shù)有了重大的突破和發(fā)展。到本世紀80年代初擴頻通信技術(shù)開始被應用于民用通信領域。為了滿足目益增長的民用通信容量的需求和有效地利用頻譜資源,各國都紛紛提出在數(shù)字峰窩移動通信、衛(wèi)星移動通信和未來的個人通信中采用擴頻技術(shù),擴頻技術(shù)已廣泛應用于蜂窩電話、無繩電話、微波通信、無線數(shù)據(jù)通信、遙測、監(jiān)控、報警等系統(tǒng)中。

從國內(nèi)來看,近十多年來,出于民用通信特別是陸地移動通信的迅速發(fā)展,擴頻通信的研究也在不斷深入。各大高校及一些科研機構(gòu)都在進行這方面的工作,如清華大學、天津大學、北京郵電大學、西安電子科技大學、南京郵電大學等都在積極地開展擴頻通信系統(tǒng)的研究。

從國外來看,軍事通信技術(shù)的進步和發(fā)展,軍工產(chǎn)品向民用產(chǎn)品的轉(zhuǎn)化,直接推動了擴頻通信理論、方法、技術(shù)等方面的研究發(fā)展和應用普及。

抗測向等方面的能力早己被人們熟知。但由于擴頻系統(tǒng)的設備復雜等多方面的原因,致使擴頻通信技術(shù)一直都發(fā)展得較為緩慢。

2.直序擴頻通信系統(tǒng)

2.1定義

直接序列擴頻系統(tǒng)是將要發(fā)送的信息用偽隨機碼(PN碼)擴展到一個很寬的頻帶上去,在接收端,用與發(fā)端擴展用的相同的偽隨機碼對接收到的擴頻信號進行相關(guān)處理,恢復出發(fā)送的信息。

DSSS局域網(wǎng)可在很寬的頻率范圍內(nèi)進行通信,支持1~2Mb/s數(shù)據(jù)速率,在發(fā)送和接收端都以窄帶方式進行,而傳輸過程中則以寬帶方式通信。

擴頻技術(shù)在具體實施時由多種方案,但思路相同:把索引(也稱為碼或序列)加入到通信信道,插入碼的方式正好定義了所討論的擴頻技術(shù)。術(shù)語“擴頻”指將信號帶寬擴展幾個數(shù)量級,在信道中加入索引即可實現(xiàn)擴頻。

擴頻技術(shù)更加精確的定義是:擴頻是通過注入一個更高頻率的信號將基帶信號擴展到一個更寬的頻帶內(nèi)的射頻通信系統(tǒng),即發(fā)射信號的能量被擴展到一個更寬的頻帶內(nèi)使其看起來如同噪聲一樣。擴展帶寬與初始信號之比稱為處理增益(dB),典型的擴頻處理增益可以從10dB到60dB。

采用擴頻技術(shù),在天線之前發(fā)射鏈路的某處簡單的引入相應的擴頻碼,這個過程稱為擴頻處理,結(jié)果將信息擴散到一個更寬的頻帶內(nèi)。在接收鏈路中數(shù)據(jù)恢復之前移去擴頻碼,稱為解擴。解擴是在信號的原始帶寬上重新構(gòu)建信息。顯然,在信息傳輸通路的兩端需要預先知道擴頻碼。

2.2基本原理

擴展頻譜通信(SpreadSpectrumCommunication)簡稱擴頻通信。擴頻通信的基本特征是使用比發(fā)送的信息數(shù)據(jù)速率高許多倍的偽隨機碼把載有信息數(shù)據(jù)的基帶信號的頻譜進行擴展,形成寬帶的低功率譜密度的信號來發(fā)射。香農(nóng)(Shannon)在信息論的研究中得出了信道容量的公式:

C=Blog2(1+S/N)式(2-1)

這個公式指示出:如果信息傳輸速率C不變,則帶寬B和信噪比S/N是可以互換的,就是說增加帶寬就可以在較低的信噪比的情況下以相同的信息率來可靠的傳輸信息,甚至在信號被噪聲淹沒的情況下,只要相應的增加信號帶寬,仍然保持可靠的通信,也就是可以用擴頻方法以寬帶傳輸信息來換取信噪比上的好處。

2.3擴頻通信系統(tǒng)的主要特點

擴頻通信技術(shù)在發(fā)端以擴頻編碼進行擴頻調(diào)制,在收端以相關(guān)解調(diào)技術(shù)收信,這一過程使其具有諸多優(yōu)良特性:

(1)抗干擾性強

抗干擾是擴頻通信主要特性之一,比如信號擴頻寬度為100倍,窄帶干擾基本上不起作用,而寬帶干擾的強度降低了100倍,如要保持原干擾強度,則需加大100倍總功率,這實質(zhì)上是難以實現(xiàn)的。因信號接收需要擴頻編碼進行相關(guān)解擴處理才能得到,所以即使以同類型信號進行干擾,在不知道信號的擴頻碼的情況下,由于不同擴頻編碼之間的不同的相關(guān)性,干擾也不起作用。正因為擴頻技術(shù)抗干擾性強,美國軍方在海灣戰(zhàn)爭等處廣泛采用擴頻技術(shù)的無線網(wǎng)橋來連接分布在不同區(qū)域的計算機網(wǎng)絡。

表示擴頻通信特性的一個重要參數(shù)是擴頻增益G(SpreadingGain),其定義為擴頻前的信號帶寬B1與擴頻后的信號帶寬B2之比。G=B2/B1擴頻通信中,接收端對接收到的信號做擴頻解調(diào),只提取擴頻編碼相關(guān)處理后帶寬為B1的信號成份,而排除了擴展到寬帶B2中的干擾、噪聲和其他用戶通信的影響,相當于把接收信噪比提高了G倍??紤]到輸出端的信噪比和接收系統(tǒng)損耗,可以認為實際的擴頻增益帶來的信噪比的改善為:M=G-輸出端信噪比一系統(tǒng)損耗公式中的M叫做抗干擾容限。

(2)隱蔽性強、干擾小

因信號在很寬的頻帶上被擴展,則單位帶寬上的功率很小,即信號功率譜密度很低。信號淹沒在白噪聲之中,別人難于發(fā)現(xiàn)信號的存在,再加之不知擴頻編碼,就更難拾取有用信號。而極低的功率譜密度,也很少對其他電訊設備構(gòu)成干擾。

(3)易于實現(xiàn)碼分多址

擴頻通信占用寬帶頻譜資源通信,改善了抗干擾能力,由于擴頻通信要用擴頻編碼進行擴頻調(diào)制發(fā)送,而信號接收需要用相同的擴頻編碼之間的相關(guān)解擴才能得到,這就給頻率復用和多址通信提供了基礎。充分利用不同碼型的擴頻編碼之間的相關(guān)特性,分配給不同用戶不同的擴頻編碼,就可以區(qū)別不同的用戶的信號,眾多用戶,只要配對使用自己的擴頻編碼,就可以互不干擾地同時使用同一頻率通信,從而實現(xiàn)了頻率復用,使擁擠的頻譜得到充分利用。發(fā)送者可用不同的擴頻編碼,分別向不同接收者發(fā)送數(shù)據(jù);同樣,接收者用不同的擴頻編碼,就可以收到不同的發(fā)送者送來的數(shù)據(jù),實現(xiàn)了多址通信。

(4)抗多徑干擾

在無線通信中,抗多徑干擾問題一直是難以解決的問題,利用擴頻編碼之間的相關(guān)特性;在接收端可以用相關(guān)技術(shù)從多徑信號中提取分離出最強的有用信號,也可把多個路徑來的同一碼序列的波形相加使之得到加強,從而達到有效的抗多徑干擾。

2.4擴頻通信的方式

擴頻系統(tǒng)包括下面幾種擴頻方式:

1)直接序列擴頻,記為DS(DirectSequence);

2)跳頻,記為FH(FrequencyHopping);

3)跳時,記為TH(TimeHopping);

4)線性調(diào)頻,記為Chirp。

除了上面四種基本方式外,還有這些擴頻方式的組合方式,如FH/DS,TH/DS,F(xiàn)H/TH等[6]。本論文主要是針對直接序列擴頻系統(tǒng)干擾性能的研究,下面對其進行簡單介紹。

2.5偽隨機序列-m序列

在擴頻系統(tǒng)中,信號的頻譜擴展是通過擴頻碼實現(xiàn)的,擴頻碼對整個系統(tǒng)的性能起著決定性的作用。系統(tǒng)的抗干擾、抗噪聲、抗衰落、抗截獲、信息的隱蔽和保密、多址通信以及實現(xiàn)同步與捕獲等都是與擴頻碼的設計密切相關(guān)的[8]。能滿足上述要求的擴頻編碼應具有如下理想特性:

1)偽隨機碼應必需具有尖銳的自相關(guān)函數(shù),而互相關(guān)函數(shù)應接近于零;

2)具有足夠長的碼周期,以確??箓善?、抗干擾的要求;

3)有足夠多的獨立地址數(shù),以實現(xiàn)碼分多址的要求;

4)工程上易于產(chǎn)生、加工、復制和控制。

理論上白噪聲具有瞬時值服從正態(tài)分布,功率譜在很寬頻帶內(nèi)都是均勻的。它具有優(yōu)良的相關(guān)特性,但是至今無法實現(xiàn)對白噪聲放大、調(diào)制、檢測、同步及控制等。因此,我們必需選用類似于帶限白噪聲統(tǒng)計特性的偽隨機碼信號來逼近它,并用做擴頻系統(tǒng)的擴頻碼。m序列是最長線性移位寄存器序列,是偽隨機序列中最重要的一種。這種序列易于產(chǎn)生,有優(yōu)良的自相關(guān)特性[9-12]。它的產(chǎn)生是由移位寄存器加反饋形成的,其結(jié)構(gòu)如圖2-1所示。

圖2-1反饋移位寄存器結(jié)構(gòu)

A.m序列的性質(zhì)

主要有以下幾點:

1)序列的平衡性:m序列一個周期中“1”的個數(shù)比“0”多1,且1的個數(shù)為2n-1,0的個數(shù)為2n-1-1。

2)移位可加性:某個m序列同相移為任意值的同一m序列的模2和是另一相移的m序列。

3)在周期為p=2-1的m序列中,總共有2個游程,有一個長度為n的1游程,一個長度為n-1的0游程。

B.m序列信號的產(chǎn)生

1)序列多項式與特征多項式

設線性移位寄存器產(chǎn)生的序列為

{a}=a,a,a,…

定義以二元有限域的元素a(n=0,1,2,…)為系數(shù)多項式叫序列多項式。

G(x)=a+ax+a2x2+…=(模2加)式(2-1)

式中a取0,1兩個值,符號x的冪次表示序列元素的位置。

若r級線性移位寄存器的初始狀態(tài)為

a,a,…,a

且滿足線性反饋邏輯

a=ca+ca+…+ca(模2加)式(2-2)

可得序列多項式G(x)與反饋邏輯函數(shù)關(guān)系:

G(x)=式(2-3)

如果把模2加法器反饋到第一級的連線c=1考慮進去,式2-12的分母就是反饋邏輯。令

F(x)=1+=式(2-4)

為特征多項式。因c=1,所以上式變?yōu)?/p>

G(x)=1/F(x)式(2-5)

上式說明序列多項式是特征多項式的倒數(shù)。知道了特征多項式,通過長除就可以求出G(x).

2)本原多項式

設F(x)=,c=1,c=1是F域上的特征多項式,以G(F)代表由特征多項式所產(chǎn)生的所有非零序列的集合。于是G(F)中之非零序列均為m序列的充要條件是F(x)為F上的本原多項式。

所謂本原多項式是指F(x)是不可約的,F(xiàn)(x)可整除1+x,p=2-1,F(xiàn)(x)除不盡1+x,q<p.

在實際應用時,常常是根據(jù)需要確定所要求的碼長,有p=2-1確定移位寄存器的級數(shù)r,查本原多項式表,確定F(x),由F(x)就可以決定線性移位寄存器的反饋連線。

2.6直接序列擴頻通信系統(tǒng)

直接序列擴頻系統(tǒng)是將要發(fā)送的信息用偽隨機(PN)序列擴展到一個很寬的頻帶上去,在接收端,用與發(fā)端擴展相同的偽隨機序列對接收到的擴頻信號進行相關(guān)處理,恢復出原來的信息[7]。圖2-2是直擴系統(tǒng)的組成原理框圖。

圖2-2直擴系統(tǒng)組成框圖

由信源輸出的信號。a(t)是碼元持續(xù)時間為Ta的信息流,偽隨機碼產(chǎn)生器產(chǎn)生的偽隨機碼為。c(t)每一偽隨機碼碼元寬度或切普(chip)寬度為Tc。將信息碼a(t)和c(t)進行模2加,產(chǎn)生一速率與偽隨機碼速率相同的擴頻序列,然后再用擴頻序列去調(diào)制載波,這樣就得到已擴頻調(diào)制的射頻信號。

在接收端,接收到的擴頻信號經(jīng)高放和混頻后,用與發(fā)端同步的偽隨機序列對中頻的擴頻調(diào)制信號進行相關(guān)解擴,將信號的頻帶恢復為信息序列a(t)的頻帶,即為中頻調(diào)制信號,然后再進行解調(diào),恢復出所傳輸?shù)男畔(t),從而完成信息的傳輸。對于千擾和噪聲,由于和偽隨機序列不相關(guān),在相關(guān)解擴器的作用下,相當于進行了一次擴頻。從而千擾和噪聲的頻譜被擴展,其譜密度降低,這樣就大大降低了進入信號通頻帶內(nèi)的干擾功率,使調(diào)制解調(diào)器的輸入信噪比和信干比提高,提高系統(tǒng)的抗千擾能力。

直接序列擴頻系統(tǒng)簡稱直接擴頻(DSS)系統(tǒng)或叫直接序列(DS)系統(tǒng),是目前使用最多,最典型的擴頻工作方式,直擴方式是在發(fā)端直接用具有高碼率的擴頻編碼去擴展信號的頻譜,而在收端用相同的擴頻編碼進行解擴使擴頻信號還原為原始信號。直接序列系統(tǒng)中用的編碼序列通常是偽隨機序列或叫偽噪聲(PN)碼。要傳送的信息經(jīng)數(shù)字化后變成二元數(shù)字序列,它和偽隨機序列模二相加后變成復合碼去調(diào)制載波。在直接序列系統(tǒng)中通常對載波進行相依鍵控調(diào)制。當擴頻調(diào)制后由天線發(fā)射出去。在接收機中要有一個和發(fā)射機中的偽隨機碼同步的本地碼,對接收信號進行解擴,解擴后的信號送到解調(diào)器取出傳送的信息。

2.7直接序列擴頻通信系統(tǒng)性能的分析

2.7.1抗干擾能力

直接擴頻通信系統(tǒng)具有較強的抗干擾能力,通常工作在強干擾環(huán)境,這些干擾可分為自然干擾和人為干擾。自然干擾主要有多路徑干擾、雨雪干擾、信道衰落和多用戶干擾等。接收機內(nèi)部噪聲也歸于自然干擾。人為干擾是敵方故意施放的干擾,例如部分頻帶干擾、脈沖干擾、單頻連續(xù)波干擾等。

比較常見的是噪聲干擾,可以用高斯白噪聲作為其模型,其功率譜密度覆蓋擴頻系統(tǒng)頻帶。本小節(jié)只討論這種情況。接收信號u(t)為:

u(t)=Ad(t)pn(t)cosω0t+n(t)式(2-6)

設n(t)是獨立的、0均值帶限f平穩(wěn)隨機過程,功率譜密度為S(f),噪聲功率為:

E(|n(t)|)==P式(2-7)

在系統(tǒng)同步后,基帶濾波器濾除ω0及以上的高頻分量,噪聲輸出成分為:

N(t)=式(2-8)

其中h(t)為基帶濾波器的傳輸函數(shù)。

由于擴頻碼pn(t)和噪聲n(t)相互獨立,n(t)為0均值的隨機過程,所以噪聲輸出成分的均值為0。

而噪聲輸出成分的方差,即噪聲輸出成分的平均功率為:

=式(2-9)

式中,R(β-α)=E[n(α)n(β)],是噪聲的自相關(guān)函數(shù),等于它的功率譜密度S(f)的付氏變換。而Rpn=EPn(t-α)Pn(t-β],是擴頻編碼的自相關(guān)函數(shù),為擴頻編碼功率譜密度S(f)付氏變換。

=式(2-10)

這里,H(f)是理想基帶濾波器的頻率特性,h(t)付氏變換。因此,|H(f)|在基帶濾波器的通帶(-f,f)內(nèi)為1,其他頻帶范圍均為0。f為基帶信息的速率,這樣:

=式(2-11)

我們定義反映擴頻通信特征的重要參數(shù)-擴頻增益G,在擴頻通信中,接收機作解擴解調(diào)后,只提取偽隨機編碼相關(guān)處理后的帶寬為B1的信號成分,而排除掉擴展到寬頻帶B2中的外部干擾、噪聲等其他影響。擴頻增益G準確反映了擴頻通信的這種能力。所以根據(jù)G的定義,系統(tǒng)噪聲輸出功率可表示為:

PP=P/G式(2-12)

由上式可知,噪聲輸出功率與擴頻增益成反比。因此系統(tǒng)擴頻增益越大,對噪聲干擾的抑制能力越強。

對于式2-7,擴頻碼pn(t)對噪聲n(t)在頻域上做卷積,實際上是擴頻碼對基帶噪聲干擾作頻譜擴展,擴展后的噪聲功率譜密度既然明顯降低,為原譜密度的1/G,而能經(jīng)基帶濾波器輸出的噪聲功率也就僅為原噪聲功率的1/G,實現(xiàn)了對噪聲干擾的抑制,體現(xiàn)了擴頻通信系統(tǒng)的抗干擾能力。

需要指出的是,上述結(jié)果是在噪聲干擾為基帶B1的廣義平穩(wěn)隨機過程,即噪聲功率譜分布在(-f,f)內(nèi)的情況下得出的。可以證明,當噪聲帶寬非常寬時,擴頻通信系統(tǒng)對噪聲功率不再有明顯的抑制能力。因此,擴頻通信系統(tǒng)對象熱噪聲這樣的帶寬無限寬的干擾是無能為力的。

2.7.2信噪比和誤碼率

信噪比和誤碼率是數(shù)據(jù)通信最重要的性能指標,它充分反映了數(shù)據(jù)通信的抗噪聲能力和傳輸數(shù)據(jù)的準確性,這里開始分析直接擴頻系統(tǒng)的信噪比和誤碼率?;鶐V波器是0->T的積分器和在T時刻的門限判決,載波信號和本地載波信號幅值在這里都用來表示,P是信號功率,T時刻為判決時刻。擴頻通信系統(tǒng)的發(fā)射信號:

S(t)=d(t)pn(t)cosω0t式(2-13)

忽略傳輸時延和衰減,其接收信號為:

u(t)=S(t)+n(t)式(2-14)

這里,n(t)是0均值的高斯白噪聲,在擴頻通信的整個頻帶上有N/2的雙邊功率譜密度。在系統(tǒng)收發(fā)兩端已完全同步的情況下,并且積分器在積分期間,d(t)是不變的,要么是+1,要么是-1,仍用d表示,那么經(jīng)解調(diào)后的接收信號送往積分器輸出為:

v(t)=PT*d+式(2-15)

式中第一項是有用信號,PT為在信息數(shù)據(jù)脈寬T內(nèi)的信號能量,d是信息數(shù)據(jù)的正、負狀態(tài),即發(fā)送來的信息數(shù)據(jù)。式中第二項為噪聲,在T時刻積分器的噪聲輸出為:

n(T)=式(2-16)

它的準確積分結(jié)果很難給出,但n(t)是與pn(t)獨立的0均值高斯白噪聲,因此n(T)的統(tǒng)計特性為:

均值:E[n(T)]=0式(2-17)

方差:=式(2-18)

式中R(0)是噪聲自相關(guān),對N/2的雙邊功率譜密度的白噪聲,則R(0)=N/2。R(0)是擴頻碼的自相關(guān),R(0)=1,R(0)是信號功率為P的載波自相關(guān),有R(0)=P。

作為通信技術(shù)標準參量的信噪比,是有用信號功率與噪聲功率之比。對隨機變量檢測的場合,信噪比也是該隨機變量的均值的平方與它的方差之比。因此,擴頻通信系統(tǒng)的接收機對發(fā)送來的擴頻信號作相關(guān)解調(diào)處理時,當與發(fā)送來的信號的擴頻碼完全同步的情況下,積分器輸出的有用信號功率為(PT*d)=(PT),這也就是把v(t)作為隨機變量時,它的均值的平方。積分器輸出的噪聲信號功率為,即v(t)的方差。因此,擴頻通信的輸出信噪比為:

==式(2-19)

式中,P為接收的有用信號功率,T為信息數(shù)據(jù)脈碼寬度,PT=E為1bit信息數(shù)據(jù)的信號能量。

由于信道和接收機中的高斯白噪聲和通常來自信到外部的窄帶隨機過程是完全獨立的,在這兩種噪聲干擾存在的情況下,擴頻通信的輸出信噪比為:

==

=式(2-20)

那么此時,誤碼率為:

P=erfc式(2-21)

P

10

10

10

10

-1001020

圖2-3擴頻通信系統(tǒng)誤碼率特性曲線

3.SystemView簡介

通信技術(shù)的發(fā)展日新月異,通信系統(tǒng)也日趨復雜,因此,在通信系統(tǒng)的設計開發(fā)過程中,在進行實際硬件系統(tǒng)試驗之前,軟件仿真己成為必不可少的一部分。目前,電子設計自動化EDA(ElectronicDesignAutomatic)技術(shù)已經(jīng)成為電子設計的潮流。為了使繁雜的電子設計過程更加便捷,出現(xiàn)了許多針對不同層次應用的EDA軟件。美國Elanix公司推出的基于PC機Windwos平臺的SystemView動態(tài)系統(tǒng)仿真軟件,是其中一個非常優(yōu)秀的EDA軟件。

3.1SystemView軟件介紹

SystemView是一個信號級的系統(tǒng)仿真軟件,主要用于電路與通信系統(tǒng)的設計、仿真,是一個強有力的動態(tài)系統(tǒng)分析工具,能滿足從數(shù)字信號處理、濾波器設計、直到復雜的通信系統(tǒng)等不同層次的設計、仿真要求。SystemView以模塊化和交互式的界面,在大家熟悉的Windows窗口環(huán)境下,為用戶提供了一個嵌入式的分析引擎。使用SystemView你只需要關(guān)心項目的設計思想和過程,而不必花費大量的時間去編程建立系統(tǒng)仿真模型。用戶只需使用鼠標器點擊圖標即可完成復雜系統(tǒng)的建模、設計和測試,而不會花費過多的時間和精力通過編程來建立系統(tǒng)的仿真模型,也不必擔心程序中是否存在編程錯誤.

SystemView是一個完整的動態(tài)系統(tǒng)設計、分析和仿真的可視化開發(fā)環(huán)境它可以構(gòu)造各種復雜的模擬、數(shù)字、數(shù)模混合及多速率系統(tǒng),可用于各種線性、非線性控制系統(tǒng)的設計和仿真。尤具特色的是,它可以很方便地進行各種濾波器的設計。系統(tǒng)備有通信、邏輯、數(shù)字信號處理(DSP)、射頻/模擬、碼分多址個人通信系統(tǒng)(CDMA/PCS)、數(shù)字視頻廣播(DVB)系統(tǒng)、自適應濾波器、第三代無線移動通信系統(tǒng)等專業(yè)庫可供選擇,適合于各種專業(yè)設計人員。該系統(tǒng)支持外部數(shù)據(jù)的輸入和輸出,支持用戶自己編寫代碼(C/C++),兼容Matlab軟件。同時,提供了與硬件設計工具的接口,支持Xilinx公司的FPGA芯片和TI公司的DSP芯片,它已大量地應用于現(xiàn)代數(shù)字信號處理、通信系統(tǒng)及控制系統(tǒng)設計與仿真等領域。

3.2SystemView主要特點

SystemView仿真軟件相對于其它軟件來說,具有如下主要優(yōu)點:

(1)能仿真大量的應用系統(tǒng)。能在DSP、通訊和控制系統(tǒng)應用中構(gòu)造復雜的模擬、數(shù)字、混合和多速率系統(tǒng)。具有大量可選擇的庫,允許用戶有選擇地增加通訊、邏輯、DSP和射頻/模擬功能模塊。特別適合無線電話(GSM、CDMA、FDMA、TDMA、DSSS)、無繩電話、尋呼機和調(diào)制解調(diào)器以及衛(wèi)星通信系統(tǒng)(GPS、DVBS、LEOS)等的設計;能夠仿真DSP結(jié)構(gòu);各種系統(tǒng)時域/頻域分析和譜分析;對射頻/模擬電路(混合器,放大器,RLC電路和運放電路)進行理論分析和失真分析。

(2)快速方便的動態(tài)系統(tǒng)設計與仿真。使用熟悉的Windows界面和功能鍵,SystemView可以快速建立和修改系統(tǒng),并在對話框內(nèi)快速訪問和調(diào)整參數(shù),實時修改實時顯示。不用寫一行代碼即可建立用戶習慣的子系統(tǒng)庫(MetaSystem)。SystemView圖標庫包括幾百種信號源、接收端、操作符和功能塊。信號源和接收端圖標允許在SystemView內(nèi)部生成和分析信號,并提供可外部處理的各種文件格式和輸入/輸出數(shù)據(jù)接口。

(3)在報告中方便地加入SystemView的結(jié)論。SystemView通過Notes(注解)很容易在屏幕上描述系統(tǒng);生成的SystemView系統(tǒng)和輸出的波形圖可以很方便地使用復制和粘貼命令插入word等文字處理器。

(4)提供基于組織結(jié)構(gòu)圖方式的設計。通過利用SystemView中的圖符和MetaSystem(子系統(tǒng))對象的無限制分層結(jié)構(gòu)功能,SystemView能很容易地建立復雜的系統(tǒng)。首先可以定義一些簡單的功能組,再通過對這些簡單功能組的連接進而實現(xiàn)一個大系統(tǒng)。這樣,單一的圖符就可以代表一個復雜系統(tǒng)。MetaSystem的連接使用也與系統(tǒng)提供的其他圖符同樣簡單,它可以在另一窗口中單獨顯示,也可以展開到主窗口中。

(5)多速率系統(tǒng)和并行系統(tǒng)。SystemView允許合并多種數(shù)據(jù)采樣率輸入的系統(tǒng),以簡化FIR濾波器的執(zhí)行。這種特性尤其適合于同時具有低頻和高頻部分的通信系統(tǒng)的設計與仿真,有利于提高整個系統(tǒng)的仿真速度,而在局部又不會降低仿真的精度。同時還可降低對計算機硬件配置的要求。

(6)完備的濾波器和線性系統(tǒng)設計。SystemView包含一個功能強大的、很容易使用的圖形模板設計模擬和數(shù)字以及離散和連續(xù)時間系統(tǒng)的環(huán)境,包含大量的FIR濾波類型和FFT類型,并提供易于用DSP實現(xiàn)濾波器或線性系統(tǒng)的參數(shù)。

(7)先進的信號分析和數(shù)據(jù)塊處理。SystemView提供的分析窗口是一個能夠提供系統(tǒng)波形詳細檢查的交互式可視環(huán)境。分析窗口還提供一個能對仿真生成數(shù)據(jù)進行先進的塊處理操作的接收計算器。SystemView還提供了一個真實而靈活的窗口用以檢查系統(tǒng)波形。

(8)可擴展性。SystemView允許用戶插入自己用C/C++寫的用戶代碼庫,插入的用戶庫自動集成到SystemView中,如同系統(tǒng)內(nèi)建的庫一樣使用。同時,它兼容Matlab可以與Matlab進行數(shù)據(jù)交換。

(9)完善的自我診斷功能。SystemView能自動執(zhí)行系統(tǒng)連接檢查,通知用戶連接出錯并通過顯示指出出錯的圖符。這個特點對用戶系統(tǒng)的診斷是十分有效。

4.直擴系統(tǒng)SystemView仿真

4.1直擴系統(tǒng)的原理框圖

直接序列調(diào)制就是載波直接被偽隨機碼序列調(diào)制。在發(fā)射機端,要傳送的信息先轉(zhuǎn)換成二進制數(shù)據(jù)或符號,與偽隨機碼(PN碼)進行模2和運算后形成復合碼,再用該復合碼去直接調(diào)制載波。在接收機端,用與發(fā)射機端完全同步的PN碼對接收信號進行解擴后經(jīng)解調(diào)器還原輸出原始數(shù)據(jù)信息。調(diào)制方式可以是調(diào)幅、調(diào)頻、調(diào)相和其他任何形式的振幅或角度調(diào)制。因PSK性能最佳,現(xiàn)代DS-SS中載波調(diào)制一般都采用BPSK或DPSK。其基本原理如圖2-1所示。

(b)接收機

模2和加法器

PN碼

發(fā)生器

功率

放大器

載波

發(fā)生器

調(diào)制器

調(diào)制器

調(diào)制器

(a)發(fā)射機

混頻器

調(diào)頻器

調(diào)解調(diào)器

數(shù)據(jù)輸出

本振

中放

時鐘

PN碼

發(fā)生器

同步

圖4-1直序擴頻系統(tǒng)原理圖

直序擴頻通信系統(tǒng)仿真(無噪聲情況)

4.2.1系統(tǒng)模塊及主要模塊參數(shù)

Systemview是一個信號級的系統(tǒng)仿真軟件,主要用于電路與通信系統(tǒng)的設計和仿真,是一個強有力的動態(tài)系統(tǒng)分析工具,能滿足從數(shù)字信號處理,濾波器設計,到復雜的通信系統(tǒng)等不同層次的設計仿真要求。利用Systemview建立的直擴系統(tǒng)的仿真原理圖,如4-2-1圖所示。

圖4-2直擴系統(tǒng)仿真原理圖

為了對擴頻通信有一個初步認識,直接序列擴頻系統(tǒng)為例來進行仿真,并進一步說明擴頻通信的優(yōu)點。直接序列擴頻是目前應用最廣的一種擴頻技術(shù),圖4-2-2是直序擴頻系統(tǒng)的仿真模型圖。

作為一個仿真來說明直序擴頻在抗干擾方面的優(yōu)越性,所以直接采用了簡單而直接的方式來構(gòu)造模型。數(shù)據(jù)信號源使用了一個低頻率(1KHz)的隨機序列(圖符0),通過一個1kHz的低通濾波器(圖符3)來代替。擴頻用的PN碼采用10kHz的PN碼(圖符2),這樣,理論上可獲得10倍的擴頻增益。擴頻調(diào)制在本例中未使用通常的模2和加法運算,而是通過乘法直接用PN碼調(diào)制數(shù)據(jù)信號,合成后的擴頻復合信號同樣也是直接用更高的載波(圖符12,100kHz)調(diào)制發(fā)射。為了觀察擴頻系統(tǒng)的抗干擾性能,使用了一個干擾信號源。該干擾信號可以是單頻率窄帶干擾,也可以是寬帶的掃頻信號,或是高斯噪聲。接收端,通過本地載波解調(diào)后的復合信號直接原擴頻PN碼相乘后解擴,中間省略了有關(guān)本地PN發(fā)生器和相關(guān)的碼同步電路。因為直接使用原PN碼,所以理論上可認為收發(fā)2端完全同步。需要說明的是,實際工程中的碼同步是一個十分復雜的問題,其復雜程度以及在此問題上付出的代價往往比擴頻本身要多得多。

圖4-3直序擴頻系統(tǒng)的仿真模型圖

部分主要參數(shù)設置:

采樣點:16384個,采樣頻率:1000MHz

Token0:基帶信號-PN碼序列(頻率=1KHz,電平=2Level,振幅=1V,偏移=0V)

Token1:乘法器

Token2:基帶信號—PN碼序列(頻率=10KHz,電平=2Level,振幅=1V,偏移=0V)

Token3:模擬低通濾波器(頻率=1000Hz,極點個數(shù)=3)

Token4:觀察窗

Token5:觀察窗

Token7:乘法器

Token8:掃頻信號(幅度=1.5V,開始頻率=90KHz,終值頻率120KHz,掃頻周期0.015s)

Token9:觀察窗

Token10:模擬低通濾波器(頻率=1000Hz,極點個數(shù)=3)

Token11:乘法器

Token12:正弦波(幅度=1V,頻率=100KHz,相位=0)

Token13:正弦波(幅度=1V,頻率=100KHz,相位=0)

Token14:乘法器

4.2.1主要輸出點波形

根據(jù)以上仿真模型,在設置好系統(tǒng)、模塊參數(shù)后運行電路,借助SystemView分析視窗和接收計算器可直接給出各點信號的時域波形、功率譜等,并分析系統(tǒng)的抗噪聲能力。

調(diào)制以前的信號與調(diào)制以后波形信號比較:

圖4-4調(diào)制前后信號

如上圖所示,上面的波形為調(diào)制前即擴頻后的信號,下面的波形為解調(diào)后即解擴前的信號。

2.調(diào)制后的信號功率譜密度。

圖4-5調(diào)制后信號功率譜密度

發(fā)送波形、低通濾波輸出波形、接收波形比較

圖4-6發(fā)送波形、接收波形、低通濾波器輸出波形

如上圖所示,第一個波形為發(fā)送信號(sink5),第二個波形為恢復出的信號(sink9),第三個波形為接收端低通濾波器輸出信號(sink19)?;謴统龅男盘柡桶l(fā)送信號有一段時延。

4.3直接擴頻通信系統(tǒng)抗干擾性分析

4.3.1加入高斯白噪聲后系統(tǒng)模型

圖4-7直接擴頻通信系統(tǒng)(加入白噪聲后)

如上圖所示,(Token21)為高斯白噪聲,(Token24和26)是計算誤碼率的模塊。當發(fā)送信息碼元和接收到的信息碼元對齊時,(Token24)模塊統(tǒng)計在設定的時間內(nèi)的錯誤的比特數(shù)和總比特數(shù)的比率,(Token24和26)模塊把所計算的誤碼率顯示出來。其他模塊與圖4-3對應模塊相同。

4.3.2系統(tǒng)誤碼率的理論值與測量值的比較

直接擴頻系統(tǒng)在高斯白噪聲的情況下的誤碼率為P=Q=Q,其中為系統(tǒng)輸出信噪比,P為信號功率,T為信息碼元的周期。N0/2為高斯白噪聲雙邊帶功率譜密度。

對于本設計的系統(tǒng)來說,接收端收到的信號幅度為1,所以信號功率為P=1/2,信息碼的速率為2K,所以T=1/2K。通過修改(Token21)模塊的參數(shù)來修改N0,計算誤碼率的理論值并運行系統(tǒng)得到測量值。

下表即為在不同高斯白噪聲的情況下的各參數(shù):

表4-1參數(shù)表

N0/2

(S/N)out

10log(S/N)out

Pe1

logPe1

Pe2

logPe2

0.00001

25

14.0

2.87e-7

-6.5

3.69e-5

-4.4

0.00002

12.5

11

1.84e-4

-3.7

8.76e-4

-3.1

0.00003

8.33

9.2

1.93e-3

-2.7

5.84e-3

-2.2

0.00004

6.25

8.0

6.21e-3

-2.2

0.0112

-1.95

0.00005

5.00

7.0

0.0125

-1.9

0.0266

-1.6

0.00006

4.17

6.2

0.0207

-1.7

0.0333

-1.5

0.00007

3.53

5.5

0.0294

-1.5

0.0412

-1.4

0.00008

3.13

4.9

0.0384

-1.4

0.0499

-1.3

0.00009

2.78

4.4

0.0480

-1.3

0.0627

-1.2

0.0001

2.50

4.0

0.0571

-1.2

0.0758

-1.1

0.0002

1.25

0.97

0.1314

-0.88

0.1429

-0.84

0.0003

0.833

-0.80

0.1814

-0.74

0.1923

-0.71

0.0004

0.625

-2.0

0.2148

-0.67

0.2208

-0.66

0.0005

0.500

-3.0

0.2389

-0.62

0.2459

-0.61

0.0006

0.416

-3.8

0.2588

-0.59

0.2643

-0.58

0.0007

0.357

-4.5

0.2743

-0.56

0.2832

-0.55

0.0008

0.313

-5.1

0.2877

-0.54

0.2966

-0.53

0.0009

0.278

-5.6

0.2981

-0.53

0.3130

-0.50

0.001

0.250

-6.0

0.3085

-0.51

0.3200

-0.49

如上表所示,第一列N0/2為高斯白噪聲的雙邊帶功率譜密度。(S/N)out為系統(tǒng)輸出信噪比,由前面的討論可知(S/N)out=2PT/N0,Pe1為對應高斯白噪聲的系統(tǒng)誤碼率的理論值,logPe1為其對數(shù)值。Pe2為運行系統(tǒng)后的測量值,logPe2為其對數(shù)值。

根據(jù)表4-1可得誤碼率的理論值和測量值同系統(tǒng)輸出信噪比的關(guān)系如下:

圖4-8系統(tǒng)誤碼率的理論值和測量值

如圖4-8所示,橫坐標為系統(tǒng)輸出信噪比分貝數(shù),其值從-6.0db到14.0db,縱坐標為誤碼率的對數(shù)值。下面的曲線為誤碼率理論值和輸出信噪比的關(guān)系,上面的曲線為誤碼率測量值和輸出信噪比的關(guān)系。

由兩條曲線的分布可以得出,當誤碼率比較高的時候,兩曲線基本重合,說明測量值和理論值很接近;當誤碼率比較低的時候,兩曲線差別很大。因為理論值是碼元錯誤接收的概率值,而測量值只是一個統(tǒng)計值,而仿真系統(tǒng)只是在所設定的時間內(nèi)計算誤碼率,這個設定時間包含的碼元周期是有限的,只有在取無限長的周期的情況下,計算出來的誤碼率才是理論值,由于計算機內(nèi)存容量的限制,這樣做是不可能的。

當誤碼率越低的時候,系統(tǒng)所要求的取樣周期就越長,計算出的誤碼率和理論值差別就越大,但從兩曲線的走向是大致相同的,總體來說測量值要比理論值要大一些,這是因為系統(tǒng)設計的不完整性造成的,所以仿真得出的數(shù)據(jù)和理論值有差別是難免的。

5.總結(jié)

直接序列擴頻通信系統(tǒng)是一個復雜的通信系統(tǒng),憑個人能力無法完成如此繁重的工作,從本設計目的出發(fā),只是從實驗的角度完成了一個功能實現(xiàn)演示系統(tǒng)。

直接擴頻系統(tǒng),在發(fā)送端的設計一般都采用先擴頻后調(diào)制,既先用擴頻碼和信息碼進行模2運算,產(chǎn)生擴頻信號,然后用此信號去調(diào)制載波,采用二相移頻鍵控(BPSK)方式。而在接收端為了恢復出原信號,也要分兩步進行,可以先解擴后解調(diào),也可以先解調(diào)后解擴。但為了和發(fā)送端相對應,本設計采用后者,但在解擴之前不能把解調(diào)器輸出信號恢復成數(shù)字信號。用SystemView仿真了設計的系統(tǒng),比較詳細的分析了系統(tǒng)的誤碼性能,并與理論值進行了比較,同時簡單分析了系統(tǒng)的多址能力。

通過這次畢業(yè)設計,收益頗豐。首先對直接序列擴頻通信系統(tǒng)的原理有了比較深刻的理解,因為一個完整的通信系統(tǒng)包括了很多方面的知識,充分利用和鞏固了以前所學的各種知識和相關(guān)理論。在軟件方面,學會了用SystemView仿真并分析系統(tǒng)??傊?,這次畢業(yè)設計使自己獲得了很大的鍛煉。

致謝

本項研究工作是在我的導師門愛東副教授的悉心指導下完成的,在四年的學習中,特別是在我進行課題選擇和課題實驗階段中,門老師用其深厚的專業(yè)理論知識和豐富的實踐經(jīng)驗給了我多方面的指導,使我能夠順利的完成課題相關(guān)工作;在論文寫作過程中,門老師又從繁忙的教學工作和日常管理工作中抽出寶貴的時間來認真審閱和修改論文;同時在日常生活中,門老師又給我熱情的關(guān)心和照顧,使我減輕了學習的壓力。門老師嚴于律己、寬于待人的生活作風、認真勤奮、孜孜不倦的敬業(yè)精神和一絲不茍、嚴謹務實的治學態(tài)度,深深影響和感動了我,使我感受到一個從事幾十年高校教學工作的教師對工作的認真負責、對學習的不斷追求和對我這樣的年輕學子的殷切希望,這將是我今后工作和生活的動力。

在這里還要感謝北京郵電大學世紀學院的其他老師對我學習和生活上給予的關(guān)心和幫助。

感謝各位評委對論文評審并提出寶貴意見。

參考文獻

[1]童成意.擴頻通信技術(shù)應用研究[J].湘潭師范學院學報(自然科學版),2003:13~27

[2]許麗艷,李雪梅,于瑞濤.擴展頻譜通信系統(tǒng)的仿真[J].青島大學學報(工程技術(shù)版),2000:15~28

[3]白木,周潔.擴頻通信的原理、工作方式、特點和應用[J].電力系統(tǒng)通信,

2000:15~28

[4]羅衛(wèi)兵,張捷.SystemView動態(tài)系統(tǒng)分析及通信系統(tǒng)仿真設計[M].西安:西安電子科技大學出版社,2000:16~33

[5]孫鵬勇.直接序列擴頻通信處理增益的分析[J].遼寧工程技術(shù)大學學報(自然科學版),2000:19~20

[6]曾興雯.乃安.獻璞.擴展頻譜通信及其多址技術(shù)[M].西安:西安電子科技大

學出版社,2000:18~20

[7]MarvinK.Simon,KimK.Omura,RobertA.Scholtz,BarryK.Levitt.SPREADSPECTRU.CommunicationsHandbook[J].McGraw-HillCompanies,Inc.2000:16~33

[8]查光明,熊賢祚.擴頻通信[M].西安:西安電子科技大學出版社,2000:15~

33

[9]青松,岱松,建華.通信系統(tǒng)的SystemView仿真與分析[M].北京:北京

航空航天大學出版社,2001:25~50

[10]吳明捷,景蘭偉.直序系列擴頻通信中的偽隨機碼[J].工礦自動化,2000:

18~50

[11]ByrneAJ.Thevirtualcorporation[J].Businessweek,1993.14~16

[12]李東生.SystemView系統(tǒng)設計及仿真入門與應用[M].北京:電子工業(yè)出版社,2000:16~33

[13]潘松,繼業(yè).EDA技術(shù)實用教程[M].北京:科學出版社,2000:24~66

[16]吳怡,陳俊.SystemView仿真軟件在通信原理課程教學中的應用[J].福建

師范大學出版社,2004:19~33

附錄

附錄1直擴系統(tǒng)仿真模型圖(無噪聲)

附錄2直擴系統(tǒng)仿真模型圖(有噪聲)

附錄資料:不需要的可以自行刪除

C語言圖形模式速成

第一節(jié)

圖形模式的初始化

TurboC提供了非常豐富的圖形函數(shù),所有圖形函數(shù)的原型均在graphics.h中,本節(jié)主要介紹圖形模式的初始化、獨立圖形程序的建立、基本圖形功能、圖形窗口以及圖形模式下的文本輸出等函數(shù)。

另外,使用圖形函數(shù)時要確保有顯示器圖形驅(qū)動程序*.BGI,同時將集成開發(fā)環(huán)境options/Linker中的Graphicslib選為on,只有這樣才能保證正確使用圖形函數(shù)。

不同的顯示器適配器有不同的圖形分辨率。即是同一顯示器適配器,在不同模式下也有不同分辨率。因此,在屏幕作圖之前,必須根據(jù)顯示器適配器種類將顯示器設置成為某種圖形模式,在未設置圖形模式之前,微機系統(tǒng)默認屏幕為文本模式(80列,25行字符模式),此時所有圖形函數(shù)均不能工作。設置屏幕為圖形模式,可用下列圖形初始化函數(shù):

voidfarinitgraph(intfar*gdriver,intfar*gmode,char*path);

其中g(shù)driver和gmode分別表示圖形驅(qū)動器和模式,path是指圖形驅(qū)動程序所在的目錄路徑。有關(guān)圖形驅(qū)動器、圖形模式的符號常數(shù)及對應的分辨率見graphics.h。

圖形驅(qū)動程序由TurboC出版商提供,文件擴展名為.BGI。根據(jù)不同的圖形適配器有不同的圖形驅(qū)動程序。例如對于EGA、VGA圖形適配器就調(diào)用驅(qū)動程序EGAVGA.BGI。

#include"stdio.h"

#include"graphics.h"

intmain()

{

intgdriver,gmode;

gdriver=VGA;

gmode=VGAHI;

initgraph(&gdriver,&gmode,"C:\\TC2.0\\BGI");

bar3d(100,100,300,250,50,1);/*畫一長方體*/

getch();

closegraph();

return0;

}

有時編程者并不知道所用的圖形顯示器適配器種類,或者需要將編寫的程序用于不同圖形驅(qū)動器,TurboC提供了一個自動檢測顯示器硬件的函數(shù),其調(diào)用格式為:

voidfardetectgraph(int*gdriver,*gmode);

其中g(shù)driver和gmode的意義與上面相同。

自動進行硬件測試后進行圖形初始化:

#include"stdio.h"

#include"graphics.h"

intmain()

{

intgdriver,gmode;

detectgraph(&gdriver,&gmode);/*自動測試硬件*/

printf("thegraphicsdriveris%d,modeis%d\n",gdriver,gmode);/*輸出測試結(jié)果*/

getch();

initgraph(&gdriver,&gmode,"C:\\TC2.0\\BGI");

/*根據(jù)測試結(jié)果初始化圖形*/

bar3d(100,100,300,250,50,1);/*畫一長方體*/

getch();

closegraph();

return0;

}

上例程序中先對圖形顯示器自動檢測,然后再用圖形初始化函數(shù)進行初始化設置,但TurboC提供了一種更簡單的方法,即用gdriver=DETECT語句后再跟initgraph()函數(shù)就行了。

采用這種方法后,上例可改為:

#include"stdio.h"

#include"graphics.h"

intmain()

{

intgdriver=DETECT,gmode;

initgraph(&gdriver,&gmode,"C:\\TC2.0\\BGI");

bar3d(50,50,150,30,50,1);

getch();

closegraph();

return0;

}

另外,TurboC提供了退出圖形狀態(tài)的函數(shù)closegraph(),其調(diào)用格式為:

voidfarclosegraph(void);

第二節(jié)

屏幕顏色的設置和清屏函數(shù)

對于圖形模式的屏幕顏色設置,同樣分為背景色的設置和前景色的設置。在TurboC中分別用下面兩個函數(shù):

設置背景色:

voidfarsetbkcolor(intcolor);

設置作圖色:

voidfarsetcolor(intcolor);

其中color為圖形方式下顏色的規(guī)定數(shù)值,對EGA,VGA顯示器適配器,有關(guān)顏色的符號常數(shù)及數(shù)值見graphics.h。

清除圖形屏幕內(nèi)容但不清除圖形背景使用清屏函數(shù),其調(diào)用格式如下:

voidefarcleardevice(void);

#include"stdio.h"

#include"graphics.h"

intmain()

{

intgdriver,gmode,i,aa;

gdriver=DETECT;

initgraph(&gdriver,&gmode,"C:\\TC2.0\\BGI");/*圖形初始化*/

setbkcolor(0);/*設置圖形背景*/

cleardevice();

for(i=0;i<=15;i++)

{

setcolor(i);/*設置不同作圖色*/

circle(320,240,20+i*10);/*畫半徑不同的圓*/

getch();

}

for(i=0;i<=15;i++)

{

setbkcolor(i);/*設置不同背景色*/

cleardevice();

circle(320,240,20+i*10);

getch();

}

aa=getmaxcolor();

printf("maxcolor=%d",aa);

getch();

closegraph();

return0;

}

另外,TURBOC也提供了幾個獲得現(xiàn)行顏色設置情況的函數(shù)。

intfargetbkcolor(void);

返回現(xiàn)行背景顏色值。

intfargetcolor(void);

返回現(xiàn)行作圖顏色值。

intfargetmaxcolor(void);

返回最高可用的顏色值。

第三節(jié)

基本畫圖函數(shù)

基本圖形函數(shù)包括畫點,線以及其它一些基本圖形的函數(shù)。本節(jié)對這些函數(shù)作一全面的介紹。

1、畫點

I.畫點函數(shù)

voidfarputpixel(intx,inty,intcolor);

該函數(shù)表示有指定的象元畫一個按color所確定顏色的點。對于顏色color的值可從表3中獲得而對x,y是指圖形象元的坐標。

在圖形模式下,是按象元來定義坐標的。對VGA適配器,它的最高分辨率為640x480,其中640為整個屏幕從左到右所有象元的個數(shù),480為整個屏幕從上到下所有象元的個數(shù)。屏幕的左上角坐標為(0,0),右下角坐標為(639,479),水平方向從左到右為x軸正向,垂直方向從上到下為y軸正向。TURBOC的圖形函數(shù)都是相對于圖形屏幕坐標,即象元來說的。

關(guān)于點的另外一個函數(shù)是:

intfargetpixel(intx,inty);

它獲得當前點(x,y)的顏色值。

II、有關(guān)坐標位置的函數(shù)

intfargetmaxx(void);

返回x軸的最大值。

intfargetmaxy(void);

返回y軸的最大值。

intfargetx(void);

返回游標在x軸的位置。

voidfargety(void);

返回游標有y軸的位置。

voidfarmoveto(intx,inty);

移動游標到(x,y)點,不是畫點,在移動過程中亦畫點。

voidfarmoverel(intdx,intdy);

移動游標從現(xiàn)行位置(x,y)移動到(x+dx,y+dy)的位置,移動過程中不畫點。

2、畫線

I.畫線函數(shù)

TURBOC提供了一系列畫線函數(shù):

voidfarline(intx0,inty0,intx1,inty1);

畫一條從點(x0,y0)到(x1,y1)的直線。

voidfarlineto(intx,inty);

畫一作從現(xiàn)行游標到點(x,y)的直線。

voidfarlinerel(intdx,intdy);

畫一條從現(xiàn)行游標(x,y)到按相對增量確定的點(x+dx,y+dy)的直線。

voidfarcircle(intx,inty,intradius);

以(x,y)為圓心,radius為半徑,畫一個圓。

voidfararc(intx,inty,intstangle,intendangle,intradius);

以(x,y)為圓心,radius為半徑,從stangle開始到endangle結(jié)束(用度表示)畫一段圓弧線。

在TURBOC中規(guī)定x軸正向為0度,逆時針方向旋轉(zhuǎn)一周,依次為90,180,270和360度(其它有關(guān)函數(shù)也按此規(guī)定,不再重述)。

voidellipse(intx,inty,intstangle,intendangle,intxradius,intyradius);

以(x,y)為中心,xradius,yradius為x軸和y軸半徑,從角stangle開始到endangle結(jié)束畫一段橢圓線,當stangle=0,endangle=360時,畫出一個完整的橢圓。

voidfarrectangle(intx1,inty1,intx2,inty2);

以(x1,y1)為左上角,(x2,y2)為右下角畫一個矩形框。

voidfardrawpoly(intnumpoints,intfar*polypoints);

畫一個頂點數(shù)為numpoints,各頂點坐標由polypoints給出的多邊形。polypoints整型數(shù)組必須至少有2倍頂點數(shù)個無素。每一個頂點的坐標都定義為x,y,并且x在前。值得注意的是當畫一個封閉的多邊形時,numpoints的值取實際多邊形的頂點數(shù)加一,并且數(shù)組polypoints中第一個和最后一個點的坐標相同。

下面舉一個用drawpoly()函數(shù)畫箭頭的例子。

#include"stdio.h"

#include"graphics.h"

intmain()

{

intgdriver,gmode,i;

intarw[16]={200,102,300,102,300,107,330,

100,300,93,300,98,200,98,200,102};

gdriver=DETECT;

initgraph(&gdriver,&gmode,"C:\\TC2.0\\BGI");

setbkcolor(BLUE);

cleardevice();

setcolor(12);/*設置作圖顏色*/

drawpoly(8,arw);/*畫一箭頭*/

getch();

closegraph();

return0;

}

II、設定線型函數(shù)

在沒有對線的特性進行設定之前,TURBOC用其默認值,即一點寬的實線,但TURBOC也提供了可以改變線型的函數(shù)。

線型包括:寬度和形狀。其中寬度只有兩種選擇:一點寬和三點寬。而線的形狀則有五種。

下面介紹有關(guān)線型的設置函數(shù)。

voidfarsetlinestyle(intlinestyle,unsignedupattern,intthickness);

該函數(shù)用來設置線的有關(guān)信息,其中l(wèi)inestyle是線形狀的規(guī)定,見graphics.h。

對于upattern,只有l(wèi)inestyle選USERBIT_LINE時才有意義(選其它線型,uppattern取0即可)。此時uppattern的16位二進制數(shù)的每一位代表一個象元,如果那位為1,則該象元打開,否則該象元關(guān)閉。

voidfargetlinesettings(structlinesettingstypefar*lineinfo);

該函數(shù)將有關(guān)線的信息存放到由lineinfo指向的結(jié)構(gòu)中,表中l(wèi)inesettingstype的結(jié)構(gòu)如下:

structlinesettingstype{

intlinestyle;

unsignedupattern;

intthickness;

}

例如下面兩句程序可以讀出當前線的特性

structlinesettingstype*info;

getlinesettings(info);

voidfarsetwritemode(intmode);

該函數(shù)規(guī)定畫線的方式。如果mode=0,則表示畫線時將所畫位置的原來信息覆蓋了(這是TURBOC的默認方式)。如果mode=1,則表示畫線時用現(xiàn)在特性的線與所畫之處原有的線進行異或(XOR)操作,實際上畫出的線是原有線與現(xiàn)在規(guī)定的線進行異或后的結(jié)果。因此,當線的特性不變,進行兩次畫線操作相當于沒有畫線。

有關(guān)線型設定和畫線函數(shù)的例子如下所示。

#include"stdio.h"

#include"graphics.h"

intmain()

{

intgdriver,gmode,i;

gdriver=DETECT;

initgraph(&gdriver,&gmode,"C:\\TC2.0\\BGI");

setbkcolor(BLUE);

cleardevice();

setcolor(GREEN);

circle(320,240,98);

setlinestyle(0,0,3);/*設置三點寬實線*/

setcolor(2);

rectangle(220,140,420,340);

setcolor(WHITE);

setlinestyle(4,0xaaaa,1);/*設置一點寬用戶定義線*/

line(220,240,420,240);

line(320,140,320,340);

getch();

closegraph();

return0;

}

第四節(jié)

基本圖形的填充

填充就是用規(guī)定的顏色和圖模填滿一個封閉圖形。一般是先畫輪廓再填充。

TURBOC提供了一些先畫出基本圖形輪廓,再按規(guī)定圖模和顏色填充整個封閉圖形的函數(shù)。在沒有改變填充方式時,TURBOC以默認方式填充。

voidfarbar(intx1,inty1,intx2,inty2);

確定一個以(x1,y1)為左上角,(x2,y2)為右下角的矩形窗口,再按規(guī)定圖模和顏色填充。說明:此函數(shù)不畫出邊框,所以填充色為邊框。

voidfarbar3d(intx1,inty1,intx2,inty2,intdepth,inttopflag);

當topflag為非0時,畫出一個三維的長方體。當topflag為0時,三維圖形不封頂,實際上很少這樣使用。說明:bar3d()函數(shù)中,長方體第三維的方向不隨任何參數(shù)而變,即始終為45度的方向。

voidfarpieslice(intx,inty,intstangle,intendangle,intradius);

畫一個以(x,y)為圓心,radius為半徑,stangle為起始角度,endangle為終止角度的扇形,再按規(guī)定方式填充。當stangle=0,endangle=360時變成一個實心圓,并在圓內(nèi)從圓點沿X軸正向畫一條半徑。

voidfarsector(intx,inty,intstanle,intendangle,intxradius,intyradius);

畫一個以(x,y)為圓心分別以xradius,yradius為x軸和y軸半徑,stangle為起始角,endangle為終止角的橢圓扇形,再按規(guī)定方式填充。

第五節(jié)

設定填充方式

TURBOC有四個與填充方式有關(guān)的函數(shù)。下面分別介紹:

voidfarsetfillstyle(intpattern,intcolor);

color的值是當前屏幕圖形模式時顏色的有效值。pattern的值及與其等價的符號常數(shù)見graphics.h。

除USER_FILL(用戶定義填充式樣)以外,其它填充式樣均可由setfillstyle()函數(shù)設置。當選用USER_FILL時,該函數(shù)對填充圖模和顏色不作任何改變。之所以定義USER_FILL主要因為在獲得有關(guān)填充信息時用到此項。

voidfarsetfillpattern(char*upattern,intcolor);

設置用戶定義的填充圖模的顏色以供對封閉圖形填充。其中upattern是一個指向8個字節(jié)的指針。這8個字節(jié)定義了8x8點陣的圖形。每個字節(jié)的8位二進制數(shù)表示水平8點,8個字節(jié)表示8行,然后以此為模型向個封閉區(qū)域填充。

voidfargetfillpattern(char*upattern);

該函數(shù)將用戶定義的填充圖模存入upattern指針指向的內(nèi)存區(qū)域。

voidfargetfillsetings(structfillsettingstypefar*fillinfo);

獲得現(xiàn)行圖模的顏色并將存入結(jié)構(gòu)指針變量fillinfo中。其中fillsettingstype結(jié)構(gòu)定義如下:

structfillsettingstype{

intpattern;/*現(xiàn)行填充模式*/

intcolor;/*現(xiàn)行填充模式*/

};

有關(guān)圖形填充圖模的顏色的選擇,請看下面例程。

#include"stdio.h"

#include"graphics.h"

main()

{

charstr[8]={10,20,30,40,50,60,70,80};/*用戶定義圖模*/

intgdriver,gmode,i;

structfillsettingstypesave;

/*定義一個用來存儲填充信息的結(jié)構(gòu)變量*/

gdriver=DETECT;

initgraph(&gdriver,&gmode,"C:\\TC2.0\\BGI");

setbkcolor(BLUE);

cleardevice();

for(i=0;i<13;i++)

{

setcolor(i+3);

setfillstyle(i,2+i);/*設置填充類型*/

bar(100,150,200,50);/*畫矩形并填充*/

bar3d(300,100,500,200,70,1);/*畫長方體并填充*/

pieslice(200,300,90,180,90);/*畫扇形并填充*/

sector(500,300,180,270,200,100);/*畫橢圓扇形并填充*/

getch();

}

cleardevice();

setcolor(14);

setfillpattern(str,RED);

bar(100,150,200,50);

bar3d(300,100,500,200,70,0);

pieslice(200,300,0,360,90);

sector(500,300,0,360,100,50);

getch();

getfillsettings(&save);

/*獲得用戶定義的填充模式信息*/

closegraph();

clrscr();

printf("Thepatternis%d,Thecoloroffillingis%d",

save.pattern,save.color);

/*輸出目前填充圖模和顏色值*/

getch();

}

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論