当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]引言:伯克利大学于2014年发布了开源指令集架构RISC-V,其目标是成为指令集架构领域的Linux,应用覆盖IoT(Internet of Things)设备、桌面计算机、高性能计算机等众多领域[

引言:伯克利大学于2014年发布了开源指令集架构RISC-V,其目标是成为指令集架构领域的Linux,应用覆盖IoT(Internet of Things)设备、桌面计算机、高性能计算机等众多领域[1]。RISC-V自发布以来受到多方关注和参与,围绕RISC-V的生态环境逐渐完善,并涌现了众多开源处理器及SoC(System on Chip)采用RISC-V架构,其中Rocket-Chip就是由伯克利大学发布的基于RISC-V的可配置SoC,通过配置不同的参数可以得到不同性能、应用不同场合的SoC。RISC-V的迅速发展还激励其设计人员成立了SiFive公司,专注于定制化SoC设计,其产品线包括如下:

(1)开源处理器核Coreplex IP系列

包括Coreplex U、Coreplex E两个系列。其中Coreplex U系列目前有U5 Coreplex子系列,其是64位RISC-V架构处理器,支持多核、多级缓存、硬件支持的单精度与双精度浮点运算;Coreplex E系列目前有E3 Coreplex子系列,其是32位的RISC-V架构处理器,依据应用环境可配置支持RV32E、乘法、除法、浮点运算等,目标是低功耗的嵌入式控制器。

(2)开源SoC Freedom系列

包括Freedom Unleashed、Freedom Everywhere两个系列。其中Freedom Unleashed系列是基于U5 Coreplex的SoC,包括U500子系列,其外设控制器包括DDR3/DDR4 DRAM 控制器、PCIe 3.0控制器、1Gb Ethernet控制器、USB 3.0控制器等,支持Unix等多种操作系统;Freedom Everywhere系列是基于E3 Coreplex的SoC,包括E300子系列,其具有片上debug单元、平台级中断控制器等,支持FreeRTOS等多种操作系统。

(3)Freedom E310

Freedom E310是Freedom Everywhere的子系列E300的一个流片实例,目标应用场合是微控制器、IoT、可穿戴设备等,其处理器核是E3 Coreplex子系列的一个实例——E31,支持RV32IMAC指令集。其采用180nm工艺成功流片,主频可以达到320MHz以上。

(4)开源开发板HiFive1

HiFive1是第一款采用Freedom E310作为核心控制芯片的Arduino兼容开发板。作为深度开源的代表,其微控制器对应的RTL代码、电路图设计文件、PCB设计文件等完全开源。

SiFive给出的Freedom E310的RTL代码,目前仅支持Xilinx的Arty开发平台,本文在简单介绍Freedom E310的基础上,给出了将其移植到Altera的DE2开发平台的详细步骤。

1 Freedom E310介绍

1.1 Freedom E310的结构设计

Freedom E310的结构设计如图1所示。处于核心的是单发射、顺序执行处理器E31,支持RV32IMAC指令集,具有16K的指令缓存,16K的数据SRAM。

 


图1 Freedom E310的结构设计

Freedom E310有多个外设,通过TIleLink互连总线将这多个外设连接到处理器。主要外设包括:

l AON(Always-on Domain):AON的意思就是始终在线,不受处理器核心电源管理的影响,包括实时计数器、看门狗、复位与电源管理等子模块。

l GPIO(General Purpose Input/Output)控制器:通用输入输出,每一个引脚都可以设置输入或者输出,并可以设置是否能够引发中断。Freedom E310的GPIO可以复用,复用为UART、I2C、SPI、PWM等。

l PLIC(Platform-Level Interrupt Control):平台级中断控制器,用于接受外部的中断信号,然后按照优先级送给处理器,支持52个外部中断源,7个中断优先级。

l Debug Unit:调试单元,支持外部调试器通过标准JTAG接口进行调试,支持2个硬件断点、观察点。

l QSPI(Quad-SPI):QSPI flash控制器,用于访问flash,可以支持eXecute-In-Place模式。

1.2 地址映射

Freedom E310的地址映射如表1所示。本文移植过程中使用到的主要有复位入口地址、ROM、GPIO。复位入口地址是Freedom E310启动后首先执行的指令,一般是一条转移指令。

 


1.3 Chisel语言

Freedom E310的大部分代码是采用Chisel(ConstrucTIng Hardware in an Scala Embedded Language)编写的,这也是伯克利大学设计的一种开源的硬件编程语言,是Scala语言的领域特定应用,可以充分利用Scala的优势,将面向对象(object orientaTIon)、函数式编程(funcTIonal programming)、类型参数化(parameterized types)、类型推断(type inference)等概念引入硬件编程语言,从而提供更加强大的硬件开发能力[4]。Chisel除了开源之外,还有一个优势就是使用Chisel编写的硬件电路,可以通过编译得到对应的Verilog设计,还可以得到对应的C++模拟器。本文在移植的过程中,由于Altera的QuartusII综合工具不支持Chisel,所以需要首先得到Freedom E310对应的Verilog HDL代码,然后才可以综合。

2 启动过程分析及bootrom设计

Freedom E310是可配置的SoC,可配置ROM、OTP、QSPI,依据其配置情况,有不同的启动过程,默认的启动过程是,从ROM处(0x0000_1000)开始执行,ROM处一般存储一条转移指令,转移到OTP,或者QSPI。Altera的DE2开发平台没有QSPI接口的flash,所以只能转移到OTP,为了进一步简化移植验证难度,本文并不使用OTP,而是在0x0000_1000处存储了一条转移指令,该转移指令转移到ROM中的另一处地址继续执行。ROM中的代码就是bootrom,其主要内容如下。

 


 


上述bootrom的代码在启动后转移到标记1处,开始配置GPIO,使其GPIO0为输出口,然后通过该接口送出一个高电平,等待一段时间后,在送出一个低电平,循环执行该过程。如果GPIO0连接到LED,将会发现该LED不停的点亮、熄灭。[!--empirenews.page--]

3 基于DE2的开源片上系统Freedom E310移植

3.1 实验环境

本文的实验平台是Ubuntu14.04,在Github上clone下列项目的代码:Rocket-chip、Freedom、Freedom-e-sdk。编译Rocket_chip的代码,得到对应的GCC工具。

3.2 编译bootrom

 


3.3 生成Freedom E310对应的Verilog HDL文件

使用如下语句可以编译得到Freedom E310对应的Verilog HDL文件。

make -f Makefile.e300artydevkit verilog

生成的Verilog HDL文件位于builds/e300artydevkit/路径下,文件名是sifive.freedom.everywhere.e300artydevkit.E300ArtyDevKitConfig.v,并且其ROM的内容就是bootrom.img的内容。

3.4 建立QuartusII工程

建立QuartusII工程,添加如下文件到该工程,其中system是顶层模块。

freedomfpgae300artydevkitsrcsystem.v

freedomsifive-blocksvsrcSRLatch.v

freedomrocket-chipvsrcAsyncResetReg.v

freedomrocket-chipvsrcDebugTransportModuleJtag.v

Freedombuildse300artydevkitsifive.freedom.everywhere.e300artydevkit.E300ArtyDevKitConfig.v

3.5 修改system.v

System是顶层模块,其中例化了Freedom E310,但是system中使用了许多Xilinx平台的IP,需要进行针对Altera平台的修改。

3.5.1 修改mmcm

 


3.5.2 修改sys_reset

sys_reset模块使用的是Xilinx的proc_sys_reset IP,其作用是生成复位信号,可以使用下列代码代替。

 


3.5.3 修改IOBUF

system.v中使用了大量的Xilinx IOBUF原语,IOBUF是单端双向缓冲器,由IBUF、OBUFT两个基本组件组成,当I/O端口为高阻时,其输出端口O为不定态,其输入输出真值表如表2所示。

 


依据上述真值表,假设有如下IOBUF例化。

 


依据上述方法替换system.v中所有的IOBUF例化。

3.6 引脚设定

参考bootrom的功能,本文使用到了复位、时钟、GPIO0、SRST_N等几个端口,其在DE2平台的映射如图3所示。

 


3.7 编译下载

经过上述修改后,在QuartusII中编译下载,保持SW0为高电平输入,SW1为低电平输出,就可以观察到GLED0灯不停的点亮、熄灭。说明Freedom E310运行正常。资源占用情况如图4所示。

 


结语

Freedom E310是第一款基于RISC-V指令集架构的开源商业SoC,具有丰富的外设,满足多种应用场景,并且具有可配置的特性,适合根据应用进行裁剪,本文给出了将Freedom E310移植到Altera DE2开发平台的步骤,对于其他计划使用Freedom E310的用户具有一定的借鉴意义。

参考文献

[1]Waterman, A. et al. The RISC-V Instruction Set Manual, Volume I: User-Level ISA, Version 2.1[S], 2016

[2]SiFive, Inc. SiFive E3 Coreplex Series Manual, Version1.2[S], 2016

[3]SiFive, Inc. SiFive FE310-G000 Manual, Version1.0.1[S], 2016

[4]Chisel 2.2 Tutorial[EB/OL]。 https://chisel.eecs.berkeley.edu/2.2.0/chisel-tutorial. 2016-10

作者简介:

雷思磊:通信公司工程师,研究方向为处理器架构,嵌入式处理器应用等

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭