《FPGA嵌入式开发技术.ppt》由会员分享,可在线阅读,更多相关《FPGA嵌入式开发技术.ppt(98页珍藏版)》请在三一办公上搜索。
1、FPGA应用,基于FPGA的嵌入式开发技术,嵌入式系统概述,以计算机技术为基础的专用应用系统,软、硬件可剪裁CPU/DSP为核心硬件硬件固定,软件可灵活配置基于FPGA的嵌入式系统软硬件协同设计、工作硬件可编程SOPC(片上可编程系统),FPGA嵌入式系统分类,状态机模式:可以无外设、无总线结构、无实时操作系统(RTOS),低成本VGA、LCD控制单片机模式:包括一定的外设,可以利用实时操作系统和总线结构,中等成本控制,仪表定制嵌入模式:高度集成的外设,实时操作系统和总线结构,高性能网络、无线通信,采用90nm工艺后,FPGA器件:处理能力更强成本降低、功耗少具备SOC规模和动态编程能力取代小
2、批量ASIC和处理器,FPGA嵌入式系统前景,3类RISC处理器为核心PicoBlaze:8位软核,支持汇编,程序驻留FPGA的块RAMMicroBlaze:32位软核,包含32个32位通用寄存器和一个可选的32位移位寄存器,时钟达150MIPSPowerPC:32位PowerPC405硬核,程序级兼容PowerPC的嵌入式架构流行内核:MicroBlaze和PowerPCALtera公司:Nios,NiosII,Xilinx公司嵌入式解决方案,总体特征:32位微处理器CoreConnect外设总线支持CoreConnect总线的标准外设集合最精简的和占用400个Slice,片内微处理器软核M
3、icroBlaze,MicroBlaze体系结构,RISC架构:精简指令系统哈佛结构:数据、指令32位双总线(指令和数据总线)3级流水线32个通用寄存器:R0R31特殊寄存器:PC(程序计数器),处理器状态寄存器(MSR)ALU,Shift,两级中断响应单元,3/5级流水线,桶形Shift内存管理/内存保护单元,浮点单元(FPU),高速缓存,异常调试和调试逻辑目前版本MicroBlaze V7.0,MicroBlaze体系结构,通用寄存器:32个32位通用寄存器R0R31,MicroBlaze编程模型,特殊寄存器程序计数器(PC)机器状态寄存器(MSR):处理器控制和状态位指令集:32位指令,
4、分A、B两种类型,大致功能可分为逻辑运算、算术运算、分支、存储器读/写、特殊指令等几类A型:两个源寄存器,一个目的寄存器,完成寄存器到寄存器的数据运算B型:一个源寄存器,一个目的寄存器和一个16位立即数,完成寄存器和立即数之间的数据运算,MicroBlaze编程模型,CoreConnect:片上总线通信链带字节允许的OPB(On-Chip Peripheral Bus)V2.0:用于访问低速外设高速LMB(Local Memory Bus)接口:用于访问片内高速存储器FSL(快速简单连接总线)主从设备接口:自定义IP与内部通用寄存器的直接相连,用于访问高速外设XCL(Xilinx Cache
5、Link)缓存接口:对片外存储器的高速访问MDM(Microprocessor Debug Module)调试接口,MicroBlaze总线接口,高速总线DMA控制器多端口存储控制器低速以太网MAC层处理器PCI/PCIe接口串口USB2.0Timer/PWMGPIOCAN/MOSTC/SPI其它,MicroBlaze支持外设IPCore,苹果、IBM、摩托罗拉共同开发RISC架构PowerPC405:由IBM优化三个不同层面应用用户指令集结构:UISA虚拟环境结构:VEA操作环境结构:OEA,片内微处理器硬核PowerPC,定义用户级软件所必须遵守的结构定义基本的用户指令集、寄存器、数据结构
6、、浮点内存约定,及用户程序异常处理模型、内存模型和编程模型所有PowerPC都遵守相同的UISA结构,PowerPC3层结构(UISA),定义超级典型用户软件需求的附加用户需求功能表述多个芯片访问存储器环境下的存储器模型定义高速缓存模型及缓存控制指令集定义用户角度基于时间的资源,PowerPC3层结构(VEA),定义了典型的操作系统所要求的管理级资源定义内存管理模型、监控寄存器、同步需求及异常模型定义了监控角度的基于时间的资源,PowerPC3层结构(OEA),5级标量流水线哈佛结构,独立指令缓存和数据缓存1个JTAG口Trace FIFO多个定时器一个内存管理单元(MMU)辅助处理器管理控制
7、器(APU)分为通用寄存器,专用寄存器,机器状态寄存器,专用寄存器,芯片控制寄存器,基时寄存器CoreConnect总线,PowerPC体系结构,PowerPC寄存器表,5级标量流水线:取指、译码、执行、写回、加载写回指令分类:数学运算逻辑运算比较跳转中断指令,PowerPC指令系统,CoreConnect总线,以软IP方式实现100MHz133MHz的64位总线LMB和OPB总线,分别用来连接高速和低速外设PLB是高带宽总线,64位数据总线宽度,分离地址、读写数据总线器件控制寄存器总线,对外设器件寄存器访问,PowerPC总线结构,嵌入在EDK环境中的外设I/O设备中断控制器设备定时器外部存
8、储器控制器以太网串口,常用IP核及设备驱动,嵌入在EDK环境中的外设I/O设备中断控制器设备定时器外部存储器控制器以太网串口,常用IP核及设备驱动,32位OPB总线外设,每位都可动态配置为I/O两个通道,通过IPIF模块与OPB总线相连寄存器:32bit/16bit/8bit方式访问,寄存器是字边界的(末尾地址2b00),GPIO实现(硬件结构),GPIO实现(软件驱动),驱动软件文件xgpio.c,xgpio.h,xgpio_1.h,xgpio_i.h调用#include“xgpio.h”#include“xgpio_1.h”#include“xgpio_i.h”驱动函数初始化:XStatu
9、s XGpio_Initialize(XGpio*InstancePtr,Xuint16 DeviceId);配置/查找:XGpio_Config*XGpio_LookupConfig(Xuint16 DeviceId);数据方向设置:void XGpio_SetDataDirection(XGpio*InstancePtr,unsigned Channel);读入:Xuint32 XGpio_DiscreteRead(XGpio*InstancePtr,unsigned Channel);输出:void XGpio_DiscreteWrite(XGpio*InstancePtr,unsign
10、ed Channel,Xuint32 Mask);,嵌入式系统总线连接(MicroBlaze),嵌入式系统系统结构(MicroBlaze),0 x0000_00000 x0000_0017:特殊0 x0000_00180 xFFFF_FFFF:用户地址LMB从0 x0000_0018开始,嵌入式系统总线连接(PowerPC),嵌入式系统结构(PowerPC),0 xFFFF_FFFC:引导地址0 xFFFF_00000 xFFFF_FFFF:用户空间,Xilinx嵌入式开发工具集,集成软件环境ISE嵌入式开发套件EDK(Embedded Development Kit)XPS(Xilinx P
11、latform Studio):设计嵌入式处理器系统硬件的开发环境及GUI,完成嵌入式系统架构的创建、软件代码的编写、编译及FPGA芯片配置SDK(Software Development Kit):基于Eclipse,用于嵌入式软件应用的开发和验证,支持C/C+其它:用于Xilinx嵌入式处理器的硬IP;用于软件开发的驱动和库;在MicroBlaze和PowerPC处理器的C/C+软件开发GNU编译器、调试器;有关文档和样例程序,Xilinx嵌入式开发流程,硬件设计与调试软件设计与调试,Xilinx嵌入式开发流程,硬件逻辑创建硬件平台:利用BSB Wizard构建添加IP Core及用户定制
12、外设生成仿真系统并测试硬件生成硬件网表和Bit文件系统开发软件系统:包括驱动软件、库、操作系统、应用软件等,编译生成.elf可执行文件合并软硬件Bit文件下载配置在线调试,EDK Bit文件组成,EDK文件管理框架,板级支持包(BSP:Board Support Package):针对硬件的设备驱动、库等XMP文件:.xmp后缀,嵌入式项目工程文件,包括硬件结构描述文件(MHS)和软件描述文件(MSS)指向、工程器件等MHS:硬件描述文件MSS:软件描述文件UCF:约束文件CMD:批命令文件,XPS基本操作,启动Xilinx Platform Studio直接由程序组项目运行ISE中Embed
13、ded Processor创建新工程BSB(Base System Builder)向导定制,XPS基本操作,Base System Builder Wizard选择Project路径和name(.xmp)Create a new designCreate system from a custom board选择FPGA器件类型和processor类型选择时钟、reset、片上存储等增加并配置片外设备(Generic GPIO,UART)增加片内并配置片内设备选择标准输入/输出(调试口),boot区设置自检完成创建,XPS基本操作,工程信息面板,系统组件面板,控制台输出面板,工程信息面板,分页
14、工程:BSB向导中获取,描述硬件设计工程文件:文本可打开、编辑工程选项:打开属性窗口设置参考文件:XPS生成,不需要修改应用:软件相关信息Boot:XPS自动生成,无需修改用户应用软件:处理器属性,编译器属性,源代码,库文件IP目录:列出了EDK IPCore和用户定义IP Core,可以添加到系统中,应用页面,Set Compiler Options:设置编译器属性Mark to Initialize BRAMs:将软件打包到初始化RAM中Build Project:编译,生成.elf可执行文件Make project Inactive:从初始化模块中剔除Generate Linker Sc
15、ript:自动生成链接脚本,系统组件面板,分页Bus Interface:总线接口连接面板:表达设备接口与总线的连接,可以创建或删除连接显示区域:总线相联设备接口Ports:端口Address:设备地址分配,在XPS中添加IP Core,选择IP Catalog中IP Core,右键”Add IP”,或拖放到组件区配置总线接口,并连接总线模块参数配置:模块上右键/双击,选择”Configgure IP”端口配置:内部/外部端口地址配置:在”Address”分页中单击”Generate Address”自动分配,在XPS中定制用户设备IP,步骤:定制自定义IP添加到XPS工程中定制要求确定IP所
16、需接口:连接总线(PLB,OPB)实现和验证功能:将定制的用户设备拷贝到正确目录下,创建接口文件(MPD,PAO);加入到XPS的工程系统中,IP接口模块(IPIF),IPIF(IP interface):预制的参数可调的接口模块,同时提供一系列简单总线协议;用户设备可方便地实现与总线相连IPIC(IP interconnect):用户设备接口与定制逻辑之间的互连协议总线、IPIF、IPIC、用户逻辑是上述实现用户设备的环节,IP接口模块(IPIF),创建和导入设备,CIP创建用户设备步骤确定设备类型(四种):OPB从设备OPB主从结合设备PLB从设备PLB主从结合设备选择菜单”Hardwar
17、e“中”Create or Import Peripheral”,建立/导入设备创建模板实现验证导入XPS,创建和导入设备,创建和导入设备,存放路径,创建和导入设备,设备名及版本号,创建和导入设备,连接总线类型PLBFSLOPB,创建和导入设备,选择IPIF服务,IPIF服务机制,基本从设备支持服务S/W reset and MIR:生成RST,MIR两寄存器User logic interrupt support:中断User logic S/W register support:可寻址寄存器高级从设备支持服务Burst transaction support:突发传送及缓冲FIFO:IPI
18、F内建FIFO通路User logic address range support:地址分段使能,IPIF服务机制,中断配置,IPIF服务机制,软件寄存器设置,IPIF服务机制,寄存器和IP互连,IPIF服务机制,定制IP仿真支持,IPIF服务机制,模板语言选择,创建和导入设备,完成IPIF配置后,生成IP Core框架文件软件驱动:XPS工程文件drivers/IP目录(my_led8_v1_00a)硬件结构:XPS工程文件pcores/IP目录(my_led8_v1_00a)实现定制IP用户部分逻辑:完成对总线信号的响应模板文件:XPS工程文件pcores/IP目录(my_led8_v1_
19、00a)下my_led8.vhd,user_logic.vhd,在此文件中定制逻辑修改MPD文件,添加IP Core到XPS工程,单击”Hardware”菜单”Create or Import Peripheral”项选择需加入设备选择HDL文件选择mpd文件核查总线及信号配置寄存器地址空间中断配置IP和参数配置用户端口属性配置完成,添加IP Core到XPS工程,添加IP Core到XPS工程,IP选择,添加IP Core到XPS工程,语言选择,添加IP Core到XPS工程,mpd文件选择,XPS高级操作,软件编译系统仿真子系统设计(ISE/XPS协同)实现、下载在线调试,XPS高级操作(
20、软件设计),EDK运行方式Standalone:裸CPU方式,简单快捷,无法实现复杂功能OS:基于操作系统方式软件应用文件类型(源文件)Xparameters.h头文件.c/cpp源代码.h头文件.ld链接文件.s汇编文件,xparameters.h实例,本文件系统自动生成,定义了硬件系统的相关常量定义#define XPAR_XGPIO_NUM_INSTANCES 3#define XPAR_LEDS_8BIT_BASEADDR 0 x40000000#define XPAR_LEDS_8BIT_HIGHADDR 0 x4000FFFF#define XPAR_LEDS_8BIT_DEVIC
21、E_ID 0#define XPAR_LEDS_8BIT_INTERRUPT_PRESENT 0#define XPAR_LEDS_8BIT_IS_DUAL 0#define XPAR_CPU_CORE_CLOCK_FREQ_HZ 100000000,软件编译设置,编译环境应用模式:可执行,调试输出文件:.elf链接文件调试优化设置优化级别路径设置库搜索路径头文件搜索路径链接库编译命令行,软件链接设置,软件链接设置,Sections:段映射位置Heap,Stack:堆,堆栈Boot,Vector:引导段,中断向量表Memory:显示所有存储信息Output:链接文件存储位置,EDK子系统,设计
22、背景FPGA设计是嵌入式处理器系统和其它定制逻辑的结合,利用ISE开发定制逻辑部分并实现顶层设计FPGA设计包括嵌入式处理器,用户使用工程导航来实现,要允许使用ISE有关工具开发方式Top-down:直接添加Embedded Processor源代码Bottom-up:首先在XPS中开发嵌入式处理器设计,然后调用ISE添加该模块,Top-down开发流程,ISE新建Embedded Processor源代码模板ISE自动调用EDK,开发有关嵌入式系统,生成网表ISE下单击View HDL Instantiation Template,可看到处理器实例化EDK中修改C代码后编译后,只需在ISE中
23、Update Bitstream with Processor Data,bottom-up开发流程,XPS创建嵌入式系统打开ISE工程导航选择Project-Add Source选择XMP格式的XPS工程文件注意:ISE、XPS所选芯片型号相同,XPS中的设计仿真,概念:底层硬件模块的仿真(由驱动程序)仿真类型:行为,结构,时序准备仿真库:EDK、Xilinx仿真库已经编译XPS-Simulation-Compile Simulation Libraries准备仿真Bit文件:Compiler:编译生成.elf文件,内含数据和代码PlatGen:根据硬件设计生成.bmm文件,含块RAM数据D
24、ata2MEM:根据上述文件,抽取数据代码,system.v包含初始化存储内容SimGen:生成仿真文件(选择Simulation-Generate Simulation HDL Files),生成DO和V文件,产生仿真HDL模型文件,EDK工具与流程,编译仿真库,XPS-Simulation-Compile Simulation LibrariesXilinx库EDK库仿真软件支持SmartModel模式,仿真模型生成,SimGen操作来源文件MHS(Microprocessor Hardware Specification)文件system_name.v,peripheral_wrappe
25、r.vperipheral_wrapper.ngcsystem_name.ngcsystem_name.ncd产生目标文件system_name.vperipheral_wrapper.v其它工具与文件gcc编译器生成system_name.elfPlatGen生成system_name.bmmData2MEM生成内存初始化模型system_name_init.v,仿真模型生成(Data2MEM),仿真模型生成,HardwareGenerate Netlist:生成网表Project Options-Sim Model设为BEHAVIORALSimulation-Generate Simula
26、tion HDL Files:在simulationbehavioral目录生成DO和Verilog文件,XPS嵌入式系统实现流程,综合,产生硬件网表(Platgen):调用Hardware-Generate Netlist生成硬件比特流文件Hardware-Generate BitStream编译应用程序选中工程,单击鼠标右键,Build Project配置FPGA芯片调用Device Configuration-Update Bitstream,将软件、硬件比特流合并调用Device Configuration-Download Bitstream,下载编程固化嵌入式设计将.bit转化成P
27、ROM配置文件添加Flash软核控制器,XPS嵌入式系统实现流程,产生硬件网表(Platgen):综合调用Hardware-Generate Netlist,XPS嵌入式系统实现流程,生成硬件比特流文件:映射,布局,布线Hardware-Generate BitStream,XPS嵌入式系统实现流程,编译软件应用程序选中工程,单击鼠标右键,Build Project准备首先编译XPS提供的库函数生成链接脚本,XPS嵌入式系统实现流程,配置FPGA芯片调用Device Configuration-Update Bitstream,将软件、硬件比特流合并调用Device Configuration
28、-Download Bitstream,下载编程,XPS嵌入式系统实现流程,固化嵌入式设计将.bit转化成PROM配置文件添加Flash软核控制器FPGA片外连接SPI、BPI接口型Flash系统设计中添加相关接口硬件和驱动添加Flash驱动boot配置,嵌入式系统调试,XMD硬件调试ChipScope Pro调试SDK软件调试平台综合调试,XMD在线硬件调试(PowerPC),XMD在线硬件调试(MicroBlaze),XMD调试方法,建立工程连通硬件板编译软件工程,并下载选择Debug-XMD Debug Options,设置有关参数选择Debug-Launch XMD,启动GDB服务选择
29、Debug-Launch Software Debugger,显示调试界面,XMD在线硬件调试,选择Debug-XMD Debug Options,设置有关参数调试方式调试硬件板上运行的程序使用周期精确指令设置仿真器的程序,XMD在线硬件调试,选择Debug-Launch XMD,启动GDB服务GDB服务窗,XMD在线硬件调试,选择Debug-Launch Software Debugger,显示调试界面软件调试窗口,ChipScope Pro调试工具,ChipScope分析核都外挂在OPB/PLB总线上ChipScope_icon:连接JTAG和各监控核ChipScope_ila:监控自定义
30、信号ChipScope_opb_iba:分析OPB总线ChipScope_plb_iba:分析PLB总线ChipScope_vio:不插入到网表中,使用JTAG采样,ChipScope Pro调试工具示例,添加、配置ChipScope_icon核IP Catalog页-Debug类IP-Add IP,配置连接ChipScope_icon核端口添加、配置其它核ChipScope_ila核ChipScope_iba核综合、实现Hardware-Generate NetlistHardware-Generate BitstreamDevice Configuration-Update Bitstre
31、am,XPS SDK调试工具,XPS SDK调试工具,基于Ecilpse IDE功能版本管理项目管理,生成Makefile代码编辑,错误导航调试在线搜索帮助信息与XMD集成Xilinx集成MicroBlaze,PowerPC编译,XPS SDK调试工具,SDK Debug Perspective,The stack frame for target threads that you are debugging.Each thread in your program is represented as a node in the treeVariables,Breakpoints,and Reg
32、isters views allow for viewing and real-time interaction with the view contents for more powerful debugging potentialC/C+editor highlights the location of the execution pointer,along with allowing the setting of breakpointsCode outline and disassembly view provide compiler level insight to what is o
33、ccurring in the running sourceConsole view lists output information,1,2,3,4,5,5,4,3,2,1,XPS SDK调试工具流程,启动SDKSoftware-Launch Platform Studio SDK导入应用Import XPS Application Projects导入XPS工程Xilinx Tools-Launch Application Wizard注意:Application导入到SDK后,无法再在XPS中打开创建工程:在SDK中可以创建新的ApplicationC工程C+工程CVS工程简单工程,XP
34、S和SDK交互,由XPS进入SDK手动:关闭XPS工程;打开SDK,导入XPS的设计.xmp工程自动:在XPS完成硬件开发后,由Software-Lzunch Platform Studio SDK进入由SDK返回XPS在XPS工程名下鼠标右键,选择Set Compiler Options,修改.elf路径和名称,指向SDK生成的.elf;此后会自动加入,但无法调试,Debugging in XPS vs SDK,Debugging in XPSDownload bitstream from XPSLaunch XMDProvide Target Connection OptionsLaunch GDB(Insight GUI)Set GDB Server connection port in GDBDownload program Begin Debugging,Debugging in SDKDownload bitstream from XPSLaunch XMDProvide Target Connection OptionsLaunch GDB(Insight GUI)Set GDB Server connection port in GDBDownload program Begin Debugging,