matlab_matlab介绍 - CSDN
matlab 订阅
MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。 [1]  MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室),软件主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式。 [1]  MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。 展开全文
MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。 [1]  MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室),软件主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式。 [1]  MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
信息
开发商
MathWorks.Inc [2]
软件授权
MathWorks.Inc
软件名称
MATLAB
更新时间
2020-06-11
软件版本
R2020a [3]
软件平台
Windows/MacOS/Linux等
软件语言
C
软件大小
216.77M
MATLAB功能特性
·MATLAB®: MATLAB 语言的单元测试框架   ·Trading Toolbox™: 一款用于访问价格并将订单发送到交易系统的新产品  ·Financial Instruments Toolbox™: 赫尔-怀特、线性高斯和 LIBOR 市场模型的校准和 Monte Carlo 仿真  ·Image Processing Toolbox™: 使用有效轮廓进行图像分割、对 10 个函数实现 C 代码生成,对 11 个函数使用 GPU 加速  ·Image Acquisition Toolbox™: 提供了用于采集图像、深度图和框架数据的 Kinect® for Windows®传感器支持  ·Statistics Toolbox™: 用于二进制分类的支持向量机 (SVM)、用于缺失数据的 PCA 算法和 Anderson-Darling 拟合优度检验  ·Data Acquisition Toolbox™: 为 Digilent Analog Discovery Design Kit 提供了支持包  ·Vehicle Network Toolbox™: 为访问 CAN 总线上的 ECU 提供 XCPSimulink 产品系列重要功能  ·Simulink®: Simulation Performance Advisor,链接库模块的封装,以及通过逻辑表达式控制有效变量  ·Simulink: 除 LEGO® MINDSTORMS® NXT、Arduino®、Pandaboard 和 Beagleboard 外,还为 Raspberry Pi™ 和 Gumstix® Overo® 硬件提供了内置支持  ·SimRF™: 针对快速仿真和模型加载时间的电路包络求解器  ·SimMechanics™: 发布了用于从 CAD 和其他系统导入模型的 XML 架构  ·Simulink Design Verifier™: 数组超出边界检查  MATLAB 和 Simulink 的系统工具箱  ·Communications System Toolbo Sphere 解码器和 Constellation 框图系统对象  ·Computer Vision System Toolbox™: 相机标定,立体视觉,Viola-Jones 对象检测培训,FREAK 特征提取和其他新函数  ·DSPSystem Toolbox™: 频谱分析仪和逻辑分析示波器,以及时域示波器的触发·Phased Array System Toolbox™: 极化支持、数组锥化以及针对传感器数组分析、波形分析和雷达方程计算的应用程序代码生成和实现  ·Simulink Coder™: 减少了从 Stateflow® 调用的 Simulink 函数的数据副本  ·Fixed-Point Designer™: 一款结合了 Fixed-Point Toolbox™ 和 Simulink Fixed Point™ 功能的新产品  ·HDL Verifier™: 从 MATLAB 生成 HDL 测试工作台
收起全文
精华内容
参与话题
  • MATLAB基础入门课程

    千人学习 2019-11-21 10:30:22
    MATLAB基础入门课程,系统介绍MATLAB的基础知识。 主要从数组、运算、结构和绘图等几方面进行讲解 简单易懂,轻松入门MATLAB
  • MATLAB零基础入门教程

    万人学习 2019-12-09 16:38:29
    MATLAB零基础入门教程,主要介绍数组和矩阵、数据类型和M文件设计等。很详细地介绍了MATLAB语言的基础知识。 本课程的特点是内容系统全面,条理清晰,并且内容比较新,讲了表、时间表等新的数据类型。
  • matlab经典题目

    2020-07-30 23:33:24
    matlab经典题目,老师上课的时候给的,后续再发具体程序。matlab经典题目,老师上课的时候给的,后续再发具体程序。matlab经典题目,老师上课的时候给的,后续再发具体程序。
  • Matlab小白入门必备教程

    千人学习 2020-07-13 15:13:46
    MATLAB 是一种用于算法开发、数据可视化、数据分析以及数值计算的高级计算语言和交互式环境,本课程将深入浅出讲解 MATLAB 的基本操作、MATLAB 编程和绘图等。          
  • MATLAB(一)——软件及基本操作介绍

    万次阅读 多人点赞 2019-04-23 15:27:57
    一、MATLAB软件介绍 1.matlab的界面 左上角,home标签下,找到layout进行设置/复位,可以设置各板块的显示与隐藏。其中有几个部分,请务必要显示①Current Folder:中文一般翻译成工作路径,一般设置成一个自己...

    一、MATLAB软件介绍

    1.matlab的界面

     左上角,home标签下,找到layout进行设置/复位,可以设置各板块的显示与隐藏。其中有几个部分,请务必要显示
    ①Current Folder:中文一般翻译成工作路径,一般设置成一个自己建立的、有读写权限的文件夹,例如我的文档下建立一个matlab文件夹
    ②Command Window:字面意思是命令窗口,用来运行代码,所有的代码都是在这里输入

    ③Workspace:字面意思是工作空间,其实就是暂存所有运行结果的地方,“暂”的具体含义是:关闭matlab后丢失

    2.软件中的基本概念

    2.1 函数

     

        matlab之所以强大,就是因为提供大量的函数,你也可以建立自定义函数,方法是:Home->New->function。自定义函数一般保存在工作路径下。函数文件的特征是:扩展名m,内容的第一行以function开头,后续内容是“输出变量=函数名(输入变量)”。且函数名和文件名相同。
        每个函数在Command Window中运行,用来完成特定的计算任务,运行方式是输入“输出变量=函数名(输入变量)”,然后按回车。例如有个系统自带的函数是用来求绝对值的,函数名abs,所以在Command Window里输入“a=abs(-1)”,就会显示运算结果为“a=1”。且运算结果会在Workspace里出现一个变量a,双击后可看到a的值是1。

     

    2.2 脚本

        可以理解为特殊的函数,这种函数内容的开头没有function那行,因此没有输入、输出变量,也没有函数名。文件扩展名和函数一样是m,也需要在Command Window里运行。脚本都是用户建立的,方法是:Home->New Script。一般保存在工作路径下。脚本的功能就是完成用户需要的、复杂的计算任务,通常脚本里会调用很多函数。

    2.3 GUI

     

        一般翻译为界面,就是人机交互界面的意思。写脚本处理问题的方法有点麻烦,让人看起来更像是码农,所以现在很多问题可以通过界面点点鼠标解决。这时候就需要打开界面,打开方法是:在APPS标签里可以找到所有已安装的GUI工具,单击即可。注意右边有个小三角可以点开。和函数一样,用户也可以自己建立自定义GUI,这部分较为复杂,对新手而言有点遥远。

     

    2.4 toolbox

     

        一般翻译成工具箱,matlab将功能相近或者应用上自成体系的一组函数和GUI打包成一个toolbox。正版的matlab在购买时,几乎每一个toolbox都是要单独收费的,所以toolbox也可以理解为matlab产品的模块,一个工具箱就是一个产品/商品。

     

    2.5 simulink

     

        一般用matlab解决问题的过程是:用户自定义脚本,在Command Window里运行脚本。而脚本的运行逻辑是顺序执行,和一般的编程一样。simulink则提供另一种思路,图形化编程,有点像labview,这种方法很适合于物理模型的仿真,因此有时用“matlab编程”和“simulink仿真”强调。使用方法是在home标签下点击simulink。

     

    3.获得帮助

     

        常用的获得帮助有四种方法

     

    右上角home标签里,有个Help标志,点开后可以获得各工具箱/产品的完整帮助文档。新版本中默认使用在线,改用本地帮助的办法是在home标签里,Preferences下的matlab/Help里选择installed locally

     

    cn.mathworks.com官网上找到支持,然后可以获得教程。这种方法获得的帮助文档和第一种方法一样。
    在Command Window里输入 doc+函数名 来获得帮助。比如输入"doc fft"可以获得离散傅里叶变换函数fft的帮助和范例。这种方法获得的文档是前两种方法文档中的部分。当然,前提是你要知道函数名,才能找到帮助。这种方法适合于获得系统自带函数的使用说明。
    使用GUI时,通常界面的角落里有Help,点开可以获得帮助。这种方法获得的文档是第一和第二种方法文档中的部分。这种方法适合于获得系统自带GUI的使用说明。
        这几种方法中,最常用的是第三种,只要知道自己需要的函数名,就可以用这种方式获得说明和范例。而实际使用中,一般常用的系统自带函数,也并不是非常多,大概几十个?真正需要牢记使用方法的可能就几个,通常都是知道函数名,要用的时候doc一下。

     

    二、命令窗口的基本配置

    1、format命令

    进行数据类型转换,行间距调节等功能时,用

            format + 关键词 回车

    eg:format long 回车   //将数据变为长整型

            format compat/loose 回车  //调节行间距紧密/松散

    2、clc命令  

        清屏。即清理当前屏幕上的内容,屏幕上没有了,但保留在内存中了

    3、clear命令 

        删除某一变量,或清空工作区

        clear + 变量名 回车

        eg:clear a 回车  //删除工作区中的a变量

                clear或者clear all //清空工作区。建议在刚打开matlab窗口时先清空一下工作区。

    4、whos命令  

        查看某变量详细信息

       4.1  whos 回车  //查看所有变量信息

       4.2 whos + 变量名 回车 // 查看该变量详细信息

        eg:whos a 回车

    5、x/ylable命令  //给xy轴加横纵坐标说明

        eg:xlable (‘x轴’) 回车

    6、disp()  //屏幕输出函数,类似于c语言中的printf()函数

     

        disp函数直接将内容输出在Matlab命令窗口中,关键是看disp函数怎么把字符和数字在一起进行显示。

        disp(X)函数只有一个输入,当你有多个字符串作为输入时就会报错。

    例如:

        disp('Alice is ' , num2str(12) , ' years old!' );

    就会报错--输入参数过多。

        但是将里边的内容用中括号一括就成了一个字符串,

    例如:

        str=['Alice is ' num2str(12) ' years old!'];

        disp(str);

    上边这句话也就等价于:

        disp=(['Alice is ' num2str(12) ' years old!']);

    这就是加中括号的原因,而不是因为num2str(),

        因为disp(num2str(12));也是正确的,因为里边就只有一个字符串。

    7、zeros函数 //创建一个全为零元素的数组

    1、B = zeros(n)  返回一个n x n的零矩阵.如果n不是一个标量,将抛出错误。
    2、B = zeros(m,n) or B = zeros([m n])  返回一个m x n的零矩阵。
    3、B = zeros(d1,d2,d3...) or B = zeros([d1 d2 d3...]) 返回一个d1-by-d2-by-d3-by-... .的零元素数组。
    4、B = zeros(size(A))  返回一个和A一样大小的零数组。
    5、zeros(m, n,...,classname) or zeros([m,n,...]  返回一个类型为classname的m x n x...零数组。classname可以是下面一些值:double', 'single', 'int8', 'uint8', 'int16', 'uint16', 'int32', or 'uint32'
    示例
        x = zeros(2,3,'int8');
    备注
        MATLAB语言 没有一个 维度 声明 ; MATLAB 自动为矩阵分配存储空间。 然而,对于大型矩阵 , MATLAB程序可能会执行得更快 ,如果零函数用于设置一个矩阵,其元素将产生一次 , 或行或列的时间预留存储空间。例如
    
    2、B = zeros(m,n) or B = zeros([m n])  返回一个m x n的零矩阵。
    3、B = zeros(d1,d2,d3...) or B = zeros([d1 d2 d3...]) 返回一个d1-by-d2-by-d3-by-... .的零元素数组。
    4、B = zeros(size(A))  返回一个和A一样大小的零数组。
    5、zeros(m, n,...,classname) or zeros([m,n,...]  返回一个类型为classname的m x n x...零数组。classname可以是下面一些值:double', 'single', 'int8', 'uint8', 'int16', 'uint16', 'int32', or 'uint32'
    示例
        x = zeros(2,3,'int8');
    备注
        MATLAB语言 没有一个 维度 声明 ; MATLAB 自动为矩阵分配存储空间。 然而,对于大型矩阵 , MATLAB程序可能会执行得更快 ,如果零函数用于设置一个矩阵,其元素将产生一次 , 或行或列的时间预留存储空间。例如
    
        x = zeros(1,n); 
        for i = 1:n
        x(i) = i; 
        end

     

     

     

     

     

     

     

    展开全文
  • MATLAB中模拟采样过程,将正弦信号采样量化编码,将编码后的结果以二进制的实行写入txt文件中用于和vivado中的fftIp核联调
  • 两个月在做数字信号处理方面的工作,也是从一个小白刚刚起步,这两天才把fir滤波器给跑通,写文记录下。希望大家欢迎,多多支持。这篇文章写得辛苦,仅仅Word文件就有21页,写了足足两天时间...

    两个月在做数字信号处理方面的工作,也是从一个小白刚刚起步,这两天才把fir滤波器给跑通,写文记录下。希望大家欢迎,多多支持。这篇文章写得辛苦,仅仅Word文件就有21页,写了足足两天时间,修修改改。希望大家多多支持,点赞,转发,打赏。

    在公众号【数字积木】对话框回复“ fir滤波器 ”,即可获得该教材的下载链接。

    ----2020-05-15


    1,MATLAB代码仿真。

    首先介绍下信号混频的相关概念。混频就是把两个不同频率的信号混合,得到第三个频率。数字电路中最常见的混频方法就是将两个信号相乘。将两个频率为 f0,f1 的正弦波进行相乘,根据积化和差公式,得到两个频率分量为 f0+f1 ,f0-f1 的信号。数字混频在通信的调制,解调,DUC(数字上变频),DDC(数字下变频)等系统中应用广泛。通常把其中一个信号称为本振信号( local oscillator ),另一个我信号称为混频器的输入信号。

    下面的matlab代码用于验证混频器的设计。

    %%信号混频
    %%将两个频率为 f0,f1 的正弦波进行相乘,根据积化和差公式,得到两个频率分量为 f0+f1 ,f0-f1 的信号
    clear all;close all;clc;
    
    
    fs = 100*10e6;      %采样频率 100MHz
    f1 = 2*10e6;       %信号0的频率  2MHz
    f0 = 1.5*10e6;      %信号1的频率  1.5MHz
    fpass  =1.7*10e6;   %低通滤波器通带频率
    fstop  =1.9*10e6;    %低通滤波器截止频率
    
    
    DIV = 16 
    N  = 4096;           %采样点数
    
    
    t = 0 : 1/fs : (N-1)/fs;        %设置采样时间 
    Sig0    =   sin (2*pi*f0*t);    %生成信号0
    Sig1    =   sin (2*pi*f1*t);     %生成信号1
    Sig     =   Sig0 .*Sig1;        %两个信号进行相乘
    
    
    % 进行快速傅里叶变化,得到频谱
    XK0     =   fft(Sig0);
    XK1     =   fft(Sig1);
    XK      =   fft(Sig);
    %设置频率
    f = ( 0:N/DIV-1 )*fs/( N * 10e6 );       %单位设置为MHz 
    Amax =  max (abs( XK(1:N/DIV)));
    f0 =  [0  fpass/(10e6 )  fstop/(10e6 )  ( N/DIV-1 )*fs/( N * 10e6 )  ]; 
    A  = [  Amax Amax  0 0 ];
    
    
    %绘制时域波形图
    figure(1);
    subplot(3,1,1);     plot(t,Sig0);   title("频率为1.5MHz的正弦信号");xlabel("时间(s)");ylabel("幅度");
    subplot(3,1,2);     plot(t,Sig1);   title("频率为2.0MHz的正弦信号");xlabel("时间(s)");ylabel("幅度");
    subplot(3,1,3);     plot(t,Sig);    title("1.5MHz和2.0MHz正弦波相乘得到的信号");xlabel("时间(s)");ylabel("幅度");
    
    
    %绘制频域图
    figure(2);
    subplot(3,1,1);     plot(f, ( abs( XK0(1:N/DIV) )  )  );title("1.5MHz正弦信号的频谱");xlabel("频率(MHz)");ylabel("幅度");
    subplot(3,1,2);     plot(f, ( abs( XK1(1:N/DIV) )  )  );title("2.0MHz正弦信号的频谱");xlabel("频率(MHz)");ylabel("幅度");
    subplot(3,1,3);     plot(f, ( abs( XK(1:N/DIV)  )  )  );title("1.5MHz和2.0MHz正弦波相乘得到的信号的频谱");xlabel("频率(MHz)");ylabel("幅度");
    hold on;
    %低通滤波器示意图
    plot( f0 ,A );
    

    在该仿真代码中,设置采样时钟为100MHz,两个信号的频率分别为1.5MHz 和2.0 MHz 。两个信号相乘后,产生一个频率分量为 0.5MHz ( 2.0MHz - 1.5MHz ) 和3.5MHz ( 2.0MHz + 1.5MHz ) 的信号。时域图显示如下:

    频域图显示如下:

    如图上所示,混频后得到了两个频率频率分量为 0.5MHz 和 3.5 MHz的信号。将该信号通过一个截止频率为2.0MHz左右的滤波器中,即可过滤掉 3.5 MHz的高频信号,只留下 0.5MHz的信号。即如上图橙色曲线所示。

    2.MATLAB设计滤波器系数。

    利用matlab的 滤波器设计工具箱( Filter Designer )可以非常方便地设计出符合工程要求的滤波器,在该工具箱中可以直接导出用于FPGA 滤波器设计的系数文件。

    打开该工具箱后,默认显示如下:

    进行简单的设置:

    • 滤波器类型:低通滤波器

    • 滤波器形式:fir

    • 滤波器阶数:100

    • 频率单位:MHz

    • 采样频率:100MHz

    • 通带频率:1MHz

    • 截止频率:2MHz

    滤波器参数设置好后,点击 Designer Filter 按钮,稍等片刻,即可出现设计好的滤波器的频幅相应曲线。【注】由于是初学乍练,以上的参数设计的不一定合理,其中某些概念还不是很懂,还望通信大神指点。

    由于要在FPGA中使用,还要将浮点型的系数转化为定点数。如下图设置,设置输出格式为定点数,位宽为16bit.

    接下来就可以生成用于FPGA设计的系数文件了。在菜单【 Targets 】下点击【 XILINX coefficient(.coe)file 】,保存即可。

    .coe文件中的内容大致如下,存储了滤波器的各个系数,用16进制表示。

    至此,滤波器就设置完成了。

    3.建立FPGA工程。

    利用xilinx 的vivado工具来建立 fir 滤波器系统,对上述的matlab 程序进行硬件验证。两路正弦波信号可以用vivado 的DDS IP生成,乘法操作用乘法器IP实现,用vivado自带的fir 滤波器实现滤波。

    利用vivado 的 block design 工具,可以不写一行代码,实现FPGA系统的搭建。先预览下搭建好的一个简单的fir 系统工程。

    该工程中,利用两个DDS 输出 1.5MHz 和 2.0MHz 的正弦波,利用乘法器IP进行两路信号的相乘,实现混频操作。再讲混频的信号通过一个fir滤波器,实现滤波操作。先亮以下仿真结果,漂亮的波形图。

    滤波器完美输出了0.5MHz的波形,滤掉了3.5MHz的高频波。不过这是在仿真中的结果,在实际工程中,输入的信号可能含有噪声,失真等缺陷,实际效果不可能如此完美,但这个仿真结果也可以说明问题,在理想的输入下,该滤波器可以完美地滤掉高频波。

    下面详细介绍 FPGA 工程的搭建。

    1,建立 block design 工程。

    在vivado 工具中点击 create block design ,输入 fir_system ( 该名称可以任意指定 )。

    2,添加IP。

    在新打开的 Diagram 视图中,添加IP 块。点击 “ + ”号,在弹出的对话框中输入DDS,双击DDS compiler ,即可将DDS IP 加入到块图中。

    按照上面的方法依次添加两个 DDS( DDS compiler ) IP ,两个截位( slice )IP ,一个fir滤波器(fir compiler) IP,一个乘法器( mult )IP,如下图。

    3,设置IP。

    IP添加后,还有经过配置参数才能使用。双击IP 块即可进行配置。

    (1)DDS配置。

    两个DDS模块,一块设置输出为2.0MHz,一个设置输出为1.5MHZ,其余设置保持相同即可。时钟频率一定要设置为100MHz,和前面matlab仿真保持一致。

    另一个DDS设置为1.5MHz 。设置方法同上。需要注意的是,如上图显示,输出数据端口(MAXISDATA_TDATA)为16bit ,高8位为 正弦波(sin)数据,低8位为余弦波(cos)数据。

    (2)slice IP设置。

    该IP用于截位操作,设置如下,输入为16bit,输出为8bit,为16bit的bit7到bit0.位宽为8bit.该IP用于截取从DDS输出的正弦波数据。

    (3)乘法器IP配置。

    输入位宽设置为8bit 有符号数,流水线级数采用建议的延时,设置为3.表示从输入到乘法结果输出经过3个时钟周期延时。其余可保持默认。

    (4)移位寄存器设置。

    移位寄存器用以延时数据有效信号,使其与乘法器的输出保持同步。由于乘法器有3个时钟的延迟,故将移位寄存器深度也设置为3,使其输出比输入延迟3个时钟周期。其余可保持默认。

    (5)fir滤波器配置。

    滤波器的系数设置为coe文件,加载前面在matlab生成的coe文件,稍等片刻即可在左边窗口看到该滤波器的幅频响应曲线。将输入采样频率和时钟频率都设置为100MHz。其余可默认。

    4,引出端口。

    鼠标选中端口,右键选择 make external,即可导出端口。

    5,IP连接。

    IP最终连接如下图。

    6,生成代码。

    按照下图,选中块设计,右键先选择 “ generate output product...”,等待完成后在选择 “create HDL wrapper...”,即可自动生成顶层代码。

    如果出现下面的界面,可选择下拉菜单中的最大值,这个选项表示运行时vivado软件可使用的最大核心数。

    最终自动生成的顶层代码如下,就是对建立的原理图工程做了模块调用,其本质还是Verilog代码。

    4,FPGA仿真验证。建立如下的测试文件:

    module tb_fir( );
      wire [7:0]adc0_sin;
      wire [7:0]adc1_sin;
      wire [15:0]fir_in;
      wire [39:0]fir_out_tdata;
      wire fir_out_tvalid;
      reg sysclk;
    
    
      fir_system_wrapper fir_system_wrapper
       (
           .adc0_sin       (   adc0_sin            ),
        .adc1_sin        (   adc1_sin            ),
        .fir_in        (       fir_in      ),
        .fir_out_tdata        (   fir_out_tdata           ),
        .fir_out_tvalid        (   fir_out_tvalid          ),
        .sysclk        (   sysclk          )
        );
    initial
    begin
                    sysclk  =   0;  
        #50000      $stop(2);
    end
    always     #5 sysclk   =   ~sysclk;
    Endmodule
    

    由于该工程的逻辑已在源代码中完成,故在测试文件只是对顶层模块做了例化和产生时钟信号。

    最后仿真结果如下图:

    滤波器完美输出了0.5MHz的波形,滤掉了3.5MHz的高频波。


    还有更多历史精彩内容等着你!

    ZYNQ系列


    本文完!!!

    欢迎关注,更精彩的内容等着你!

    展开全文
  • Vivado重新链接Matlab

    万次阅读 2018-06-20 22:47:52
    安装Vivado时没有选择链接Matlab。 解决版办法: 1、双击打开System Generator 20xx.x 2、如果没有链接Matalb会自动打开如下界面 3、如果你安装了Matlab,会自动检测出Matlab的版本。点击OK就可以。如果安装了...

    问题:

    安装Vivado时没有选择链接Matlab。

    解决版办法:

    1、双击打开System Generator 20xx.x

    2、如果没有链接Matalb会自动打开如下界面

    这里写图片描述

    3、如果你安装了Matlab,会自动检测出Matlab的版本。点击OK就可以。如果安装了Matlab,而没有检测出来,就需要手动添加Matlab。点击Find Matlab,到安装Matlab的目录去添加Matlab即可。然后点击OK

    4、注意:VIvado的版本要与Matlab的版本对应。

    具体版本信息可参看如下网址:https://www.xilinx.com/support/answers/55830.html

    展开全文
  • Matlab&Vivado生成ROM IP核

    千次阅读 2020-08-09 13:10:33
    王志君老师布置的作业卷积的硬件实现和陈云霁老师的softmax函数的加速。在完成卷积时参考了博主鹅要长大 的文章,和王...用matlab将灰度图像生成txt文件 生成coe文件 用vivado创建IP核 Generator例化后会生成一个.mi...

    做一开头,因为要用ROM IP核。

    **主要的步骤:

    1. 用matlab将灰度图像生成txt文件
    2. 生成coe文件
    3. 用vivado创建IP核
    4. Generator例化后会生成一个.mif文件
    5. modulesim的仿真

    **
    1.用matlab将灰度图像生成txt文件

    %%灰度图像生成txt文件
    [file,path]=uigetfile({'*.jpg';'*.bmp';'*.png'},'选择图片');
    I_rgb=imread([path,file]);
    subplot(221),imshow(I_rgb),title('原图')
    
    I_gray=rgb2gray(I_rgb);
    subplot(222),imshow(I_gray),title('灰度图')
    
    fid=fopen('./lena.txt','wt');                          %打开文件lena.txt
    for i=1:size(I_gray,1)                                 %遍历像素
        for j=1:size(I_gray,2)
            fprintf(fid,'%d',I_gray(i,j));
        end
        fprintf(fid,'\n');                                 %每行回车
    end
    fid=fclose(fid);                                       %关闭文件
    I_data=load('./lena.txt')                              %放在当前的目录下
    
    

    结果
    在这里插入图片描述
    2.生成coe文件

    %生成.coe_file
    [m,n]=size(I_gray);
    N=m*n;                                                       %数据长度,即存储器的深度
    word_len=8;                                                  %每个单元的位数
    data=reshape(I_gray',1,N);                                   %变成特定的矩阵,1行n列
    
    fid=fopen('lena.coe','wt');                                  %打开lena.coe文件
    fprintf(fid,'MEMORY_INITIALIZATION_RADIX=16;\n');            %这两行不变,进制数
    fprintf(fid,'MEMORY_INITIALIZATION_VECTOR=\n');              %数据
    
    for i=1:N-1
        fprintf(fid,'%x,\n',data(i));
    end
    fprintf(fid,'%x;\n',data(N));                                 %每个数据回车
    fclose(fid);
    

    结果
    在这里插入图片描述
    3.用vivado创建IP核
    1.选择IP Catalog
    在这里插入图片描述
    2.Memories & Storages Elements->RAMs & RAMs & BRAM->block memory generator 在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    文件添加进去就OK

    reference:
    https://www.cnblogs.com/happyamyhope/

    越是憧憬,越要风雨兼程。

    展开全文
  • 1.首先是vivado的安装,有详细的安装教程。 2.根据vivado安装所产生的system generator工具与matlab关联配置
  • MATLAB安装

    万次阅读 多人点赞 2018-07-27 18:09:11
    Matlab 2016a 安装包及破解教程百度云分享链接: 链接:https://pan.baidu.com/s/1i6BgD8p 密码:17gg   Matlab安装教程: 1、下载文件,得到R2016a_win64.part1.rar、R2016a_win64.part2.rar两部分安装文件和...
  • matlab中@的用法

    万次阅读 多人点赞 2020-09-06 12:17:52
    举例:sin是matlab中的一个函数,但sin只是函数名,还不是函数句柄,不可以用于传参。f = @sin;这行代码定义了一个函数句柄,变量名是f。这样就可以当做参数传递了(这就是上面代码中的意义所在),而且还可以跟sin...
  • 基于MATLAB的二值化图像常用的三种方法

    万次阅读 多人点赞 2016-11-24 22:25:36
    图像分割是模式识别和计算机视觉中很重要的一个部分,基于阈值的图像分割具有简单、计算量小、效率高等特点,在实际图像处理中具有广泛的应用。经过国内外学者的广泛努力,已经提出了数以百计的阈值分割的算法,依据...
  • matlab是一个很强大的计算软件,合理使用会给我们的学习带来极大的方便之处,本人旨在提供一个零基础的matlab学习博文,供大家学习交流。谢谢大家支持。
  • MATLAB基础知识

    万次阅读 多人点赞 2019-03-20 17:13:44
    专题一 MATLAB基础知识 目录 1. MATLAB系统环境 2. MATLAB数值数据 3. 变量及其操作 4. MATLAB矩阵的表示 5. 矩阵元素的引用 6. MATLAB基本运算 7. 字符串处理 ------------------------------------------...
  • ubuntu16.04安装MATLAB R2017b步骤详解(附完整文件包)

    万次阅读 多人点赞 2020-03-17 19:16:56
    本文给出MATLAB R2017b(Linux系统)的完整安装包百度云盘下载地址,逐步介绍一种简单易行的安装方法,在桌面创建快捷方式,最终完整运行。 1. 前言 最近由于项目原因,需要在ubuntu上安装MATLAB,在网上找了很久...
  • matlab中exp()函数的使用

    万次阅读 2017-10-26 19:29:53
    MATLAB中我们常常需要用到自然数对数底数 e ,需要输入e 的不同次幂,那么我们在MATLAB中具体应如何操作呢?下面通过不同的例子介绍一下。 e 下面我们通过一个例子,介绍如何如何输入自然数,在MATLAB主窗口...
  • matlab求解全局最优(初步介绍

    万次阅读 2017-08-09 22:45:03
    这里可以看到全局优化的一些经典算法举例matlab两个工具箱的比较最左上角是求解器的选项,可以在此选择不同的算法求解,不同的求解器需要输入的参数也各不相同。...下面介绍matlab的各种求解器MultiStart 并行计算
  • matlab中if语句使用方法和应用实例

    万次阅读 2019-01-18 16:18:23
    1、我们首先需要了解if语句是一种选择判断语句,可以和for语句结合使用,也可以单独...2、介绍一下if嵌套语句,这里作出的判断是如果a小于b,b等于a,如果继续b还大于c,b等于c,如下图所示: 3、介绍if语句中的e...
  • matlab实现自定义函数的数据拟合

    万次阅读 2016-08-02 08:47:53
    matlab版本以及问题数据介绍 本人使用的matlab为2012b,数据见下图 实现过程输入数据 打开Curve Fiting Tools 位于apps第一个工具 设置变量并输入自定义函数 输出结果 左侧为数据参数,右侧为拟合图像。
1 2 3 4 5 ... 20
收藏数 49,240
精华内容 19,696
关键字:

matlab