北京邮电大学
通信原理实验
实 验 报 告
实验名称:高斯最小移频键控(GMSK)调制器实验
学院: 信息与通信工程学院
班级: 2010211123
姓名: 刘伟强
学号: 10210958
教师: 韩老师
目录
一、实验目的.........................................................................................................2
二、实验内容.........................................................................................................2
三、实验原理.........................................................................................................2
1、 GMSK 调制器工作原理及相位路径的计算 .........................................2
2、数字信号处理方法实现 GMSK 调制器 ..................................................5
四、实验步骤.........................................................................................................5
五、系统设计.........................................................................................................6
1、总体设计....................................................................................................6
2、软件部分....................................................................................................6
3、硬件部分..................................................................................................16
六、拓展部分.......................................................................................................20
七、故障与解决方法...........................................................................................22
1、软件部分..................................................................................................22
2、硬件部分..................................................................................................24
八、心得体会.......................................................................................................25
一、实验目的
1、 通过利用数字基带处理方法来实现高斯最小移频键控(GMSK)调制器算法的基带硬件
实验,对通信系统硬件实现有新的认识及新的思路。
2、 掌握 MAX+plusII 及可编程器件的应用。
3、 学会 C 语言或 Matlab 软件进行 GMSK 相位路径及仿真眼图的编程。
4、 正确使用测试仪表。
5、 理论联系实际,培养科学实验态度,提高实际动手能力。
二、实验内容
1、了解 GMSK 调制器工作原理,推导 GMSK 信号相位路径的计算公式,掌握 GMSK 调制
器数字化实现的原理。
2、掌握 GMSK 调制器数字化、实现地址逻辑的工作原理,用可编程逻辑器件实现地址逻
辑的设计,并仿真各点波形,分析检验其时序逻辑关系。
3、了解 GMSK 相位路径的编程流程图,并用计算机编出相位路径ℎ(t)的余弦及正弦表。
4、为了检验所编码表的正确性,可进一步利用计算机软件检验从上述码表得出的 GMSK
基带波形的眼图与理论计算是否一致,若两者一致,说明所编码表正确,可将它写入
EPROM 中,并将 EPROM 片子插在 GMSK 调制器硬件实验板上。
5、在通信实验板上,正确使用测试仪表观看 GMSK 基带信号眼图。
(1)用示波器观看 GMSK 基带信号眼图;
(2)用逻辑分析仪观看地址逻辑电路各点波形及其时序关系;
(3)用频谱仪观看 GMSK 调制器基带波形的功率谱。
6、按上述要求写出实验报告。
三、实验原理
1、 GMSK 调制器工作原理及相位路径的计算
MSK 调制可以看成调制指数 h= 的 2FSK 调制器,为了满足移动通信对发送信号功
率谱的带外辐射要求,在 MSK 调制前加入高斯滤波器,因而 GMSK 具有恒包络,连续相
位的特点,其旁瓣衰减比 MSK 更快,频谱利用率更高。产生 GSMK 信号的原理图如下。
GMSK 信号为
s(t) = cos[ωct + ℎ(t)] = cosℎ(t)cosωct−sinℎ(t)sinωct
相位路径为
ℎ(t) = 2πℎ ∫t−∞
∞
∑
n=−∞
bng(τ−nT)dτ
其中,g(t)为 BT= 高斯滤波器矩形脉冲响应,调制指数 h=,bn 为双极性不归零码
序列的第 n 个码元,bn 为+1 或-1。
高斯低通滤波器的传输函数为
式中, 是与高斯滤波器的 3dB 带宽 有关的一个常数。由 3dB 带宽定义有
即
所以
由此可见,改变 将随之改变。
滤波器的冲激响应为
由式看出, 不是时限的,但它随 按指数规律迅速下降,所以可近似认为它的宽
度是有限的。由于它的非时限性,相邻脉冲会产生重叠。
如果输入为双极性不归零矩形脉冲序列 :
式中,
其中, 为码元间隔。高斯预调制滤波器的输出为
式中,高斯滤波器矩形脉冲响应为
g(t) = x(t) ℎ ℎ(t) =
1
2T{Q[ 2πa (t−T2)−Q[ 2πa (t + T2)]}
其中
)exp()( 22 fafH
a bB
2
1
)(2 bBH
122 2)2exp( bBa
2
1
baB
bBa,
2
exp)( t
aa
th
)(th 2t
)(ts
n
nbn anTtbats 1),()(
其他,
,
0
2
0
1
)(
b
b
T
t
Ttb
bT
n
bn nTtgathtstx )()()()(
Q(t) =
1
2π
∞
∫
t
exp (−x
2
2 ) dx
当BTb取不同值时,高斯滤波器的矩形脉冲响应g(t)如下图所示。
经计算,BTb= 的高斯滤波器的g(t)的积分面积为 1/2,且满足以下条件
{∫− g(τ)dτ ≈ 12 g(t) ≈ 0 |t| >
所以,对于BT=的高斯滤波器,取g(t)的截短长度为5T来计算GMSK信号的相位ℎ(t),
就可达到足够精度。
由于 g(t)在 5T 时间区间呢的积分面积为 1/2,所以 BT= 的 GMSK 相位路径计算大为
化简。在kT ≤ t ≤ (k + 1)T期间,BT= 的 GMSK 的相位为
ℎ(t)=π
k+2
∑
n=k−2
bn∫
t
(n−2)T g(τ−nT−T2)dτ + L ∙ π2
L =
k−3
∑
n=−∞
bn (取模 4)
具体计算如下。
在kT ≤ t ≤ (k + 1)T时
ℎ(t) = ℎ(kT) + ∆ℎ(t)
ℎ(kT) = π
k+2
∑
n=k−2
bn∫
kT
(n−2)T g(τ−nT−T2)dτ + L ∙ π2
∆ℎ(t) = π
k+2
∑
n=k−2
bn∫
t
kT
g(τ−nT−T2)dτ
2、数字信号处理方法实现 GMSK 调制器
在算得ℎ(t)后,即可算出cosℎ(t)及sinℎ(t)值。在工程上,首先将cosℎ(t)及sinℎ(t)离散
化,制成表,固化在 ROM 中。由随机数据{bn}形成 ROM 表的地址,根据地址取出 ROM
中相应的基带信号离散值,然后利用 D/A 将其数模变换成模拟基带信号cosℎ(t)和sinℎ(t),
再由正交调制器将基带频谱搬移至载频上。
本实验的电路原理如图所示。
在上图中,虚框内表示地址逻辑,功能是取出所需要的采样量化点。ROM 表中存放的是 1024
个点的余弦值和正弦值。DAC 是模数转换,即将 1024 个数据进行量化,可以通过计算机绘
图 plot 函数实现。由于存在着采样造成的副主瓣,影响了功率谱特性,因此必须在 D/A 后
加低通滤波器来抑制高频分量,减少副主瓣对功率谱的影响。选用在上图中,虚框内表示地
址逻辑,功能是取出所需要的采样量化点。ROM 表中存放的是 1024 个点的余弦值和正弦值。
DAC 是模数转换,即将 1024 个数据进行量化,又计算机绘图程序实现。LPF 是低通滤波器,
可抑制高频分量,减少副主瓣对功率谱的影响。选用 3dB 带宽为 330kHz 的 6 阶贝塞尔低通
滤波器,数模变换后的基带信号经低通滤波器后的功率谱满足 建议的要求。
四、实验步骤
1、仔细推导g(t)、ℎ(t)的计算公式。
2、编写 GMSK 高斯滤波器的矩形脉冲响应g(t)子程序,并绘制g(t)的函数。
3、编写计算ℎ(t)的程序。
4、编写计算cosℎ(t)及sinℎ(t)的程序,并设计余弦及正弦 ROM 表。
5、将余弦和正弦码表中的每个样值的 10bit 码字,按照地址逻辑进行存放, 并用 matlab 程
序实现。
6、得到 ROM 存储的基本波形表,利用信号源产生的伪随机序列{an}经预编码后得到
{bn},经过地址逻辑运算由 ROM 中顺序取出cosℎ(t)及sinℎ(t)的离散值,然后利用计算
机绘图程序(功能相当于数模变换 DAC),得到基带波形的输出,观察仿真眼图。
7、把得到的正余弦表进行数字量化,写入 BIN 文件,下载到硬件系统中,通过示波器观察
实际硬件实现的 GMSK 信号眼图。
五、系统设计
1、总体设计
2、软件部分
系统软件流程图如下图所示。
(1)g(t)函数的产生
思路:了解到 Matlab 内置有 erfc 函数,可以通过erfc(x)的表达式,得到Q(t)的表达似式,
从而根据设定的时间等参数得到g(t)的表达式,然后在[−,]内用 linspace 取 1000 个点
作图可以得到g(t)的图像。具体编程实现如下():
代码:
function gt = gt_m( t )
%计算g(t)
clc;
clear;
T=1/270833;
B=
a=1/B*sqrt(log(2)/2);
t=linspace(*T,*T,1000);
gt=1/(2*T)*1/2*(erfc(pi/a*(t-T/2))-erfc(pi/a*(t+T/2)));
plot(t,gt);
title(' BT=时,高斯滤波器矩形脉冲响应g(t)');
xlabel('t(限定在5T范围内)');
ylabel('g(t)');
开始
设计g(t)
相位路径Ф(t)
8bit抽样得到
cosФ(t)和sinФ(t)
写入正余弦表
由地址逻辑
取出离散
值仿真
眼图的绘制
量化
写入BIN文
件
下载至系统,示波
器观察眼图波形
end
可以得到图像如下图所示:
(2)相位路径∅(t)与cos∅(t)及sin∅(t)的码表的产生
思路:首先由于每一个相位路径是由 5 个码元所组成的,先要编写四个象限的{bn}表,
将所有情况全部罗列出来。然后根据相位路径产生的公式,借助 matlab 中的积分 quad 函数,
计算相位路径ℎ(t),最后得到cosℎ(t)及sinℎ(t),分别用一个 1*1024 的矩阵来表示。具体编
程实现如下()。
流程图如下所示:
代码:
clc;
clear;
T=1/270833;
开始
输入抽样点数(抽8个比特),量化电平数Q=10,BT=,状态组合数b[32],L[4]
GMSK预调制滤波器的矩型脉冲响应g(t)子程序
生成b[32]码表
状态数n=0,1,...31
象限计数器L=0,1,2,3
Ф(0)
t=T/8 i=0,1,2,3,4,5,6,7
i=i+1
∆Ф(t)
计算cosФ(t)和sinФ(t)
结束
B=
a=sqrt(log(2)/2)/B;
t=linspace(*T,*T,1024);
g=@(t)(*erfc(pi*(t-T/2)/a)*erfc(pi*(t+T/2)/a))/(2*T); %g(t)
b=zeros(32,5);
for n=0:31 %将n转化为二进制
m=n;
for j=4:-1:1
if floor(m/2^j)==1 b(n+1,5-j)=1,m=m-2^j,end;
end;
b(n+1,5)=m;
for i=1:5
if b(n+1,i)==0
b(n+1,i)=-1;
end;
end;
end;
pa=[];
for n=0:31
for L=0:3
fai=0;
for j=-2:2
fai=fai+pi*b(n+1,j+3)*quad(g,*T,-j*T-T/2);
end
fai=fai+L*pi/2;
for i=0:7
delta=0;
for j=-2:2
delta=delta+pi*b(n+1,j+3)*quad(g,-j*T-T/2,i*T/8-j*T-T/2);
end
pb=fai+delta;
pa=[pa,pb];
end
end
end
%plot(t,pa)
s=sin(pa); %正弦表
c=cos(pa); %余弦表
save('','s');
save('','c');
(3)眼图的绘制
思路:得到ROM存储的基本波形表后,利用信号源产生的伪随机序列{an}经预编码
后得到{bn},经过地址逻辑运算由ROM中顺序取出cosℎ(t)及sinℎ(t)的离散值,然后利用计
算机绘图程序(功能相当于数模变换DAC),得到基带波形的输出,观察仿真眼图。
流程图如下:
说明:
A、 开辟空间存入ROM表以及伪随机序列。
B、根据所用的 ROM 表确定采样频率fs = 8fb(fb = ), 即一个码元时间内有 8
开始
设置取样点数(每比特8个抽样点),每样值量化电平数Q=10
产生2^32-1 m序列伪随机序列
起始地址为0000000000
先取四位随机码作为初始值
TIMES=1000
M=0
取下一位信息码
形成7位地址逻辑(含2位象限数及5位信息随机码)
I=0,1,2,3,4,
5,6,7
取ROM中的值
转换为实际值
将此值转化为屏幕
上一点
清屏
结束
个抽样值,每样值的量化电平是 10,并设初始相位是 0,即起始地址是 0000000000。
C、确定读取信号的数目为 10*TIMES,即每十个码元时间的波形显示于同一屏幕。共显示
TIMES 次。
D、由 bk-2,bk-1,bk,bk+1,bk+25 个码元及象限 L 形成地址逻辑获得 ROM 表中的 7 位地址;
E、再取三位地址码,顺序取出 i=0,1,2,3,4,5,6,7 个抽样量化值,由 10 位地址逻辑找到 ROM
中基带波形的位置,将其转换成实际值,存入一个数据文件用于眼图仿真,共有 10*TIMES*n
个值(n=8);
F、根据产生眼图的原理,将每次扫描结果叠加而成,删除程序中清屏幕命令,即可看到眼
图;
代码:
close all;
%仿真眼图
p; %将ROM表导入
m=2^23-1; %伪随机序列个数
TIMS=500; %显示次数
k=5;
t=1:80;
bcos=zeros(1,80);
bsin=zeros(1,80);
seq=round(rand(1,m)); %产生伪随机序列
an=[0,seq(1:4)]; %初始4位随机码
figure(1);
for i=1:TIMS
for j=0:9
an=[an(2:5),seq(k)]; %取下一位信息码
n=an(1)*16+an(2)*8+an(3)*4+an(4)*2+an(5);
if(k==5)
L=0;
else
seq(k-5)=2*seq(k-5)-1;
L=L+seq(k-5);
end;
k=k+1;
L=mod(L,4);
num=n*32+L*8;
for n=0:7
bcos(j*8+n+1)=c(num+n+1)+1; %取ROM中的余弦值
bsin(j*8+n+1)=s(num+n+1)+1; %取ROM中的正弦值
end;
end;
plot(t,bcos);
hold on;
title('cos眼图');
end;
眼图仿真波形图:
(4)量化并生出 BIN 文件
思路:为了将眼图在示波器上显示,首先将正余弦表进行 10bit 单极性量化,量化范围
为 0-1023。由于选用的芯片 ROM 为 8K。根据硬件逻辑地址,量化后的正余弦高两位、低
八位分别放在不同的芯片里,所以需要三个 BIN 文件。两个 BIN 文件写入 cos 和 sin 的低八
位,一个 BIN 文件写入 cos 和 sin 的高两位,sin 在前,cos 在后。另外,由于硬件电路图是
用了 A12~A3 的信号,所以 A2、A1、A0 是没有用的,在写入 BIN 文件前需要在每两个量
化结果之间插入 7 个 0 作为低位,即对每一个 BIN 文件进行扩容,否则会出现眼图无法正
常显示的现象。
代码:
cosbin=zeros(10,1024);
sinbin=zeros(10,1024);
p; %将ROM表导入
c1=(c+1)*; %值为0-1023
c2=(s+1)*;
for i=1:1024
m=c1(i);
for j=9:-1:1
if floor(m/2^j)==1 cosbin(10-j,i)=1;m=m-2^j;end; %量化为10bit
end;
cosbin(10,i)=floor(m);
end;
for i=1:1024
m=c2(i);
for j=9:-1:1
if floor(m/2^j) sinbin(10-j,i)=1;m=m-2^j;end;
end;
sinbin(10,i)=floor(m);
end;
coslow=zeros(1,1024);
sinlow=zeros(1,1024);
cossin=zeros(1,1024);
for i=1:1024 %生成3片ROM
coslow(i)=cosbin(3,i)*2^7+cosbin(4,i)*2^6+cosbin(5,i)*2^5+cosbin(6,i)*2^4+cosbin
(7,i)*2^3+cosbin(8,i)*2^2+cosbin(9,i)*2+cosbin(10,i);
sinlow(i)=sinbin(3,i)*2^7+sinbin(4,i)*2^6+sinbin(5,i)*2^5+sinbin(6,i)*2^4+sinbin(7,
i)*2^3+sinbin(8,i)*2^2+sinbin(9,i)*2+sinbin(10,i);
cossin(i)=sinbin(1,i)*2^7+sinbin(2,i)*2^6+cosbin(1,i)*2+cosbin(2,i);
end;
coslowbin=zeros(1,1024*8);
sinlowbin=zeros(1,1024*8);
cossinbin=zeros(1,1024*8);
for i=1:1024 %由1K向8K扩容
coslowbin(i*8-7)=coslow(i);
sinlowbin(i*8-7)=sinlow(i);
cossinbin(i*8-7)=cossin(i);
end;
fidcos = fopen('','w');
fwrite(fidcos,coslowbin);
fidsin = fopen('','w');
fwrite(fidsin,sinlowbin);
fidcossin = fopen('','w');
fwrite(fidcossin,cossinbin);
fclose('all');
产生的 BIN 文件如下图所示:
cos 和 sin 的高两位合成的 BIN 文件
cos 低八位的 BIN 文件
sin 低八位的 BIN 文件
3、硬件部分
硬件我们采用的是 GMSK 调制器通信系统实验箱,紫外线擦除器,40MHz 双踪同步示
波器,双 16V()直流稳压电源,28 管脚 ROM 编程器。
由实验原理分析可知,地址逻辑可由伪随机序列{an}经预编码后得到{bn},再经地址逻
辑运算形成。电路设计可分为时钟分频、伪随机序列的产生、地址逻辑的生成 3 部分。其中
时钟分频和伪随机序列产生可由 VHDL 语言实现,地址逻辑的生成可由硬件之间的连线实
现。下面利用 Quartus 软件环境完成硬件仿真。
(1)地址逻辑框图
利用 Quartus 软件得到的地址逻辑电路图如下图。
其中 clockmgdf 器件是时钟脉冲发生器以及伪随机序列发生器;DATA 为伪随机输出信号,
A5、A4、A3 为 8 个采样值的逻辑地址码,分别为fb,2fb,4fb,fb = 为码元速率;
A6、A7 为两位象限逻辑地址码,对应 L 从 0 到 3;A8、A9、A10、A11、A12 为 5 为信息
地址码。
其中 clockmgdf 时钟脉冲发生器的 VHDL 代码为:
library ieee;
use ;
use ;
entity clockmgdf is
port(
CLK :in std_logic;
A3 :out std_logic;
A4 :out std_logic;
A5 :out std_logic;
DATA:out std_logic
);
end;
architecture a of clockmgdf is
signal adr :std_logic_vector(2 downto 0);
signal m :std_logic_vector(22 downto 0):= (others=> '0');
signal n :integer range 0 to 7;
begin
process(CLK)
begin
if (CLK'event and CLK='1') then
if n = 7 then
n <= 0;
if m = 0 then
m(0) <= '1';
else
m <= m(21 downto 0) & (m(0) xor m(22));
end if;
else
n <= n + 1;
end if;
adr <= adr + 1;
end if;
end process;
A3 <= adr(0);
A4 <= adr(1);
A5 <= adr(2);
DATA <= m(0);
end;
伪随机序列发生器 addrlogic 的 VHDL 代码为:
library ieee;
use ;
use ;
entity addrlogic is
port(
DATA:in std_logic;
A5 :in std_logic;
A6 :out std_logic;
A7 :out std_logic;
A8 :out std_logic;
A9 :out std_logic;
A10 :out std_logic;
A11 :out std_logic;
A12 :out std_logic
);
end;
architecture a of addrlogic is
signal DataTemp:std_logic_vector(4 downto 0):="00000";
signal L:std_logic_vector(1 downto 0):="00";
begin
process(A5)
begin
if (A5'event and A5='0') then
if(DataTemp(4)='0') then
L<=L-1;
else
L<=L+1;
end if;
DataTemp <= DataTemp(3 downto 0) & DATA;
end if;
end process;
A6 <= L(0);
A7 <= L(1);
A8 <= DataTemp(0);
A9 <= DataTemp(1);
A10 <= DataTemp(2);
A11 <= DataTemp(3);
A12 <= DataTemp(4);
end;
(2)输出波形
计算机仿真逻辑的输出波形为:
(3)器件编程
将文件下载到 GMSK 通信系统实验箱通信实验板,用逻辑分析仪或存储示波器观测地址逻
辑波形。其中管脚分配如下:
地 址
线
A12 A11 A10 A9 A8 A7 A6 A5 A4 A3
管 脚
号
46 68 67 65 64 63 61 60 49 48
(4)硬件调试步骤
A、用编程器将量化后的码表的二进制 bin 数据文件下载到 ROM 中,在将下载成功的芯片
插在 GMSK 通信实验板上,注意芯片的位置和方向;
B、将 GMSK 通信实验板上的 JTAG 接口与计算机相连;
C、将双路稳压电源调整为±16V;
D、接通电源,用示波器观察余弦cosℎ(t)经过低通滤波器 LPF 后的输出波形,与 Matlab 软
件仿真的眼图比较。
(5)示波器输出眼图
六、拓展部分
(1) 眼图的功率谱密度
思路:仿真功率谱密度与仿真眼图类似,都是使用伪随机序列提供地址逻辑,最后生成
的值运用编写的 t2f 函数进行傅立叶变换,再平方,运用对数刻度将其 plot 即可仿真功率谱
密度。
代码:
p;
fs=*10^6; %采样速率(Hz)
m=2^7; %采样点数
T=(m-4)/270833; %时域范围(时域点数)
df=1/T;
f=[-fs/2+df:df:fs/2]; %频域范围(频域点数)
bn=round(rand(1,m));
tmp=[0,bn(1:4)]; %b(k-2)至b(k+2)数据暂存器
k=5;
bcos=[];
for i=1:m-4 %bn取值范围为1至m
tmp=[tmp(2:5),bn(k)];
n=tmp(1)*16+tmp(2)*8+tmp(3)*4+tmp(4)*2+tmp(5);%对应数列中位置的高5
位
if k==5 L=0;
else
bn(k-5)=2*bn(k-5)-1; %预编码
L=L+bn(k-5);
end;
L=mod(L,4); %L取模4
k=k+1;
num=n*32+L*8; %对应数列中的实际地址
bcos(i*8-7:i*8)=c(num+1:num+8); %8位采样点
end;
S=t2f(bcos,fs);
Eg=abs(S).^2;
plot(f,10*log10(Eg));
xlabel('f(Hz)');
ylabel('dB/Hz');
title('GMSK功率谱密度图');
其中关于t2f的傅立叶变化的如下:
%傅里叶正变换
function S= t2f(s,fs) % s代表输入信号,S代表s的频谱,fs是采样频率
N= length(s); %样点总数
T= 1/fs*N; %观察时间
f= [-N/2:(N/2-1)]/T; % 频率采样点
tmp1= fft(s)/fs;
tmp2= N*ifft(s)/fs;
S(1:N/2)= tmp2(N/2+1: -1:2);
S(N/2+1:N)= tmp1(1:N/2);
S= S.*exp(j*pi*f*T);
end
生成的功率谱仿真图如下图所示(由于产生的是随机序列,每次生成的功率谱密度都不相
同):
七、故障与解决方法
1、软件部分
问题 1、生成的眼图如下图所示:
解决方法:经检查,在计算ℎ(t)的时候对于码表的遍历,for 循环出现了问题。按照课本
上,应该是先对 L 进行遍历,再对bn进行遍历,结果就出现了上图的眼图。最后考虑了
逻辑,应该先对bn进行遍历,再对 L 进行遍历。结果就产生了正确的眼图。书本上的流
程图出现了错误。
问题 2、积分函数的选取
解决方法:matlab 含有很多的积分函数,由于本题的函数是带有变量的。经过查找资料,
我选用了 quad 函数可以对函数的积分。Quad 函数我使用了变限积分的形式,将积分的
下限转换到 quad 函数中,如 quad(g,*T,-j*T-T/2)。
问题 3、生成的眼图如下图所示:
解决方法:在生成眼图的时候,由于一开始是生成 4 位随机码,后来不断取下一位信息
码。而在我的代码中将取得的下一位信息码的 5 位码却没有再赋给原来变量,导致循环
无法进行下去。五位码一直为相同的初始值,所以导致了上图的出现。经过更改变量后
出现了正确的眼图。
问题 4、眼图生成的 M 序列出现问题
解决方法:经过网上查找资料,我找到了 idinput 函数,这可以生成 m 序列。可是当我
输入至 matlab 中,matlab 输出非常缓慢,达不到实验要求。后来我换成了 rand 函数进
行输出。
问题 5、最后硬件示波器显示的波形不正确
解决方法:在生出 BIN 文件的时候,cos 和 sin 的高 2 位写的顺序出现了错误,应该是 sin
写在高两位,cos 写在低两位。而我由于出现相反,导致最后出现的波形出现错误。生
出 BIN 文件时,由于硬件逻辑地址是 A12 到 A3,A2、A1、A0 是接地的,所以量化之
后每个数之后要添加 7 个 0,即扩容,才能与硬件逻辑地址相对应。
2、硬件部分
本实验的硬件实验不是很多,而且由于硬件设备出现故障,出现的问题也很有限。
主要集中在烧写 BIN 文件出现的问题。
问题 1、EPROM 无法进行查空
原因:EPROM 是紫外线擦除式,每次擦写需要通过紫外线进行大概 30 分钟的擦除过
程,每次可能由于没有成功的擦除干净,使得芯片查空失败。
问题 2、EPROM 无法烧写
原因:据老师介绍,很多 EPROM 由于错误的操作不能进行正常的烧写。所以需要进行
更换。
八、心得体会
本次实验是通信原理 GMSK 调制器实验,我想谈谈自己对这个实验的想法和体会。综
合起来,这次实验花费的时间一开始比较少,后来花了比较长的时间。在第一节课的时候,
老师给我们布置了看书的任务,当时我也没怎么上心。上个学期的通信原理老师只上到了
MSK,而且由于不是考试范围,没怎么仔细学习过。在一次实验课,看了关于 GMSK 的内
容也没怎么看懂。等到之后我们期中考完以后,我才开始正式的投入到实验中去。
首先,我翻开了通信原理书重新回顾了 MSK 和 GMSK 的产生原理,自己亲自推导了
一遍相位路径ℎ(t)的表达式,发现当初第一节课不懂的原因是自己没有亲自推导一遍,其中
关于 5 个码元和 L 的式子不好理解。经过自己的亲自推导后,这些式子的含义我也能够理
解。还有关于g(t)截短为 5T 的用处、相位路径的象限 L、整数和非整数部分分开计算这一系
列的问题。接下来就开始了软件的正式编写。
关于g(t)的编写比较简单,一开始还打算自己编写Q(t),后来查找资料发现 Matlab 内部
有 erfc 函数,我就直接使用进行编写,过程顺利。ℎ(t)的编写中出现了一些问题,一开始就
是码表如何的编写,因为是 32*5 的矩阵,直接赋值不实际,所以采用了对每一位的比较的
方法。按照书上给的流程图,出现了一些问题(如上面问题所述),后来更改了 for 循环,
最后生成的是 1*1024 的 cos 和 sin 矩阵。
关于眼图的绘制,其中的流程图的原理一开始没有理解,导致进度一直停滞不前。后来
去请教了周围的同学,原来自己还没有完全理解眼图绘制的原理,所以无法进行编写。后来
按照流程图我成功进行了眼图的绘制。最后我将正余弦表量化,量化与前面的码表生成大同
小异。量化后要生成硬件的 BIN 文件。一开始不太懂为什么要这么写,后来研究了关于实
验硬件设备后发现芯片是 8K 的,只能允许 8 位的烧写。所以要将正余弦表分成 3 个 BIN 文
件。还有必须对芯片进行由 1K 至 8K 的扩容。
硬件方面由于实验设备的损坏,我们无法进行正常的硬件设备的实验。我们也只能下载
一下进行验证。经过本次实验发现我发现这样的验收效率太低,希望老师能够换其他的形式
进行验收。
本次实验是一次通信原理 GMSK 的大实验,我从一开始的一窍不通到现在的对 GMSK
的原理以及如何产生都十分的清楚,自己还是有很强的自豪感。这次实验主要学习到了如何
将一个系统一步一步地进行实现,以及仿真的重要性。没有了 Matlab 强大的仿真能力,我
们无法一直保证正确的输出。这次实验我学到了很多,也回顾了很多有用的知识。这次实验
也要谢谢韩老师的悉心指导,每次实验帮我们解答问题,最后验收晚上我们调程序也在陪着
我们,和我们聊聊未来的打算。
非常感谢这次实验,这次实验使我学到了很多很多。