首页 > 技术 > CAE其它 > > MATLAB中多EDA软件实现数字系统设计

MATLAB中多EDA软件实现数字系统设计

作者:Simwe    来源:万方数据    发布时间:2012-06-08    收藏】 【打印】  复制连接  【 】 我来说两句:(0逛逛论坛

1.2.3 代码生成

在MATLAB产品族中,自动化的代码生成工具主要有Real-Time Workshop(RTW)和Stateflow Coder,这2种代码生成工具可以直接将Simulink的模型框图和Stateflow的状态图转换成高效优化的程序代码。利用RTW生成的代码简洁、可靠、易读。目前RTW支持生成标准的C语言代码,并且具备了生成其他语言代码的能力。整个代码的生成、编译以及相应的目标下载过程都可以自动完成的,用户需要做的仅仅使用鼠标点击几个按钮即可。MathWorks公司针对不同的实时或非实时操作系统平台,开发了相应的目标选项,配合不同的软硬件系统,可以完成快速控制原型(Rapid Control Prototype)开发、硬件在回路的实时仿真(Hardware-in-Loop)、产品代码生成等工作。另外,MATLAB开放性的可扩充体系允许用户开发自定义的嵌入式系统目标,利用Real-Time Workshop Embedded Coder能够直接将Simulink的模型转变成效率优化的产品级代码。代码不仅可以是浮点的,还可以是定点的。

对于FPGA设计,Xilinx公司的System Generator和Altera公司的DSP Builder允许用户建立位真实、周期精确的IP模型,将浮点模型调整为定点模型并在FPGA模块上实现这些模型。然后,所得的HDL将直接进入后序的综合流程。System Generator和DSP Builder软件是由MathWorks分别与Xilinx公司和Altera公司合作开发而成,DSP设计人员可使用MATLAB和Simulink工具在FPCA内进行开发和仿真来完善DSP设计。该2种软件为系统级DSP设计与FPGA硬件实现的融合起到了桥梁作用,而这一点对于高性能DSP系统的设计者来说,正是至关重要的。

另外,用户可以使用FDATool或命令行函数调用的方式来设计滤波器,然后利用Filter Design HDL Coder来生成VHDL或Venlog代码。Filter Design HDL Coder扩充了MATLAB的硬件实现能力。在Filter Design Toolbox中设计的定点滤波器利用Filter Design HDL Coder可以生成有效的、可综合和可移植的VHDL、Verilog代码,这些代码可以最终在ASIC和FPCA芯片上实现。利用Filter DesignHDL Coder同样可以自动生成用于快速仿真、测试和验证生成代码的VHDL、Verilog、ModelSim测试基准程序。

Link for ModelSim可以和Xilinx System Generator或Altera DSP Builder协同工作。这意味着你可以使用Xilinx System Generator以及Altera DSP Builder来完成你的部分系统设计。因此你可以在一个完整的环境下进行MATLAB、C/C++、Simulink blocks、自己设计的HDL实体、以及Xilinx System Generator所提供的模块或Altera DSP Builder blocks所提供模块的联合仿真。Link for ModelSim是一个把MATLAB、Simulink和针对FPGA、ASIC的硬件设计流程无缝连结起来的联合仿真的接口扩展模块。它提供一个快速的双向连接将MATLAB、Simulink和硬件描述语言仿真器Modelsim连接起来。使二者之间直接的联合仿真成为可能,并且让你更高效地在MATLAB/Simulink中验证ModelSim中的寄存器传输级(RTL)模型。

2 设计实例

为了更加清楚地说明MATLAB环境下多EDA软件联合设计的优势,下面结合工程实践,介绍一个数字上变频器(DUC)的FPGA开发实例。设计在Simulink环境下建模、仿真、代码生成,自动调用System Generator软件、ISE软件,大大节省了开发时间。

设计用System Generator实现DUC,DUC是调用Xilinx公司开发的IP Core。

信号源是由正弦波发生器提供一个低频率的单频信号,它是由MATLAB/Simulink本身提供的,不属于Xilinx模块。信号源之后使Gateway In模块,它将浮点数转换成指定宽度的定点数,因为FPCA里面不能直接实现浮点运算。中间是Xilinx的DUC IP Core,主要是完成数字上变频的功能,也是进行代码转换的对象。Gateway Out模块的作用刚好与Gateway In模块的作用相反,是将定点数辖换成Simulink能识别的浮点数,以便将信号送往示波器上显示。最后一级是信宿和示波器,主要是对上变频后的信号进行时域波形显示和频谱分析。

3 仿真验证

确认DUC在Simulink环境下的仿真结果正确后,就可以通过System Generator生成已创建模型的VHDL等项目文件。用ISE软件打开生成的工程,分别执行翻译后仿真、映射后仿真、布局布线后仿真,在Modelsim窗口中可以看到,3个进程仿真后的结果与期待响应是完全匹配的,即System Generator生成的VHDL代码经过综合、翻译、映射和布局布线后得到的FPGA实现完全能实现Simulink模型的功能。确认布局布线没有出现错误后,生成FPGA编程文件,下载到硬件电路后验证,结果是正确的。

4 结束语

MATLAB是全球使用最广泛的算法开发产品之一,它长期服务于自己的领域,与EDA和硬件实现相距甚远。但随着它的开发商MathWorks公司与第3方供应商携手合作将MATLAB带入FPGA和ASIC设计领域,这种状况正在发生改变,MATLAB正迈向电子设计自动化的领域。

 
分享到: 收藏