首页 | 期刊简介 | 编辑部 | 广告部 | 发行部 | 在线投稿 | 联系我们 | 产品信息索取
2024年11月21日星期四
2011年第01期
 
2010年第12期
 
2010年第11期
2010年第11期
 
2010年第10期
2010年第10期
 
2010年第09期
2010年第09期
 
2010年第09期
2010年第08期
 
2010年第07期
2010年第07期
 
2010年第06期
2010年第06期
 
2010年第05期
2010年第05期
 
2010年第04期
2010年第04期
 
2010年第03期
2010年第03期
 
2010年第02期
2010年第02期
 
2010年第01期
2010年第01期
 
2009年第12期
2009年第12期
 
2009年第11期
2009年第11期
 
2009年第10期
2009年第10期
 
2009年第9期
2009年第9期
 
2009年第8期
2009年第8期
 
2009年第7期
2009年第7期
 
2009年第6期
2009年第6期
 
2009年第5期
2009年第5期
 
2009年第4期
2009年第4期
 
2009年第3期
2009年第3期
 
2009年第2期
2009年第2期
 
2009年第1期
2009年第1期
 
2008年第12期
2008年第12期
 
2008年第11期
2008年第11期
 
2008年第10期
2008年第10期
 
2008年第9期
2008年第9期
 
2008年第8期
2008年第8期
 
2008年第7期
2008年第7期
 
2008年第6期
2008年第6期
 
2008年第5期
2008年第5期
 
2008年第4期
2008年第4期
 
2008年第3期
2008年第3期
 
2008年第2期
2008年第2期
 
2008年第1期
2008年第1期
第十讲 基于FPGA的嵌入式处理器设计

Lesson 10 FPGA Based Design of Embedded Processor


为缓解我国电子信息产业快速发展与核心技术人才紧缺的矛盾,中电网(ECCN)在信息产业部的支持下,联合国际著名集成电路设计厂商和清华大学等国内顶级高校,隆重推出电子工程与集成电路技术培训项目。所开课程包括FPGA/PLD、数字处理器、嵌入式 SoC 以及模拟和射频技术等。其中,FPGA培训是与Altera公司和清华大学共同推出的,并最先开课。本刊将陆续整理培训的精华内容与读者分享。更多详情敬请登录 http://training.ECCN.com/


嵌入式系统定义

计算系统无处不在,除个人计算机及笔记本电脑外,为不同目的构造的计算系统更为广泛,这类系统通常嵌入在更大的电子器件内,完成特定功能。此即嵌入式计算系统,简称嵌入式系统。

嵌入式系统采用专用计算机硬件,它带有为解决专门问题或任务而设计的软件,一般利用“内含”的微处理器,与其他硬件和软件组合,处理专门的计算问题。除了微处理器和存储器外,嵌入式系统通常有混合的硬件功能,如定时器、中断控制器、UART、通用输入和输出(GPIO)引脚、直接存储器存储(DMA)控制器、实时时钟和液晶显示控制器等(如图1所示)。而嵌入式系统的软件则划分为操作系统与应用软件等两个主要类型。

图1 嵌入式系统基本框图(略)

片上系统SOC

片 上系统SOC定义为芯片内包含一个或几个微处理器的ASIC、ASSP或FPGA。其硬件设计有以下特点:芯片内包含一个(或几个)微处理器;安装微处理器IP核;开发成本极高;及包含高的定制硬件内容等。

嵌入式系统的软硬件设计

嵌 入式系统的软件设计重点在于微处理器的内部操作如何进行,而硬件设计重点则是总线接口。与微处理器的逻辑连接要遵循总线协议的全部规则,才能保证硬件设计正确无误。具体的内部操作包括:指令集、寄存器、Cache、流水及存储器管理单元(MMU);外部接口包括:存储器总线接口、协处理器总线接口及中断等。

嵌入式处理器 Nios ? II

什么是 Nios II嵌入式处理器?

Nios II 嵌入式处理器是Altera 公司推出的第二代32位RISC指令集软核处理器,基于哈佛结构。Nios II Plus所有的外设均采用HDL语言编写。

当前的设计难题是如何降低成本、复杂度和系统功耗。传统设计中I/O设备、CPU 或DSP均单独存在,这使得嵌入式系统的成本、功耗及性能成为了主要矛盾,而解决的方法即可采用可编程逻辑器件代替外部器件。


FPGA硬件设计流程

FPGA硬件的设计流程包括:首先,对设计的行为或结构进行描述,给出设计输入与寄存器转移级 的RTL代码;进行RTL仿真,包括利用Modelsim或Quartus ? II软件的功能仿真,以及在无时序延时下的逻辑模型和数据流程验证;而后,利用软件进行综合,将设计编译成明确的原始器件,根据目标器件和约束来优化生成的链接,在此过程中可能会用到Quartus ? II、Spectrum及Synplify软件;在综合的基础上布局布线,根据面积和性能约束,在目标工艺内映射基本单元到规定的位置;布局布线后,需进行时序分析,检验是否满足设计性能;之后,进行门级仿真,检验设计是否可以在目标工艺内工作;最后,在 PC 板上对FPGA进行测试,包括:在板上编程和测试器件、用SignalTap II片内逻辑分析仪对系统调试等。

图2 标准设计模块图(略)

图2给出了标准设计的模块图,虚线框起来的部分是嵌入式处理器所包含的内容。图中,虚线框内除片内存储器外均可视作软核,而虚线框外的则是一些硬件。

Nios II 处理器基于经典的流水线RISC结构,包括:32个通用寄存器、3种指令格式、32 位指令、32位数据线宽度、展平寄存器堆、可选的指令和数据Cache、32个中断源及基于JTAG的硬件调试单元等。

Nios II 处理器核本身,包括算术逻辑单元(ALU)、通用寄存器、控制寄存器、程序控制器和地址产生器等。因为采用哈佛结构,所以其指令和数据是分开的。

Nios II 嵌入式处理器性能指标

追踪数据( Trace Data )

CPU在执行指令或当加载、存储操作发生时,由JTAG 控制台显示的CPU 汇编程序运行情况的数据,即追踪数据(Trace Data)。

软件断点

软件断点是通过在代码中插入中断来实现,使用TRAP指令,它要求程序存储器必须是可写的。软件断点可用于暂停一行代码。

图3 典型的Nios II系统结构(略)

硬件断点

硬件断点是通过触发专用的硬件中断实现,可用来暂停硬件连接。硬件断点因为不接触代码而不关心程序存储器是否可写,因此用户可以调试存在于ROM或FLASH 中的代码。

中断

图4给出了Altera 所有的中断请求,包括中断的静止、使能、在中断服务子程序中的应用、有屏蔽中断及无屏蔽中断等。

图4 Altera中断指令(略)

硬件乘法器

可通过硬件乘法器实现Nios II 嵌入式处理器 的加速。其中,Nios II嵌入式处理器经济型无乘法硬件,因此需使用GNUPro数学库实现乘法器;Nios II嵌入式处理器标准型与快速型中,均包含丰富的硬件乘法器资源, 区别在于前者要求3个时钟周期,而后者只需1个。

图5 Avalon总线分配器对多时钟域的支持(略) 

Avalon 总线分配器

A valon 总线分配器遵循Nios II嵌入式处理器的互连规范,其主要设计目的是令总线使用较少的资源。它的传输类型包括从传输、主传输、流传输、延时可预知的传输及突发传输等。

图6  紧耗合主设备(略)

1)Avalon主端口

Avalon总线分配器需初始化传输,传输类型包括基本读操作和基本写操作。所有的 Avalon 主设备均产生一个等待请求信号,在仲裁器许可后,传输属性将包括延时、流或突发传输。

2)Avalon从端口

A valon总线分配器对从端口的传输请求响应,传输类型包括基本读操作和基本写操作。其传输属性除主设备涉及的延时、流及突发传输外还包含等待状态,等待主端口的请求。

3)对多时钟域的支持

如图5所示,当有一个主时钟域及三个从时钟域时,需插入时钟域交叉逻辑CDX,从而将主时钟域分配给三个从时钟域。而当有两个主时钟域及一个从时钟域时,可在某个主时钟域内插入时钟域交叉逻辑CDX ,而后经过仲裁器重排选组接入设备。

图7  嵌入式系统软件开发流程(略)

紧耦合主设备

紧耦合主设备,可视作高速局部总线,它为片内存储器提供快速通道。紧耦合主设备通过Avalon通道连接到紧耦合的从设备,其中,从设备可以是片上双端口存储器。紧耦合的指令存储器是双端口存储器,因此标准的数据主设备能连接到第二个端口,允许读写数据(如图6所示)。

Nios II 嵌入式处理器例外地址

N ios II嵌入式处理器例外地址也即异常地址,所有的例外进程均需在“exception location”中完成编码。支持的例外类型包括软件例外,即软件陷阱与无效指令等,及硬件中断。

Nios II嵌入式处理器的重要外设

Nios II嵌入式处理器的重要外设包括:系统 ID 外设,用来确保硬件和软件同步,可在运行时间内停止以确保下载的硬件和软件映像相匹配;存储器接口;液晶显示器;JTAG UART,包括器件设置、FLASH 设计、代码下载及调试等;及紧凑的FLASH 接口,提供了对大规模存储及低水平API、MicroC/OS-II文件系统及μCLinux 文件系统的支持。

嵌入式系统一般软件开发流程

嵌 入式系统的软件开发流程如图7所示,不同的编译语言,如C++、C或组合语言,经编译器生成目标码文件,通过链接器连接起来,完成可重定位器程序后生成可执行文件。

图8  SOPC Builder软件开发流程(略)

链接脚本文件

在嵌入式系统中,链接的过程还有一个重要的任务是进行内存的分配。链接器要负责调整可执行文件在内存中的位置,但是链接器如何将可执行文件分配到正确的内存位置,需要参考“链接脚本文件 (Link Script file)”。

链接脚本文件是由设计者进行系统设计时,仔细规划内存分配生成的文件,包括程序区和数据区等。与通用桌上系统软件开发不同,嵌入式系统要由设计者自行分配内存,通过建立链接脚本文件确定模块的具体位置。

Nios II IDE(综合开发环境)

Nios II IDE(综合开发环境)是一款领先的软件开发工具,它的目标器件的连接是通过硬件 (JTAG)、指令设置模拟器及ModelSim ? -Altera软件等,具有高级硬件调试特性,如软硬件断点设置、数据触发和跟踪等。同时,提供了对闪存设计的支持。

Nios II IDE 5.0与Quartus II 5.0 软件保持同步关系,支持的平台包括:Windows NT 4.0、XP Professional、Windows 2000、Linux 7.3及8.0版等。

硬件抽象层

硬件抽象层(HAL)是Nios II软件的一个轻型的运行时间环境,在应用程序代码和底层硬件间提供了一个抽象层。硬件抽象层库由Nios II IDE产生,包含器件驱动程序、初始化软件、文件系统及stdio、stderr 等。

硬件抽象层为嵌入式系统的各种共有的器件提供普通的器件模式,如,时间、I/O外设等。它提供一个一致的 POSIX-,令不熟悉专用外设结构的软件工程师尽可能熟悉编程。硬件抽象层的关键特性包括:在恰当的地方使用标准接口;接近于Newlib ANSI C库的集成;器件驱动自动配置成匹配PTF;驱动在main()前初始化;及消除了系统和应用软件之间的差别等。

硬件抽象层的系统头文件system.h位于syslib工程目录中,包含系统参数(包括外设配置)的宏定义,如,外设的硬件配置、基地址、中断的优先级及外设的名称等,不包含静态信息、函数原形及设备结构。因为不必包含在应用代码中,节省了编译时间。

N ios 中使用 Volatile 指针访问硬件,但不能使用Cache。而Nios II中,Volatiles 可以使用Cache对硬件寄存器进行访问,也可以使用输入/输出宏进行硬件的存取。

数据缓存

数据缓存是直接映射的,在缺省情况下,所有数据都被缓存。为了旁路缓存,维持存储器的一致性,应在DMA传输之前,使用 alt_dcache_flush()进行Flush操作;使用 alt_uncached_malloc()在堆上分配不可缓存的区域;使用alt_remap_uncached()对存储器中已经存在的某个区域进行重新映射;及使用ldio或stio汇编指令。

软件的运行和调试

软件的运行和调试包括 Nios II Run、Nios II IDE JTAG 诊断器、Nios II ISS、Nios II Console及第三方工具等。

RTL仿真

N ios II SOPC Builder 可以自动生成仿真模型,包括ModelSim工程、Testbench及仿真脚本等,仿真平台如图9所示。

图9 仿真平台(TestBench)

SignalTap TM II 逻辑分析工具

SignalTap 逻辑分析工具无须探针,通过JTAG 接口送出内部状态信息进行分析。SignalTap II 逻辑分析工具的运行频率最高可达200MHz,它支持多个分析器、拥有1024个通道、128k的采样速率及10个触发级别,可以与Nios II IDE诊断器及FS2控制台同时使用。

本文介绍了Nios II嵌入式处理器的软硬件设计及仿真调试,需要注意的是,当提供自行设计的外设时需进行定制,Nios II嵌入式处理器提供了定制指令。

《世界电子元器件》2007.4
         
版权所有《世界电子元器件》杂志社
地址:北京市海淀区上地东路35号颐泉汇 邮编:100085
电话:010-62985649
E-mail:dongmei@eccn.com