微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 基于DE2的开源片上系统Freedom E310移植

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

时间:05-08 来源:电子发烧友网供稿 点击:

引言:伯克利大学于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对应的Ver

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top