《电子技术应用》
您所在的位置:首页 > 可编程逻辑 > 业界动态 > FPGA中嵌入最小资源配置的微处理器的实现方法

FPGA中嵌入最小资源配置的微处理器的实现方法

2008-07-24
作者:冯 丹,王祖林

    摘 要: 针对在FPGA内集成嵌入式处理器" title="嵌入式处理器">嵌入式处理器消耗资源大的特点,提出了在FPGA内嵌入最小资源配置" title="资源配置">资源配置软核" title="软核">软核的新方法,减少了在FPGA内嵌入处理器内核" title="处理器内核">处理器内核所占用的资源,降低了损耗功率,扩展了可以应用软核的FPGA类型。经过仿真和下载测试,此方法具有配置灵活、节省资源的优点。
    关键词: 嵌入式微处理器;FPGA;Nios II;Mico8

 

    单片机与FPGA结合处理的方案是信息处理的经典模式。此方案存在增加连线复杂度、需要电压转换电路、要求编程人员编写不同程序及生产时单片机程序与FPGA程序分别下载的缺点,它们增加了开发成本,延长了开发周期,增加了系统复杂性和不可靠性。因此,产品开发尤其是商业产品的开发迫切需要在一个芯片中实现用户定义的完整系统。随着FPGA的发展,已经能够在单个可编程器件内实现整个系统,即单芯片系统(SoC)。因此,在FPGA中嵌入处理器内核是一个良好选择。在嵌入式处理器内核中,可以直接在FPGA结构中运行的软核以其灵活性得到广泛应用。
    在嵌入处理器的发展过程中,向低端发展的8位处理器,以低功耗和低资源占有率的优点在不太复杂的系统中有着重要应用。未来,8位嵌入式软核必然会在功能上更加丰富多彩,满足各种个性化的需求。占有资源和功耗是很多商业产品开发中考虑的首要问题,而很多系列的FPGA在并行存在大规模逻辑模块的情况下很难再嵌入软核,更换FPGA类型会使成本大大增加。本文以Altera系列FPGA为例,讨论如何在FPGA中实现最小资源配置的微处理器软核。
1 在Altera系列FPGA中实现微处理器核的通用途径
    Altera系列FPGA中通常使用Nios II系列32位RSIC嵌入式软核处理器。Nios II是Altera的第二代FPGA嵌入式处理器,性能可以超过200DMIPS,实现成本仅需35美分。下面讨论一种采用NIOS II实现较小资源配置的32位微处理器软核的方法。
1.1 Nios II基本介绍
    Nios II系列包括经济、标准和快速3种产品,具有32位处理器的基本结构单元:32位指令大小、位数据和地址路径、通用寄存器和外部中断源;使用同样的指令集架构(ISA),100%二进制代码兼容。设计者可以根据系统需求的变化更改CPU,选择满足性能和成本的最佳方案。为实现小资源配制,本文讨论经济类型处理器(NIOS II/e)的开发,NIOS II/e的RISK为32bit,可以达到7DMIPS,存储单元使用两个M4Ks。
    需要使用的基本软件工具有Quartus II、SoPC Builder、ModelSim、Matlab/DSP Builder和Nios II IDE。
1.2 Nios II开发流程
    Nios II的开发流程图如图1所示。

 

 

    Nios II开发的基本思想是在FPGA已经开发的逻辑处理模块单元外再嵌入一个Nios II自动生成的处理器模块单元。生成一个可选择配置的Nios II 处理器软核需要利用Quartus II集成的SoPC Builder工具。在本文的仿真中,为了实现较小的资源配置,选择NIOS II/e经济类型处理器核。Nios II处理器中必须包括的内容有Nios CPU Core,这是嵌入式处理器的最基本软核。它与一个在线调试串口(JTAG_UART)就构成了Nios II中最小的处理器。其他可选择添加的内容有on_chip_memory(片上存储器)、UART(串口)、输入输出口、Timer(定时器)、SDRAM、FLASH和Avalon三态总线桥。经过软件自动生成的处理器可以像其他逻辑模块一样直接在HDL程序中调用或者在原理图中连线。Nios II处理器支持C及C++语言,可在Nios IDE软件中进行编译及调试。调试通过后,利用Quartus II综合系统就可在硬件上下载调试。本文建立的Nios II经济型处理器结构如图2所示。

 


1.3 NIOS II/e经济类型占用资源分析
    经过仿真可以得到Nios II经济型嵌入式处理器所占用的逻辑单元(LEs)和存储单元(memory)的数量,如表1所示。

 


    由表1可知,使用Nios II实现最小功能的软核处理器(仅包含处理器核以及一个在线调试JTAG)需要大约2000LEs,这对于很多LEs资源不多的FPGA来说是一个很大的消耗。在并行存在大规模逻辑处理单元的情况下,在某些FPGA中利用Nios II实现嵌入式微处理器软核成为一件困难的事情。而且Nios II处理器仅支持Stratix、Stratix GX、Stratix II和Cyclone系列以及以后推出的FPGA系列,不能应用于其他系列FPGA。
    下面讨论一种在LEs资源不丰富的Altera系列FPGA上集成最小配置的嵌入式处理器的方法。此方法使用最小配置的Mico8软核作为嵌入式软核。在功能足够的情况下,所占用的资源远小于Nios II,对于LEs资源不丰富或者不支持Nios II的Altera系列FPGA是一种理想选择。
2 Mico8简介及建立流程
    Lattice Mico8TM是一个8位软微处理核,它是一种非常灵活的单片机内核,目前有4种配置情况。每种配置方式所支持的指令略有不同,不同配置的Mico8所具备的设计资源,包括内部的寄存器、存储器是不一样的,所需要的FPGA实现的逻辑大小也不一样。设计者在使用时可以根据实际的设计需要选择配置模式。
    本文首先在Lattice的MACHXO系列FPGA平台上建立Mico8处理器,然后移植到Altera系列FPGA上。
    在MACHXO上建立Mico8的流程如图3所示。

 


    Mico8只支持汇编代码,因此,在编写处理器代码时只能使用特定的汇编程序。Mico8的指令集包括位操作、算术操作、比较操作等通用的汇编指令和一些伪指令。其格式与通用汇编指令有一些差别[1]。建立一个完整的Mico8处理器内核需要使用的基本软件工具有ispLEVER(用于完成LatticeMico8系统的综合、硬件优化、适配、编程下载和硬件测试)、isp8asm_asm.exe(用于编译初始化prom的汇编指令)以及isp8asm_asm.exe(用于对汇编指令进行仿真)。Mico8的另一优点是对于编译和仿真工具具有完全开放的C源代码" title="源代码">源代码可供参考,可以根据用户需要修改源代码。isp8asm_win.exe 编译汇编语言程序生成初始化EBR的hex文件命令格式为:isp8asm_win.exe-vx-o?鄢.hex?鄢.s。isp8sim_win.exe的作用是对编译成功的汇编程序进行仿真,命令格式为:isp8sim_win.exe-t mico8_demo.hex,可以对二进制或十六进制代码进行跟踪及反汇编。汇编程序仿真成功以后,编译所生成的十六进制或二进制文件就可以作为初始化软核中的prom的代码,类似于要下载到单片机prom或者Flash中的十六进制或二进制文件。
    对软核的配置可以利用Mico8已经给定的4种配置形式[2],除此之外还可以对Mico8进行手动配置,配置内容包括内部RAM的宽度、PROM地址线宽度以及是否使用外部RAM等。不同的配置会改变Mico8的功能和消耗资源,对其运算速度不会产生影响,配置文件会对Mico8软核的相关部分进行修改。在本文中,使用最小配置,即16位RAM、9位PROM地址线宽度和不使用外部RAM。对于不同的Lattice器件,Mico8是不兼容的,要对软核的源代码或相关单元进行修改。例如本文中所使用的MACHXO系列,只能支持分布式RAM,这就要利用ispLEVER Project Navigator对Mico8软核的PROM进行修改,并在Mico8源代码中将相应的设制改为XO。
    利用ispLEVER Project Navigate建立新工程,在确定路径、编程语言、综合工具、器件后生成新项目并导入项目文件。导入文件时应该注意ispLEVER会自动将模块分层,需要保证导入文件之间模块的引用层次正确。如果HDL文件层次不对,将出现不止一个顶层,不能进行后续操作。同时在导入文件时需要区分普通文件和测试文件。测试文件只有在用modelsim进行仿真时才起作用,不能用于实际硬件中。生成适合MACHXO系列FPGA。
    可以利用ispLEVER嵌入的工具Ipexpress。在菜单中选择分布式ROM(Distributed ROM)并指定ROM的地址宽度、数据长度和初始化文件(对汇编编译生成的HEX文件),指定文件格式HEX 类型。将生成ROM的HDL文件prom.v重新引入工程即可编译成功。经过分配管脚,编译成功后即可生成可下载的JEDEC文件,这时顶层文件就是一个配置最小的Mico8核。
    生成的Mico8可以在Lattice的MACHXO器件上直接应用,但是本文举的例子要在Altera系列FPGA上进行应用,还需要对Mico8进行移植。
3 把Mico8软核移植到Altera器件
    Mico8软核与其他硬件具有很好的兼容性,其大多数单元可以在Altera器件上直接进行移植。移植过程包括两个步骤:在Quartus II的新工程中导入相关的Mico8内核文件和配置文件,在Altera器件基础上重新创建与Lattice器件不兼容的RAM以及ROM。
    其中,LatticeMico8的分布式ROM与Altera不兼容,需要利用Quartus II自带的mega-plug in manage重新建立单口ROM。LatticeMico8的SPRAM和SDRAM与Altera兼容,但比Altera自动生成的单元更耗费LEs,因此建议进行移植,重新生成Altera SPRAM和SDRAM操作。移植过程与上类似,不再赘述。在工程中需要引用新的存储模块。Altera定义DPRAM时序与Lattice中定义的DPRAM时序不同,会造成错误。因此采用Mico8中的DPRAM源文件虽然会浪费一定的逻辑单元,但指标可以达到要求。
    Altera中,初始化PROM文件采用Intel Hex文件格式,需要对Mico8的初始化PROM文件进行格式转换,或者在Quartus II的寄存器编译器中直接填写利用Quartus II自动转换为Intel Hex文件格式。Intel HEX由一条或多条记录组成,每行一个记录,每条记录以冒号“:”开始,以回车(0DH)和换行(0AH)结束。除“:”外,每条记录有五个域,每一域由2N(N>=1)个HEX字符组成,格式为::[AA][BBBB][CC][DD….DD][EE]。其中,[AA]表示该记录的实际数据的长度;[BBBB]表示该记录所包含的数据在实际存储区中的起始地址;[CC]为该记录的类型;[DD….DD]为该记录的实际数据,由2N(N>=1)个HEX字符组成,该域的长度应当与[LL]域所指出长度一致;[EE]为该记录的数据校验和。文件格式转化可以用Matlab程序实现。
    完成上述移植过程后的Mico8软核可以在Altera系列FPGA上直接应用,应用时把Mico8软核直接作为单元模块导入系统工程中即可。在Altera中,Mico8软核的资源利用情况如表2所示。

 


    Mico8软核占用约200 LEs,由程序决定的PROM和访问PROM所需的DPRAM的大小约为300LEs,PROM的大小可根据汇编代码程序再作调整。在小配置下,Mico8经过移植后大致使用500LEs,远小于Nios II生成软核的资源占用情况。Mico8在不能支持Nios II或者已有大规模逻辑处理单元不能嵌入Nios II内核的FPGA中是一个理想的应用。在Altera中嵌入Mico8软核需注意,Mico8和普通单片机不同,设计者在使用Mico8时,应该根据Mico8的体系结构的特点来设计系统。
    Mico8设计要点及可行性分析:
    (1)Mico8只有一个8位的外部数据端口和一个8位的外部地址端口,设计者需要设计地址编码和解码电路。由于Mico8的地址和数据总线是分离的,所以Mico8不需要地址/数据锁存信号。

    (2)Mico8仅支持汇编语言的设计指令最长512条。如果程序代码不超过512行,设计员只需在编译程序时指定程序的长度,否则还需要修改实现Mico8的HDL源代码中的程序计数器PC位宽及相应逻辑。修改后,跳转指令的跳转范围仍然在512行之内。
    (3)Mico8作为最小内核的另一个优点是可以修改软核源代码。在功能达到要求时,可以删除不需要的所有单元结构的代码,如SPRAM、DPRAM甚至输入输出口都可以删除,从而可以达到最小的资源利用率。在实际应用时应根据具体情况做出选择。
    (4)Mico8作为8位嵌入式内核,处理能力不如32位RISK的Nios II,但由于其可修改软核源代码的灵活性和占用资源极小的节省性,在很多并行存在大规模逻辑处理单元以至资源不够或不支持Nios II的FPGA上可以得到很好应用。
    本文针对在FPGA内集成嵌入式处理器软核消耗资源大的特点,提出了在FPGA内嵌入最小资源配置的Nios II和Mico8软核的方法,在保证有效性的前提下,利用移植Mico8最小软核,尽可能减少软核的资源消耗,从而可以在一些资源不允许使用软核的情况和FPGA类型上使用嵌入式CPU软核。与普通嵌入软核方法的主要区别是在Altera系列FPGA上移植了开放源代码的Mico8软核,使移植的软核可以作最大限度的剪切修改,并对移植的实用性进行了测试。经过仿真和下载测试,表明此方法适合于工程实践,具有配置灵活、节省资源的优点。
参考文献
[1] Nios II Software Developer′s Handbook.America:www.altera.com,2007.
[2] LatticeMico8 User′s Guide.America:www.lattice.com,2007.

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。