#E203

E203 itcm

     E203itcm是64Kb,所以地址总线为16位,2^16=64Kb,数据线宽度为64bits(8bytes),所以addresswidth是16-3=13bit,ramdepth是2^16/8=2^13。    &nb...
代码星球 代码星球·2020-04-18

在vcs中编译及运行测试E203例子

     E203的Makefile默认是调用iverilog编译rtl,我们可以做如下修改,使其支持vcs编译。1.首先修改e200_opensource/tb/tb_top.v,增加dump波形的两行代码,这样如果指定DUMPWAVE不等于0,就会打印dump出波形...

E203数据冲突处理OITF

     流水线的数据冲突分为三类:WAR,RAW,WAW      https://wenku.baidu.com/view/e066926d48d7c1c708a14508.htmlWAR:writeaft...

E203 CSR rtl实现分析

     CSR状态控制寄存器,每个hart都有自己的CSR。对于每个hart,可以配置的状态寄存器是4k。CSR寄存器的功能见:https://www.cnblogs.com/mikewolf2002/p/11314583.html   ...

E203 CSR寄存器

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

E203译码模块(3)

下面的代码译码出指令的立即数,不同的指令有不同的立即数编码形式。//I类型指令的imm,[31:20],符号位扩展成32位。wire[31:0]rv32_i_imm={{20{rv32_instr[31]}},rv32_instr[31:20]};//S类型指令的立即数wire[31:0]rv32_s_imm={{20...
代码星球 代码星球·2020-04-18

E203 译码模块(2)

      常用的alu算术运算指令(包括ecall和ebreak)在regularalu单元处理。regularalu单元为alu单元的一个子单元。regular单元的信息总线共21位,格式如下图所示,其中grp为000:   ...
代码星球 代码星球·2020-04-18

E203 译码模块(1)

     E203是两级流水线结构,第一级是IFU进行取指操作,第二级包括译码、执行、交付和写回等功能。架构图如下:      http://www.51dev.com//FileUpload/news/202...
代码星球 代码星球·2020-04-18

蜂鸟E203 IFU模块

E203的IFU(instructionfetchunit)模块主要功能和接口如下:IFU的PC生成单元产生下一条指令的PC。该PC传输到地址判断和ICB生成单元,就是根据PC值产生相应读指请求,可能的指令目的是ITCM或者外部存储,外部存储通过BIU访问。该PC值也会传输到和EXU单元接口的PC寄存器中。取回的指令会...
代码星球 代码星球·2020-04-18

E203 bypass buffer

如果fifo中没有数据,且有输入,则是bypassfifo,同周期内直接把输入数据转到输出数据。如果fifo中有数据,则读取fifo,成为普通的同步fifo。modulesirv_gnrl_bypbuf#(parameterDP=8,parameterDW=32)(inputi_vld,outputi_rdy,inpu...
代码星球 代码星球·2020-04-18

E203 同步fifo

1.输入端,     输入信号,i_vld,表示输入请求写同步fifo,如果fifo不满,则fifo发送i_rdy到输入端,开始写fifo。i_vld和i_rdy是写握手信号。2.输出端     o_rdy表示接受端已经...
代码星球 代码星球·2020-04-18