
RISC-V
文章平均质量分 69
leishangwen
而立之年岁开始学硬件——廉颇老矣,尚能饭否!
展开
-
Chisel实验笔记(四)
在《Chisel实验笔记(二)》中,通过编写TestBench文件,然后使用Icarus Verilog、GtkWave可以测试,查看相关波形,比较直观,在《Chisel实验笔记(三)》直接对得到C++模拟器进行测试,也可以得到测试结果,实际上对C++模拟器进行测试也可以同时得到vcd文件,从而使用GtkWave查看波形,得到直观的结果。本文就介绍了这个过程。原创 2015-06-04 09:20:34 · 3984 阅读 · 0 评论 -
Chisel Tutorial(九)——状态单元
Chisel支持的最简单的状态单元就是上升沿触发的寄存器,可以使用如下方式例化:val reg = Reg(next = in)上述代码形成的电路就是:将输入赋值给输出,但是输出比输入延后一个时钟周期。此处没有申明变量reg的数据类型,Chisel会自动从输入变量in推测reg的类型。在Chisel中,clock、reset都是全局信号,不需要显示声明。使用寄存器可以组成许多有用的电路原创 2015-09-09 18:05:36 · 2626 阅读 · 1 评论 -
基于RISC-V架构的开源处理器及SoC研究综述(二)
RISC-V是一种新的指令集架构,发布以来得到了大量关注,在描述了RISC-V的产生背景、基本设计的基础上,简单比较了其与现有的开源指令集架构、商业指令集架构的优劣,随后详细介绍了现有的采用RISC-V架构的开源处理器、开源SoC,并展望了RISC-V的未来发展。原创 2017-02-12 22:30:12 · 13942 阅读 · 1 评论 -
基于RISC-V架构的开源处理器及SoC研究综述(三)
RISC-V是一种新的指令集架构,发布以来得到了大量关注,在描述了RISC-V的产生背景、基本设计的基础上,简单比较了其与现有的开源指令集架构、商业指令集架构的优劣,随后详细介绍了现有的采用RISC-V架构的开源处理器、开源SoC,并展望了RISC-V的未来发展。原创 2017-02-12 22:32:49 · 11691 阅读 · 0 评论 -
旧板子新玩法——DE2上运行Freedom E310
众所周知,我有一块旧板子DE2-35,很久很久的那种,大概有十多年历史了,不过好在保养得比较好,现在还完好如初,最近心血来潮,打算在上面运行Freedom E310。Freedom E310是一个开源SoC,其处理器核心是RISC-V架构的开源处理器E3 Coreplex,由SiFive公司设计发布的。原创 2017-02-21 20:34:13 · 5336 阅读 · 4 评论 -
开源硬件3.0时代降临
开源硬件3.0阶段,特点是系统性、整体性开源,且有明确的组织、目标、路线图,代表项目就是开源指令集RISC-V,以及围绕RISC-V的一系列开源项目。RISC-V是加州大学伯克利分校设计并发布的一种开源指令集架构,其目标是成为指令集架构领域的Linux,应用覆盖IoT(Internet of Things)设备、桌面计算机、高性能计算机等众多领域。RISC-V自2014年正式发布以来,受到了包括谷歌、IBM、Oracle等在内的众多企业以及包括剑桥大学、苏黎世联邦理工大学、印度理工学院、中国科学院在内的众多原创 2017-03-02 13:53:34 · 1828 阅读 · 0 评论 -
开源处理器Rocket的分支预测机制研究与性能评估(一)
Rocket是基于RISC-V指令集架构的开源处理器,具有分支预测功能,其实现了GShare分支预测机制,在分析Rocket处理器分支预测处理过程、分支预测实现原理的基础上,利用模拟器进行了性能测试,并依据测试结果,对Rocket处理器分支预测参数配置给出建议。原创 2017-06-06 13:56:51 · 4525 阅读 · 1 评论 -
开源处理器Rocket的分支预测机制研究与性能评估(二)
Rocket是基于RISC-V指令集架构的开源处理器,具有分支预测功能,其实现了GShare分支预测机制,在分析Rocket处理器分支预测处理过程、分支预测实现原理的基础上,利用模拟器进行了性能测试,并依据测试结果,对Rocket处理器分支预测参数配置给出建议。原创 2017-06-06 14:01:16 · 5379 阅读 · 0 评论 -
开源处理器Rocket的分支预测机制研究与性能评估(三)
Rocket是基于RISC-V指令集架构的开源处理器,具有分支预测功能,其实现了GShare分支预测机制,在分析Rocket处理器分支预测处理过程、分支预测实现原理的基础上,利用模拟器进行了性能测试,并依据测试结果,对Rocket处理器分支预测参数配置给出建议。原创 2017-06-06 14:05:41 · 2331 阅读 · 0 评论 -
基于DE2的开源片上系统Freedom E310移植
引言:伯克利大学于2014年发布了开源指令集架构RISC-V,其目标是成为指令集架构领域的Linux,应用覆盖IoT(Internet of Things)设备、桌面计算机、高性能计算机等众多领域[1]。RISC-V自发布以来受到多方关注和参与,围绕RISC-V的生态环境逐渐完善,并涌现了众多开源处理器及SoC(System on Chip)采用RISC-V架构,其中Rocket-Chip就是由伯转载 2017-06-10 11:36:22 · 4097 阅读 · 3 评论 -
Chisel Tutorial(七)——模块
Chisel中的模块与Verilog HDL中模块的概念十分相似,都是用层次结构描述电路。Chisel中的module是一个类,其定义遵循以下几点: 继承自Module类, 有一个命名为io的端口, 在其构造函数中连接子电路如下是一个2选1选择器的模块定义:原创 2015-08-18 13:53:22 · 2458 阅读 · 0 评论 -
Chisel Tutorial(六)——端口
端口就是硬件单元对外的接口,需要指明方向(输入还是输出)。INPUT、OUTPUT指定方向,后面指出宽度,对于Bool类型,其宽度就是1,所以不需要明确指出。原创 2015-08-17 13:55:36 · 2189 阅读 · 0 评论 -
Chisel Tutorial(五)——Bundles与Vecs
Bundle与Vec也是Chisel定义的数据类型。Bundle是一些元素的集合,每个元素都有一个变量名,类似于C语言中的结构体。用户可以通过定义Bundle的子类来定义一个Bundle类型的变量原创 2015-08-14 13:52:06 · 3388 阅读 · 1 评论 -
Chisel实验笔记(二)
在上一篇《Chisel实验笔记(一)》中,我们的到了对应的verilog文件,本文将采用Icarus Verilog + GtkWave进行仿真验证。原创 2015-05-29 10:35:23 · 5346 阅读 · 3 评论 -
64位开源处理器Rocket的源代码简单介绍
最近大概阅读了一个UCB发布的Rocket处理器的源码,对源代码各个文件的功能有了一些大致的了解,Mark一下。Rocket是一款64bit的标量处理器,5级流水线,采用的是risc-v指令集,集成FPU,并有许多or1200没有的特性,比如:无阻塞缓存、分支预测、返回地址堆栈、硬件页表填充、cache支持ECC、支持多核等。Rocket的源代码是使用Chisel编写的,Chisel是UCB发布的基于Scala的领域特定语言。可以在https://github.com/ucb-bar/rocket下原创 2015-06-23 14:01:15 · 10100 阅读 · 12 评论 -
Chisel实验笔记(三)
在《Chisel实验笔记(一)》中我们得到了verilog文件,在《Chisel实验笔记(二)》中我们使用Icarus Verilog、GtkWave对的道德verilog文件进行了仿真测试,实际上,时欧诺个Chisel可以得到对应的C++文件,从而可以直接进行仿真,本文就介绍产生C++文件,进行测试的实验过程。原创 2015-05-29 11:59:43 · 6172 阅读 · 0 评论 -
Chisel实验笔记(一)
最近在学习Risc-v,其中伯克利大学开源了一款兼容Risc-v指令集的处理器Rocket,而Rocket处理器是采用Chisel编写的,所以要学习Chisel,Chisel的简单介绍如下:Chisel (Constructing Hardware In a Scala Embedded Language).Chisel is a hardware construction language embedded in the high-level programming language Scala可以原创 2015-05-29 10:21:10 · 16473 阅读 · 1 评论 -
Chisel Tutorial(二)——Chisel的数据类型
Chisel的数据类型用来指明在线上流动的信号(flowing on wire)、存储在状态元素(State Element)中的值的类型。对应Verilog HDL线网型、寄存器型变量的类型。虽然数字电路最终都是对二进制数字矢量进行操作,但是定义一些抽象的数据类型,有助于更为清晰的表达,同时也有利于产生更为优化的电路。具体有如下几种类型原创 2015-08-10 17:01:40 · 5117 阅读 · 0 评论 -
Chisel Tutorial(一)——Chisel介绍
Chisel是由伯克利大学发布的一种开源硬件构建语言,建立在Scala语言之上,是Scala特定领域语言的一个应用,具有高度参数化的生成器(highly parameterized generators),可以支持高级硬件设计。其特点如下,部分特点找不到合适的中文表述,暂时没有翻译,哪位童靴有合适的翻译可以及时说说啊。原创 2015-08-10 13:45:50 · 10085 阅读 · 2 评论 -
Chisel Tutorial(八)——运行与测试
前面我们已经定义了模块,本节讨论如何运行和测试一个电路。Chisel可以翻译得到C++或者Verilog。为了构建一个电路我们需要调用chiselMain,如下原创 2015-08-25 12:18:31 · 4525 阅读 · 0 评论 -
Chisel Tutorial(三)——组合电路
在Chisel中每个电路都是一些node的集合,每个node是一个硬件操作单元,具有0个、1个或者多个输入,依据输入驱动一个输出。上一篇博客“Chisel Tutorial(二)——Chisel的数据类型”中介绍的变量就可以认为是一个0输入的node,其输出是一个固定值,也就是变量的值。不同的node可以通过操作符连接在一起,例如可以通过如下表达式表示一个简单的组合逻辑电路:原创 2015-08-11 13:32:28 · 3600 阅读 · 0 评论 -
Chisel Tutorial(四)——函数
我们可以把一些重复的逻辑定义为函数,然后在多处使用,例如:如下定义了一个简单的函数:def clb(a:UInt, b:UInt, c:UInt, d:UInt) = (a & b) | (~c & d)函数clb有四个参数a、b、c、d,此处的def是Scala中定义的关键字,用来定义函数,每个参数后面跟一个冒号,然后是数据类型。在参数之后定义返回类型,也可以不定义,Chisel会自动推测,上例中就没有定义返回类型。等号之后的就是函数体。原创 2015-08-12 13:14:52 · 2311 阅读 · 0 评论 -
RISC-V当前的研究情况
以下资料来自《A Free and Open ISA Enabling a Diversity of CPU Cores and Accelerators》原创 2017-06-26 21:02:46 · 4509 阅读 · 2 评论