用matlab来实现fpga功能的设计

发布者:科技创造者最新更新时间:2012-02-11 来源: elecfans关键字:matlab  fpga 手机看文章 扫描二维码
随时随地手机看文章
  

摘要:System Generator for DSP是Xilinx公司开发的基于Matlab的DSP开发工具?熗?时也是一个基于FPGA的信号处理建模和设计工具。文章介绍了在Matlab中使用System Generator for DSP实现FPGA硬件设计的方法,同时给出了一个应用实例。 
关键词:Matlab;FPGA;System Generator;DSP

      近年来,在数字通信、网络、视频和图像处理领域,FPGA已经成为高性能数字信号处理系统的关键元件。FPGA的逻辑结构不仅包括查找表、寄存器、多路复用器、存储器,而且还有快速加法器、乘法器和I/O处理专用电路。FPGA具有实现高性能并行算法的能力,是构成高性能可定制数据通路处理器(数字滤波、FFT)的理想器件。如Virtex-II Pro FPGA包含高性能的可编程架构、嵌入式PowerPC处理器和3.125Gbps收发器等。
 
     但是,FPGA在数字信号处理领域的广泛应用受限于几个因素。首先,DSP开发人员不熟悉硬件设计,尤其是FPGA。他们使用Matlab验证算法,运用C语言或汇编语言编程,通常不会使用硬件描述语言(VHDL或Verilog)实现数字设计。其次,虽然VHDL语言也提供了许多高层次的语言抽象,但是基于并行硬件系统的VHDL程序设计与基于微处理器的串行程序设计有很大的不同。
     基于以上原因,Xilinx公司开发了基于Matlab的System Generator for DSP工具。System Generator for DSP是Simulink中一个基于FPGA的信号处理建模和设计工具。该工具可以将一个DSP系统表示为一个高度抽象的模块,并自动将系统映射为一个基于FPGA的硬件方案。重要的是,该System Generator for DSP实现这些功能并没有降低硬件性能。

1、System Generator for DSP的特点
     simulink为DSP系统提供了强有力的高层次建模环境,可大量应用于算法开发和验证。System Generator for DSP作为simulink的一个工具箱很好地体现了这些特性,同时又可以自动将设计转换为可综合的高效硬件实现方案。该硬件实现方案忠实于原始设计,因此设计模型与硬件实现在采样点(在simulink中定义)是一一对应的。通过使用Xilinx精心设计的IP(intellectual property)核可以使硬件方案具有较小的延迟和体积。虽然System Generator中的IP模块是经过功能抽象的,但是对于熟悉FPGA的设计者来说,该模块也具有直接访问底层硬件细节的能力。例如,可以指定System Generator乘法器模块使用Virtex-II系列FPGA中的专用高速乘法器元件,用户定义的IP模块也能够作为黑盒子插入系统之中,等等。
使用System Generator for  DSP实现系统设计的主要特点有:
●在simulink中实现FPGA电路的系统级建模,并自动生成硬件描述语言。
●自动生成modelsim测试程序,支持软硬件仿真。
●支持用户创建的simulink模块。
●使用XILINX FPGA自动实现硬件系统。支持的XILINX FPGA系列包括Spartan-II,Spartan-IIE、Spar-tan-3、Virtex、Virtex-E、Virtex-II、Virtex-II PRO。
     
2、使用System Generator for DSP实现系统级建模
      传统的DSP系统开发人员在设计一个DSP系统时,一般先研究算法,再使用matlab或C语言验证算法,最后由硬件工程师在fpga或DSP上实现并验证。典型的DSP系统设计流程如下:
(1) 用数学语言描述算法。
(2) 设计环境中使用双精度数实现算法。
(3) 将双精度运算变为定点运算。
(4) 将设计转换为有效的硬件实现。
       使用System Generator for DSP可以简化这一过程。设计人员先在matlab中对系统进行建模和算法验证,经过仿真后便可以直接将系统映射为基于FPGA的底层硬件实现方案。可用simulink提供的图形化环境对系统进行建模。System Generator for  DSP包括被称为xukub xilinx blockset的simulink库和模型到硬件实现的转换软件,可以将simulink中定义的系统参数映射为硬件实现中的实体、结构、端口、信号和属性。另外,System Generator可自动生成FPGA综合、仿真和实现工具所需的命令文件,因此用户可以在图形化环境中完成系统模型的硬件开发。图1为使用System Generator for  DSP设计系统的流程图。
 
       在Matlab中,我们可以通过simulink的库浏览器使用Xilinx blockset库中的模块,Xilinx blockset库中的模块可以与simulink其它库中的模块自由组合。Xilinx blockset库中最重要的模块是System Generator,利用该模块可完成系统级设计到基于FPGA的底层硬件设计的转换工作。可以在System Generator模块的属性对话框中选择目标FPGA器件、目标系统时钟周期等选项。System Generator将Xilinx blockset中的模块映射为IP库中的模块,接着从系统参数(例如采样周期)推断出控制信号和电路,再将simulink的分层设计转换为VHDL的分层网表,之后,System Generator即可调用Xilinx CORE Generator和VHDL模拟、综合、实现工具来完成硬件设计。[page]
 
       由于一般的FPGA综合工具不支持浮点数,因此System Generator模块使用的数据类型为任意精度的定点数,这样可以实现准确的硬件模拟。由于smulink中的信号类型是双精度浮点数,因此在xil-inx模块和非Xilinx模块之间必须插入gateway inblock和gateway inblock模块。通常simulink中的连续时间信号在Gateway In block模块中进行采样,同时该模块也可将双精度浮点信号转换为定点信号,而Gateway Out block模块则可将定点信号转换为双精度浮点信号。大部分xilinx模块能够根据输入信号类型推断输出信号的类型。如果模块的精度参数定义为全精度,则模块将自动选择输出信号类型以保证不损失输入信号精度,并自动进行符号位扩展和补零操作。用户也可以自定义输出信号类型来进行精度控制。

3、使用中需注意的问题
       在FPGA系统设计中,时钟的设计十分重要。因此必须正确理解System Generator中的时钟和FPGA硬件时钟之间的关系。simulink中没有明确的时钟源信号,模块在系统参数中定义的采样周期点进行采样。硬件设计中的外部时钟源对时序逻辑电路十分重要。在System Generator模块中,通过定义simulink System period和fpga  system clock period参数可以建立simulink采样周期和硬件时钟间的关系,也可通过设置这些参数来改变Simulink中模拟时间和实际硬件系统中时间的比例关系。simulink的系统周期一般是各模块采样周期的最大公约数。FPGA的硬件时钟是单位为ns的硬件时钟周期。例如,若simulink中有两个模块,采样周期分别为2s和3s,而FPGA系统时钟周期为10ns,则simulink系统周期应该为两个模块采样周期的最大公约数即为1s。这意味着simulink中的1s对应实际硬件系统的10ns。在生成硬件系统前,System Generator将自动检查用户定义的simulink系统周期参数是否与系统中模块的采样周期相冲突,如果冲突,则提示用修改Simulink系统周期参数。
    有些情况会导致System Generator模块产生不确定数(NaN-not a number)。如在双端口ram模块中,两个端口同时对模块中的某一地址进行写操作时,该地址中的数据将被标记为NaN。如果模块中有不确定数出现,则表明该模块的最终硬件实现将会有不可预测的行为,当simulink进行仿真时,System Generator将会捕捉该错误。

4、应用实例
      图2是一个图像处理应用实例的系统实现框图。该应用实例使用5×5的二维FIR滤波器完成图像增强预处理。该系统将输入图像分别延迟0×N(N为输入图像宽度)、1×N、2×N、3×N、4×N个采样点后输入5个Line Buffer,数据在Line Buffer中缓存后并行输入5个5抽头的MAC FIR滤波器。滤波器系统存储于FPGA的块RAM中,图像数据经滤波器处理后输出。图3为Line Buffer实现框图,图4为5×5滤波器框图。
 
 

关键字:matlab  fpga 引用地址:用matlab来实现fpga功能的设计

上一篇:des算法原理
下一篇:用MATLAB设计FIR滤波器的方法

推荐阅读最新更新时间:2024-05-02 21:54

Nallatech推动 FPGA 加速器的革命
(新加坡 – 2016 年11月23日) Molex属下Nallatech 公司近日推出用于高性能计算 (HPC)、网络加速和数据分析的 FPGA 解决方案。使用低外形的 Nallatech 385A™ PCIe 加速卡,以及采用英特尔 OpenCL 软件开发套件来编程的、独立的英特尔 Arria 10 FPGA 加速器,从而展示对卷积神经网络 (CNN) 对象分类的 FPGA 加速能力。FPGA 接口和 IP 构建在 BVLC Caffe 的深度学习架构之上,可以为算法的处理密集型组件加速。Nallatech IP 能够在九毫秒内通过 AlexNet 神经网络来处理图像。基于 Arria10 的 385A™ 板则能够并行处理六个
[嵌入式]
Nallatech推动 <font color='red'>FPGA</font> 加速器的革命
英特尔代工客户年底投产22nm FPGA
    历经八年的准备, Achronix Semiconductor Corp. 已经名列英特尔(Intel)的 22nm FinFET 元件制程客户名单中,并打算在2014年公开上市。     2010年, Achronix 决定将在台积电(TSMC)的代工业务转移到在从未涉足代工领域的英特尔,当时这个决定震惊了整个半导体产业。而最令所有人感到惊讶的主要因素有两点:     首先, Achronix 和英特尔宣布此一决定时,英特尔在代工领域的经验是零;而 Achronix等于是英特尔的第一家客户。然而,今天,英特尔声称,已经有数家尚未公开的晶片客户──其中包括几家大型设计公司──已经打算采用其晶圆代工业务;英特尔同时公开宣
[嵌入式]
基于FPGA的高频时钟的分频和分配设计
摘要:介绍了为PET(正电子发射断层扫描仪)的前端电子学模块提供时间基准而设计的一种新型高频时钟扇出电路。该电路利用FPGA芯片来实现对高频时钟的分频与分配,并用LVDS传输标准对生成的多路时钟信号进行传输,从而最大程度地减少了输出各路时钟之间的延时偏差,同时利用低压差分信号的传输特性增强了信号的抗干扰能力。文章给出了采用VHDL语言编写的时钟电路程序代码。 关键词:FPGA;高频时钟;VHDL 1 引言 随着应用系统向高速度、低功耗和低电压方向的发展,对电路设计的要求越来越高传统集成电路设计技术已无法满足性能日益提高的整机系统的要求。同时,由于IC设计与工艺技术水平的提高,集成电路规模越来越大,复杂程度越来越高。目前已经
[半导体设计/制造]
莱迪思FPGA让安霸CVflow架构释放更强性能
低功耗可编程器件的领先供应商莱迪思半导体公司宣布,安霸公司(Ambarella)(NASDAQ:AMBA)选择莱迪思ECP5™ FPGA为Ambarella CVflow® SoC系统应用实现MIPI桥接功能。基于CVflow的产品可用于各类嵌入式和智能视觉应用,包括视频安全、高级驾驶辅助(ADAS)、电子镜、行车记录仪、驾驶员/驾驶位监控、自动驾驶和机器人等。安霸选择莱迪思是因为其FPGA产品拥有高效的布线架构以及低功耗和小尺寸的特性。 MIPI联盟表示,汽车制造商对使用MIPI组件很感兴趣,因为它们“十分成熟、相对易于使用并且有助于减少连接组件的布线数量。MIPI规范也已经得到充分验证,极大降低了风险。” 然而,许多汽车和
[嵌入式]
基于FPGA的UART接口模块设计
  UART(UniversalAnynchronousReceiverTransmitter,通用异步接收发送器)是广泛应用的串行数据传输协议之一,其应用范围遍及计算机外设、工控自动化等场合。虽然USB传输协议比UART协议有更高的性能,但电路复杂开发难度大,并且大多数的微处理器只集成了UART,因此UART仍然是目前数字系统之间进行串行通信的主要协议。   随着FPGA的广泛应用,经常需要FPGA与其他数字系统进行串行通信,专用的UART集成电路如8250,8251等是比较复杂的,因为专用的UART集成电路既要考虑异步的收发功能,又要兼容RS232接口设计,在实际应用中,往往只需要用到UART的基本功能,使用专用芯片会造成
[嵌入式]
莱迪思值得一搏吗?
编者注:本文作者nstollon,华盛学院九叔编译,主要介绍了莱迪思的收购案对公司股价的影响。 莱迪思半导体(纳斯达克股票代码:LSCC)股东2月28日投票赞成股权基金Canyon Bridge价值1.3亿美元的收购要约。Canyon Bridge已经花了接近八个月的时间,却未能成功说服美国外资审议委员会(CFIUS)批准该收购案,目前Canyon Bridge将决定是否交由特朗普审批。作为投资者,莱迪思可能以每股8.30美元的价格收购这件事值不值得一搏,我们来讨论一下。 莱迪思成立于1983年,主要从事现场可编程逻辑器件业务。在大多数时间里,公司在这个领域排名第三,落后于赛灵思(NASDAQ:XLNX)和Altera(被英特尔收
[半导体设计/制造]
英特尔发布全球最大容量的全新Stratix® 10 GX 10M FPGA
早前,多家客户已经收到全新英特尔® Stratix® 10 GX 10M FPGA样片,该产品是全球密度最高的FPGA,拥有1020 万个逻辑单元,现已量产。该款元件密度极高的FPGA,是基于现有的英特尔 Stratix 10 FPGA 架构以及英特尔先进的嵌入式多芯片互连桥接 (EMIB) 技术。其利用EMIB 技术融合了两个高密度英特尔 Stratix 10 GX FPGA 核心逻辑晶片(每个晶片容量为 510 万个逻辑单元)以及相应的 I/O 单元。英特尔 Stratix 10 GX 10M FPGA 拥有 1020 万个逻辑单元,其密度约为Stratix 10 GX 1SG280 FPGA 的 3.7 倍,后者为原英特尔
[嵌入式]
英特尔发布全球最大容量的全新Stratix® 10 GX 10M <font color='red'>FPGA</font>
LabVIEW与MATLAB混合编程
摘要:结合实例详细介绍了LabVIEW通过ActvieX自动化技术与MATLAB进行混合编程,达到了利用MATLAB优化算法库的目的。将LabVIEW与MATLAB有机结合,是一条开发智能虚拟仪器的有效途径。 关键词:LabVIEW语言 MATLAB ActiveX自动化 虚拟仪器 LabVIEW建立在易于使用的图形数据流编程语言——G语言上,大大简化了过程控制和测试软件的开发。MATLAB以其强大的科学计算功能、大量稳定可靠的算法库,已在为数学计算工具方面事实上的标准。但才者各有欠缺,利用混合编程可以相互补充。 MATLAB是MathWorks公司开发的“演算纸”式的程序设计语言。它提供了强大的矩阵运算和图形处理功能,编
[应用]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved