RISC-V MCU中文社区

【分享】 nice_core实例代码解析

发表于 全国大学生集成电路创新创业大赛 2022-05-15 17:11:57
0
262
1

大家好,我们是集创赛 CICC1190爆炒集芯,本帖我们将解析nice_core的官方示例代码由于笔者本人也是第一次接触类似接口,全文难免有一些疏漏之处,还请大佬不吝赐教,在评论区直接指出文中的错误!

首先是端口说明,这一部分可以对照着官网文档里对nice部分的介绍来看,区别在于,官方文档里各端口的输入输出是相较于主CPU而言,与此处正好相反
接下来我们详细看看模块内部
①指令部分
    

最开始的部分主要做一个指令的识别,代码里定义了三个custom3指令,并定义了其func3(即寄存器使用方式),func7(用以区别同一custom下的不同指令),并且只有在nice_req_valid拉高时,以上指令才能顺利生效

最后,定义了两个信号,通过取或的方式,分别代表协处理器指令和是否需要访问mem


②状态机部分

  • 这一部分看似复杂,其实主要是描述了空闲状态与另外三条自定义指令代表的状态之间的跳转,其中主要用sirv_gnrl_dfflr这一模块来完成状态跳转,而这一模块的触发需要状态离开使能有效,而各个状态的状态离开使能如何控制主要取决于其功能,此处就不再详细介绍,而当状态离开使能有效时,就会触发该子模块,然后跳转到次态,而每个状态的次态都在此处定义过了。

接下来是运算单元和访存控制,这一部分限于篇幅不再赘述,总的来说,这个模块理解起来并不复杂,主要是要理清其中的各个信号连线比较繁琐。

喜欢1
用户评论
秋雾

秋雾 未通过实名认证

懒的都不写签名

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