matlab释义与实现课件ppt之第十章从概念设计到芯片实现_第1页
matlab释义与实现课件ppt之第十章从概念设计到芯片实现_第2页
matlab释义与实现课件ppt之第十章从概念设计到芯片实现_第3页
matlab释义与实现课件ppt之第十章从概念设计到芯片实现_第4页
matlab释义与实现课件ppt之第十章从概念设计到芯片实现_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第十章 从概念设计到芯片实现,信号处理的完整流程,10.1 嵌入式系统及其开发流程,所谓嵌入式的系统,是指把单片的FPGA(Field Programmable Gate Array现场可编程门阵列)或DSP(Digital Signal Processor数字信号处理器)芯片植入对象的电路设备中,代替通用计算机,来完成对象的通信、控制以及所有其他信号处理任务。与通用计算机相比,嵌入式芯片具有体积小、重量轻、运行速度快、便于集成、价格低、保密、工作可靠和便于大规模生产等优点,所以适用于各种应用系统。统计资料说明,从20世纪80年代出现这类系统以来,其所占有的市场迅速扩大,目前已是通用计算机的几十至几百倍,而且还在继续加大。可以预见,今后大部分信号处理系统的开发人员在工作中所要面对的,将是这类系统。,这种单片集成电路可以把一个复杂的系统集成在一个芯片上,所以也称为芯片上的系统(System On ChipSOC)。在硬件结构方面的特点,它采用了很多种专门技术,来提高信号处理的速度。例如 大多数芯片采用定点式数据结构; 大量采用流水线结构,使芯片在同一个时间能执行多条指令, 设计了一些专用的硬件计算结构,如专用的乘法累加器,专用的FFT硬件等, 创建多机并行的接口和功能,等等,这些都可以提高速度。随着半导体集成电路的发展,时钟频率的提高,执行一条乘加(MAC)指令的时间已降低到10ns以下。软件方面则是采用专用的直接指挥芯片内部寄存器累加器运算的汇编语言,它的运算速度虽然快,但也带来了开发上的难度。,用汇编语言写代码是底层设计,比如算一个1024点FFT,用MATLAB只是一条语句,而运行时却要执行15000多次乘法和加法的代码,一个应用系统需要的代码可能多达几百万、几千万条,无论编写、调试、验证都是非常耗时而痛苦的一件事。开发周期长、容易出错是最大的问题。许多芯片制造商一直在不断地改进其开发环境,已经有了从C语言到各种芯片程序代码的编译软件。MATLAB可以在概念和数学上验证用户的设计思想,对于一个复杂的系统,我们可以写出一套MATLAB程序,验证它的功能。但是在把这个思想付诸实现时,却需要另外写一套汇编程序。写这样两套程序来实现同一种功能,本身就是一种极大的负担和浪费。,自然而然会想到,是不是可以由顶层设计出发,自动地向下生成代码,并且可以把仿真、检验等功能和工具也都成套地建立起来。当然,数学概念和代码实现两者的约束条件是不同的,比如一个滤波器的系统函数,其实现的信号流图就有很多种;选定了一个信号流图,它所采用的系数的字长和阶码又可以有多种选择;再下去还有多种芯片可以选择;读者不难想象到,这是一个多级的变换链,需要多种不同的工具在不同层次上完成特定的任务。,一个嵌入式的产品的开发大体要经过研究、系统设计、测试与硬件实施三个大的阶段,如图10.9.1所示。研究阶段主要是弄清产品的需求和技术指标,建立系统的数学模型,分析采用何种算法才能完成要求的指标。这个阶段基本上是概念设计,可以用本书所介绍的理论和MATLAB程序及工具箱完成;第二阶段是系统设计,这个阶段就要涉及系统的具体结构和模块划分,例如系统中的滤波器和FFT运算器就要涉及它的信号流图设计,并进行仿真。仿真应该考虑到实际设备,所以应该是模块式的并且是定点运算的仿真。以MATLAB为基础的Simulink是这个阶段的有力工具;第三阶段是测试与硬件实施阶段,这时主要希望把MATLAB和Simulink的程序或框图变换为标准的C语言,,如果C向各种芯片的目标代码的自动转换软件已经开发成功,那么从概念设计到代码生成的变换链就无缝地实现了。 本书前九章所讲的内容基本上只解决了第一阶段的任务,本章将对后两阶段所要完成的任务及MATLAB所能提供的支持软件作一简要介绍。10.2节介绍系统建模和仿真的软件Simulink,后几节将介绍芯片实现中用到的软件工具。使读者有一个总体的概念。,10.2.1 概述,Simulink工具却是从底层开发的一个完整的仿真环境和图形界面。在这个环境中,用户可以利用鼠标或键盘,完成面向框图系统仿真的全部过程,并且可以直观、快速和准确地达到仿真的目标。原来的MATLAB是在文本窗口中编程,图形窗口只是用来显示,而Simulink则可以用框图方式来编程,使MATLAB的功能有了一个质的飞跃。因此,MathWorks公司往往把Simulink与MATLAB作为并列的产品向用户推荐。Simulink的优点是它不给出任何新的函数。对用户来说,MATLAB原有的函数仍然有效。因此,读者如果有MATLAB的基础,除了要学一下图形界面的使用方法之外,不需要再学新的语法,马上就会应用。这显示了其对用户的友好性。,Simulink具有的功能:,(1)用方框图的绘制代替程序的编写。构成任何一个系统框图有三个步骤,即选定典型模块,相互联接和给定模块参数。这三步可以在同一个图形界面上用鼠标和键盘来完成。(2)仿真的建立和运行是智能化的,首先,画好了框图并存起来,它就自动建立起了仿真的方程,其次,在运行时用户可以只给出仿真精度,软件已会自动选择计算的程序,使得系统仿真具有最快的速度。(3)输入输出信号来源形式的多样化,其输入信号可以是各种信号发生器;也可以是来自一个设定的记录文件,还可以来自MATLAB的工作空间(workspace)。输出信号则送往多种多样的观测记录设备。,10.2.2 模块库及模型的建立,在命令窗中,键入Simulink,就可以进入仿真模块库,以Simulink版本7.1为例,其界面如图10.2-1。其中列出的大类有Simulink,控制工具箱(Control System Toolbox),信号处理模块库(Signal Processing Blockset),实时工作站(Real-Time Workshop),等等。在Simulink大类中,又分列了信号源(Sources)、信宿(Sinks),线性(Linear)、非线性(Nonlinear)、离散(Discret)、逻辑和位运算(Logic and bit operation)、数学运算(Math)、信号属性(Signal Attribute)等各类子菜单图标中。打开这些图标,右方将显示其中包的各种模块,例如打开Sinks,将看到数字显示器,示波器,xy记录仪,文件等各种记录和显示设备。,打开信号处理模块库的大类,其中也有下一级库的菜单,给出了信号处理常用的模块,比如在其“终端”中,有频谱分析仪、向量示波器等,在“变换”中有FFT,DCT等。,整个Simulink的库中包括了成百种模块,可供调用。另外用户还可以按自己的设计定义模块。比如自己按8.8节的方法用fdatool设计好了滤波器,点击设计界面左下方第四个按钮(Realize Model),系统会自动生成该示波器的信号流图,也就是仿真的框图。在本例中生成的模型是三个双二阶模块的串接,每个模块都如图10.2.2所示。用户可以把它存成自定义模块,需要时就可以调出来仿真。,图10.2.2 Simulink自动生成的双二阶环节的仿真框图,2模型的建立,要开始建立模型,可点击左上方的File菜单项中的子菜单New,屏幕上会出现一个是供绘制框图用的空白页面,用户只要用鼠标点击所需的库中模块,并将它拖到空白页面的适当位置,然后将这些模块相互用有向箭头联接即可。因为系统具有较好的智能化,所有这些工作,用鼠标就可以用单手完成。再双击这些模块,会弹出一个相应的参数设定框,用户可以填写这些模块的参数,从而完成了整个仿真模型。可以把多个模块构成的框图打包,构成一个子系统,它代表一个子系统;也可以把多个子系统打包,构成一个更大的子系统,这种多级框图的构成能力,使得不管多复杂的系统,都能够得到可简可繁的表述。,10.2.3 仿真的运行,现在用MATLAB中的一个演示程序来说明,在命令窗中键入fxpdemo_direct_form2,屏幕上将出现如图10.2.3所示的仿真框图。不难看出,中间由增益、相加、迟延模块所组成的是形式为直接型数字滤波器。它的输入是经过浮点到定点转换的定点信号xq,输出的定点信号yq再经过转换模块而恢复为浮点信号y。然后与信号源所产生的原始的浮点信号x一起送到示波器中观测比较。这两个变换模块是定点计算模块库(Fix-Point Blockset)中的,此处其参数设定为双精度到定点数(1,16,10)(即带1个符号位和10位小数的16位定点数)之间的转换。,先设定信号源参数和所有的模块的参数,此处取演示程序中原设定的值,信号是周期为200秒的方波。然后在仿真框图菜单项“simulation”的下拉菜单中先选择“configuration parameters”项设定仿真参数,再选“start”,系统就开始仿真。双击示波器,在其屏幕上将可以看到输入和输出两根曲线。同时“start”项就变为“stop”。如果这里的定点仿真不止是对信号,则系数设定中也必须同时考虑取有限字长。,Simulink开始是为控制系统仿真而开发的,以后发现它不仅编程特别方便,不易出错,而且可以解决MATLAB程序不好解决的非线性、变系数系统的问题。因此,许多领域都针对本身的特点,开发了各种仿真模块或模块库(Blockset),加入到Simulink中去。除了上面用到的数字信号处理模块库、定点处理模块库外,还有通信(Comm)、控制系统(Control)、非线性控制(NCD Blockset)、电力系统(Powersys Blockset)、状态流(StateFlow)、系统辨识(System ID Blocks)、其他(Simulink Extras)等。有了这些库,就很容易用Simulink来解决它们的问题,而且只画框图,无须编程。,MATLAB与嵌入式代码的衔接,通过包含定点工具的仿真,设计出的系统比概念设计要靠近实际一步,因为它把计算机的二进制有限字长考虑在内了,但离开以芯片为核心的嵌入式系统硬软件相距还有相当距离。各种芯片的开发商通常把C语言或HDL语言作为芯片开发的顶层语言,因此主要的任务就归结为从MATLAB如何自动转化为C语言或HDL语言的问题。但普通的MATLAB语言并不能直接与C兼容。比如MATLAB的数的格式就没有C多,通过定点工具箱解决了这个问题。但还有别的问题,例如MATLAB的内存空间是可以在程序运行过程中动态分配的,C语言也如此,但是芯片上的变量必定放在固定存储器中。因此要把定点MATLAB再进一步改造成为嵌入式MATLAB语言(EML)并转换为嵌入式的C代码。,把MATLAB和Simulink转换为C代码的MATLAB工具是Real-Time Workshop)和Real-Time Workshop Embedded Coder。后者产生的是经过优化的能与嵌入式系统要求匹配的C代码。此外实际系统中往往有许多离散事件,包括开关和状态的条件切换等,Simulink有专门的Stateflow工具对离散事件建模仿真,它通过Stateflow Coder产生C代码。MATLAB和Simulink有关信号处理从概念设计到代码实现的各主要工具的相互关系如图10.2.4所示。在底部的是从事概念设计的工具,愈往上愈接近于实际系统,顶部的工具则是用来产生目标芯片代码生成器。由C代码向芯片代码转换的工具一般由芯片生产商开发,它用的C代码也是有一定限制的嵌入式代码。,由于设计过程不止是MATLAB语言到芯片代码的单方向变换,还要在仿真中看到芯片中的数据和进行反复修改,所以需要双向的数据通信、观测和底层参数修改等操作。这些软件都要复杂得多,必须既精通MATLAB和C,又熟悉目标芯片特点的技术人员共同开发。以TI(Texas Instrument)公司的数字信号处理芯片为例,Mathworks公司为它开发与之相联接软件,叫做Embedded IDE Link CC(for TIs Code Composer Studio)(以前版本叫做Link for CCS)。此外为每一类芯片分别开发出代码生成工具Target Support Package TC2和Target Support Package TC6(以前版本叫做Target for TI 2000和Target for TI 6000)。,Mathworks在信号处理方面的全套产品及相互关系,10.4 基于模型的开发流程,嵌入式系统的开发一般包括四个阶段:需求与规范、设计、实现、测试与验证。传统的开发过程中,这四个阶段的界限相对比较清楚,而且多数由不同的部门或者不同的人员完成,由于不同的开发阶段采用不同的工具,相互之间的交流缺乏统一的平台,实现阶段是比较繁琐的而且工作量巨大。,嵌入式系统传统的开发流程,举例而言,系统工程师采用高级语言如MATLAB来设计仿真算法,DSP工程师需要用C语言或者汇编语言来实现这些算法,FPGA工程师要用VHDL或者Verilog等HDL语言来实现这些算法,对于同样算法,就需要维护多个版本,而且采用C语言和HDL实现算法的工作量和难度远大于采用MATLAB等高级语言的工作量和难度,难免在编程过程中引入一些错误,这样就会造成测试与验证阶段的压力,问题发现的越晚,修正问题花费的代价越大。,基于模型的设计避免了这种问题,首先在需求与规范阶段,规范是可以执行的Simulink模型,有明确的输出结果,不会存在理解的歧义;在设计的阶段,根据实际的需求来做细化,如考虑定点要求做定点设计,采用更加符合实际要求的算法来设计,每一步的改动都要作仿真和验证,确保修改保持最初的需求;在实现阶段,采用商业工具的自动代码生成功能,可以避免手工繁杂的编写代码的工作,快速从设计到实现,同时也避免了编写代码可能引入误差的问题,大大提高实现的效率;由于测试和验证贯穿于整个开发流程,而不是在最后阶段才开始进行验证,能够及早发现问题,及早解决,以最小的代价得到最好的结果。这种流程,无论在时间上还是在金钱上,都会大大节约,是一种非常有效的设计流程。,基于模型的开发流程,The MathWorks公司提供了完整的基于模型的设计流程,从算法的研究,开发设计,到C代码和HDL代码的自动产生,以及代码的验证,联合仿真,及硬件验证,都有相应的工具来支持。其他公司,包括芯片厂商也提供了相应的工具,作为Simulink的一个模块库,加快设计、开发的流程。,下面把其中具体的工具作一个简单的介绍。自动C代码和HDL代码生成工具,从Simulink模型、Embedded MATLAB(MATLAB语言子集,包括若干面向嵌入式实现的操作符及函数)及Stateflow产生标准的代码,嵌入式代码,或者HDL代码(VHDL和Verilog代码),包括:Real-Time Workshop 产生标准的代码Real-Time Workshop Embedded Coder 产生嵌入式优化的代码Stateflow Coder 从Stateflow产生标准的代码Simulink HDL Coder 从Simulink模型及Embedded MATLAB产生HDL代码, Filter Design HDL Coder将设计的滤波器产生HDL代码,包括VHDL和Verilog代码,目标支持包,支持特定的处理器及相应的板卡,可以产生针对特定处理器的优化的汇编代码,对于支持的板卡,可以产生包括算法以及板卡外设驱动的整个工程文件。包括:Target Support Package IC1 (for Infineon C166) Target Support Package FM5 (for Freescale MPC5xx)Target Support Package TC2 (for TIs C2000 DSP) Target Support Package TC6 (for TIs C6000 DSP),与嵌入式集成开发环境的连接工具,是MATLAB和Simulink与嵌入式集成开发环境联合仿真接口,可以在MATLAB和Simulink环境下对嵌入式集成开发环境进行操作,包括设置中断,编译、调试等。Embedded IDE Link VS (for Analog Devices VisualDSP+)Embedded IDE Link CC (for TIs Code Composer Studio) Embedded IDE Link TS (for Altium TASKING) Embedded IDE Link MU (for Green Hills MULTI),与HDL 仿真工具的连接工具,EDA Simulator Link是MATLAB和Simulink与FPGA和ASIC硬件设计的联合仿真接口。提供了MATLAB、Simulink与HDL仿真工具的高效、双向接口,对TRL级代码做高效验证,支持VHDL和Verilog。包括:EDA Simulator Link MQ (for Mentor Graphics ModelSim) EDA Simulator Link IN (for Cadence Incisive) EDA Simulator Link DS (for Synopsys Discovery),Real-Time Workshop和Real-Time Workshop Embedded Coder为嵌入式系统生成最优的C和C+代码,主要特点 从Simulink和Stateflow模型中及Embedded MATLAB生成ANSI/ISO C和C+代码及其可执行文件,生成的代码在内存占用率,运行速度及可读性等方面可同手写代码相媲美 扩展了Real-Time Workshop和Stateflow Coder,其在产品实现方面具有最优化及代码配置等特点 支持所有Simulink数据对象和数据字典功能,包括用户定义的存储类,类型及别名,提供目标函数库代码的定制,从而为特定处理器生成机器代码 无论有无RTOS,可对多速率代码进行简明分割以提高运行效率 包含可扩展的模块封装特性和自定义数据对象 提供详尽的注释,并使用超链接进行代码到模型和需求之间的双向跟踪 自动将生成的代码导入Simulink进行软件环路测试,从而对代码进行验证 使用Simulink报告生成功能在Simulink Model Explorer中生成代码帮助文件并以此作为独立的报告,Embedded IDE Link CC和Target Support Package TC6支持对TIC6000 DSP的自动代码生成和调试,可以加快算法在DSP上的实现,大大缩短开发的进程,提高开发效率。Simulink HDL Coder可以从Simulink模型和M代码产生HDL代码SimulinkHDL Coder可以从Simulink模型、Stateflow框图和Embedded MATLAB代码产生bit-true和cycle-accurate的可综合的Verilog和VHDL代码。自动生成的代码是目标无关的。产生的Verilog代码兼容IEEE1364-2001标准,VHDL代码兼容IEEE 1076标准,这些代码支持通用的功能验证和综合工具。Simulink HDL Coder同时可以产生HDL测试激励,用于HDL仿真工具对产生的HDL代码做验证。,嵌入式代码开发的实例,例10.5.1 设计一个低通滤波器,做以下工作:(1)按以下指标进行概念设计:采样率Fs=48000Hz,通带Fp=4000Hz,阻带Fs=7000Hz,(2)建立Simulink模型仿真,观察其对3 000 Hz8 000 Hz两个线谱合成信号的滤波效果,(3)用DSP芯片实现这个滤波器。,(1)设计低通滤波器:,这个任务可以用滤波器设计工具FDATool来完成,如右图所示。前已指出,点击其左下方的按钮,可以对滤波器作定点化设计,并且可以生成Simulink的模块,也可以产生C和HDL代码(需要相应的授权)。,(2)搭建Simulink模型,构造测试激励,仿真验证算法。搭建好的模型如图10.5.3所示。在图中,采用信号处理模块库里的信号源模块Sin Wave,构造了由两个正弦信号作为测试的输入信号,将这两个信号经过相加器叠加成一个信号,使他经过滤波器设计工具生成的数字滤波器。在滤波器的前后都放置了频谱分析仪和示波器,以观察滤波的效果。所有图上的模块在Simulink的模块库中都能找到,只要把他们用鼠标拖引到打开的空白文件上,并用鼠标将它们联接起来即可。,建立仿真框图后,就可设置各模块的参数。例如,双击两个数字信号源之一,就会弹出如图10.5.4所示的参数设置视窗,在其中填入本例的参数。比如采样率取48000Hz,频率是3000Hz(另一个设成8000Hz),它能支持基于帧的设计,采用每帧1024个样本。由于是基于帧的设计,就可以直接观察时域与频域的波形,否则需要对时域信号进行缓冲(Buffer),然后才能观察频域波形,而且基于帧的设计会有比基于采样更快的仿真速度。,接下来我们要把设计好的滤波器加到我们的测试信号上,看看是不是达到我们的设计效果,低频信号通过,高频信号滤掉。我们可以采用上一步产生的滤波器模块,也可以直接采用信号处理模块库里的Digital Filter Design模块,该模块会打开FDATool工具同样的界面,进行滤波器的设计,并且可以直接用于Simulink仿真。,对该模型作仿真运行,可以观察其时域与频域的波形,我们可以看到时域里两个信号叠加的波形和频域里非常干净的两个线谱,在图10.5.5和图10.5.6中给出了滤波器前后两个频谱分析仪显示的结果,请注意图10.5.5中两个线谱的幅度是一致的,而图10.5.6中,8000Hz的谱线就得到了很大的抑制。高频的线谱能量已经比低频的低了大约60dB,满足我们最初的设计,说明滤波的效果不错。,(3)面向硬件实现作进一步调整,上一步我们完成了算法的设计与仿真。假定我们要在TI DSP上实现该算法,还需要作进一步的工作,如定点量化等,当然也可以在DSP实现浮点的算法,一般来说都需要面向硬件实现作一些修改。(3)与仿真硬件联接这里我们采用TI6416DSK作为实现的硬件板卡。Target Support Package TC6 (for TIs C6000 DSP)支持该板卡,需要加入Target Preferences模块对硬件进行配置,设置相应的硬件参数,如图10.5.8。,可以直接对板卡上的外设进行操作,如将产生的测试信号输出到音频输出模块DAC,在产生代码的时候就会对将产生的测试信号输出到硬件的音频输出口,接上耳机就可以听到两个正弦叠加的信号的声音,用示波器或者频谱仪可以在该端口看到与我们仿真时一致的波形。,TI6416DSK硬件板卡的联接,1硬件实现,修改后的硬件实现模型如图10.5.9,比仿真的模型增加了Target Preferences和DAC输出两个模块。这时就可以连接相应的硬件设备,进行DSP代码的自动产生和下载。Simulink的自动代码生成工具Real-Time Workshop会自动调用TI CCS,产生代码及整个CCS工程的文件,并编译、链接、下载到板卡,运行,耳机里会听到相应输出信号的声音,当然可以用示波器与频谱仪进行验证。会看到与仿真结果一致的波形,如果对产生的DSP工程及代码感兴趣,也可以打开TI CCS进行编译、调试。如图10.5.10所示:通过以上的例子可以看到,我们在硬件知识不是很丰富的情况下,也可以很快地完成从算法的设计到硬件的实现。自动代码生成工具,使开发者从繁杂的写代码的劳动中解放出来,有更多的时间和精力做深入的算法研究及其他工作。,2引深到FPGA,以上步骤完成了从算法设计、仿真到DSP实现的基本过程,在实际应用中还可以将Embeded MATLAB代码作为一个Simulink模块进行算法的仿真和代码产生。,同样的流程也可以用于FPGA的设计与开发,Simuli

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论