leon3入门教程(1)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
写在最前面的话
2010年年底我开始接触LEON3,花了3个月时间把LEON3源代码大致阅读完,然后参照Gaisler Research 网站上提供的leon3-altera-ep3c25源代码,修改并移植到DE2-70平台上,并作了一些AHB和APB外设的IP核设计,历时近一年,最终完成了我的本科毕业设计。之后因为觉得自己的水平仍不够“FPGA工程师”,觉得LEON3过于复杂,资料太少,学习起来过于疲惫,从而转战NIOS II SOPC和基础数字系统设计,停止对LEON3的进一步学习和研究。这段时间总是会有网友问我一些LEON3的问题,都是基本的问题,比如硬件怎么配置,eclipse怎么使用,IP怎么写。由于自己的确不在做LEON3的研究和开发,连开发环境都没有了,就把以前做的和写的一些材料整理一下,分作四篇博客分享给大家,希望能让初学者少走弯路,快速入门。最后,我自己能力有限,文字水平也有限,如果有什么问题我能帮上大家的我一定不吝啬自己的文字,也希望大家能把LEON3做出点东西。
===================================================================
摘要:
本系列博客主要简述了如何将简单的LEON3 SOPC系统的配置,并移植到的友晶DE2-70开发板上,并根据AMBA 总线协议设计一个的用户自定义APB IP,并嵌入到这个SOPC系统中。共分为四个部分,第一部分对LEON3一些基本知识进行介绍,以及开发需要使用到的软件和源代码;第二部分介绍Cygwin和GRtools软件的安装和配置说明;第三部分介绍LEON3 SOPC系统构建,并使用Eclipse (LEON3 IDE) LEON3 开发应用程序;最后一部分简单介绍了简单APB IP核(七段数码管的IP)的设计。
四篇博客依次为:
(原创)LEON3入门教程(一):什么是LEON3?需要哪些开发工具和软件?
(原创)LEON3入门教程(二):Cygwin和GRtools的安装与配置
(原创)LEON3入门教程(三):基于LEON3的SOPC设计:HELLOWORLD和流水灯
(原创)LEON3入门教程(四):基于AMBA APB总线的七段数码管IP核设计
一、总体描述
1 LEON3处理器简介
LEON处理器系列是欧洲航空局的下属的研究所开发的32位的微处理器,应用在航天局的各种ASIC芯片内。目前有LEON2、LEON3系列。LEON系列处理器是一个可配置可综合适用于SoC设计中的微处理器核。LEON3处理器是一个使用SPARC V8(IEEE-1754)指令集的32位RISC处理器,它的源代码由可综合的VHDL代码构成。同时LEON系列处理器的性能也比较理想,可以达到大约0.85MIPS/MHz。更大的好处是LEON处理器是一个公开源代码,遵循GNU LGPL协议。任何人都可以在其网站上免费下载其硬件代码和各种开发软件工具与文档。并在自己的ASIC项目中使用。
LEON3的结构框图如图1所示。
图1 LEON3的结构框图
2 LEON3处理器的技术特点
LEON3处理器的技术特点主要有:采用SPARC V8结构、采用内部AMBA总线结构、容错设计和VHDL编程风格。
1. SPARC V8
可扩展处理器体系架构(SPARC),是一个从RISC派生出的CPU指令集结构(ISA)。指令集结构是指:定义了指令、寄存器、指令和数据存储器、指令执行对寄存器和存储器的影响、控制指令执行的算法等内容,但不定义时钟周期、每条指令的执行时钟周期数(CPI)、数据通路等内容。作为一个结构,SPARC允许在具有不同性能价格比的广泛应用中,实现不同系列的芯片和系统,包括科学、工程、实时和商业应用等。SPARC的设计目标是优化编译器和易于硬件流水线实现。
SPARC处理器由整数单元(IU)、浮点和协处理器单元(FPU和CP)构成。它们各自都有自己的寄存器,其中IU有8个全局寄存器、2-32个寄存器窗口(由用户设定),浮点和协处理器单元的选择依赖于具体应用。
2. 容错问题
为了适用于航空航天的高可靠性应用,LEON3处理器采用多层次的容错策略:奇偶校验、TMR(三模冗余)寄存器、片上EDAC(检错和纠错)、流水线重启、强迫Cache不命中等。尽管现在几乎所有CPU都有一些常规的容错措施,如奇偶校验、流水线重启等,像IBM5/390GS 还采用了写阶段以前的全部流水线复制技术,Intelftanium采用的混合ECC 和校验编码等技术;但远没有LEON3处理器那样,采用如此全面的容错措施。LEON3处理器将时序(存储)单元的状态翻转作为数字容错的主要内容,根据时序逻辑的不同特点和性质,采用了不同的容错技术和手段。
3. 编码风格
LEON3的VHDL编码风格,同传统以并发执行的并发进程(或并发语句)作为模块的所谓“数据流”编码风格不一样,采用的是“二进程”的设计方法。这种编码风格克服了“数据流”
编码方式的可读性差、抽象级低、仿真时间长等缺点。“二进程”编码风格的具体措施是:①所有的端口和信号声明采用记录的形式进行说明,如按输入输出分类进行记录说明;②每个实体只有两个进程,一个组合进程和一个时序进程;③在组合进程中全部采用变量(而不是信号),以使用结构化的顺序编码方式;④在时序进程中通过时钟同步,进行状态的转换。它基本与状态机模型一样,只是组合进程部分采用变量形式进行结构化顺序编码,来完成下一个时钟周期的输出和下一个状态进行计算。时序进程部分是在时钟的作用下,完成状态转换和输出驱动。
3 本系列所搭建的SOPC
硬件部分使用到了Gaisler提供的GRLIB,来配置在AlteraDE2-70开发板上的SOPC系统。该系统包含LEON3 SPARC V8处理器,AMBA和AHB、APB总线、调试用的Jtag和调试单元DSU、测试的Uart模块,以及Timier和中断。
系统的结构图如图2结构所示。
图 2 基于LEON3处理器的SOPC系统的结构框图
4 软件代码编写和测试。
软件部分是由Gaisler提供的GRTools来完成。GRTools包含了基于Eclipse的LEON集成开发环境(简称LEON IDE)。在LEON IDE中编写需要的测试代码并进行编程、下载测试。
二、相关文件准备
这里介绍所需要下载的安装包以及软件源代码:
2.1 Cygwin
简介:Cygwin是一个在windows平台上运行的unix模拟环境,本文所涉及的大部分操作都需要在Cygwin下实现。
下载地址:/install.html
版本说明:1.7.7-1