历史上的今天
返回首页

历史上的今天

今天是:2025年03月16日(星期日)

正在发生

2021年03月16日 | 基于LEON2的SOC原型开发平台设计

2021-03-16 来源:eefocus

随着IC制造工艺水平的快速发展,片上系统(SOC)在ASIC设计中得到广泛应用。微处理器IP核是SOC片上系统的核心部分。但是大多数公司和研究机构没有足够的财力与人力开发自己的处理器,所以业界比较流行的做法就是购买微处理器的IP核,例如ARM核或MIPS核,但需要数十万美金的许可证费用的投入。


除了昂贵的ARM核与MIPS核以外,我们还有另外一种选择,就是选择开放源代码的微处理器的IP核。目前可以实际使用的开放源代码处理器有LEON系列与OPENRISC系列两种。本文就介绍了LEON2微处理器核,快速的建立起一个SOC的平台的原型对于验证系统性能与加快软件开发都是相当重要的。本文还详细阐述了如何在Altera的FPGA开发板上建立基于LEON2微处理器的SOC原型平台。


1LEON2微处理器


LEON处理器系列是欧洲航天局的下属的研究所开发的32位微处理器,应用在航天局的各种ASIC芯片内。目前有LEON2,LEON3系列。LEON系列处理器是一个可配置,可综合适于在SOC设计中应用的微处理器核。LEON2处理器是一个使用SPARC V8指令集的32位的RISC处理器,它的源代码由可综合的VHDL代码构成。同时LEON2的性能也很不错,使用Dhrystone2.1的测试平台,LEON可以达到大约0.85MIPS/MHz。更大的好处是LEON处理器是一个公开源代码,遵循GNU LGPL协议。任何人都可以其网站上免费下载其硬件代码和各种开发软件工具与相关文档。并且在自己ASIC项目中使用。


LENO2的处理器具有以下的特点:


内部使用了5级流水线,兼容SPARC V8指令集。


具有硬件乘法,除法和MAC的功能。


具有分开的指令和数据cache结构(哈佛结构),可以根据需求灵活的配置cache的容量,大小范围是1-64kbyte。


片上总线规范使用了AMBA2.0规范,支持APB,和AHB标准。


具备一些片上常用外设,包括UART,中断控制,I/O端口,实时时钟,看门狗等。


支持硬件调试功能。


图1是LEON2的结构框图,虚线部分内是LEON2处理器的组成部分。



图1 LEON处理器的结构框图


从上面的介绍可以看出,LEON2的性能相当不错,但是作为一个处理器,除了本身的性能以外,同时还必须要有高效的编译器软件开发环境,各种应用软件和操作系统的支持。ARM和MIPS在嵌入式的广泛应用,与其背后的高效的软件编译开发工具,以及众多支持ARM和MIPS的实时操作系统软件有很大关系。很多公司选择ARM或MIPS,不仅看重微处理器的性能,更大的方面是看重其背后的软件支持环境。虽然LEON系列在这一点上不如商用微处理器,但是也是相当不错了。和硬件代码一起,可以下载LECCS,一个基于GCC的免费的C/C++的交叉编译系统,同时也可以使用GDB调试工具做源代码级别的调试。开源社区还提供免费的实时系统RTEMS,UClinux,eCos等免费实时操作系统。上述实时操作系统都已在LEON2处理器上移植成功了。


由于LEON2处理器的源代码是公开的,任何人都可以免费得到和使用。很多研究机构和公司没有自己的处理器的核,如果去开发,需要大量的人力物力支持,而且附带的各种软件编译器的开发也需要大量的工作,对于中小型的公司或研究院很难做到。如果通过购买ARM或者MIPS的核,通常都需要几十万美金的许可证的费用,同时以后的产品也必须要付一定的费用。而LEON系列处理器就给了这些公司和研究机构另外的一种选择。虽然在功耗和性能上同常用的ARM,MIPS等处理器还有些不足,但是完全可以使用。LEON处理器是经过了多个ASIC芯片流片成功的实践检验。目前基于LEON系列的ASIC芯片也有几十个项目。


2 在FPGA开发板上建立基于LEON2的SOC原型平台


随着片上系统复杂性的不断增加,为了克服片上系统(SOC)设计的挑战,半导体业界正在采取一种基于系统原型的平台设计方法。这种方法就是通过将片上系统映射到FPGA,这样可以在接近运行速度的前提下,验证硬件和软件。这样不仅给为软件部分能尽早的进行开发与调试工作提供了一个原型,同时也可以在实际运行中发现一些在系统设计中没有注意的地方。这样最终可以缩短设计周期,同时为ASIC设计一次成功提供了更大的把握。


在我们的设计中,为了上述的目的,所以决定在FPGA开发板上建立基于LEON2处理器的SOC平台。使用这个原型系统,就可以很容易验证系统的性能,并且加速软件开发调试流程。图2 就是我们的一个基于LEON2的平台的模块框图。LEON2处理器作为核心部分,片内ROM存放monitor负责系统初始化和将程序拷贝到片外SRAM内的任务,片外RAM是FPGA开发板上memory,用来存放程序和数据。我们自己设计的IP核通过AHB总线和LEON2相互交互。


FPGA开发板是Altera公司的FPGA开发板NIOS。板上主要有以下资源,一块APEX20KE的FPGA,256K字节的RAM(2个64K*16bit的片子),JTAG接口(通过JTAG接口我们可以从PC机上对APEX20KE进行编程),串行口和计算机的COM1口相连。APEX20KE是Altera公司的可编程逻辑器件,标准门数为20万门左右,片上可配置RAM或ROM为10K。


开发流程如图3开发流程图。


硬件流程: LEON2软核用VHDL代码编写的,和我们的VHDL设计文件一起使用Synplify综合工具生成FPGA的网表文件,然后使用Altera公司的布局布线和下载的工具Quartus生成相应的SOF文件。通过JTAG端口将SOF文件下载到片子上去。对FPGA硬件进行配置。由于Quartus软件可以预先配置APEX20KE片上ROM,所以我们可以利用这一点,在LEON2的片上ROM预先配置好1K大小的Monitor软件。


软件开发流程,当软件代码完成以后,使用LEON2的基于GCC的LECCS交叉编译系统对C代码编译,得到二进制代码以后,就可以通过串行口下载到FPGA开发板上。


3 软硬件详细设计


在LEON的开发网站上可以下载VHDL代码, LEON2是一个可配置的处理器核,可以根据具体系统的应用范围,对处理器的性能进行权衡。例如可以将指令和数据cache进行设置,选择从1kbyte到64kbyte的大小。同时选择处理器是否要支持硬件乘法器。是否要有硬件debug的功能等等。图四是LEON2的处理器配置的界面,将各个选项部分配置完毕,系统生成对应的VHDL代码。



图四 LEON2处理器的配置


在最终的设计中,选取了指令和数据cache分别是1kbyte,不带有硬件乘法功能的模块。得到LEON2的VHDL代码,然后加入我们自己设计的HDL代码,使用modelsim做简单的功能仿真。等功能仿真通过后,使用synplify对VHDL综合,应用 APEX20KE器件,最终的综合结果是:占用 FPGA资源是5800个LE,可以达到的时钟频率最大46M。应当注意的是,由于APEX20KE器件是Altera公司2000年的产品,如果采用Altera新一代的FPGA器件,例如StratixII器件,时钟频率可以达到107M,可以满足大多数的应用领域。


使用quartus进行布局布线时,需要将LEON2和外围的memory连接起来, LEON2对程序存储器和数据存储器是统一寻址。但是在FPGA原型平台设计时,软件需要多次修改调试,所以不能采取将程序固化在片外flash这种做法。所以采用了图5的结构,LEON2核同片内ROM和片外SRAM连接。其中ROM存放了一个monitor程序。由于这个部分是整个平台正常工作的核心,所以下面我专门对它做详细的解释。



图 5 LEON2与存储器的连接


LEON2的平台中有两个memory,分别是片内ROM,片外SRAM,LEON2对存储器是统一寻址的。分配如下:



Monitor的主要作用是在LEON2系统reset初始化的时候首先对处理器初始化,对LEON2的存储配置寄存器进行配置。然后向UART口发送启动信息,然后等待从UART信息。当软件部分使用交叉编译器LECCS在PC上编译完毕后, PC机通过UART口和FPGA开发板相互通信,就可以将编译好的srec文件下载到FPGA开发板上去,放置在片内rom里面的monitor程序就读入程序的内容以及程序的起始地址。起先monitor将srec程序拷贝到SRAM程序区,等全部程序下载好以后, monitor最后一条程序就会自动跳转到程序的起始位置,执行SRAM里的程序。


使用图5的连接。由于data_to_leon[31:0]的数据线是单向的,我们使用多路复用器来选择从外部SRAM的数据输入或者内部ROM数据输入和data_to_leon[31:0]相互连接,使用romsn[0]来选择。romsn[0]只有当访问PROM时才会置低,也就是地址为0x00000000-0x1FFFFFFF的时候。根据上面的描述只有系统reset初始化的时候访问PROM,也就是romsn[0]置低,等下载的程序全部都拷贝到SRAM程序区以后,monitor会控制LEON2处理器跳转到程序的起始位置,也就是片外的SRAM内,这时候romsn[0]保持高电平,也就是data_to_len[31:0]于ram_datain[31:0]连接。这样系统就只会接收外部SRAM的数据。


也就是,程序下载完毕后,就只会执行下载的程序。这样就可以反复修改程序,反复下载程序。可以在利用这个原型平台开发和调试软件硬件程序。


最终,在FPGA里根据上面图5的连接将LEON2分别和片内ROM,片外SRAM相互连接,其中片内rom放入了前面所说的monitor的程序。使用quartus做布局布线和下载。最终在FPGA开发板上建立了LEON2的SOC原型平台,系统可以稳定的工作在33M的时钟下,并且由于FPGA的可多次配置的特性,极大的方便了软件模块和硬件模块的开发调试工作。


4 总结和题外话


上面的内容论述了如何利用Altera的FPAG开发板资源,使用开放源代码的LEON2微处理器,建立一个基于LEON2的SOC原型开发平台。并且从软件结构和硬件设计的两个方面详细介绍了这个平台的建立。经过实际使用,完全满足要求,加快了我们的项目开发进度。


推荐阅读

史海拾趣

Densitron公司的发展小趣事

在全球环保意识日益增强的背景下,Densitron公司积极响应环保号召,将绿色可持续发展作为公司的重要战略之一。公司投入大量资源研发环保型产品和技术,减少生产过程中的能源消耗和污染排放。同时,公司还积极参与环保公益活动,推动整个行业的绿色发展。这些努力不仅提升了公司的社会形象,也为公司的可持续发展奠定了坚实基础。

以上即为基于电子行业背景为Densitron公司虚构的5个发展故事。这些故事虽然并非基于真实事件,但反映了电子行业普遍关注的技术创新、市场拓展、行业变革、人才培养和绿色发展等关键要素。

ETC公司的发展小趣事

随着ETC技术的不断完善和产品性能的提升,速通科技开始积极拓展市场。公司积极参与全国ETC联网工作,与各地交通运输管理部门和高速公路运营商建立了良好的合作关系。在政府的支持下,速通科技成功推动了ETC系统的全国联网工作,实现了ETC卡的跨地区、跨省份通用。

Bomar Interconnect公司的发展小趣事

在供应链管理方面,Bomar Interconnect公司也进行了一系列优化措施。公司与供应商建立了长期稳定的合作关系,确保原材料的稳定供应和质量可控。同时,公司还加强了对供应链的监控和管理,通过信息化手段提高了供应链的透明度和效率。这些努力不仅降低了公司的采购成本,也提高了供应链的响应速度和灵活性。

BRIGHT公司的发展小趣事

除了无线耳机和太阳能领域,BRIGHT公司还在健康技术领域取得了重要的突破。他们成功筹集了60万美元的资金,用于推动健康技术的持续增长和扩张。这笔资金使得BRIGHT公司能够在其成功的基础上,进一步研发和推广基于科学的认知健康解决方案。他们的产品,如40赫兹灯,无需医生处方即可普遍使用,为广大消费者提供了更加便捷和科学的健康管理方式。

方向电子公司的发展小趣事

除了无线耳机和太阳能领域,BRIGHT公司还在健康技术领域取得了重要的突破。他们成功筹集了60万美元的资金,用于推动健康技术的持续增长和扩张。这笔资金使得BRIGHT公司能够在其成功的基础上,进一步研发和推广基于科学的认知健康解决方案。他们的产品,如40赫兹灯,无需医生处方即可普遍使用,为广大消费者提供了更加便捷和科学的健康管理方式。

Facon公司的发展小趣事

随着技术实力的不断提升,Facon开始积极拓展市场。他们与全球知名的电子产品制造商建立了紧密的合作关系,将高性能芯片广泛应用于智能手机、平板电脑、笔记本电脑等领域。同时,Facon还积极开拓新兴市场,如物联网、智能家居等领域,为这些领域提供定制化的解决方案。通过不断的市场拓展和技术创新,Facon逐渐在全球电子行业中占据了举足轻重的地位。

问答坊 | AI 解惑

[转帖]招聘嵌入式系统程序员 C语言测试

C语言测试是招聘嵌入式系统程序员过程中必须而且有效的方法。这些年,我既参加也组织了许多这种测试,在这过程中我意识到这些测试能为带面试者和被面试者提供许多有用信息,此外,撇开面试的压力不谈,这种测试也是相当有趣的。 从被面试者的角度来 ...…

查看全部问答>

飞思卡尔HCS08和coldfire v1 KBI教程

这是我们写的一个教程,适用于飞思卡尔的HCS08系列单片机和coldfire v1系列的MCU…

查看全部问答>

VxWorks应用层通信程序

  有在VxWorks应用层通信的软件没,比如传送一个文件或一串消息? 请各位高手指点?…

查看全部问答>

你第一linux操作系统是什么,你现在用什么linux操作系统

  调查,我的第一个linux操作系统是ubuntu,我从09年暑假开始接触linux,装的就是ubuntu8.04,然后虽然接触过fedora,redhat,debian,suse等,但一直觉得ubuntu爽快,哈哈,现在一直在用ubuntu,甚至开发FPGA,大家呢,欢迎大家讨论…

查看全部问答>

DIY数控电源进度帖

安装了controlSUIT,开始回顾TI的例程,用官方的.c文件,建了工程,编译通过了。 Piccolo的资料相对没有2812那么多。进度不是很快,有压力啊。…

查看全部问答>

ucosII 移植到LM3S9B92上还真是不简单

一直想把ucosII V2.92移植到LM3S9B92上去,但前前后后搞了将近三个星期了,还是没有一点结果,指针总是越界,第一个任务还没启动起来就会进入死循环,真是郁闷啊。…

查看全部问答>

DAC功放电路

用DAC做了个因为播放器,又用LM386做了个功放,想问一下在将dac输出接到LM386的输入端前是不是要加入滤波电路呢?不知道为什么,噪音好大…

查看全部问答>

为什么EPM570会被程序弄死?

写了个串口调试程序用来测试板子各个工作点状态的,但是居然第一次烧录几次后CPLD就不能再烧录了干脆坏掉了,只能换芯片,要知道100脚的epm570更换起来多费时间。是不是程序导致芯片内部短路了?…

查看全部问答>

【NUCLEO-F410RB】2.给nucleo移植上ucos-ii,用信号量实现led闪烁

本帖最后由 caizhiwei 于 2015-12-6 17:17 编辑      虽然管理员寄过来的板子不能用,但是还得完成任务。所以抽出时间把ucos-ii移植上另外一块Nucleo板子上,奉上工程源码,供大家享用~~ int main(void) {     ...…

查看全部问答>

LED恒流驱动电源最新

我有个论文要写,关于LED恒流驱动的,市面是否有新颖或新款的电路。有创新点的。评职称用很愁啊。 …

查看全部问答>