08 2019 档案

RV32FDQ/RV64RDQ指令集(2)
摘要:下面我们逐个看下每个指令的细节:fadd.sfadd.s rd, rs1, rs2 //f [rd] = f [rs1] + f [rs2]单精度浮点加(Floating-point Add, Single-Precision). R-type, RV32F and RV64F.把寄存器 f[rs1]和 f[rs2]中的单精度浮点数相加,并将舍入后的和写入 f[rd]。示例:to dofs... 阅读全文

posted @ 2019-08-25 14:25 迈克老狼2012 阅读(2441) 评论(0) 推荐(0) 编辑

RV32FDQ/RV64RDQ指令集(1)
摘要:Risc-V架构定义了可选的单精度浮点指令(F扩展指令集)和双精度浮点指令(D扩展指令集),以及四精度浮点指令集(Q扩展指令集)。Risc-V架构规定:处理器可以选择只实现F扩展指令子集而不支持D扩展指令子集;但是如果支持了D扩展指令子集,则必须支持F扩展指令子集;如果支持了Q扩展指令集,必须支持D扩展指令集。Risc-V架构规定的浮点数符合IEEE754 2008规则,可以从下面的链... 阅读全文

posted @ 2019-08-25 08:41 迈克老狼2012 阅读(2210) 评论(0) 推荐(0) 编辑

在vcs中编译及运行测试E203例子
摘要:E203的Makefile默认是调用 iverilog编译rtl,我们可以做如下修改,使其支持vcs编译。1. 首先修改e200_opensource/tb/tb_top.v, 增加dump波形的两行代码,这样如果指定DUMPWAVE不等于0,就会打印dump出波形文件。 initial begin valueplusargs("DUMPWAVE=%d",dumpwave)... 阅读全文

posted @ 2019-08-23 13:00 迈克老狼2012 阅读(3420) 评论(2) 推荐(0) 编辑

E203数据冲突处理OITF
摘要:流水线的数据冲突分为三类:WAR,RAW,WAW https://wenku.baidu.com/view/e066926d48d7c1c708a14508.htmlWAR: write after read 相关性,又称先读后写相关性。比如下面的指令序列,第一条指令会读取x4,第二条指令会写x4。在流水线中,如果第二条指令比第一条指令先写x4,则第一条指令就会读出错误的值... 阅读全文

posted @ 2019-08-14 09:37 迈克老狼2012 阅读(2079) 评论(0) 推荐(0) 编辑

Verilog设计Valid-Ready握手协议
摘要:http://ninghechuan.com/2019/01/17/Verilog%E8%AE%BE%E8%AE%A1Valid-Ready%E6%8F%A1%E6%89%8B%E5%8D%8F%E8%AE%AE/ Handshake Protocol握手协议: 为了保证数据传输过程中准确无误,我们需要加上握手信号来控制信号的传输。握手协议的原则是:当Valid和Ready信号同时高有效... 阅读全文

posted @ 2019-08-13 13:42 迈克老狼2012 阅读(9236) 评论(0) 推荐(1) 编辑

E203 CSR rtl实现分析
摘要:CSR状态控制寄存器,每个hart都有自己的CSR。对于每个hart,可以配置的状态寄存器是4k。CSR寄存器的功能见:https://www.cnblogs.com/mikewolf2002/p/11314583.html CSR实现的rtl代码是e203_exu_csr.v,下面我们分析一下代码实现: 输出输入信号如下:module e203_exu_csr( ... 阅读全文

posted @ 2019-08-13 11:33 迈克老狼2012 阅读(1725) 评论(0) 推荐(0) 编辑

RiscV汇编介绍(1)-编译过程
摘要:从c/c++源文件,到可以执行文件,需要以下几个步骤:预处理/编译汇编链接下面我们以hello world程序为例,展示整个编译链接过程。1. 编写hello.c代码#include int main(void){ printf("Hello World!\n"); return 0;}2.使用gcc –E hello.c –o hello.i, 将源文件hello.c... 阅读全文

posted @ 2019-08-12 20:29 迈克老狼2012 阅读(3010) 评论(0) 推荐(0) 编辑

RiscV汇编介绍(2)-编译过程
摘要:elf文件全称是Executable and Linkable Format,可执行链接格式,elf文件中除了机器码之外,还有段加载地址,运行入口地址,数据段等。 elf文件格式主要有以下三种:可重定向文件:文件保存着代码和适当的数据,用来和其它的目标文件一起来创建一个可执行文件或者共享目标文件。可执行文件:文件保存着一个用来执行的文件。共享目标文件:即共享库。elf文件详解:... 阅读全文

posted @ 2019-08-08 19:51 迈克老狼2012 阅读(5806) 评论(1) 推荐(0) 编辑

E203 CSR寄存器
摘要:RiscV架构则定义了一些控制和状态寄存器(CSR),用于配置或记录一些运行的状态。CSR寄存器是处理器内核内部的寄存器,使用专有的12位地址编码空间,对一个hart,可以配置4k的CSR寄存器。 蜂鸟203支持以下的CSR寄存器: 类型... 阅读全文

posted @ 2019-08-07 12:27 迈克老狼2012 阅读(15237) 评论(1) 推荐(3) 编辑

E203译码模块(3)
摘要:下面的代码译码出指令的立即数,不同的指令有不同的立即数编码形式。//I类型指令的imm,[31:20],符号位扩展成32位。wire [31:0] rv32_i_imm = { {20{rv32_instr[31]}} , rv32_instr[31:20] ... 阅读全文

posted @ 2019-08-06 09:41 迈克老狼2012 阅读(822) 评论(0) 推荐(0) 编辑

RVZicsr指令集
摘要:Riscv中每个硬件线程(hart)有4096个独立地址空间的状态寄存器。我们可以通过Zicsr指令读写csr寄存器。总共有6条csr读写指令,这些指令之前都在RV32I/RV64I基础指令集里面,在最新文档中,被放在了Zicsr扩展指令集中。 6条指令的编码如下,其中[31-20]总共12位表示4096个csr寄存器地址。 csr 11109... 阅读全文

posted @ 2019-08-05 19:23 迈克老狼2012 阅读(4622) 评论(0) 推荐(0) 编辑

E203 译码模块(2)
摘要:常用的alu算术运算指令(包括ecall和 ebreak)在regular alu单元处理。regular alu单元为alu单元的一个子单元。regular单元的信息总线共21位,格式如下图所示,其中grp为000: 下面的代码产生regular alu单元的信息总线。 // ALU Instructions wire rv32_addi =... 阅读全文

posted @ 2019-08-05 14:38 迈克老狼2012 阅读(1117) 评论(0) 推荐(0) 编辑

E203 译码模块(1)
摘要:E203是两级流水线结构,第一级是IFU进行取指操作,第二级包括译码、执行、交付和写回等功能。架构图如下: https://www.cnblogs.com/images/cnblogs_com/mikewolf2002/1519640/o_pipeline.jpg 译码模块就是把机器码翻译成对应的输出功能。E203支持RV32IMAC,它的译码器模块是纯的组合电路实... 阅读全文

posted @ 2019-08-01 09:56 迈克老狼2012 阅读(2690) 评论(0) 推荐(0) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示