張家偉
(重慶交通大學,重慶 400000)
設(shè)計目的和要求具體如下:
(1)了解通信原理在實際生活中的應(yīng)用;
(2)了解通信系統(tǒng)的實現(xiàn)過程;
(3)整個系統(tǒng)能夠完成預(yù)期的信號處理的要求;
(4)系統(tǒng)所需實現(xiàn)的功能均能夠正常流暢地實現(xiàn);
(5)能夠在示波器上明顯地觀察出經(jīng)PCM 處理的信號;
(6)能夠有效地對PCM 編碼輸出地碼流進行FSK 調(diào)制.
設(shè)計條件包括個人PC、e-labsim、Visual Studio2017。
3.1.1 PCM 概要解釋
現(xiàn)實中,距離稍長的信號傳輸都是需要用數(shù)字信道傳輸?shù)模呛芏嘈盘柖际悄M信號(如話音),因此就要實現(xiàn)將模擬信號數(shù)字化來實現(xiàn)通信。這就是PCM 的目的所在。
PCM 各部分作用和概念解釋如下。
抽樣:將時間連續(xù)的模擬信號由一系列時間離散的樣值取代的過程。
量化:將幅值離散化。
編碼:將量化后的電平用二進制來表示。
每兩個抽樣值的時間間隔稱作抽樣間隔Ts,抽樣信號的頻率稱為抽樣頻率fs,fs的選取是有講究的,其要滿足低通抽樣定理。
3.1.2 雙極性碼概要解釋
二進制比特流往往是0 和1 交替出現(xiàn),之所以叫雙極性碼是因為1 的幅值有+1 和-1 之分,實際應(yīng)用碼型中的AMI 碼和HDB3碼都是雙極性碼。
3.1.3 FSK 的概要解釋
利用基帶信號控制載波的參數(shù),使載波的參數(shù)攜帶基帶信息,這就是數(shù)字調(diào)制的基本概念。FSK 是頻移鍵控的調(diào)制方式,根據(jù)二進制信號的不同幅值控制載波的頻率。往往用開關(guān)鍵控法來實現(xiàn)此種調(diào)制方式。當數(shù)字信號為1 時,載波是頻率為f1的信號,數(shù)字信號為0 時,載波是頻率為f2的頻率。
3.2.1 e-labsim 構(gòu)圖及解釋
圖1 為e-labsim 仿真構(gòu)圖。
圖1 e-labsim 仿真構(gòu)圖
靠近左邊的是三個信號發(fā)生器和一個主控模塊,信號發(fā)生器從上至下依次是:抽樣信號的方波信號發(fā)生器、2FSK 的正弦載波1 信號發(fā)生器、2FSK 的正弦載波2 信號發(fā)生器。主控模塊提供本次系統(tǒng)處理的基帶信號,其是一個正弦信號。二次開發(fā)板是核心器件,用于執(zhí)行系統(tǒng)的算法,算法由Visual Studio 生成的DLL文件導(dǎo)入。通過IN 和OUT 接口來對輸入的信號進行算法處理和輸出處理后的調(diào)制和解調(diào)。剩下的5 個示波器用來顯示所需顯示的信號。
3.2.2 抽樣部分的設(shè)計
在e-labsim 中,主控&信號源模塊引出模擬信號源A-OUT,接到二次開發(fā)模塊IN1,用信號發(fā)生器產(chǎn)生頻率16 kHz、峰值為5 V 的方波信號作為抽樣信號。當抽樣信號的值滿足非0 的條件下,OUT 端口就輸出IN1 端口的信號幅值,否則,OUT 端口輸出的信號的幅值就為0。
圖2 為抽樣原理圖。
圖2 抽樣原理圖
根據(jù)抽樣定理,抽樣頻率要大于信號最高頻率的兩倍,從抽樣的結(jié)果來看,抽樣頻率16 kHz 是滿足要求的。
3.2.3 量化部分的設(shè)計
PCM 中量化是緊緊跟著抽樣部分的,抽樣后的幅值是連續(xù)的,取值有很多種可能,在本系統(tǒng)中,設(shè)置輸入的幅值不超過2 V。因此,對-2~+2 V 進行了21段量化。量化表1 如所示。
表1 量化值表
在工程文件中,程序?qū)幋a后OUT1 輸出的值所落的區(qū)間進行判別,返回區(qū)間中點值作為量化電平值。在OUT2 端口進行輸出。
3.2.4 編碼的原理設(shè)計
從表1 自行設(shè)計的編碼規(guī)則中可知:一共只有21段,沒有設(shè)置段落碼,只設(shè)置了極性碼和段內(nèi)碼,將所有量化電平都看作為同一段落內(nèi)的。
編碼原理解釋如下:
a1=1 時,代表得到的量化值是非負的,反之a(chǎn)0= 0,代表得到的量化值是正的。
在編程中,量化值的編碼值放置在record[]數(shù)組中,全局整型變量pg 存放量化值對應(yīng)的位置段值。record[]數(shù)組中的值對應(yīng)十進制變量pg的二進制數(shù)值。
3.2.5 雙極性碼的設(shè)計原理
雙極性碼是體現(xiàn)在信號值“1”上的,當前“1”的極性是與前一個“1”的極性相反的,因此在程序中設(shè)計一個標記變量即可。
基于當前record[]數(shù)組里的值,設(shè)計思想如下。
若record[index]值為1:
若record[index]的值為0,輸出也為0。
其中,F(xiàn)C是全局標記變量,若FC為1 則標志著前一個1 極性為負,則當前輸出1 的極性為正,同時將標記變量FC修改為0,代表輸出了極性為正的“1”。
若FC為0,則標志著前一個1 極性為正,則當前輸出1 的極性為負,同時將標記變量FC修改為1,代表輸出了極性為負的“1”。
3.2.6 2FSK 的設(shè)計原理
此模塊功能是針對PCM 編碼后的碼流來實現(xiàn)的,若碼流中的比特值為1,輸出頻率為f1(如2 000 kHz) 的載波,若碼流中的比特值為0,輸出頻率為f2的載波。
輸出的信號是從二次開發(fā)板中的OUT4 端口輸出的。即:
不同頻率的載波由函數(shù)信號發(fā)生器來得到。
設(shè)計思路具體如下。
主控模塊提供一個正弦波,輸入到IN1 口,函數(shù)信號發(fā)生器模塊提供一個采樣信號,輸入到IN2 口,當IN2 口的信號滿足一定條件時,在當前的程序運行周期中實施對IN1 口信號的采樣;根據(jù)預(yù)先設(shè)置好的量化值表對抽樣值進行量化,取他所落區(qū)間的中值作為量化結(jié)果;量化部分由子功能函數(shù)來實現(xiàn),通過返回值的方式來對OUT 口進行輸出;對于編碼,同樣利用子功能函數(shù)Code()來實現(xiàn),根據(jù)量化值所落的位置段這一信息反應(yīng)在了全局整型變量pg,然后對全局整型變量pg 進行二進制轉(zhuǎn)化,將轉(zhuǎn)化結(jié)果存在record[]數(shù)組中。為了防止溢出,程序中對下標變量cnt 進行取余操作。在運行周期里,OUT 口會對record[]數(shù)組里的內(nèi)容進行輸出。針對輸出的值為0 還是為1,進行FSK 調(diào)制。程序設(shè)計的流程如圖3 所示。
圖3 編程流程圖
選擇e-labsim、Visual Studio作為編程工具,e-labsim提供前端連接圖所需,Visual Studio 提供c 語言編寫環(huán)境,生成dll 文件以導(dǎo)入進二次開發(fā)模塊中。
e-labsim 是一款還擁有仿真引擎和數(shù)學模型的模塊級仿真軟件,與Flash 形式的“偽仿真”不同,e-labsim可以真實再現(xiàn)實驗狀況和現(xiàn)象。
圖4 為PCM 仿真結(jié)果。
圖4 PCM 仿真結(jié)果
圖5 為2FSK 和解調(diào)仿真結(jié)果。
圖5 2FSK 和解調(diào)仿真結(jié)果
本次設(shè)計結(jié)合PCM、FSK、基帶傳輸碼型知識設(shè)計了一個綜合PCM 抽樣、量化、編碼、將編碼的比特流進行FSK 調(diào)制和碼型變換的通信系統(tǒng),最后將PCM碼流進行解調(diào),從OUT 輸出解調(diào)信號。