数字系统EDA技术:第五章 Nios II 嵌入式处理器设计_第1页
数字系统EDA技术:第五章 Nios II 嵌入式处理器设计_第2页
数字系统EDA技术:第五章 Nios II 嵌入式处理器设计_第3页
数字系统EDA技术:第五章 Nios II 嵌入式处理器设计_第4页
数字系统EDA技术:第五章 Nios II 嵌入式处理器设计_第5页
已阅读5页,还剩65页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数字系统EDA技术

第五章NiosII嵌入式处理器设计1、没有人喜欢“Black-Box”最高效的开发:直接控制最底层资源。2、没有人喜欢“垒砖头”复杂系统开发:对底层细节的过多关注就会成为一种累赘。3、FPGA+嵌入式处理器SOPC:高效与复杂系统的完美结合。5.1嵌入式处理器的必要性**

1、第一代Nios嵌入式处理器

2000年,Altera发布了Nios处理器,这是AlteraExcalibur嵌入式处理器计划中的第一个产品,是第一款用于可编程逻辑器件的可配置的软核处理器。基于RISC(ReducedInstructionSetComputer)技术16位指令集16/32位数据通道5级流水线在一个时钟周期内完成一条指令的处理基于JTAG的OCI(On-ChipInstrument)芯核(要求系统工作时钟至少4倍于JTAG时钟频率)5.2NiosII嵌入式处理器简介RISC&CISCCISC(ComplexInstructionSetComputer)技术和RISC技术是在计算机指令系统的优化发展过程中的两个优化方向。CISC采用的优化方法是通过设置一些功能复杂的指令,把一些原来由软件实现的、常用的功能改用硬件的指令系统实现,以此来提高计算机的执行速度。RISC是尽量简化计算机指令功能,只保留那些功能简单、能在一个节拍内执行完成的指令,而把较复杂的功能用一段子程序来实现,从而提高计算机的工作主频,同时大量使用通用寄存器来提高子程序执行的速度。RISCvs.CISC效率:RISC的常用指令具有简单高效的特色。对不常用的功能,常通过组合指令来完成,效率可能较低。但可以利用流水技术和超标量技术加以改进和弥补。而CISC计算机的指令系统比较丰富,有专用指令来完成特定的功能。因此,处理特殊任务效率较高。程序:RISC汇编语言程序一般需要较大的内存空间,实现特殊功能时程序复杂;而CISC汇编语言程序编程相对简单,科学计算及复杂操作的程序设计相对容易。中断:RISC机器在一条指令执行的适当地方可以响应中断,相比CISC指令执行的时间短,所以中断响应及时;CISC机器是在一条指令执行结束后响应中断。RISCvs.CISC(continued)功耗:RISCCPU包含有较少的单元电路,因而面积小、功耗低;而CISCCPU包含有丰富的电路单元,因而功能强、面积大、功耗大。使用:RISC微处理器结构简单,指令规整,性能容易把握,易学易用;CISC微处理器结构复杂,功能强大,实现特殊功能容易。应用:由于RISC指令系统的确定与特定的应用领域有关,故RISC机器更适合于专用机;而CISC机器则更适合于通用机。JTAG(JointTestActionGroup)JTAG(continued)在正常状态下挂起,BSR对芯片是透明的,不影响芯片的正常运行。当芯片处于调试状态时,BSR将芯片与外围隔离,对于输入管脚,可通过对BSR的操作,将信号(数据)加载至管脚;对于输出管脚,可通过BSR将管脚上的输出信号“捕获”。通过BSR可实现对芯片管脚的观察与控制。BSR可以相互连接起来,在芯片周围形成一个边界扫描链。可以串行的输入输出,再配合时钟及控制信号,可观察与控制调试状态下的芯片。JTAG技术可以提高内部信号的可控性和可观性,缩短产品开发周期,提高查错效率。由于串行扫描导致速度较低,各种加速结构和实现方式正在不断出现。2003年,Altera发布了Nios3.0处理器,它有16位和32位两个版本,能在低成本的Cyclone和高性能的Stratrix芯片

上实现。更多的可配置寄存器极大的灵活性和可扩展性功能强大的开发工具(SOPCBuilder)第一代Nios处理器的缺点没有提供软件开发的集成环境,用户需要在NiosSDKShell中以命令行的形式执行软件的编译、运行、调试。程序的编辑、编译、运行都是分离的。不支持对项目的编译。2、第二代Nios嵌入式处理器2004年6月,Altera推出支持新款芯片的NiosⅡ嵌入式处理器。与第一代Nios相比,最大处理性能提高了3倍,最高性能可达250DMIPS,

CPU内核部分的面积最大可缩小1/2(32位Nios处理器占用1500个LE,NiosII最少只占用600个LE)。广泛应用于嵌入式系统的设计中。CPU性能评估一般采用综合测试程序,较流行的有Whetstone和Dhrystone两种程序。Dhrystone主要用于测整数计算能力,计算单位就是DMIPS,250DMIPS即指每秒钟的整数运算能力为250*100万条指令。采用Whetstone主要用于测浮点计算能力,计算单位就是MFLOPS。NiosⅡ系列处理器主要特性NiosII提供3种不同的内核,以满足系统对不同性能和成本的需求。最高性能平衡性能和尺寸最小逻辑占用NiosII支持多个FPGA/HardCopy系列。3、NiosII软核嵌入式处理器的优势合理的性能组合使用NiosⅡ嵌入式处理器和FPGA,用户可以实现在处理器、外设、存储器和I/O接口方面的合理组合:3种处理器内核;60余种SOPCBuilder配备的IP核;无限的DMA通道组合;可配置的硬件及软件调试特性。提升系统性能NiosⅡ系统的性能可根据应用来裁减,与固定的处理器相比,在较低的时钟速率下具备更高的性能:多CPU内核:可选择最快的内核,或在一片FPGA内采用多个内核;支持多个FPGA系列;定制指令:把用户自定义的功能直接添加到NiosⅡ处理器的ALU中,加快专项任务的执行,以提高系统的性能;硬件加速:可以把专用的硬件加速器添加到FPGA中作为CPU的协处理器。定制指令示例硬件加速器示例降低系统成本更大规模的系统集成优化FPGA/CPU的选择:选择经济型内核应用于低成本、低性能系统,或者在单个FPGA上使用多个内核更好的库存管理延长产品的生命周期加快产品上市时间:FPGA可编程、可随时验证修改建立有竞争性的优势:硬件加速、定制指令、定制外设延长了产品的生存时间:可对硬件和软件及时进行升级在产品产量增加的情况下减少成本:可将FPGA设计无缝移植到Altera的HardCopy器件(一种结构化的ASIC)中SOPCBuilder/QsysGUIConnectBlocksProcessorLibraryCustomInstructionsPeripheralLibrarySelect&ConfigurePeripherals,IPIPModulesConfigureProcessorGenerateHardwareDevelopmentEDIFNetlistHDLSourceFilesTestbenchSynthesis&

FitterUserDesignOtherIPBlocksQuartusIIOn-ChipDebugSoftwareTraceHardBreakpointsSignalTapIIAlteraPLD

JTAG,Serial,orEthernetExecutableCodeHardwareConfigurationFileVerification&Debug(1)(2)(3)(4)CHeaderfilesCustomLibraryPeripheralDriversCompiler,Linker,DebuggerSoftwareDevelopmentUserCodeLibrariesRTOSGNUToolsNiosIIIDESpecificationAnalysisNiosⅡ

DesignFlow5.3基于NiosII处理器硬件、软件开发1、硬件开发流程(1)定义NiosⅡ嵌入式处理器系统:使用SOPCBuilder/Qsys系统综合软件选取合适的CPU、存储器以及外围器件,并定制其功能。(2)指定目标器件、分配引脚、编译硬件:使用QuartusⅡ选取Altera器件系列,并对SOPCBuilder/Qsys生成的HDL设计文件进行布局布线;再选取目标器件,分配管脚,进行硬件编译选项或时序约束的设置。编译,生成网表文件和配置文件。(3)硬件下载:使用QuartusⅡ软件和下载电缆,将配置文件下载到开发板上的FPGA中。当校验完当前硬件设计后,还可再次将新的配置文件下载到开发板上的非易失存储器里。2、SOPCBuilder使用(1)创建一个QuqrtusⅡ工程(2)创建NiosⅡ系统模块

启动SOPCBuilder

添加CPU和外围器件

指定基地址(System->AssignmentBaseAddresses)

系统设置

生成系统模块(Generate)(3)将NiosⅡ系统模块添加到设计文件中(4)编译QuqrtusⅡ工程(5)配置FPGA3、软件开发流程(1)在使用SOPCBuilder/Qsys进行硬件设计的同时,就可以开始编写独立于器件的C/C++软件,比如算法或控制程序。用户可以使用现成的软件库和开放的操作系统内核来加快开发过程。(2)在NiosⅡSBT中建立新的软件工程时,SBT会根据SOPCBuilder/Qsys对系统的硬件配置自动生成一个定制HAL(硬件抽象层)系统库。这个库能为程序和底层硬件的通信提供接口驱动程序。(3)使用NiosⅡSBT对软件工程进行编译、调试。(4)将硬件设计下载到开发板后,就可以将软件下载到开发板上并在硬件上运行。4、NiosIIEDS使用(1)启动NiosⅡSBT(11.0版本:NiosEDS11.0->NiosIISoftwareBuilderToolsforEclipse);(2)建立新的软件工程,编写源程序;(3)编译工程;(4)运行程序;(5)调试程序;(6)将程序下载到程序存储器中。5.4NiosII处理器接口1、内部Avalon总线Avalon总线是一种相对简单的总线结构,用来将处理器和外围设备集成到SOPC中。Avalon外设分为主外设和从外设两类。Simultaneousoperationforallmasters2、标准外围设备NiosⅡ包括一个常用外围设备及接口库,在AlteraFPGA中可免费使用。标准外围设备为即用型设计模块,采用VerilogHDL和VHDL的源代码方式交付使用,其中包括简单系统集成所需要的所有软件子程序。查看各接口的详细说明:可在SOPCBuilder的元件池中用右键点击元件,在弹出的菜单中选择“DataSheet”选项。3、用户定制外围设备用户可以创建自己的外围设备,并通过用户逻辑接口向导集成到NiosⅡ处理器系统中。外围设备接口说明CompactFlash接口提供大容量存储支持用户逻辑接口将片内用户逻辑或片外器件连接到SOPCBuilder生成的系统中UART提供通用串行接口,具有可变波特率、奇偶校验、停止和数据位及可选的流量控制信号间隔时钟提供32位时钟,可作为周期脉冲发生器或系统看门狗时钟并行I/O接口提供1位到32位的并行I/O接口(输入、输出、边缘采样)串行外围设备接口(SPI)实现工业标准串行外围设备接口,支持主设备或从设备协议DMA控制器与存储器进行批数据交换,减轻CPU的负担SDRAM控制器提供一个简单Avalon接口,与片外的SDRAM沟通,支持8、16、32和64位数据宽度存储器接口包括:片内ROM和RAM、SDRAM、SSRAM、SRAM和Flash,Altera的串行配置器件以太网端口包括:10/100兆比特每秒SMSCLAN91C111单芯片以太网控制器,提供轻量级的IPTCP/IP协议栈的软件支持,已经包含在NiosⅡ开发套件中JTAGUART(仅在NiosⅡ中有)通过内嵌在AlteraFPGA内部的联合测试行动组(JTAG)电路,在PC主机和SOPCBuilder系统之间进行串行字符流通信标准外围设备接口5.5HAL系统库1、HAL系统库简介什么是HAL系统库?用户在进行嵌入式系统的软件开发时,会涉及到与硬件的通信问题。HAL(HardwareAbstractionLayer,硬件抽象层)系统库可为与硬件通信的程序提供简单的设备驱动接口。它是用户在NiosⅡIDE中创建一个新的工程时,由IDE基于用户在SOPCBuilder中创建的NiosⅡ处理器系统自动生成的。HAL应用程序接口(API)和ANSIC标准库综合在一起,它使用户用类似C语言的库函数来访问硬件设备或文件,如printf()、fopen()、fwrite()等函数。HAL为嵌入式系统中的外围设备提供接口程序。HAL和SOPCBuilder紧密相关,如果硬件配置有了变化,HAL设备驱动配置也会自动随之改动,从而避免了由于底层硬件的变化而产生的程序错误。用户不必自己创建或拷贝HAL文件,也不必编辑HAL中的任何源代码。NiosIIIDE会为用户自动创建和管理HAL文件。用户程序C语言标准库HALAPI硬件设备驱动设备驱动设备驱动…2、HAL系统库构成与ANSIC合成的标准库:提供类似C语言的标准库函数;设备驱动:提供访问系统中每个设备的驱动程序;HALAPI:提供标准的接口程序,如设备访问、中断处理等;系统初始化:在main()函数之前执行对处理器的初始化;设备初始化:在main()函数之前执行对系统中外围设备的初始化。3、应用程序和驱动应用程序开发用户软件开发的主要部分,包括系统的主程序和其他子程序。应用程序与系统设备的通信主要是通过C语言标准库或HAL系统库API来实现。驱动程序开发编写供应用程序访问设备的程序。驱动程序直接和底层硬件的宏定义打交道。一旦用户要访问设备的驱动程序编写好,用户的程序开发只要利用HAL提供的各种函数就可以编写各种应用程序了。4、通用设备模型HAL为嵌入式系统中常见的外围设备提供了通用的设备模型,使用户无需考虑底层硬件,只需利用与之相一致的API编写应用程序即可。字符模式设备:发送和接受字符串的外围硬件设备,如UART和LCD。定时器设备:对时钟脉冲计数并能产生周期性中断请求的外围硬件设备文件子系统:提供访问存储在物理设备中的文件的操作,如用户可以利用有关Flash存储器设备的HALAPI编写Flash文件子系统驱动来访问Flash。以太网设备:对Altera提供的轻量级的IP协议提供访问以太网的连接。DMA设备:执行大量数据在数据源和目的地之间传输的外围设备。数据源和目的地可以是存储器或其他设备,如以太网连接。Flash存储器设备:利用专门编程协议存储数据的非易失性存储设备。5、文件系统HAL提出了文件系统的概念,可以使用户操作字符模式的设备和文件。在整个HAL文件系统中将文件子系统注册为载入点,要访问这个载入点下的文件就要由这个文件子系统管理。字符模式的设备寄存器常作为HAL文件系统中的节点。通常情况下,system.h文件中将设备节点的名字定义为前缀/dev/+在SOPCBuilder中指定给硬件元件的名称。如LCD就是一个字符模式的设备,其设备节点的名字为“/dev/lcd_display”Example1:从一个只读文件的文件子系统rozipfs中读取字符#include<stdio.h>#include<stddef.h>#include<stdlib.h>#defineBUF_SIZE(10)intmain(){ FILE*fp; charbuffer[BUF_SIZE]; fp=fopen(“/mount/rozipfs/test”,”r”); if(fp==NULL){ printf(“cannotopenfile.\n”); exit(1); } fread(buffer,BUF_SIZE,1,fp); fclose(); return0;}Example2:向UART写入字符”helloworld”#include<stdio.h>#include<string.h>intmain(){ char*msg=“helloworld”; FILE*fp; fp=fopen(“/dev/uart1”,”w”); if(fp){ fprintf(fp,”%s”,msg); fclose(fp); } return0;}6、System.h系统描述文件System.h文件是HAL系统库的基础,它提供了关于NiosⅡ系统硬件的软件描述。它描述了系统中的每个外围设备,并给出以下一些详细信息:外围设备的硬件配置;基地址;中断优先级;外围器件的符号名称。用户无须编辑System.h文件,它是由NiosⅡIDE自动生成的,只需在应用程序中包含该头文件。可以到以下目录中查看System.h文件:[Quartus工程]\software\[NiosⅡ工程名_syslib\Debug\system_description7、数据宽度和HAL类型定义alt_types.h头文件定义了HAL的数据类型。在以下路径可以查看该文件:[NiosⅡ安装路径]\components\altera_nios2\HAL\inc类型说明alt_8有符号8位整数alt_u8无符号8位整数alt_16有符号16位整数alt_u16无符号16位整数alt_32有符号32位整数alt_u32无符号32位整数Examples:typedefsignedcharalt_8;typedefunsignedcharalt_u8;typedefsignedshortalt_16;typedefunsignedshortalt_u16;typedefsignedlongalt_32;typedefunsignedlongalt_u32;8、其它外围设备的使用使用标准输入(stdin)、标准输出(stdout)和标准错误(stderr)函数是最简单的控制I/O的方法;

HAL系统库在后台管理stdin、stdout和stderr函数。Examples:发送Helloworld给任何一个和stdout连接的设备。#include<stdio.h>intmain(){ printf(“Helloworld!/n”); return0;}5.6设计实例—基于Nios的流水灯实现1、设计要求与软硬件规划(1)

系统功能通过实现一个由18个发光二级管组成的流水灯来完整地描述NiosII软核处理器系统的开发过程。(2)

硬件组成规划NiosⅡ32bitsCPU;18个并行I/O口;JTAG调试模块;程序和数据存储器(3)软件规划循环点亮发光二极管实现流水灯效果。2、硬件部分设计(1)创建QuartusⅡ工程在硬盘上建立文件夹如myWatLd,用于保存所有设计结果。(不放在桌面等包含中文字符的路径中)创建工程,如Quts_Nios_WatLd指定器件:Assignment->Device…选择元件为实验板板载器件CycloneIVE:EP4CE115F29C7新建原理图文件:File->New->BlockDiagram/Schematicfiles保存到指定文件夹中,并选中“Addfiletocurrentproject”。启动SOPCBuilder:Tools->SOPCBuilder对系统进行命名:不重复已设定的工程名,如命名为Nios2WatLd(2)NiosII软核配置对系统时钟进行命名:考虑到板载时钟为50MHz,可将其命名为clk_50添加NiosIIProcessorNiosIIProcessor配置窗口NiosIIProcessor配置NiosII软核处理器具有3种类型:经济型内核“NiosII/e”、标准型内核“NiosII/s”和快速型内核“NiosII/f”。不同类型的处理器内核具有不同的功能和技术指标,当然在获得强功能和高技术指标的同时也需要付出较多的逻辑资源,同时使用过程也变得复杂。本实验控制18个发光二级管的任务比较简单,系统工作速度也不需要很高,因此选择经济型内核“NiosII/e”。在选择经济型内核“NiosII/e”的情况下,不能向处理器添加硬件乘法器和硬件除法器,因此这些设备对应的选项无效。复位矢量“ResetVector”和异常矢量“ExceptionVector”指向的储存器及地址需要在完成处理器配置之后才能设置。

*ResetVector:系统上电复位后,从该地址处开始执行程序。*ExceptionVector:例外处理程序入口,如硬件中断等。JTAGDebugModule配置经济型内核“NiosII/e”处理器只支持“Level1”级的JTAG调试模块。必须选择这个最基本的调试模块,以利用该模块支持对FPGA芯片的配置和调试。上述步骤配置完成后,回到SOPCBuilder窗口,可根据习惯将软核重命名,如改为cpu。配置存储器添加片内存储器ROM设置容量大小选中“Initialize

memory

content”,表示储存器在FPGA配置时将装入程序代码配置存储器RAM设置容量大小不需要选中“Initialize

memory

content”配置完成后,将ROM和RAM分别重命名为program和data,其作用一目了然。配置并行I/O口,并重命名,如pio_18led添加I/O口个数信号传输方向:输出复位矢量和异常矢量配置在NiosII软核处理器系统配置窗口中通过双击“cpu”条目可以再次打开

“NiosIIprocessor”配置窗口。在复位矢量“ResetVector”的储存器“memory”下拉菜单中选择“program”,即程序储存器;在异常矢量“ExceptionVector”的储存器“memory”下拉菜单中选择“data”,即数据储存器。两者的偏移地址“Offset”可以直接采用默认值。然后单击“Finish”完成NiosII软核处理器的完全配置。若要锁定基地址,如将program的基地址改为0x00000000,并右键选择LockBaseAddress。若提示基地址错误,执行命令System->AutoassignBaseAddress即可。每次修改基地址或添加新设备后,最好执行一次该命令。完全配置好的硬件系统如下图所示。*当提示是否储存时,选择储存“Save”。这个产生过程需要一段时间。当显示信息“Systemgenerationwassuccessful”时,表示这个产生过程完成。通过单击“Generate”按钮开始NiosII软核处理器系统的产生过程。(3)完成硬件设计完成NiosII软核配置后,回到QuartusII;在原理图编辑窗口中单击鼠标右键将打开一个浮动菜单,选择“Insert→Symbol”命令打开电路符号“Symbol”选择对话框,或者双击原理图空白处。在对话框左侧的“Libraries”选择栏中选择Project下的“Nios2WalLd”,右边的符号窗口将出现对应的电路符号。这个模块就是SOPCBuilder工具产生的NiosII软核处理器系统。NiosII软核处理器系统引脚“clk_50”应该与时钟输入连接;

复位信号输入端“reset_n”与电源符号“VCC”连接,当芯片上电时自动完成处理器的复位;引脚“pio_18led[17...0]”分别与18个发光二级管连接。执行命令Assignments->ImportAssignments…导入板载FPGA的引脚分配文件DE2_115_pin_assignments.csv,并正确命名原理图上的引脚名,使之与正确引脚一一对应。正确编译。(4)软件设计NiosIISBTNiosII嵌入式开发环境的软件开发工作需要前面产生的NiosII软核处理器系统硬件的支持。在SOPCBuilder的“SystemGeneration”选项卡的“NiosIITools”栏目中单击“NiosIISoftwareBuilderToolsforEclipse”按钮可以打开NiosIISBT开发平台。NiosIISBT工程建立在Quartus工程目录下,建立“software”文件夹;File->SwitchWorkspce->Other…,切换为上述“software”文件夹建立项目NiosIISBT工程设置选择Quartus工程目录下的SOPCInformationFile,设定项目名,并选择参考模板中的“Blank_project”,会自动载入相关信息。用户程序,在这里添加应用程序板载支持包BSP(BoardS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论