RISC-V MCU中文社区

【分享】 官方例程nice_core代码解读分析

发表于 全国大学生集成电路创新创业大赛 2021-06-08 15:31:41
1
4008
7

大家好,我们团队的名字叫小白联盟,参赛编号是CICC2611。本篇文章主要是想和大家分享一下在学习协处理器的一些收获。

我们对官方提供的蜂鸟E203协处理器参考示例进行分析,例子实现对一个3行3列的矩阵按顺序进行累加和列累加计算。

所以定义了三条指令lbufsbufrowsome

lbuf指令实现从内存中Load数据至行数据缓存,需要读取操作数rs1,不需要读取rs2,无需返回结果,故func3字段010,此时func72^8选择,例子定义了func71。

sbuf指令实现从行数据缓存中 store数据至内存,需要读取操作数rs1,不需要读取rs2无需返回结果,故func3字段010,定义func72。

rowsome指令实现行累加值的计算,并通过结果寄存器返回累加值,需要读取操作数rs1,不需要读取rs2,且需返回结果,故func3字段010func76。

  三条指令均使用custom3指令类型扩展成自定义指令,故opcode字段均为7b11111011

Nice_core信号解读

2175.png (1701×798)

译码段,对输入指令,将指令func3字段func7字段及opcode段译码

2177.png (1194×904)

判断是否是custom3类型扩展指令,判断func3字段以及func7对指令进行译码,判断输入那一条指令

2179.png (1271×151)

当判断输入指令为其中一条时,将custom_multi_cyc_opcustom_mem_op1,用于后续操作和存储判断

2180.png (1207×173)

状态机,判断指令的状态切换

2181.png (1518×1134)

2182.png (1735×785)





喜欢7
用户评论 (1)
hibernate

hibernate 实名认证

懒的都不写签名

积分
问答
粉丝
关注
  • RV-STAR 开发板
  • RISC-V处理器设计系列课程
  • 培养RISC-V大学土壤 共建RISC-V教育生态
RV-STAR 开发板