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

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

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

ilog 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不停的点亮、熄灭。

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是顶层模块。

freedom\fpga\e300artydevkit\src\system.v

freedom\sifive-blocks\vsrc\SRLatch.v

freedom\rocket-chip\vsrc\AsyncResetReg.v

freedom\rocket-chip\vsrc\DebugTransportModuleJtag.v

Freedom\builds\e300artydevkit\sifive.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

作者简介:

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

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

网站地图

Top