针对微控制器应用的采用FPGA的嵌入式应用

发布者:智慧启迪最新更新时间:2015-04-13 来源: eechina关键字:微控制器  FPGA  嵌入式应用 手机看文章 扫描二维码
随时随地手机看文章
当你打开任何智能电子设备(从老式的电视遥控器到全球定位系统),会发现几乎所有的设备都至少采用了一个微控制器(MCU),很多设备里还会有多个微控制器。MCU往往被用于专用的终端产品或设备中,它能够很好地完成特殊任务。另一方面,PC的大脑,即微处理器被设计用于实现许多通用的功能。微控制器可用于降低成本,加固工业和自动化应用,将其嵌入FPGA中时,还可以通过重新编程迅速改变功能。这种灵活性使得单个设备可应用于接口标准不同的多个市场。 

在选择微控制器时应考虑哪些因素?本文将主要探讨采用FPGA的嵌入式应用。不过,选择任何微控制器的标准本质上都是相同的。设计者需要考虑下列因素:终端产品的成本是多少?实现设计以及存储控制程序需要多少内存?对输入输出的要求?对寄存器的要求?如何与其它器件集成? 

传统的MCU已作为一种非定制的特殊应用标准产品(ASSP)上市,每个供应商都提供了不同的功能以实现差异化并迎合市场的各种需求。将FPGA与MCU IP结合可提供比传统MCU更加灵活的硬件平台,并有助于实现前面列出的各项考虑因素。 

虽然FPGA比单片MCU昂贵,但其附加的功能(如嵌入式DSP、存储块以及灵活的I/O环)可以抵消多个器件的成本;FPGA提供了更加灵活的存储结构,一旦数据和指令需要改变,则用户可以调整硬件设计来与之匹配;现代系统中有各种各样的信号标准和接口协议,因此对输入输出的要求非常严格,具有可编程片上缓冲器的FPGA在这个领域具有独特优势。例如,Lattice MachXO器件可在各种电平下支持单端LVCMOS/LVTTL和差分LVDS/LVPECL。就寄存器和暂存存储器资源而言,面向FPGA的MCU IP核所提供的灵活性可改变配置以满足应用的需求;FPGA是解决器件集成问题的理想方案。可编程查找表(LUT)、寄存器和存储器提供了额外的集成功能,同时灵活的可编程I/O和专用接口(如双数据速率(DDR))使其与多个器件的握手更加容易。 

对于许多微控制器应用来说,FPGA是非常理想的器件,因为其成本相对低廉,包含大量的嵌入式存储块,具有足够的I/O以应对几乎所有控制器功能,拥有丰富的寄存器,并支持包括LVCMOS、SSTL及差分LVDS信号传输在内的许多I/O标准。 

基于闪存的非易失性FPGA

FPGA的制造工艺有多种,包括一次性编程(反熔丝)、易失性(基于SRAM),以及使用基于EE或闪存的非易失性工艺。 

表1列出了器件密度、封装类型、可用I/O数、嵌入式和分布式存储器,以及PLL和嵌入式DSP块。例如,基于闪存的FPGA采用130nm和90nm工艺。广泛的选择范围使得找出满足特殊微控制器应用需求的器件更容易一些。 

表1:基于闪存的非易失性FPGA产品 




微控制器应用实例

FPGA的灵活性使其适用于许多微控制器应用,以及包含微控制器的更复杂的设计。 




图1:马达控制应用 

像家用电子设备、工业机器人以及正在增长的新兴汽车应用(从GPS、引擎控制到制动系统)这些产品都包括图1、2和3中所示的微控制器。 



图2:导航系统应用 



图3:片上系统应用 

在马达控制应用中,系统发送和接收来自微控制器的信息,以调整步进电机的速度和方向。来自系统的输入告知微控制器增大或减小马达和控制器的速度,微控制器再依次告知系统马达的实时速度和方向。[page]

导航系统采用微控制器调整系统的图像显示器,根据微控制器的输入提高或降低分辨率。 

图3中的设计展示了一个片上系统的实现,包括微控制器、外围总线和几种外设功能,以及用于显示寄存器文档、暂存存储器、调用栈、程序计数器、标记和跟踪列表的硬件跟踪调试器。同时还支持微控制器的单步、多步和断点功能。 

片上系统的例子可用来说明设计工具流程和实现(图4)。 




图4:片上系统的软件开发流程及硬件开发流程 

微控制器工具和实现 

FPGA微控制器的高效率和紧凑实现使得2280 LUT MachXO器件可用于说明图3中片上系统的设计。 

启动该设计的最简单方法是参考“快速启动指南”或项目向导一步一步地设计FPGA。一旦设计项目创建好,下一步就是编写微控制器程序。C或汇编语言是目前最流行的MCU编程语言。图5显示了用汇编语言编写的I2C Slave程序块。 





图5:汇编代码实例 

必须对微控制器的每个单元进行分析以决定要执行的操作。如代码实例所示,I2C写循环具有5种操作:读状态、写器件地址、写数据、写字地址及返回。请注意代码都加上了注释。 

虽然汇编语言的规范在各种MCU上大多是一致的,但设计者还是应该查阅供应商的MCU指令集文档,以了解哪些操作是得到支持的。将汇编源代码转换到ROM初始化文件的汇编程序是由命令行驱动的,和指令集仿真器一样,这可以通过汇编器供应商工具套件获得或者从网上下载。其中有些工具是作为开放源代码工具提供。例如,LatticeMico8微控制器IP(知识产权)就是作为开放源代码提供,这是实现嵌入式微控制器的一种独特有效途径,可使用户拥有最大的灵活性。 

嵌入式微控制器IP可以描述整个设计,或者作为一个大型设计的一部分与附加代码结合在一起。寻找一种有助于设计HDL调试和规则检查的工具是非常明智的。这种工具会生成该设计的分层结构和互连性的图形表示。用户可以通过各种图形和分层结构来观察设计,并利用智能工具交互探测视图以发现各种问题。




图6:设计视图—HDL调试工具 

这对于IP集成的维护和复杂FPGAHDL设计的重设计都是很有用的,IP集成需要全面深入的途径进行设计分析和管理。相比传统仿真器或综合工具,这种工具可以实现设计结构的更高层抽象。这有助于创建并管理文档以及分析设计结构,从而极大地减少了花费在这些项目上的设计时间。 

功能仿真

功能仿真首先创建一个工作库,设计被编译到该工作库中。仿真器通过图形用户接口、菜单或命令行使该过程更加顺利。这其中包含了设计文档和测试向量(test bench)。测试向量实例化该设计,并将数据加载到输入端。当运行设计时,测试向量被应用于该设计并显示结果(通常以波形的形式)进行分析。 

可利用各种仿真器实现设计的功能仿真。如果已对整个系统建模,则可以在系统级进行功能仿真,或者对单个设计单元进行仿真以确保正确的语法和功能已在RTL级建模。在这种特殊情况下,有两家OEM的仿真器可供选择。Aldec公司的Active-HDL Lattice Designer Edition Lite是一种附加的仿真环境。它不但提供混合语言VHDL和Verilog仿真,还可提供面向FPGA设计的可选设计流程。另一种选择是MentorGraphics的ModelSim,它能够提供VHDL和Verilog语言以及门级时序仿真,以对设计

   

进行完整的仿真和分析。

综合

一旦完成功能仿真,下一步就是综合。综合可以用独立的方式完成,或者在供应商的项目导航工具中作为后台函数运行。综合获取设计、进行逻辑优化并实现工艺映射。独立模式综合的步骤包括建立项目、加入源文件、设置约束、运行设计和分析结果。约束是综合的实现选项,例如扇出限制、使用全局置位/复位。属性则附属于对象,以控制其依附的特定对象的优化、映射和分析。目前可提供两种领先的综合工具。 

Precision RTL综合工具是Mentor Graphics公司的重要RTL综合解决方案。利用Precision RTL界面可以很容易地获取有用的特性和工具,例如示意图(RTL/工艺)观察器、约束分析器、PreciseTime(用于高级时序分析)、支持时序调整(re-timing)等等。这些高级工具有助于改进效率并最终优化结果。 

Synplicity公司的Synplify综合工具是一款高性能、复杂的逻辑综合引擎,它利用专有的行为提取综合技术(Behavior Extracting Synthesis Technology)提供快速、高效的FPGA和CPLD设计。简单的用户接口和强大的综合引擎结合在一起能迅速提供优化的结果。 [page]

设计实现

面向映射、布局和布线(MPAR)的设计实现是利用供应商的工具套件完成。这一工具套件包含用于建立项目的项目导航器(Project Navigator),以及任何FPGA设计所必需的其它工具。在这种情况下,源文件被放置在左边的窗口,项目处理在右边的窗口进行,但所有的窗口都是可停靠的,以便用户定制任何视图。Log窗口记录所有的处理,并列出在处理过程中产生的全部警告和错误信息。用户可以通过下拉菜单或者工具栏中的图标使用各种工具。图7为Lattice公司ispLEVER工具套件中的Project Navigator。 




图7:ispLEVER项目导航器 

实现工具(如Design Planner)可提供I/O和引脚设置、物理和逻辑视图以及平面布局。TCL/TK脚本可以运行多次迭代以优化设计。Project Navigator中包含了静态时序、逻辑调试和功率计算工具。 

编程软件

设计完成后,通过如图8所示的编程软件对硬件进行编程。这个工具将提供直观的用户界面GUI,可自动对系统主板进行扫描,选择必需的编程文件并执行合适的编程算法。通过供应商提供的SVF文件,该工具支持符合IEEE 1149.1标准的器件编程。对于大多数系统内可编程器件来说,该工具还可以生成IEEE 1532 ISC数据文件。 





一旦实现了硬件,设计者将主要关注运行在嵌入式系统上的软件。ISS可用来确定原型功能以及评估对存储器资源的需求。当硬件集成、端口连接以及查找错误均完成之后,通常不需要再更改代码。 

在嵌入式系统的FPGA设计流程中,采用汇编器对更改的程序进行再编译,以建立FPGA片上指令或数据存储配置的新存储映像。然后通过一个简单的ECO将映像再次映射至FPGA的存储块。这样设计者就能跳过耗时的综合以及设计流程的布局布线阶段。存储器初始化工具将利用汇编器创建的新型16进制或者2进制映像重写存储器配置。 

一旦post-PAR数据库被修改,则只需通过新的编程位流或者JEDEC对FPGA进行再编程。 

能够控制内部寄存器以及在设计调试阶段实现寻址是非常有用的。为达到这一目标,OrCAstra或JLINK接口等工具(如图9和图10所示)提供了功能强大、易于使用的方法。 




图9:JLINK寄存器文件接口GUI 




图10:JLINK Tap控制器接口GUI 

本文小结

对于FPGA中的嵌入式微控制器设计而言,一个完整的系统设计需要一批强大的工具。本文中的例子采用了独特的开放源代码微控制器汇编器和指令集仿真工具。领先的第三方厂商可提供综合和仿真工具。用于创建和优化设计的重要实现工具,以及有效的编程和设计调试形成了这一综合设计套件,它是设计获得成功的关键。
关键字:微控制器  FPGA  嵌入式应用 引用地址:针对微控制器应用的采用FPGA的嵌入式应用

上一篇:嵌入式系统在物联网行业中的应用
下一篇:系统级可编程能力助力嵌入式应用

推荐阅读最新更新时间:2024-03-16 13:58

功率驱动器件与MCU/DSC的接口电路设计技巧
  由于MCU和DSC的成本大幅下降,目前多数马达控制设计中都使用MCU和数字信号控制器(DSC)来执行马达控制算法。本文介绍了一些方法和技巧,可将MCU或DSC的逻辑层输入/输出口(I/O)与功率电子驱动电路接口,并讲述了如何正确地进行相关硬件及软件开发的方法。   在进行MCU或DSC的逻辑层输入/输出口(I/O)与功率电子驱动电路的接口设计时,除了性能和价格需要权衡考虑外,还有许多方面要折衷处理。我们可根据以下问题来选择接口元件:1. 本电路需要驱动何种马达?2. 该马达采用何种算法进行控制?3. 控制器外设可简化哪些接口要求?4. 电气安全要求是什么?5. 此设计是否用于产品开发?   栅极驱动接口电路   半桥输出
[嵌入式]
51单片机的中断与定时计数器尝试
这是我的第一篇有关51单片机的博客,主要记录我的学习历程与中间遇到的问题,如有错漏请指出。 在我理解里面中断与定时计数器是这样的: 中断是通过检查P3.2(INT0)与P3.3(INT1)两个引脚来触发的 计数器是通过检查P3.4(T0)与P3.5(T1)两个引脚的状态,要达到一定的次数(一般是记脉冲数)才触发 定时器不需要检测引脚,直接计数 先说中断的代码 #include reg51.h #include intrins.h #define SDT P0//静态数码管定义 unsigned char temp; unsigned char code SDT_map ={0xC0,0xF9,0xA4,0xB0,
[单片机]
FPGA实现DSP与液晶显示器的快速接口
摘要:高速处理器与慢速设备之间的接口是电子系统设计中经常遇到的问题。以液晶显示器为例,提出了一种以FPGA为基础的快速接口电路设计方案。该方案可有效地减小慢速设备对高速处理器的影响。 关键词:可编程器件 DSP 液晶显示器 微指令 快速接口 随着器件集成工艺的发展和Soc器件的出现,现在的数字系统正在越来越多地采用可编程器件设计。这样,不仅开发周期短,而且在价格和使用难易度上也显示了很大的优势。更为重要的是,还能利用器件的现场可编程特性,根据应用的要求对器件进行动态配置,简便易行地完成功能的添加或变化。 在高速的数字信号处理系统中,要涉及到大量的计算,为了提高运算速度,正大量使用DSP器件。目前的可编程器件,其时钟频率可以很
[电源管理]
单片机寻址—寄存器间接寻址
在指令的操作码中包含了某一工作寄存器的地址(可用作地址指针的工作寄存器是@Ri:R0、R1),而操作数地址则存放在该寄存器中,如: MOV A, @R1; A←((R1)) 该指令是将R1的内容送作为地址,将该地址所对应的RAM单元的内容送累加器。
[单片机]
<font color='red'>单片机</font>寻址—寄存器间接寻址
基于51单片机的倒计时器设计
// 本程序的电路很简单就不画图了,就是8位数码管的段选接在P0口, //为了节约端口8个位接在了74hc138上,由P2.1 P2.0 P2.2控制译码器输出位选. //本程序完全测试通过.完整代码下载地址: http://www.51hei.com/f/djsq.rar /************************************************************************/ /************8位数码管倒计时显示 时间格式24 00 00~~00-00-00**************/ /*******************************************
[单片机]
C8051F单片机端口配置
前言 最近项目上使用C8051单片机,我也是首次用这款单片机,所以项目开发过程中还是或多或少的遇到了一些问题,在此做一个总结,方便以后再次使用,避免相同问题重复犯错。 一、涉及的寄存器 PxMDIN:端口输入方式寄存器,有模拟输入和非模拟输入两种方式 PxMDOUT:端口输出方式寄存器,开漏输出和推挽输出两种方式 PxSKIP:端口跳过寄存器 Px:端口寄存器 二、实例 1.配置端口输入 //P0.X(1 3 5 7)为数字输入,开漏输出,普通IO功能 P0MDIN |= (1 1) | (1 3) | (1 5) | (1 7); P0MDOUT &= ~((1 1) | (1 3) | (1 5)
[单片机]
C8051F<font color='red'>单片机</font>端口配置
单片机在波特率变换器中的应用
在一些复杂的系统中,系统与分系统、分系统与设备等之间存在数据的传递问题,往往采用通信的方式来解决。由于分系统、没备等通信波特率的不同,特别是一些特殊波特率设备的存在,使得系统中设备间的相互通信不易实现。例如,在一个系统中,上位机接收某一设备的数据,如图1所示,设备l和设备2采用的是172.8 kbps的波特率,而上位机用VB编程,其通信波特率为115.2 kbps、128 kbps或256 kbps,等,这样设备之间就不能相互通信,给设计带来困难。为了解决上述问题,采用双单片机电路,设计了波特率变换器,将接收波特率为172.8 kbps的数据,转换成波特率为115.2 kbps的输出,从而使不同波特率设备之间的通信成为可能。
[应用]
MCX A:新的通用MCU和资源丰富的FRDM开发平台
恩智浦正式发布MCX A14x和A15x系列“通用”微控制器。MCX A隶属于MCX产品组合,基于Arm® Cortex®-M33内核平台。 MCX的理念是将主流恩智浦器件的卓越特色与创新功能结合起来,打造下一代智能边缘设备 。 可扩展性是MCX产品组合的一个重要优势。MCX A系列在该产品组合中发挥着重要作用,是各类应用的基础。它面向多个市场的广泛应用,包括: 工业通信 智能计量 自动化与控制 传感器 低功耗/电池供电设备 MCX A14x的工作频率为48MHz,MCX A15x的工作频率为96MHz。器件的封装选项包括32引脚QFN、48引脚QFN和64引脚LQFP。MCX A器件的所有封装类型在IO
[单片机]
MCX A:新的通用<font color='red'>MCU</font>和资源丰富的FRDM开发平台
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

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