使用MATLAB和Simulink算法创建FPGA原型

最新更新时间:2013-10-15来源: 互联网关键字:MATLAB  Simulink  FPGA原型 手机看文章 扫描二维码
随时随地手机看文章

芯片设计和验证工程师通常要为在硅片上实现的每一行RTL代码写出多达10行测试平台代码。验证任务在设计周期内可能会占用50%或更多的时间。尽管如此辛苦,仍有接近60%的芯片存在功能瑕疵,需要返工。由于HDL仿真不足以发现系统级错误,芯片设计人员正利用FPGA来加速算法创建和原型设计。

  利用FPGA处理大型测试数据集可以使工程师快速评估算法和架构并迅速做出权衡。工程师也可以在实际环境下测试设计,避免因使用HDL仿真器消耗大量时间。系统级设计和验证工具(如MATLAB和Simulink)通过在FPGA上快速建立算法原型,可以帮助工程师实现这些优势。

  本文将介绍使用MATLAB和Simulink创建FPGA原型的最佳方法。这些最佳方法包括:在设计过程初期分析定点量化的效应并优化字长,产生更小、更高效的实现方案;利用自动HDL代码生成功能,更快生成FPGA原型;重用具有HDL协同仿真功能的系统级测试平台,采用系统级指标分析HDL实现方案;通过FPGA在环仿真加速验证(图1)。

  采用系统级指标分析HDL实现方案;通过FPGA在环仿真加速验证

  为什么在FPGA上建立原型?

  在 FPGA上建立算法原型可以增强工程师的信心,使他们相信自己的算法在实际环境中的表现能够与预期相符。除了高速运行测试向量和仿真方案,工程师还可以利用FPGA原型试验软件功能以及诸如RF和模拟子系统的相关系统级功能。此外,由于FPGA原型运行速度更快,可以使用大型数据集,暴露出仿真模型未能发现的缺陷。

  采用HDL代码生成功能的基于模型的设计可以使工程师有效地建立FPGA原型,如图2所示。该图向我们展示了这样一种现实情况:工程师经常缩短详细设计阶段,试图通过尽快开始硬件开发阶段以符合开发周期的要求。现实中,当工程师发现定点算法达不到系统要求时,就得在 HDL创建阶段重新审视详细设计阶段。这样的重叠工作将使HDL创建阶段延长(如紫色长条所示),并可能引发各种设计问题(如胶合逻辑或设计补丁)。

  采用HDL代码生成功能的基于模型的设计可以使工程师有效地建立FPGA原型

  由于自动HDL代码生成流程比手工编码快,工程师得以把节省下来的时间投入到详细设计阶段,生成更优质的定点算法。与手动的工作流程相比,这种方法使工程师能够以更快的速度生成质量更佳的FPGA原型。

  数字下变频器案例研究

  为了说明采用基于模型的设计建立FPGA原型的最佳方法,可借助数字下变频器(DDC)来进行案例研究。在众多的通信系统中,DDC是一种普通的构建块(图 3)。该构建块用于将高速通带输入转换为低速基带输出,以便使用较低采样率时钟进行处理。这样,在硬件实施阶段便可降低功耗、节约资源。DDC的主要部件包括:数控振荡器(NCO)、混频器和数字滤波器链路(图4)。

  数字下变频器系统模型

  在设计过程初期分析定点量化的效应

  工程师通常使用浮点数据类型来测试新的构想和开发初始算法。然而,FPGA和 ASIC硬件实现要求转换为定点数据类型,而这往往会造成量化误差。使用手动工作流程时,通常在HDL编码过程中执行定点量化。在该工作流程中,工程师无法轻易地通过比较定点表示形式和浮点参考值量化定点量化的效应,而分析针对溢出的HDL实现也同样不易。

  为了明智确定所需的小数位数,在开始HDL编码过程之前,工程师需要某种方法来比较浮点仿真结果与定点仿真结果。增加小数位数可以减小量化误差;不过,这种方法需要增加字长(区域增多、功耗升高)。

  例如,图5展示了DDC滤波器链路中低通滤波器第一阶段浮点与定点仿真结果的差异。这些差异是因定点量化所致。上方图形显示了浮点与定点仿真结果的重叠效果。下方图形显示了图中每一点的量化误差。工程师可能需要根据设计规范来增加小数位数以减小由此引出的量化误差。

  图5展示了DDC滤波器链路中低通滤波器第一阶段浮点与定点仿真结果的差异。

  除了选择小数位数之外,工程师还需要优化字长,实现低功耗和区域优化的设计。

  在DDC案例研究中,工程师使用Simulink定点模块组将部分数字滤波器链路的字长减少了8位之多(图6)。

  工程师使用Simulink定点模块组将部分数字滤波器链路的字长减少了8位之多

  利用自动HDL代码生成功能更快生成FPGA原型

  在生成FPGA原型时,HDL代码必不可少。工程师手工编写了 Verilog或VHDL代码。作为替代选择,使用HDL编码器自动生成HDL代码具有众多明显优势。工程师可以快速地评估能否在硬件中实施当前算法;迅速评估不同的算法实现,选择最佳方案;并在FPGA上更快地建立算法原型。

  对于DDC案例研究而言,可以在55秒内生成了5780行HDL代码。工程师可以浏览并很快理解代码(图7)。自动代码生成功能允许工程师对系统级模型进行更改,并且,通过重新生成HDL代码,该功能可以在数分钟之内生成更新的HDL实现方案。

  可以在55秒内生成了5780行HDL代码

  重用具有协同仿真功能的系统级测试平台进行HDL验证

  功能验证:HDL协同仿真使工程师能够重用Simulink模型,将激励驱动至HDL仿真器,并对仿真输出执行交互式系统级分析(图8)。

  HDL协同仿真使工程师能够重用Simulink模型

  HDL仿真仅提供数字波形输出,而HDL协同仿真则提供了显示HDL代码的完整视图,并可以访问Simulink的全套系统级分析工具。当工程师观察到预期结果与HDL仿真结果存在差异时,可借助协同仿真进一步了解该失配所产生的系统级影响。

  例如,在图9中,频谱仪视图可以使工程师做出明智决定,忽略预期结果与HDL仿真结果之间的失配,其原因是该差异位于阻带区。相比之下,数字波形输出只是将预期结果与HDL仿真结果的失配标记为误差。尽管工程师最终可能得出相同的结论,但这将需要更多的时间完成所需的分析。

  使用特定域频谱仪分析系统级指标并评估HDL实现的性能

  测试覆盖率:工程师可以使用HDL验证工具、Simulink设计验证工具和ModelSim/Questa自动执行代码覆盖率分析。在该工作流程中,Simulink设计验证工具可针对模型覆盖率生成一套测试用例。HDL验证工具自动使用这一套测试用例运行ModelSim/Questa,收集代码覆盖率数据,以对生成的代码加以全面分析。

  使用FPGA在环仿真加速验证

  使用系统级仿真和HDL协同仿真验证DDC算法之后,便可以立即在FPGA目标平台上部署DDC算法。对算法执行基于FPGA的验证(也称为FPGA在环仿真)可以增强对算法在现实环境中有效运行的信心。相比基于主机的HDL仿真,该验证可以使工程师更快地运行测试方案。

  对于DDC算法而言,可以使用Simulink模型驱动FPGA输入激励并分析FPGA的输出(图10)。与HDL协同仿真一样,在Simulink中始终可以利用相关数据进行分析。

  使用Simulink模型驱动FPGA输入激励并分析FPGA的输出

  图11对比了HDL协同仿真和FPGA在环仿真这两种用于DDC设计的验证方法。在本案例中,FPGA在环仿真的速度是HDL协同仿真的23倍。这样的速度提升使工程师能够运行更广泛的测试用例并对其设计进行回归测试。这使他们能够识别出有待进一步分析的潜在问题区域。

  图11对比了HDL协同仿真和FPGA在环仿真这两种用于DDC设计的验证方法

  尽管HDL协同仿真速度较慢,但它却提高了HDL代码的可见性。因此,它很适合针对FPGA在环仿真过程中发现的问题区域进行更详细的分析。

  总结

  如果工程师遵循本文所述的四种最佳方法,开发FPGA原型将比传统的手动工作流程快出许多,并能使工程师信心倍增。此外,工程师还可以在整个开发过程中继续优化自己的模型,并快速地重新生成有关FPGA实现的代码。与依赖手工编写HDL的传统工作流程相比,这种能力可以显著缩短设计迭代的周期。

关键字:MATLAB  Simulink  FPGA原型 编辑:神话 引用地址:使用MATLAB和Simulink算法创建FPGA原型

上一篇:如何设计线性和开关式LED电源的结合方案
下一篇:便携MEMS麦克风可以有效改善音质

推荐阅读最新更新时间:2023-10-12 20:50

绘制根轨迹的MATLAB函数介绍
绘制根轨迹的MATLAB函数介绍 4.4.1 rlocus ⒈.功能:绘制系统的根轨迹。 ⒉.格式: =rlocus(n,d) =rlocus(g) =rlocus(n,d,k) =rlocus(g,k) ⒊.说明: rlocus函数可计算出或画出SISO系统的根轨迹,其中g(或n,d)为对象模型,输入变量k为用户自已选择的增益向量,当k缺省时则为系统自动生成增益向量k,返回变量r为根轨迹各个点构成的复数矩阵.如果在函数调用中不返回任何参数,则rlocus函数在当前窗口中画出系统的根轨图。 4.4.2 rlocfind ⒈ 功能:计算给定一组根的根增益。 ⒉格式: =rlocfind(n,
[模拟电子]
使用MATLAB和任意波形发生器创建高性能激励测试系统
测试工程师面临的极具挑战性的任务之一,是为测试PCB原型或硅转生成激励信号,或为RF技术定义复杂的高频调制信号。尽管在工作台上摆满脉冲发生器、函数发生器、调制发生器和RF发生器也不失为一种方法,但使用任意波形发生器(AWG)直接合成生成信号提供了更高的灵活性、可重复性和测量精度。 灵活性源自我们生成波形的方式,其直接来自AWG中的内存,因此管理简便,可以满足无穷无尽的各类应用和测试需求。AWG基于采样的结构基本上与数字示波器的操作相反。示波器从模拟波形中采集样点,而任意波形发生器则从存储的样点中重建模拟波形(即DAC与ADC)。这些样点基本上可以定义任何波形,从正弦波到串行数字脉冲。 许多传统信号发生仪器只生成
[测试测量]
使用<font color='red'>MATLAB</font>和任意波形发生器创建高性能激励测试系统
根据示波器存储的波形数据得到两列信号的相位差(MATLAB源码)
目的 示波器显示的波形如下,需要通过MATLAB处理得到这两列信号的相位差。 步骤 将U盘插入到示波器上,存储信号序列。在MATLAB中读取这个.CSV 信号序列文件,处理得到相位差。代码如下: clear all close all %读取数据 t=xlsread('A2.CSV','A2','A1:A500');%读取时间序列 x=xlsread('A2.CSV','A2','B1:B500');%读取参考信号 x1=xlsread('A2.CSV','A2','C1:C500'
[测试测量]
根据示波器存储的波形数据得到两列信号的相位差(<font color='red'>MATLAB</font>源码)
MATLAB入门教程之MATLAB的基本知识
1-1、基本运算与函数 在MATLAB下进行基本数学运算,只需将运算式直接打入提示号( )之後,并按入Enter键即可。例如: (5*2+1.3-0.8)*10/25 ans =4.2000 MATLAB会将运算结果直接存入一变数ans,代表MATLAB运算後的答案(Answer)并显示其数值於萤幕上。 小提示: " "是MATLAB的提示符号(Prompt),但在PC中文视窗系统下,由於编码方式不同,此提示符号常会消失不见,但这并不会影响到MATLAB的运算结果。 我们也可将上述运算式的结果设定给另一个变数x: x = (5*2+1.3-0.8)*10^2/25
[模拟电子]
基于MATLAB的实时数据采集与分析研究
  1、引言   数据采集系统涉及多学科,所研究的对象是物理或生物等各种非电或电信号。根据各种非电或电信号的特征,利用相应的归一化技术,将其转换为可真实反映事物特征的电信号后,经A/D转换器转换为计算机可识别的有限长二进制数字编码,以此作为研究自然科学和实现工业实时控制的重要依据,实现对宏观和微观自然科学的量化认识,典型的数据采集系统组成如图1所示。   在采集过程中,将传感器获取的参数通过A/D转换送入内存,然后由CPU对其进行分析、运算和处理,如数字滤波、量纲变换、误差修正、数字显示等。在本文中,尝试通过利用MATLAB的数据采集工具箱对自主设计的数据采集系统 进行模拟仿真,结果实现了对设计系统的模拟操作检验与数据分
[单片机]
基于<font color='red'>MATLAB</font>的实时数据采集与分析研究
Matlab的孤立逆变源的设计方案
  基于Matlab软件平台,采用双环控制策略设计的逆变源,利用Matlab-Simulink-SimPowerSystems的工具箱进行建模仿真,验证了本文所设计方案的可行性和有效性。   引言   随着太阳能、风能等可再生能源的发展,分布式发电以其环境污染少、能源综合利用率高、供电可靠等优点,逐渐成为了各国家竞相研究的热点,在美国、欧洲等技术成熟的国家和地区,以将其广泛应用在微电网中。逆变 电源 作为一种有效的电力供应源,成为了微电网的重要组成部分,并在微电网的研究和实施中得到了广泛的应用。   本文设计的基于PWM的孤立逆变电源,其控制模型采用电压外环和电流内环双环控制策略,电压外环和电流内环均采用PI控制方式。应用Ma
[电源管理]
<font color='red'>Matlab</font>的孤立逆变源的设计方案
MathWorks发布新版MATLABSimulink,新增数百项新特性
MathWorks 宣布,发布 MATLAB 和 Simulink 产品系列版本 2021a。版本 2021a (R2021a) 带来数百项 MATLAB® 和 Simulink® 特性更新和函数更新,还包含 3 款新产品和 12 项重要更新。MATLAB 现支持在实时脚本中使用动态控件,以及在实时脚本中使用任务添加绘图,同时无需编写代码。Simulink 现支持用户将 C 代码作为可重用的 Simulink 库导入,并可加快仿真速度。R2021a 还推出了针对卫星通信、雷达和 DDS 应用领域的新产品。如需了解详情,请观看版本 2021a 简介视频。 R2021a 推出的新产品包括: ·Satellite Communi
[半导体设计/制造]
MathWorks发布新版<font color='red'>MATLAB</font>和<font color='red'>Simulink</font>,新增数百项新特性
基于Matlab的无失真模拟滤波器的设计
   O 引 言   模拟滤波器的设计一般包括两个方面:根据技术指标即滤波器的幅频特性确定滤波器的传递函数H(s);设计实际网络实现这一传递函数。设计滤波器H(s)的关键是找到逼近函数,目前已有多种逼近函数。然而,不论哪种逼近函数都需要进行非常繁琐的计算,还要根据计算结果进行查表。   Matlab语言是一种简单、高效的高级语言,是一种内容丰富、功能强大的分析工具,其应用范围几乎覆盖了所有的科学和工程计算领域。Matlab中提供了丰富的用于模拟滤波器设计的函数,通过编程可以很容易实现低通、高通、带通、带阻滤波器,并能画出滤波器的幅频、相频特性曲线,大大简化了模拟滤波器的设计。在此介绍了用Matlab设计实现一个无失真模
[模拟电子]
小广播
热门活动
换一批
更多
最新模拟电子文章
更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved