解码顺序如下:

  1. opcode确定指令组
  2. funct7确定指令功能
  3. xd xs1 xs2 决定要哪个数据
  4. 接收CPU的消息就读取rs1 rs2,写给CPU就写入rd

在我们自定义的指令中:

assign layer1_kernel_num = state_is_start? index_rsd:0; //rd
assign layer1_kerne2_num = state_is_start? index_rs1:0; //rs1
assign layer1_kerne3_num = state_is_start? index_rs2:0; //rs2

-———————————————————————————————————————————-

输入指令交互: 输出指令交互:

Untitled

Untitled

-———————————————————————————————————————————-

Untitled

读写DTCM比较简单,只有一个地址线,通过使能read口来读写DTCM,读取DTCM同样有两组接口,这时的req是nice_core向DTCM发送读/写指令,而rsp是DTCM的结果

代码中解码过程

下面的解码都是1bit的判断变量,通过判断opcode,func3和func7确定custom3_rd,custom3_start,custom3_ldbuf是否置为1,进而判断当前状态

Untitled