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