0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

计算机通信与网络v2 实验课程(22)

通信工程师专辑 来源:未知 2022-12-14 06:05 次阅读

继续讲解!本堂课开始给出直接序列扩频的程序实例。程序虽然简单,但是能说明和验证部分理论。学习就是要从简单入手,然后再逐步深入。之前给出的直接序列扩频程序就是纯理论仿真程序。

不过讲之前先聊聊5G。喊了好几年了,真的快来到了。中国企业这次不会再是旁观者了。2018年6月,随着5G新空口(NR: New Radio)独立组网功能的冻结,5G已经完成第一阶段的全面标准化工作,进入全面产业化阶段,预计2020年实现全面商用。与前几代移动通信相比,5G的系统性能大幅提高,峰值速率可达10Gbps~20Gbps,用户体验速率可达100Mbps~1Gbps,连接数密度每平方公里可达100万,每平方米流量密度可达10Mbps,能够支持500km/h运动情况下的通信。从业务能力来说,5G能够满足更为丰富的业务需求。过去几代移动通信主要实现“人与人”之间的通信;而在5G时代,还要实现“人与物”、“物与物”之间的高效通信,最终实现“万物互联”。国际电信联盟(ITU)将增强的移动宽带(eMBB)、高可靠低延迟通信(uRLLC)以及大规模机器通信(mMTC)定义为5G的三大主要应用场景。2018年,国家喊出了6G。对于这个消息,我有点晕!5G似乎还没能稳定运行啊?技术可以先行。2022年了,5G有了,芯片被卡脖子了。

来看程序吧。

这可是老师当年在企业时写的研发代码哦!

珍惜的看吧!

% 卫星地球站多进制位移m序列扩频系统算法仿真 %

%%********* 程序说明 **********%

%% File: IF_satelliteMaryds_sim1.m %%

%% date: 2008-03-31 author: 算法工匠%%


%%% 目的

%%% 本程序进行卫星地球站中多进制位移m序列扩频系统算法仿真。

%%% 为测试程序的误码率性能,故没有捕获部分。


%%% 仿真环境

%%% 信号源设置:信号源仅含有同步码。

%%% 采样速率:码片速率的4倍,奈奎斯特采样, 设置有采样偏差

%%% 中频频率:1倍码片速率 载波偏差:200Hz

%%% 码片速率: 2.4KHz 加噪采用awgn方式

%%% 无捕获部分。


%%% 程序结构

%%% 系统的同步码采用32位的m序列作为对频偏和同步的引导,

% 帧头采用码长63位m序列的前32位比特,采用BPSK调制方式

%%% 数据传送采用QPSK调制方式(以后可改进为oqpsk方式),

% 数据传送过程中有同步辅助。

%%% 伪码跟踪在I信道中完成。

%%% I信道使用位移的m序列(采用[5,2]反馈结构)进行同步,

% BTR、帧头和帧尾是包含在该路信号中。使用差分调制。

%%% Q路用16ary多进制扩频。

% Q信使用位移的m序列(采用[5,4,2,1]反馈结构)进行数据传输。

%%% I路的BTR码采用全1的模式,利于用fft的捕获方式。

%%% 切记:改抽样因子的同时,要改动捕获门限值。


%%% 改进之处


clear all;

%%************ 程序主体 ************%%

format long;

start_time = clock;

%%%%%%%%%% %%%%%%%

%% 固定参数部分 %%

%%%%%%%%%%%%%%%%%%

%--升滚降平方根滤波器的参数设置---

ins_value = 8; % 内插因子

br = 4; % 信息源比特率

sr = 1;

cr = 2.4e3*1 ; % 码片速率


%---产生扩频序列----

stg = 5;

taps = [ 2, 5 ];

inidata = [ 1, 1, 1, 1, 1 ];

n = 1;

I_mseq = funct_mseq(stg, taps, inidata, n);

I_mseq_nrz = [2*I_mseq-1 -1]; % Unbipolar -> Bipolar


time_Iseq = ceil(1/ins_value.*(1:length(I_mseq_nrz)*ins_value));

I_mseq_nrz_ceil = I_mseq_nrz(time_Iseq);

I_mseq_fft = fft(I_mseq_nrz_ceil);


I_mseq_ceil_triple = [I_mseq_nrz_ceil I_mseq_nrz_ceil I_mseq_nrz_ceil];


stg = 5;

taps = [ 1, 2, 4, 5 ];

inidata = [ 1, 1, 1, 1, 1 ];

n = 1;

Q_mseq = funct_mseq(stg, taps, inidata, n);

Q_mseq_nrz = [2*Q_mseq-1 -1]; % Unbipolar -> Bipolar

Q_mseq_nrz_ceil = Q_mseq_nrz(time_Iseq);

Q_mseq_ceil_triple = [Q_mseq_nrz_ceil Q_mseq_nrz_ceil Q_mseq_nrz_ceil];


Q_mseq_doub = [2*Q_mseq-1 -1 2*Q_mseq-1 -1];

for i = 1:16

Q_mseqmarix(i,:) = Q_mseq_doub(2*(i-1)+1:2*(i-1)+32);

end


%---采样频偏参数---

offset=0.01;

ideal_samplefre = ins_value*cr;

samplefre = ideal_samplefre+offset;


%----载波和频偏参数----

fcarrier = 1*cr;

foffset = 110;

ophase = pi/3;


%----DLL参数设置 ----

Bd = 0.001;

% 环路噪声带宽

damp = 0.707;

% 阻尼系数

td = 32/cr;

% 相关积分时间

Kd = 1;

% 环路增益

Wd = 2*Bd/(damp+1/(4*damp));

% 自然角频率

Cd1 = 8*damp*Wd*td/(Kd*(4+4*damp*Wd*td+(Wd*td)^2));

% 环路滤波器的系数

Cd2 = 4*(Wd*td)^2/(Kd*(4+4*damp*Wd*td+(Wd*td)^2));

%%%%%%%%%%%

%% 发射机部分 %%

%%%%%%%%%%

%----- 信息组帧 -----

%---- I路成帧 ----

%---BTR码--

% I_BTR = [ 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 ]; % 16位

I_BTR = ones(1,16);


%-帧头 采用63码长的m序列中前32比特--

I_framestart_uwcode = [ 1 -1 1 1 1 -1 1 -1 1 1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 1 1];


%---帧尾 采用3个barker码级联--

I_frameend_uwcode = [ -1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 1];


%--- 帧信息内容 ------

frame_msg = 2*randint(1,2000)-1;


%-串并转化 分解为I路和Q路信息---

IQdata = reshape(frame_msg,5,length(frame_msg)/5);

IQdata(1,151:190) = ones(1,40); % 设置标志以便调试程序

Iinformation = IQdata(1,:);

Qinformation = reshape([IQdata(2,:);IQdata(3,:);IQdata(4,:);IQdata(5,:)],1,4*length(frame_msg)/5);


%---- 成帧 --------

frame_msg_infI = [ I_BTR I_framestart_uwcode Iinformation I_frameend_uwcode ];

frame_msg_infQ = [zeros(1,length([I_BTR I_framestart_uwcode])) Qinformation zeros(1,length(I_frameend_uwcode))];


%---- 调制 ------

%--- I路信息的DBPSK调制 ---

len=2;

inf_phase(1)=0;

for i=1:length(frame_msg_infI)

if frame_msg_infI(i) == 1

inf_phase(len) = inf_phase(len-1);

elseif frame_msg_infI(i) == -1

inf_phase(len) = inf_phase(len-1) + pi;

end

len =len +1;

end

Tra_baseI = cos(inf_phase);

% 注意:这里会导致I路多出一个符号,因此信号源要多加32个0


%---I路信息的直扩调制-----

for index = 1:length(Tra_baseI)

I_tx_dsseq ((index-1)*32+1:index*32) = Tra_baseI(index)*I_mseq_nrz;

end


%--Q路信息的多进制扩频调制----

Mary_bits = 4;

for index = 1:length(Qinformation)/Mary_bits

if (Qinformation(Mary_bits*index-3)== -1 && Qinformation(Mary_bits*index-2)== -1 && Qinformation(Mary_bits*index-1)== -1 && Qinformation(Mary_bits*index)== -1)

Q_tx_dsseq((index-1)*32+1:index*32) = Q_mseqmarix(1,:);

Q_mseqsite(index) = 1; % 本语句的目的是为了可以进行误码的追踪。

elseif (Qinformation(Mary_bits*index-3)== 1 && Qinformation(Mary_bits*index-2)== -1 && Qinformation(Mary_bits*index-1)== -1 && Qinformation(Mary_bits*index)== -1)

Q_tx_dsseq ((index-1)*32+1:index*32) = Q_mseqmarix(2,:);

Q_mseqsite(index) = 32*ins_value - 2*(2-1)*ins_value + 1;

elseif (Qinformation(Mary_bits*index-3)== -1 && Qinformation(Mary_bits*index-2)== 1 && Qinformation(Mary_bits*index-1)== -1 && Qinformation(Mary_bits*index)== -1)

Q_tx_dsseq ((index-1)*32+1:index*32) = Q_mseqmarix(3,:);

Q_mseqsite(index) = 32*ins_value - 2*(3-1)*ins_value + 1;

elseif (Qinformation(Mary_bits*index-3)== 1 && Qinformation(Mary_bits*index-2)== 1 && Qinformation(Mary_bits*index-1)== -1 && Qinformation(Mary_bits*index)== -1)

Q_tx_dsseq ((index-1)*32+1:index*32) = Q_mseqmarix(4,:);

Q_mseqsite(index) = 32*ins_value - 2*(4-1)*ins_value + 1;

elseif (Qinformation(Mary_bits*index-3)== -1 && Qinformation(Mary_bits*index-2)== -1 && Qinformation(Mary_bits*index-1)== 1 && Qinformation(Mary_bits*index)== -1)

Q_tx_dsseq ((index-1)*32+1:index*32) = Q_mseqmarix(5,:);

Q_mseqsite(index) = 32*ins_value - 2*(5-1)*ins_value + 1;

elseif (Qinformation(Mary_bits*index-3)== 1 && Qinformation(Mary_bits*index-2)== -1 && Qinformation(Mary_bits*index-1)== 1 && Qinformation(Mary_bits*index)== -1)

Q_tx_dsseq ((index-1)*32+1:index*32) = Q_mseqmarix(6,:);

Q_mseqsite(index) = 32*ins_value - 2*(6-1)*ins_value + 1;

elseif (Qinformation(Mary_bits*index-3)== -1 && Qinformation(Mary_bits*index-2)== 1 && Qinformation(Mary_bits*index-1)== 1 && Qinformation(Mary_bits*index)== -1)

Q_tx_dsseq ((index-1)*32+1:index*32) = Q_mseqmarix(7,:);

Q_mseqsite(index) = 32*ins_value - 2*(7-1)*ins_value + 1;

elseif (Qinformation(Mary_bits*index-3)== 1 && Qinformation(Mary_bits*index-2)== 1 && Qinformation(Mary_bits*index-1)== 1 && Qinformation(Mary_bits*index)== -1)

Q_tx_dsseq ((index-1)*32+1:index*32) = Q_mseqmarix(8,:);

Q_mseqsite(index) = 32*ins_value - 2*(8-1)*ins_value + 1;

elseif (Qinformation(Mary_bits*index-3)== -1 && Qinformation(Mary_bits*index-2)== -1 && Qinformation(Mary_bits*index-1)== -1 && Qinformation(Mary_bits*index)== 1)

Q_tx_dsseq ((index-1)*32+1:index*32) = Q_mseqmarix(9,:);

Q_mseqsite(index) = 32*ins_value - 2*(9-1)*ins_value + 1;

elseif (Qinformation(Mary_bits*index-3)== 1 && Qinformation(Mary_bits*index-2)== -1 && Qinformation(Mary_bits*index-1)== -1 && Qinformation(Mary_bits*index)== 1)

Q_tx_dsseq ((index-1)*32+1:index*32) = Q_mseqmarix(10,:);

Q_mseqsite(index) = 32*ins_value - 2*(10-1)*ins_value + 1;

elseif (Qinformation(Mary_bits*index-3)== -1 && Qinformation(Mary_bits*index-2)== 1 && Qinformation(Mary_bits*index-1)== -1 && Qinformation(Mary_bits*index)== 1)

Q_tx_dsseq ((index-1)*32+1:index*32) = Q_mseqmarix(11,:);

Q_mseqsite(index) = 32*ins_value - 2*(11-1)*ins_value + 1;

elseif (Qinformation(Mary_bits*index-3)== 1 && Qinformation(Mary_bits*index-2)== 1 && Qinformation(Mary_bits*index-1)== -1 && Qinformation(Mary_bits*index)== 1)

Q_tx_dsseq ((index-1)*32+1:index*32) = Q_mseqmarix(12,:);

Q_mseqsite(index) = 32*ins_value - 2*(12-1)*ins_value + 1;

elseif (Qinformation(Mary_bits*index-3)== -1 && Qinformation(Mary_bits*index-2)== -1 && Qinformation(Mary_bits*index-1)== 1 && Qinformation(Mary_bits*index)== 1)

Q_tx_dsseq ((index-1)*32+1:index*32) = Q_mseqmarix(13,:);

Q_mseqsite(index) = 32*ins_value - 2*(13-1)*ins_value + 1;

elseif (Qinformation(Mary_bits*index-3)== 1 && Qinformation(Mary_bits*index-2)== -1 && Qinformation(Mary_bits*index-1)== 1 && Qinformation(Mary_bits*index)== 1)

Q_tx_dsseq ((index-1)*32+1:index*32) = Q_mseqmarix(14,:);

Q_mseqsite(index) = 32*ins_value - 2*(14-1)*ins_value + 1;

elseif (Qinformation(Mary_bits*index-3)== -1 && Qinformation(Mary_bits*index-2)== 1 && Qinformation(Mary_bits*index-1)== 1 && Qinformation(Mary_bits*index)== 1)

Q_tx_dsseq ((index-1)*32+1:index*32) = Q_mseqmarix(15,:);

Q_mseqsite(index) = 32*ins_value - 2*(15-1)*ins_value + 1;

elseif (Qinformation(Mary_bits*index-3)== 1 && Qinformation(Mary_bits*index-2)== 1 && Qinformation(Mary_bits*index-1)== 1 && Qinformation(Mary_bits*index)== 1)

Q_tx_dsseq ((index-1)*32+1:index*32) = Q_mseqmarix(16,:);

Q_mseqsite(index) = 32*ins_value - 2*(16-1)*ins_value + 1;

elseif (Qinformation(Mary_bits*index-3)== 0 && Qinformation(Mary_bits*index-2)== 0 && Qinformation(Mary_bits*index-1)== 0 && Qinformation(Mary_bits*index)== 0)

Q_tx_dsseq ((index-1)*32+1:index*32) = zeros(1,32);

Q_mseqsite(index) = 0;

end

end


%--- 扩频调制信息成帧 -----

% Ibit_flow = [ zeros(1,100) I_tx_dsseq zeros(1,100) ]; %

% Qbit_flow = [ zeros(1,100) Q_tx_dsseq zeros(1,100) ];

% 信息添加起始内容表征突发模式

Ibit_flow = [ I_tx_dsseq zeros(1,100) ]; %

Qbit_flow = [ zeros(1,(length([I_BTR I_framestart_uwcode])+1)*32) Q_tx_dsseq zeros(1,length(I_frameend_uwcode)*32) zeros(1,100) ]; %

%%% 帧尾加0是为方便本程序比较误码率所设,实际系统中没有该部分内容


%-- 内插ins_value倍并加入采样频偏 -

ins_seq = ceil(cr/samplefre.*(1:length(Ibit_flow)*ins_value));

Isignalsample = Ibit_flow(ins_seq);

Qsignalsample = Qbit_flow(ins_seq);


%---生成有载波调制的数据---

time = (0:length(Isignalsample)-1)/samplefre;

tra_IFsignal = Isignalsample.*cos(2*pi*(fcarrier+foffset).*time+ophase) + Qsignalsample.*sin(2*pi*(fcarrier+foffset).*time+ophase);

什么是多进制扩频?这些可是当年本人在企业研发的干货啊,就先给出调制部分的内容吧,让同学们近距离的接触“实战”程序。如果想深入学习,那就请考研吧。毕竟只有到了研究生阶段才会深入学习扩频知识,本科阶段的学习以掌握基本原理为主。未完,待续!

20181118记录:

  • 【流量主】公众号文中流量主违规示例及操作建议周知

  • 为保障你持续获取文中广告位展示收益,避免出现如违规遮盖、诱导点击等违规行为,请认真阅读公众号文中流量主违规示例及操作建议。
    如有疑问:可通过公众号“微信广告助手”联系我们。
    微信广告团队
    2018年11月16日

收到了微信发来的邮件,值得好好读一下。

不能违规,要严格遵守。

毕竟公众号是在微信的帮助下不断的成长!

如果公众号已经是流量主了,请注意不要违规,不然会被封号。

修订记录

20181123 完成初稿;

20221213修订内容v2;


原文标题:计算机通信与网络v2 实验课程(22)

文章出处:【微信公众号:通信工程师专辑】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 通信网络
    +关注

    关注

    21

    文章

    2028

    浏览量

    51962

原文标题:计算机通信与网络v2 实验课程(22)

文章出处:【微信号:gh_30373fc74387,微信公众号:通信工程师专辑】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    计算机局域网技术是什么

    无线电磁波)互相连接起来,组成资源和信息共享的计算机互联网络技术。局域网技术涵盖了多个方面,包括网络拓扑结构、传输介质、媒体访问控制方法、网络协议、
    的头像 发表于 10-08 10:23 224次阅读

    简述计算机总线的分类

    计算机总线作为计算机系统中连接各个功能部件的公共通信干线,其结构和分类对于理解计算机硬件系统的工作原理至关重要。以下是对计算机总线结构和分类
    的头像 发表于 08-26 16:23 963次阅读

    计算机网络中的三种通信方式

    计算机网络中的三种通信方式,即单工通信、半双工通信和全双工通信,是理解和设计高效网络架构的基础。
    的头像 发表于 08-07 15:00 2119次阅读

    工业计算机与普通计算机的区别

    在信息化和自动化日益发展的今天,计算机已经成为了我们日常生活和工作中不可或缺的工具。然而,在计算机领域中,工业计算机和普通计算机虽然都具备基本的计算
    的头像 发表于 06-06 16:45 1199次阅读

    硬件平台介绍及使用(SC171开发套件V2

    硬件平台介绍及使用(SC171开发套件V2课程类别 课程名称 视频课程时长 视频课程链接 课件链接 硬件 SC171开发套件
    发表于 04-09 15:34

    【量子计算机重构未来 | 阅读体验】 跟我一起漫步量子计算

    技术的发展,我们的通信和数据安全将得到更强大的保障。然而,需要指出的是,量子计算技术的发展仍面临诸多挑战。例如,量子计算机的构建和维护成本极高,目前仍停留在实验室阶段;同时,量子
    发表于 03-13 19:28

    【量子计算机重构未来 | 阅读体验】+ 了解量子叠加原理

    如何生产制造。。。。。。 近来通过阅读《量子计算机—重构未来》一书,结合网络资料,了解了一点点量子叠加知识,分享给大家。 先提一下电子计算机,电子计算机使用二进制表示信息数据,二进制的
    发表于 03-13 17:19

    【量子计算机重构未来 | 阅读体验】+ 初识量子计算机

    大语言模型训练会是一个怎样的情景。。。。。。 希望量子计算机尽快走出实验室,能够早日进入寻常百姓家,更希望我国的量子计算机取得突破,蓬勃发展,也能遥遥领先! 今天先研读至此,后续所读所感将继续分享。 附
    发表于 03-05 17:37

    《RVfpga:理解计算机体系结构》3.0 版本更新上线

    计算机体系结构课程,该课程针对本科教学设计,包含一整套丰富的教学资料和实践练习,可帮助学生了解处理器架构中的关键要素,包括多个IP内核,修改RISC-V内核的方法,
    的头像 发表于 01-18 08:27 724次阅读
    《RVfpga:理解<b class='flag-5'>计算机</b>体系结构》3.0 版本更新上线

    东莞计算机网络工程包括哪些?

    计算机网络工程是指设计、建立和管理计算机与设备之间的连接和通信系统的过程。网络工程包括哪些内容呢?广东东莞网络工程公司表示它涵盖了
    的头像 发表于 12-27 17:47 658次阅读

    什么是后量子密码学?量子计算机vs经典计算机

    后量子密码学(Post-Quantum Cryptography,PQC)是在经典计算机上定义和执行算法,研究量子计算机和经典计算机都无法破解的新密码系统。后量子密码学的提出是为了抵抗量子计算
    的头像 发表于 12-19 11:42 1617次阅读

    计算机网络中的通信子网主要有哪些功能?

    计算机网络中的通信子网主要负责数据的传输、处理、转换和交换,以及提供相关的网络控制协议、通信控制软件和通信设备等功能,同时还对
    的头像 发表于 12-15 17:27 1483次阅读

    通信子网在计算机网络中的地位和作用

    通信子网在计算机网络中扮演着至关重要的角色。它是实现网络内和网络间数据通信的关键基础设施,为上层应用提供了通用的
    的头像 发表于 12-15 17:15 741次阅读

    单板计算机是什么?它与其他计算机有何不同?

    、存储器、通信接口等。它们通常以一个小而紧凑的电路板形式出现,并提供了完整的计算和控制功能。 与传统的台式机和笔记本电脑相比,单板计算机的尺寸更小、功耗更低、价格更便宜。它可以方便地集成到各种嵌入式系统中,如机器人、无人机、传感
    的头像 发表于 12-15 09:58 1388次阅读

    计算机网络中速率和带宽的区别

    才能达到的数据传送的速率,然而在现实生活中是达不到的。 带宽,在计算机网络中用来表示网络通信线路传送数据的能力,因此网络带宽表示在单位时间内从网络
    发表于 11-27 16:29