- UID
- 1023229
- 来自
- 中国
|
上一次使用system generator体验了自动生成代码技术的简洁、方便。在学习了一段时间EDK/SOPC技术之后,本次博文主要探讨基于Xilinx SOPC技术对FPGA控制算法进行实现。基于FPGA的可配置嵌入式系统开发技术以及相应的片上可编程系统(SOPC)解决方案,融入了微处理器技术、数字信号处理技术、可编程系统级芯片以及软硬件协同设计技术,提供了一种新的系统级设计方法。以下是我总结的一个基于SOPC开发的总体框架,希望可以起到抛砖引玉的作用:-)
1. SOPC解决方案
Xilinx公司的SOPC解决方案以3类RISC结构的处理器为核心,涵盖了系统硬件设计和软件设计的各个方面,分别为PicoBlaze、MicroBlaze和PowerPC,其中PicoBlaze和MicroBlaze是可剪裁的软核处理器,PowerPC为硬核处理器。PicoBlaze的处理功能不强,主要适应于低端控制领域,而PowerPC是一款硬核处理器,且只集成在高端FPGA芯片内部,开发成本较高。MicroBlaze软核是一种针对于Xilinx FPGA器件而优化的一种功能强大的32位嵌入式处理器,是业界最快的IP核解决方案,支持CoreConnect总线的标准外设集合,具有兼容性和重复利用性。其主要特点如下:
[1]. 32位的采用RISC构架的CPU,可以运行操作系统,如ucLinux等;
[2]. 32个32位的通用寄存器;
[3]. 采用哈佛结构,内部有32位的指令和数据总线;
[4]. 可以配置高速缓存、浮点运算等单元;
[5]. 占用的逻辑资源少,处理速度高。
MicroBlaze结构最显著的特点是基于CoreConect构建。CoreConect技术是由IBM公司开发的片上总线通信链,通过多个IP核相连,构成一个完整的SOPC嵌入式系统。本文使用Spartan3/3E系列的芯片,所以选用了MicroBlaze处理器来实现相关算法。
2. SOPC设计流程
一个完整的SOPC系统设计主要包括硬件设计与调试,软件设计与调试,以及仿真等步骤,各个步骤相辅相成,主要包括:
[1]. 创建硬件平台:利用XPS快速构建系统的硬件平台,包括选择处理器的类型,程序存储空间的大小等,这是设计的第一步;
[2]. 定制IP核:用户自主设计系统需要的专用外设;
[3]. 设置工程属性:设置不同硬件模块直接的连接关系,以及外部端口的特性;
[4]. 生成仿真文件并测试硬件系统;
[5]. 生成硬件比特流;
[6]. 下载硬件比特流文件;
[7]. 使用ChipScope对FPGA的内部逻辑进行调试;
[8]. 开发系统软件:包括选择软件操作系统,编写应用软件,最后生成.elf格式的可执行代码;
[9]. 采用XMD调试应用软件:利用XMD工具,通过JTAG编程电缆在线调试系统的应用软件,并重新生成.elf格式的可执行代码。
[10]. 合并软硬件比特流并下载:硬件生成的硬件比特流以及软件生成的可执行代码进行合并,生成最终的二进制比特流文件,并下载到芯片内执行。
完整的SOPC开发流程,如图1所示。
图1 SOPC开发流程图
3. 开发工具
嵌入式开发套件(EDK)是Xilinx公司开发出的用于设计SOPC系统的全面解决方案。该套件包括嵌入式软件工具(Platform Studio)以及嵌入式开发所需要的技术文档和IP核,其中软件工具主要包括XPS和SDK两个工具。XPS主要用于构建系统硬件平台以及产生板级驱动包(BSP),其内部提供了许多通用的IP核,如通用I/O口(GPIO)、通用串行接口(UARTLITE)、定时器(TIMER)、中断控制器(Interrupt Controller)等,用户在使用相应IP核来搭建系统硬件的时候,直接进行例化即可。同时XPS还支持用户定制自己的IP核,并提供了图形化的设计向导,简化了设计流程。SDK则是用来设计SOPC系统的应用软件,主要用来产生、编辑、编译、链接、加载和调试高级编程语言(通常是C或C++)代码的工具。在系统的设计中通常还需要使用ISE以及Modelsim软件,ISE支持HDL行为描述语言的输入方式,在SOPC设计过程中主要用于定制用户的IP核,当然也可以独立使用ISE进行系统的设计;Modelsim主要用来对系统硬件的功能进行仿真验证,在SOPC开发过程中,主要用来验证IP核的功能以及总体硬件的功能。
4. LMB及PLB总线
LMB(Local Memory Bus)总线用来连接MicroBlaze软核与FPGA片内的BlockRAM,是一种快速的专用同步总线,LMB分为ILMB(Instruction Local Memory Bus)和DLMB(Data Local Memory Bus),分别连接指令缓存RAM和数据缓存RAM。
PLB(Processor Local Bus)总线是构建SOPC系统时最常用的总线,它使具有PLB总线接口的主设备和从设备通过PLB读写规范进行数据传输。其主要构成为:一个总系控制器、一个看门狗定时器、独立的数据和指令地址单元。
5. 系统软硬件分工
一个完整的SOPC系统,其最大的特点就是软硬件协同设计,软硬件协同设计强调软件和硬件开发的并行性和相互反馈。系统的这些任务在SOPC系统中到底是由硬件电路完成还是由处理器软核中的程序完成,还要经过细分。处理器可以通过顺序执行的方式完成复杂的运算,而硬件电路对于高速并行的逻辑处理部分有无可替代的优势,所以系统中的运算部分可以交给MicroBlaze处理器来处理,而FPGA内部剩余的硬件逻辑资源则负责处理系统中对速度要求高的逻辑处理部分。
6. 用户任务逻辑的设计与仿真验证
包括功能仿真与时序仿真,这一部分比较简单,在此不进行详细说明。需要注意的是,若使用Modelsim进行仿真,别忘了编译EDK所使用的库,可以使用Simulation Library Compilation Wizard进行编译,具体步骤可以参考我在创新网的第一篇博客日记http://xilinx.eetrend.com/blog/613。
7. 总线接口逻辑的设计
任何一个挂接在PLB总线上的模块都必须符合PLB总线规范,即包括特定类型的信号。在总线IP核的构建过程中,设计完IP核的任务逻辑,要想合成一个完整的IP核模块,还必须选择总线的接口模式,从而可以使处理器通过总线对IP核进行读写操作,构成一个完整的SOPC系统。IPIF(IP Interface)是EDK提供的标准IP接口,允许用户在系统总线上构建用户的IP核,EDK根据用户选择的系统总线机制来实现相应的总线接口逻辑。IPIF有多种总线机制可供选择,其主要包括:
[1]. S/W reset and module information register(RST/MIR):设置该项会生成两个寄存器RST和MIR,RST为只写寄存器,软件通过写RST寄存器实现对用户逻辑的软复位;MIR为只读寄存器,软件通过读MIR寄存器来获得外设的信息
[2]. Burst transaction support:突发传送模式,一种快速访问外设的方式,应用于用户逻辑需要与处理器核进行高速交换数据的场合
[3]. DMA:直接存储器读取模式
[4]. FIFO:通过IPIF内建的FIFO通路实现快速的数据访问
[5]. User Logic Interrupt Support:用户逻辑可以通过总线发出中断请求模式
[6]. User Logic S/W Register Support: 用户逻辑含有软件可寻址和访问的寄存器,本论文选择了这种机制
[7]. User Logic Address Range Support: 用户逻辑地址范围支持,即为每段用户地址空间生成一个使能信号
选定了总线的机制,还需要选择总线上寄存器的数量。在采用软件编程时只要控制PLB总线上相应的寄存器就可以向IP核中写入控制量。
8. 操作系统的选择
在SOPC嵌入式系统中,软件占有相当重要的地位,硬件提供的了可运行的平台,软件则完成了系统具体的任务。Xilinx的EDK开发工具提供了完善的开放式软件平台,支持用户从编制最简单的独立程序,到移植标准的操作系统。EDK支持的操作系统有:
Standalone:严格意义上说,Standalone并不能称为一个操作系统,它是最简单的软件运行方式,可以认为这种方式下代码是在裸机上运行的。Standalone方式为用户提供板级驱动代码,这部分代码给用户提供简单的初级API函数,帮助用户实现对硬件的操作,而不必关心具体的硬件结构 。
Xilinx MicroKernel:是Xilinx公司提供的精简嵌入式操作系统。
标准操作系统:指传统意义上的应用较为广泛的操作系统,如Linux。
写了这么多了,感觉条理不是很清楚,先到这儿吧,下次用一个具体的例子来描述一下整个开发过程。因为学习EDK的时间不长,所以请大家不要吝啬地指出问题(创新网可是个精英汇集的宝地啊!),谢谢!
附件大小Tu_1_SOPCKai_Fa_Liu_Cheng_Tu_.jpg57.93 KB |
|