精华内容
下载资源
问答
  • 题目基于 MATLAB 的通信系统仿真 信道编码对通信系统性能的影响 专业 通信工程 姓名崔校通 ...摘要简述信道编码理论详细说明分组码的编译原理实现方法检错纠错能 力用 MATLAB 仿真有无信道编码条件下对通信系统性能
  • 基于MATLAB信道编码仿真课程设计

    热门讨论 2010-07-11 13:57:29
    简述信道编码理论,详细说明分组码的编译原理、实现方法检错纠错能力,用MATLAB仿真有无信道编码条件下对通信系统性能的影响及信道编码在不同信道下对通信系统性能的影响,如AWGN信道和深衰落信道。
  • MATLAB实现费诺编码

    千次阅读 2020-05-08 18:11:45
    通过完成具体编码算法的程序设计和调试工作,提高编程能力,深刻理解信源编码信道编译码的基本思想和目的,掌握编码的基本原理与编码过程,增强逻辑思维能力,培养和提高自学能力以及综合运用所学理论知识去分析...

    一、简述

    《信息论与编码》是一门理论与实践密切结合的课程,课程设计是其实践性教学环节之一,同时也是对课堂所学理论知识的巩固和补充。其主要目的是加深对理论知识的理解,掌握查阅有关资料的技能, 提高实践技能,培养独立分析问题、解决问题及实际应用的能力。
    通过完成具体编码算法的程序设计和调试工作,提高编程能力,深刻理解信源编码、信道编译码的基本思想和目的,掌握编码的基本原理与编码过程,增强逻辑思维能力,培养和提高自学能力以及综合运用所学理论知识去分析解决实际问题的能力,逐步熟悉开展科学实践的程序和方法。

    二、费诺编码的分析与实现

    (一)设计原理

    1.编码原理
    早期的数据压缩来自于人们对概率的了解。当对文字信息进行编码时,如果出现概率较高的字幕赋予较短的编码,为出现概率较低的字母赋予较长的编码,平均编码长度就能缩短不少。著名的Morse 电码就是一个范例。信息论之父CE Shannon曾指出,任何信息都存在冗余,冗余大小与信息中每个符号出现概率(不确定性)有关。他所提出的无失真信源编码定理奠定了数据压缩的理论基础。数据压缩的目的就是要消除冗余,信息论是运用概率论与数理统计的方法研究信息、信源熵、通信系统、数据传输、密码学、数据压缩等问题的应用数学学科。 从DVD到个人电脑,从卫星通信到文件,在我们今天的生活中,信息几乎在每个领域都扮演者重要角色。工程师克劳德香农于1948年奠定了信息论的基础,他指出了通信的极限。基于这一理论产生了数据压缩技术、纠错技术等各个应用技术,这些技术提高了数据传输和存储的效率。信息论将信息的传递作为一种统计现象来考虑,给出了估算通信信道容量的方法。信息传输和信息压缩是信息论研究中的两大领域。这两个方面又由信息传输定理、信源-信道隔离定理相互联系。当然,信息论的重大应用远不止于此。DNA是一种信息存储物质,正事信息论帮助人们解开了生物基因组密码之谜。简单地说信息论包含了生命、宇宙乃至一切。
    信息论对现代社会的影响是多方面的。首先,在理论研究方面,信息论所处的地位已远远超出了香农当年所界定的“通信的数学理论”的范畴,得到了不断的扩充和发展,出现了语义信息、语法信息与语用信息等研究与信息的意义有关的学科,以及面向智能研究的全信息理论。如今,信息已成为与物质、能量并列的宇宙中的三个基本要素,世间万物的发展变化可归结为物质、能量和信息的传递和转化过程。另一方面,在科学和技术高度发展的今天,信息的概念也被渗透到许多不同的学科和领域,深入到了社会生活的各个方面,成为可与相对论和量子力学并驾齐驱的新一-代边缘交叉学科的重要组成部分。特别是以信息论、控制论、和系统论为代表的“老三论”以及以普利高津的耗散结构理论,哈肯的协同学和托姆的突变论或艾根的超循环理论为代表的“新三论”的出现,标志着一-代新的边缘交叉学科的兴起。它们的形成和发展对现代科学的研究具有重要的方法论_上的指导意义。

    2.信源编码原理
    由于信源符号之间存在分布不均匀和相关性,是的信源存在冗余度,信源编码的主要任务就是减少冗余,提高编码效率。具体说,就是针对仙缘输出符号序列的统计特性,寻找–定的方法把信源输出符号序列变换为最短码字序列的方法。信源编码的基本途径有两个:使序列中的各个符号尽可能的相互独立,及解除相关性;使编码中各个符号出现的概率尽可能地相等,即概率均匀化。
    信源编码的基础是信息论中的两个编码定理:无失真编码定理和限失真编码定理,前者是可逆编码的基础。可逆是指当信源符号转换成代码后,可从代码无失真的恢复原信源符号。当己知信源符号的概率特性时,可计算它的符号熵,这边是每个信源符号所载有的信息量。编码定理不但证明了必定存在一种编码方法,可使代码的平均长度可任意接近但不低于符号熵,而且还阐明达到这木匾的途径,就是使概率与码长匹配。无失真编码或可逆编码只适用与离散信源。对于连续信源,编成代码后就无法无失真地恢复原来的连续值,因为后者的取值可有无限多个。此时只能根据率失真编码定理在失真受限制的情况下进行限失真编码。信源编码定理出现后,编码定理趋于合理化。关于离散信源编码,从无失真编码定理出发。
    若要所编的码是惟一-可译码.不但要求编码时不同的信源符号变换成不同的码字,而且必须要求任意有限长的信源序列所对应的码符号序列各不相同,即要求码的任意有限长N次扩展码都是非奇异码。因为只有任意有限长的信源序列
    所对应的码符号序列各不相同,才能把该码符号序列惟一地分割成一个个对应的信源符号,从而实现惟一一的译码。

    3.费诺编码原理
    费诺编码就是通过使编码中各个句号出现的概率大致相等,实现概率均匀化,从而减少冗余度,提高编码效率。凡是能载荷一定的信息量, 且码字的平均长度最短,可分离的变长码的码字集合称为最佳变长码。在编N进制码时首先将信源消息符号按其出现的额概率–次又小到大排列开来,并将排列好的心愿符号按概率值分N大组,使N组的概率之和近似相同,并对各组赋予一个N进制码元0、…N-1。
    之再针对每一个大组内的心愿符号做如上处理,即再分为概率相同的N组,赋予N进制码元。如此重复,直到每组只剩下一个心愿符号为止。此时每个信源符号所对应的码字即为费诺码。针对同一个心愿, 费诺码比香农码平均码长小,消息出书速率大,编码效率高。费诺编码是一种信源编码,它编码后的费诺码要比香农码的平均码长小,消息传输速率大,编码效率高。但它属于概率匹配编码它不是最佳的编码方法。

    4.费诺编码特点
    费诺编码是一-种信源编码,它编码后的费诺码要比香农码的平均码长小,消息传输速率大,编码效率高。但它属于概率匹配编码它不是最佳的编码方法。
    费诺编码属于概率匹配编码,具有如下特点:
    (1)概率大,则分解次数少;概率小则分解次数多,这符合最佳编码原则。
    (2)码字集合是唯一-的。.
    (3)分解之后先得码字后得码长。.

    (二)设计步骤

    1.费诺码编码步骤
    (1)将信源消息符号按其出现的概率大小依次排列: p2p…2pn。
    (2)将依次排列的信源符号按概率值分为两大组,使两个组的概率之和近似相同,并对各组赋予一一个_二进制码元“0”和“1”。
    (3)将每–大组的信源符号再分成两组,使划分后的两个组的概率之和近似相同,并对各组赋予一一个二进制符号“0”和“1”。
    (4)如此重复,直至每个组只剩下一一个信源符号为止。
    (5)信源符号所对应的码子即为费诺码.

    三、用MATLAB实现费诺编码

    MATLAB程序代码:

    fprintf(’-------通信1702班魏照举--------\n’);
    fprintf(’-------费诺编码程序--------\n’);
    fprintf(’-------201721112051--------\n’);
    A=[0.4,0.3,0.1,0.09,0.05,0.03,0.02,0.01];
    A=fliplr(sort(A));%降序排列
    [m,n]=size(A);
    for i=1:n
    B(i,1)=A(i);%生成B的第1列
    end
    %生成B第2列的元素
    a=sum(B(:,1))/2;
    for k=1:n-1
    if abs(sum(B(1:k,1))-a)<=abs(sum(B(1:k+1,1))-a)
    break;
    end
    end
    for i=1:n%生成B第2列的元素
    if i<=k
    B(i,2)=0;
    else
    B(i,2)=1;
    end
    end
    %生成第一次编码的结果
    END=B(:,2)’;
    END=sym(END);
    %生成第3列及以后几列的各元素
    j=3;
    while (j~=0)
    p=1;
    while(p<=n)
    x=B(p,j-1);
    for q=p:n
    if x==-1
    break;
    else
    if B(q,j-1)x
    y=1;
    continue;
    else
    y=0;
    break;
    end
    end
    end
    if y
    1
    q=q+1;
    end
    if qp|q-p1
    B(p,j)=-1;
    else
    if q-p2
    B(p,j)=0;
    END§=[char(END§),‘0’];
    B(q-1,j)=1;
    END(q-1)=[char(END(q-1)),‘1’];
    else
    a=sum(B(p:q-1,1))/2;
    for k=p:q-2
    if abs(sum(B(p:k,1))-a)<=abs(sum(B(p:k+1,1))-a);
    break;
    end
    end
    for i=p:q-1
    if i<=k
    B(i,j)=0;
    END(i)=[char(END(i)),‘0’];
    else
    B(i,j)=1;
    END(i)=[char(END(i)),‘1’];
    end
    end
    end
    end
    p=q;
    end
    C=B(:,j);
    D=find(C
    -1);
    [e,f]=size(D);
    if e==n
    j=0;
    else
    j=j+1;
    end
    end
    B
    A
    END
    for i=1:n
    [u,v]=size(char(END(i)));
    L(i)=v;
    end
    avlen=sum(L.*A)
    H=-sum(A.*log2(A))%输出信息熵
    p=H/avlen %输出编码效率

    四、实验结果结果图:

    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 2. 对模拟信号进行采样、量化、编码(PCM), 将编码后的信号输入信道再进行PCM解码,还原出原信号.建立仿真模型,分析仿真波形. 3. 在编码与解码电路间加上噪声源,或者加入含有噪声源的信道,并给出仿真波形。 4. 在...
  • 该书共分13章,分别为:无线信道:传播与衰落,SISO信道模型,MIMO信道模型,OFDM介绍,OFDM同步技术,信道估计,PAPR(峰均比)减小技术,小区间干扰消除技术,MIMO:信道容量,天线分集和空时编码技术,空分复用...
  • 该书共分13章,分别为:无线信道:传播与衰落,SISO信道模型,MIMO信道模型,OFDM介绍,OFDM同步技术,信道估计,PAPR(峰均比)减小技术,小区间干扰消除技术,MIMO:信道容量,天线分集和空时编码技术,空分复用...
  • RS编码是信道编码中常见的前向纠错码 RS实现原理,GF域表示方式,RS生成多项式校验多项式的生成 MATLAB实现代码
  • 使用MATLAB实现2PSK调制与解调

    千次阅读 2020-06-05 22:49:51
    试编写2PSK.M文件实现对数字信号的2PSK调制与解调的matlab仿真。要求 信号通过加噪信道; 显示PSK调制波形解调波形; 对比输入和输出波形; 设计思路 3、为了更加逼近真实情况,考虑到信号在无线信道中存在...

    2PSK调制与解调

    试编写2PSK.M文件实现对数字信号的2PSK调制与解调的matlab仿真。要求

    1. 信号通过加噪信道;
    2. 显示PSK调制波形及解调波形;
    3. 对比输入和输出波形;

    设计思路

    在这里插入图片描述
    在这里插入图片描述
    3、为了更加逼近真实情况,考虑到信号在无线信道中存在衰减和多径衰落,所以要将编码后的信号进行调制,以便于在无线信道中传输,采用2PSK调制方式,调制载波表达式为在这里插入图片描述

    调制信号波形及其频谱如下图 所示
    在这里插入图片描述
    4、在信道中对传输的信号调加噪声,添加噪声后的信号波形及其频谱如下图 所示
    在这里插入图片描述
    5、在接收端,由于采用的2PSK调制方式,所以解调只能采用相干解调方式恢复原始数据序列,对接受到的信号进行相干解调的信号波形及其波形和频谱如下图 所示:
    在这里插入图片描述
    6、由于信道中存在噪声,所以接收端接收的信号也存在一定噪声,为了消除噪声,需要在接收端添加一个滤波器去掉不必要的噪声。本实验采用一个butterworth低通滤波器进行滤波。滤波器的幅频特性曲线如下图 所示:
    在这里插入图片描述
    使用设计的滤波器对接收端解调的信号进行滤波得到的信号波形及其频谱如图 所示

    7、对滤波器输出的信号进行一个抽样判决即可得到最终的接收信号
    在这里插入图片描述
    接收端接受到的信号与发送端发送的信号波形一致,只存在一定延时,这是由于信号传输延时和处理延时造成的
    在这里插入图片描述
    源代码:

    close all;
    clear
    clc; 
    
    %%
    max=11; 
    s=randi([0 1],max,1); %产生介于0-1之间的长度为max的1列随机序列
     Sinput=[] ; 
    for n=1:length(s)
        if s(n)==0
            A=zeros(1,2000);    %码元宽度为2000
        else
            s(n)=1;
            A=ones(1,2000);
        end 
        Sinput=[Sinput A]; 
    end 
    s
    % Sinput      %Sinput包含勒22000列个二进制数字
    figure(1);
    subplot(2,1,1);
    plot(Sinput);
    grid on 
    axis([0,2000*length(s),-2,2]);
    title('输入信号波形'); 
    Sbianma=encode(s,15,11,'hamming') %汉明码编码后序列,一行15列的二进制数字
    a1=[];
    b1=[];
    f=100
    0; 
    t=0:2*pi/1999:2*pi; 
    for n=1:length(Sbianma)
        if Sbianma(n)==0
            B=zeros(1,2000);  %每个值2000个点
        else
            Sbianma(n)=1; 
            B=ones(1,2000);
        end 
        a1=[a1 B];  %s(t),码元宽度2000
        c=cos(2*pi*f*t);  %载波信号 
        b1=[b1 c];  %与s(t)等长的载波信号,变为矩阵形式
    end 
    figure(2);
    subplot(2,1,1)
    plot(a1);
    grid on; 
    axis([0 2000*length(Sbianma) -2 2]);
    title('编码后二进制信号序列');
    subplot(2,1,2); 
    plot(abs(fft(a1)));
    axis([0 2000*length(Sbianma) 0 400]);
    title('编码后二进制信号序列频谱');
    a2=[];
    b2=[];
    for n=1:length(Sbianma)
        if Sbianma(n)==0
            C=ones(1,2000);  %每个值2000点
            d=cos(2*pi*f*t);  %载波信号
        else
            Sbianma(n)=1; 
            C=ones(1,2000);
            d=cos(2*pi*f*t+pi);  %载波信号
        end 
        a2=[a2 C];  %s(t),码元宽度2000
        b2=[b2 d];  %与s(t)等长的载波信号 
    end 
    tiaoz=a2.*b2;  %e(t)调制
    figure(3);
    subplot(2,1,1);
    plot(tiaoz);
    grid on; 
    axis([0 2000*length(Sbianma) -2 2]);
    title('2psk已调制信号');
    subplot(2,1,2); 
    plot(abs(fft(tiaoz))); 
    axis([0 2000*length(Sbianma) 0 400]);
    title('2psk信号频谱') 
    %-----------------带有高斯白噪声的信道---------------------
    tz=awgn(tiaoz,10);  %信号tiaoz加入白噪声,信噪比为10
    figure(4);
    subplot(2,1,1);
    plot(tz);
    grid on 
    axis([0 2000*length(Sbianma) -2 2]);
    title('通过高斯白噪声后的信号');
    subplot(2,1,2); 
    plot(abs(fft(tz))); 
    axis([0 2000*length(Sbianma) 0 800]);
    title('加入白噪声的2psk信号频谱'); 
    %-------------------同步解调-------------
    jiet=2*b1.*tz;  %同步解调
    figure(5); 
    subplot(2,1,1);
    plot(jiet);
    grid on 
    axis([0 2000*length(Sbianma) -2 2]);
    title('相干解调后的信号波形')
    subplot(2,1,2);
    plot(abs(fft(jiet))); 
    axis([0 2000*length(Sbianma) 0 800]);
    title('相干解调后的信号频谱');
    %----------------------低通滤波器--------------------------- 
    fp=500;
    fs=700;
    rp=3;
    rs=20;
    fn=11025; 
    ws=fs/(fn/2); 
    wp=fp/(fn/2);  %计算归一化角频率 
    [n,wn]=buttord(wp,ws,rp,rs);  %计算阶数和截止频率
    [b,a]=butter(n,wn);  %计算H(z)
    figure(6);
    freqz(b,a,1000,11025);      %绘制低通滤波器的幅频特性曲线
    % subplot(2,1,1); 
    axis([0 40000 -100 3])
    title('低通滤波器频谱图');
    jt=filter(b,a,jiet);
    figure(7);
    subplot(2,1,1);
    plot(jt);
    grid on 
    axis([0 2000*length(Sbianma) -2 2]);
    title('经低通滤波器后的解调信号波形');
    subplot(2,1,2);
    plot(abs(fft(jt))); 
    axis([0 2000*length(Sbianma) 0 800]);
    title('经低通滤波器后的解调信号频率'); 
    %-----------------------抽样判决--------------------------
    for m=1:2000*length(Sbianma)
        if jt(m)<0
            jt(m)=1;
        else jt(m)>0
            jt(m)=0;
        end
    end
    figure(8);
    subplot(2,1,1);
    plot(jt)
    grid on 
    axis([0 2000*length(Sbianma) -2 2]);
    title('经抽样判决后信号jt(t)波形')
    subplot(2,1,2); 
    plot(abs(fft(jt))); 
    axis([0 2000*length(Sbianma) 0 800]); 
    title('经抽样判决后的信号频谱');
    grid on;
    n=1:2000:2000*length(Sbianma);
    a5=[]; 
    a5=[a5 jt(n)]; 
    s1=decode(a5,15,11,'hamming');
    a6=[]; 
    for n=1:length(s1)
        if s1(n)==0 
            G=zeros(1,2000);
        else
            s1(n)=1;
            G=ones(1,2000);
        end 
        a6=[a6 G];
    end 
    figure(1);
    subplot(2,1,2);
    plot(a6);
    grid on
    axis([0 2000*length(s) -2 2]);
    title('汉明码译码后的波形')
    grid on
    
    
    
    展开全文
  • 汉明码的matlab实现(hanming code)

    热门讨论 2011-09-05 20:33:16
    该资源对一段录音文件(.wav)格式,进行matlab软件中的hanming 编码,通过BSC信道,并解码纠错,利用算法仿真误比特率。文件包含(7,3)、(7,4)、(8,4)的源代码一个完整报告文件。有问题可邮件:sljdzw@bupt...
  • 通过大量的MATLAB和FPGA开发实例,较为详尽地描述了无线通信中的常用模块和原理及实现流程,具体内容包括:无线通信开发简介、数字处理基础、DSP处理基础、数字调制、信道编码、最佳接收机、均衡、同步、数字前端...
  • 内蒙古工业大学本科毕业设计说明书 引 言 21 世纪是信息的社会 各种科技领域的信息大爆炸 数字信号的数据量通常很巨大 对存储器的存储容量通信信道的带宽计算机的处理速度带来压力因此必须对其进 行量化压缩来紧缩...
  • OFDM仿真中采用循环码(论文附录)、汉明码(m文件中)两种编码方式,采用QPSK调制解调,高斯信道,包含仿真的各种结果图,代码中包含注释,峰均比抑制方式采用限幅法的一种(中频噪声成形),压缩包中为完整的m文件...
  • 循环冗余校验(Cyclic Redundancy Check, CRC)是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术,主要用来检测或校验数据传输或者保存后可能出现的错误。它是利用除法余数的...

    在实际的项目过程中用运到CRC校验,利用Matlab的函数、脚本和对象分别实现了CRC24A校验,其中Matlab的脚本代码可以指导FPGA代码的实现。

    1.什么是CRC

    循环冗余校验(Cyclic Redundancy Check, CRC)是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术,主要用来检测或校验数据传输或者保存后可能出现的错误。它是利用除法及余数的原理来作错误侦测的。

    2.LTE中的CRC

     LTE TDD系统采用了4种格式的CRC:CRC24A、CRC24B、CRC16、CRC8。其生成多项式如下:

    CRC-24A:g(x)=x24+x23+x18+x17+x14+x11+x10+x7+x6+x5+x4+x3+x+1;

    CRC-24B:  g(x)=x24+x23+x6+x5+x+1;

    CRC-16:  g(x)=x16+x12+x5+1;

    CRC-8:  g(x)=x8+x7+x4+x3+x+1;

        其中长度为24的CRC24A和CRC24B主要用于共享信道数据传输,长度为16的CRCl6主要用于下行控制信道和广播信道数据传输,长度为8的CRC8主要用于CQI(Control quality information)信息的传输。


    3.CRC16编码器结构

    4.CRC24A编码器结构

    5.基于Matlab的CRC24A的实现

    Matlab实现CRC校验方法有以下三种方法:

    1.h = crc.generator(‘Polynomial’, polynomial, ‘param1’, val1, etc.);

    2.blkcrc = lteCRCEncode(blk,poly,mask);

    3.根据编码器结构编写脚本文件

    本文分别使用这3中方法进行了CRC24的实现,结果正确。其中Matlab的脚本代码可以指导FPGA代码的实现。

    仿真Matlab代码链接地址:https://download.csdn.net/download/flypassion/11867412

    展开全文
  • 资源名称: MATLAB通信仿真应用实例...第4~8章分别介绍了信源和信宿、信道传输、信源编码、信道编码、信号交织以及信号调制的仿真模块及其仿真实现过程; 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
  • 第4~8章分别介绍了信源和信宿、信道传输、信源编码、信道编码、信号交织以及信号调制的仿真模块及其仿真实现过程;第9章介绍了在通信系统的仿真和调试过程中经常遇到的问题及其解决办法;最后,第10章以cdma 2000为...
  • 第4~8章分别介绍了信源和信宿、信道传输、信源编码、信道编码、信号交织以及信号调制的仿真模块及其仿真实现过程;第9章介绍了在通信系统的仿真和调试过程中经常遇到的问题及其解决办法;最后,第10章以cdma 2000为...
  • 第4~8章分别介绍了信源和信宿、信道传输、信源编码、信道编码、信号交织以及信号调制的仿真模块及其仿真实现过程;第9章介绍了在通信系统的仿真和调试过程中经常遇到的问题及其解决办法;最后,第10章以cdma 2000为...
  • 第4~8章分别介绍了信源和信宿、信道传输、信源编码、信道编码、信号交织以及信号调制的仿真模块及其仿真实现过程;第9章介绍了在通信系统的仿真和调试过程中经常遇到的问题及其解决办法;最后,第10章以cdma 2000为...
  • 第4~8章分别介绍了信源和信宿、信道传输、信源编码、信道编码、信号交织以及信号调制的仿真模块及其仿真实现过程;第9章介绍了在通信系统的仿真和调试过程中经常遇到的问题及其解决办法;最后,第10章以cdma 2000为...
  • 卷积码是一种性能优越的信道编码,它的编码器和解码器都比较易于实现,同时还具有较强的纠错能力,这使得它的使用越来越广泛。
  • m序列是一种典型的伪随机序列,它在扩频通信、流密码、信道编码等领域有着十分广泛的应用。本文介绍 了m序列构造方法基本性能,并利用Matlab中的Simulink仿真系统M语言编程实现它们的产生和分析。
  • 多样化的发展,频率资源显得愈加宝贵,而现在大多数的通信传输信源还是模拟的语音信息,因此对语音编码的研究越来越受到科学家的重视和关注,然而传统的语音信号编码技术已经不能满足现在信道传输的要求,新型的压缩...
  • 第4~8章分别介绍了信源和信宿、信道传输、信源编码、信道编码、信号交织以及信号调制的仿真模块及其仿真实现过程;第9章介绍了在通信系统的仿真和调试过程中经常遇到的问题及其解决办法;最后,第10章以cdma 2000为...
  • 3.MATLAB与FPGA数字信号处理(数字滤波器设计)、无线通信、图像处理、信道编码系列 1.系统参数框图 ROM 存储一个正弦波完整波形,存256个点,每个点进行 8 bit 量化,使用 Matlab 产生 .coe 存储器文件,加载到 R

    相关文章
    1.Matlab与FPGA数字信号处理系列——DDS信号发生器——Quartus ii 原理图法利用 ROM 存储波形实现DDS(1)

    2.FPGA仿真必备(1)——Matlab生成.mif文件——JPG图片转.mif文件——Matlab生成.txt文件

    3.MATLAB与FPGA数字信号处理(数字滤波器设计)、无线通信、图像处理、信道编码系列

    1.系统参数及框图

    ROM 存储一个正弦波完整波形,存256个点,每个点进行 8 bit 量化,使用 Matlab 产生 .coe 存储器文件,加载到 ROM 中。

    在这里插入图片描述

    2.Matlab制作.coe文件

    Fs_N = 256;                     % 抽样点数
    Bit_Width = 2^8;               % 量化位宽
     
    t=0:2*pi/Fs_N:2*pi;
    y=0.5*sin(t)+0.5; % (-0.5~0.5)+0.5 ->(0~1),转成无符号数
    % r=ceil(y*(Bit_Width-1));      % 量化,向上取整
    % r=floor(y*(Bit_Width-1));     % 量化,向下取整
    r=round(y*(Bit_Width-1));       % 量化,四舍五入
     
    fid = fopen('sin.coe','w');  % 写入 'sin.coe' 文件
    fprintf(fid,'MEMORY_INITIALIZATION_RADIX=10;\n');   % 固定写法,表示写入的数据是 10进制 表示
    fprintf(fid,'MEMORY_INITIALIZATION_VECTOR=\n');     % 固定写法,下面开始写入数据
    for i = 1:1:Fs_N
        fprintf(fid,'%d',r(i));
        if i==Fs_N
            fprintf(fid,';\n');   % 最后一个数据用 ;
        else
            fprintf(fid,',\n');    % 其他数据用 ,
        end
    end
    fclose(fid);                     % 写完了,关闭文件
    

    写入后,文件内容如下图所示,第三行开始是波形量化后的数据,在第62-72行全部被量化为255(8-bit量化的最大值),可以想象,输出的波形在顶峰时会有一个较平的地方,是量化精度不够造成的。
    在这里插入图片描述

    下图中Matlab的绘图也证明了这一点,最大值处量化成了同样的数据,波形略有失真,原因在于Matlab使用的是 ceil() 函数向上取整,改成 floor() 向下取整,最小值量化成了同样的数据,波形略有失真。
    向上取整

    向上取整

    向下取整

    向下取整

    四舍五入量化

    四舍五入量化

    3.Vivado中ROM调用.coe文件

    (1)新建工程,调用ROM IP

    选择“Block Memory Generator”。
    在这里插入图片描述

    (2)配置ROM

    1处选择“Stand Alone”,2处选择“Single Port ROM”单口ROM,其中2处的可选项有:单口RAM,简化的双口RAM(一端读一端写),真双口RAM(两端都可读写),单口ROM(1个ROM),双口ROM(相当于2个ROM)。
    在这里插入图片描述

    1处配置数据的量化位宽,2处是ROM的深度(存储的点数),3处设置一直使能工作,能够节省一个使能引脚。
    在这里插入图片描述

    1处勾选加载.coe文件,2处找到.coe文件的路径,点击加载。
    在这里插入图片描述

    配置完成,地址8位,代表深度256,数据8位。
    在这里插入图片描述

    (3)配置计数器

    在这里插入图片描述

    1处配置成8位计数器,输出计数值位宽为8位,2处设置每次计数变化1,3处设置位向上计数,2处和3处配合实现每次加1。
    在这里插入图片描述

    (4)连接引脚

    在这里插入图片描述

    4.仿真测试

    编写TestBench仿真文件,只需要给定时钟信号即可。
    假设给定时钟 125 MHz,即时钟周期为 8 us,每输出一个采样点需要 8 us,输出256个正弦波的采样点需要 256×8 us,即正弦波的周期为 256×8 us,即频率为 125MHz / 256 = 0.488 MHz 左右。

    在这里插入图片描述

    欢迎关注:FPGA探索者

    回复 “DDS256” 获取工程源码。

    在这里插入图片描述

    展开全文
  • 控制器部分3 实现过程每步实现结果3.1 信源和信道编码模块3.2 调制解调模块3.3 噪声模块3.4 声音信号处理模块3.5 控制模块3.6 系统整体实现 写在前面 在本篇中将利用MATLAB
  • MIMO-OFDM无线通信技术及MATLAB实现中的完整源码。MIMO和OFDM技术是B3G(LTE、LTE-A、4G)的关键物理层技术,该书详细介绍了该领域的概念和理论,并通过MATLAB程序进行仿真和验证。该书共分13章,分别为:无线信道:...
  • 第2章地震雷达信号的MATLAB实现 2.1地震观测系统的仿真和地面运动的恢复 2.1.1基本理论 2.1.2地震观测系统的MATLAB应用 2.2雷达信号的产生 2.2.1脉冲幅度调制 2.2.2线性调频信号 2.2.3相位编码信号 2.2.4...
  • 通过对咬尾卷积编码的原理分析,分析验证了咬尾卷积编码在几种不同信道下的性能,提出了一种基于DSP的编码实现方法,将该程序在CCS3.3中运行,验证了程序的可行性、高效性。最后通过Matlab探究现有的几种咬尾卷积...
  • matlab UWB 系统平台仿真

    热门讨论 2011-04-27 21:38:01
    包括可替换的脉冲成型(半余弦脉冲)、IEEE802.15.3a的修正SV信道、最大似然信道估计、 Rake接收机等模块,可以实现monte carlo仿真求误码率。可添加多址接入、编码等功能(维特比编解码、帧同步的程序由本人同学...

空空如也

空空如也

1 2
收藏数 37
精华内容 14
关键字:

信道编码及matlab实现

matlab 订阅