针对微控制器应用的FPGA实现
时间:06-06
来源:互联网
点击:
当你打开任何智能电子设备(从老式的电视遥控器到全球定位系统),会发现几乎所有的设备都至少采用了一个微控制器(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:片上系统应用
在马达控制应用中,系统发送和接收来自微控制器的信息,以调整步进电机的速度和方向。来自系统的输入告知微控制器增大或减小马达和控制器的速度,微控制器再依次告知系统马达的实时速度和方向。
导航系统采用微控制器调整系统的图像显示器,根据微控制器的输入提高或降低分辨率。
图3中的设计展示了一个片上系统的实现,包括微控制器、外围总线和几种外设功能,以及用于显示寄存器文档、暂存存储器、调用栈、程序计数器、标记和跟踪列表的硬件跟踪调试器。同时还支持微控制器的单步、多步和断点功能。
片上系统的例子可用来说明设计工具流程和实现(图4)。
图4:片上系统的软件开发流程及硬件开发流程
微控制器工具和实现
FPGA微控制器的高效率和紧凑实现使得2280 LUT MachXO器件可用于说明图3中片上系统的设计。
启动该设计的最简单方法是参考“快速启动指南”或项目向导一步一步地设计FPGA。一旦设计项目创建好,下一步就是编写微控制器程序。C或汇编语言是目前最流行的MCU编程语言。图5显示了用汇编语言编写的I2C Slave程序块。
图5:汇编代码实例
必须对微控制器的每个单元进行分析以决定要执行的操作。如代码实例所示,I2C写循环具有5种操作:读状态、写器件地址、写数据、写字地址及返回。请注意代码都加上了注释。
虽然汇编语言的规范在各种MCU上大多是一致的,但设计者还是应该查阅供应商的MCU指令集文档,以了解哪些操作是得到支持的。将汇编源代码转换到ROM初始化文件的汇编程序是由命令行驱动的,和指令集仿真器一样,这可以通过汇编器供应商工具套件获得或者从网上下载。其中有些工具是作为开放源代码工具提供。例如,LatticeMico8微控制器IP(知识产权)就是作为开放源代码提供,这是实现嵌入式微控制器的一种独特有效途径,可使用户拥有最大的灵活性。
在选择微控制器时应考虑哪些因素?本文将主要探讨采用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:片上系统应用
在马达控制应用中,系统发送和接收来自微控制器的信息,以调整步进电机的速度和方向。来自系统的输入告知微控制器增大或减小马达和控制器的速度,微控制器再依次告知系统马达的实时速度和方向。
导航系统采用微控制器调整系统的图像显示器,根据微控制器的输入提高或降低分辨率。
图3中的设计展示了一个片上系统的实现,包括微控制器、外围总线和几种外设功能,以及用于显示寄存器文档、暂存存储器、调用栈、程序计数器、标记和跟踪列表的硬件跟踪调试器。同时还支持微控制器的单步、多步和断点功能。
片上系统的例子可用来说明设计工具流程和实现(图4)。
图4:片上系统的软件开发流程及硬件开发流程
微控制器工具和实现
FPGA微控制器的高效率和紧凑实现使得2280 LUT MachXO器件可用于说明图3中片上系统的设计。
启动该设计的最简单方法是参考“快速启动指南”或项目向导一步一步地设计FPGA。一旦设计项目创建好,下一步就是编写微控制器程序。C或汇编语言是目前最流行的MCU编程语言。图5显示了用汇编语言编写的I2C Slave程序块。
图5:汇编代码实例
必须对微控制器的每个单元进行分析以决定要执行的操作。如代码实例所示,I2C写循环具有5种操作:读状态、写器件地址、写数据、写字地址及返回。请注意代码都加上了注释。
虽然汇编语言的规范在各种MCU上大多是一致的,但设计者还是应该查阅供应商的MCU指令集文档,以了解哪些操作是得到支持的。将汇编源代码转换到ROM初始化文件的汇编程序是由命令行驱动的,和指令集仿真器一样,这可以通过汇编器供应商工具套件获得或者从网上下载。其中有些工具是作为开放源代码工具提供。例如,LatticeMico8微控制器IP(知识产权)就是作为开放源代码提供,这是实现嵌入式微控制器的一种独特有效途径,可使用户拥有最大的灵活性。
- μC/OS-II下通用驱动框架的设计与实现(07-23)
- 微控制器省电管理方法(05-04)
- 基于DSP和Cygnal单片机的移动数据处理传输系统 (07-06)
- 从硅片工艺技术到嵌入式软件的全方位低功耗系统设计(01-01)
- 基于IAP的STM32程序更新技术(01-23)
- 发挥ARM Cortex-M3和M4微控制器最大作用的要诀(01-21)